go-captcha-vue
Version:
GoCaptcha for Vue, which implements click mode, slider mode, drag-drop mode and rotation mode.
40 lines (39 loc) • 31 kB
JavaScript
(function(W,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(W=typeof globalThis<"u"?globalThis:W||self,e(W["go-captcha-vue"]={},W.Vue))})(this,function(W,e){"use strict";const st="",ne=()=>({width:300,height:220,thumbWidth:150,thumbHeight:40,verticalPadding:16,horizontalPadding:12,showTheme:!0,title:"请在下图依次点击",buttonText:"确认",iconSize:22,dotSize:24}),de=[e.createElementVNode("path",{d:`M100.1,189.9C100.1,189.9,100,189.9,100.1,189.9c-49.7,0-90-40.4-90-89.9c0-49.6,40.4-89.9,89.9-89.9
c49.6,0,89.9,40.4,89.9,89.9c0,18.2-5.4,35.7-15.6,50.7c-1.5,2.1-3.6,3.4-6.1,3.9c-2.5,0.4-5-0.1-7-1.6c-4.2-3-5.3-8.6-2.4-12.9
c8.1-11.9,12.4-25.7,12.4-40.1c0-39.2-31.9-71.1-71.1-71.1c-39.2,0-71.1,31.9-71.1,71.1c0,39.2,31.9,71.1,71.1,71.1
c7.7,0,15.3-1.2,22.6-3.6c2.4-0.8,4.9-0.6,7.2,0.5c2.2,1.1,3.9,3.1,4.7,5.5c1.6,4.9-1,10.2-5.9,11.9
C119.3,188.4,109.8,189.9,100.1,189.9z M73,136.4C73,136.4,73,136.4,73,136.4c-2.5,0-4.9-1-6.7-2.8c-3.7-3.7-3.7-9.6,0-13.3
L86.7,100L66.4,79.7c-3.7-3.7-3.7-9.6,0-13.3c3.7-3.7,9.6-3.7,13.3,0L100,86.7l20.3-20.3c1.8-1.8,4.1-2.8,6.7-2.8c0,0,0,0,0,0
c2.5,0,4.9,1,6.7,2.8c1.8,1.8,2.8,4.1,2.8,6.7c0,2.5-1,4.9-2.8,6.7L113.3,100l20.3,20.3c3.7,3.7,3.7,9.6,0,13.3
c-3.7,3.7-9.6,3.7-13.3,0L100,113.3l-20.3,20.3C77.9,135.4,75.5,136.4,73,136.4z`},null,-1)],Q=e.defineComponent({__name:"close-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),de,16))}}),he=[e.createElementVNode("path",{d:`M135,149.9c-10.7,7.6-23.2,11.4-36,11.2c-1.7,0-3.4-0.1-5-0.3c-0.7-0.1-1.4-0.2-2-0.3c-1.3-0.2-2.6-0.4-3.9-0.6
c-0.8-0.2-1.6-0.4-2.3-0.5c-1.2-0.3-2.5-0.6-3.7-1c-0.6-0.2-1.2-0.4-1.7-0.6c-1.4-0.5-2.8-1-4.2-1.5c-0.3-0.1-0.6-0.3-0.9-0.4
c-1.6-0.7-3.2-1.4-4.7-2.3c-0.1,0-0.1-0.1-0.2-0.1c-5.1-2.9-9.8-6.4-14-10.6c-0.1-0.1-0.1-0.1-0.2-0.2c-1.3-1.3-2.5-2.7-3.7-4.1
c-0.2-0.3-0.5-0.6-0.7-0.9c-8.4-10.6-13.5-24.1-13.5-38.8h14.3c0.4,0,0.7-0.2,0.9-0.5c0.2-0.3,0.2-0.8,0-1.1L29.5,60.9
c-0.2-0.3-0.5-0.5-0.9-0.5c-0.4,0-0.7,0.2-0.9,0.5L3.8,97.3c-0.2,0.3-0.2,0.7,0,1.1c0.2,0.3,0.5,0.5,0.9,0.5h14.3
c0,17.2,5.3,33.2,14.3,46.4c0.1,0.2,0.2,0.4,0.3,0.6c0.9,1.4,2,2.6,3,3.9c0.4,0.5,0.7,1,1.1,1.5c1.5,1.8,3,3.5,4.6,5.2
c0.2,0.2,0.3,0.3,0.5,0.5c5.4,5.5,11.5,10.1,18.2,13.8c0.2,0.1,0.3,0.2,0.5,0.3c1.9,1,3.9,2,5.9,2.9c0.5,0.2,1,0.5,1.5,0.7
c1.7,0.7,3.5,1.3,5.2,1.9c0.8,0.3,1.7,0.6,2.5,0.8c1.5,0.5,3.1,0.8,4.7,1.2c1.1,0.2,2.1,0.5,3.2,0.7c0.4,0.1,0.9,0.2,1.3,0.3
c1.5,0.3,3,0.4,4.5,0.6c0.5,0.1,1.1,0.2,1.6,0.2c2.7,0.3,5.4,0.4,8.1,0.4c16.4,0,32.5-5.1,46.2-14.8c4.4-3.1,5.5-9.2,2.4-13.7
C145.5,147.8,139.4,146.7,135,149.9 M180.6,98.9c0-17.2-5.3-33.1-14.2-46.3c-0.1-0.2-0.2-0.5-0.4-0.7c-1.1-1.6-2.3-3.1-3.5-4.6
c-0.1-0.2-0.3-0.4-0.4-0.6c-8.2-10.1-18.5-17.9-30.2-23c-0.3-0.1-0.6-0.3-1-0.4c-1.9-0.8-3.8-1.5-5.7-2.1c-0.7-0.2-1.4-0.5-2.1-0.7
c-1.7-0.5-3.4-0.9-5.1-1.3c-0.9-0.2-1.9-0.5-2.8-0.7c-0.5-0.1-0.9-0.2-1.4-0.3c-1.3-0.2-2.6-0.3-3.8-0.5c-0.9-0.1-1.8-0.3-2.6-0.3
c-2.1-0.2-4.3-0.3-6.4-0.3c-0.4,0-0.8-0.1-1.2-0.1c-0.1,0-0.1,0-0.2,0c-16.4,0-32.4,5-46.2,14.8C49,35,48,41.1,51,45.6
c3.1,4.4,9.1,5.5,13.5,2.4c10.6-7.5,23-11.3,35.7-11.2c1.8,0,3.6,0.1,5.4,0.3c0.6,0.1,1.1,0.1,1.6,0.2c1.5,0.2,2.9,0.4,4.3,0.7
c0.6,0.1,1.3,0.3,1.9,0.4c1.4,0.3,2.8,0.7,4.2,1.1c0.4,0.1,0.9,0.3,1.3,0.4c1.6,0.5,3.1,1.1,4.6,1.7c0.2,0.1,0.3,0.1,0.5,0.2
c9,3.9,17,10,23.2,17.6c0,0,0.1,0.1,0.1,0.2c8.7,10.7,14,24.5,14,39.4H147c-0.4,0-0.7,0.2-0.9,0.5c-0.2,0.3-0.2,0.8,0,1.1l24,36.4
c0.2,0.3,0.5,0.5,0.9,0.5c0.4,0,0.7-0.2,0.9-0.5l23.9-36.4c0.2-0.3,0.2-0.7,0-1.1c-0.2-0.3-0.5-0.5-0.9-0.5L180.6,98.9L180.6,98.9
L180.6,98.9z`},null,-1)],Z=e.defineComponent({__name:"refresh-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),he,16))}}),me=[e.createElementVNode("circle",{cx:"50",cy:"36.8101",r:"10"},[e.createElementVNode("animate",{attributeName:"cy",dur:"1s",repeatCount:"indefinite",calcMode:"spline",keySplines:"0.45 0 0.9 0.55;0 0.45 0.55 0.9",keyTimes:"0;0.5;1",values:"23;77;23"})],-1)],ee=e.defineComponent({__name:"loading-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 100 100",preserveAspectRatio:"xMidYMid",width:"84",height:"84"},a.$attrs,{onClick:r}),me,16))}});function fe(s){let n=0,l=0;if(s.getBoundingClientRect){const r=s.getBoundingClientRect(),a=document.documentElement;n=r.left+Math.max(a.scrollLeft,document.body.scrollLeft)-a.clientLeft,l=r.top+Math.max(a.scrollTop,document.body.scrollTop)-a.clientTop}else for(;s!==document.body;)n+=s.offsetLeft,l+=s.offsetTop,s=s.offsetParent;return{domX:n,domY:l}}function I(s,n){let l=n.relatedTarget;try{for(;l&&l!==s;)l=l.parentNode}catch(r){console.warn(r)}return l!==s}function ge(s,n,l){const r=e.reactive({list:[]}),a=o=>{const _=o.currentTarget,k=fe(_),i=o.pageX||o.clientX,E=o.pageY||o.clientY,m=k.domX,z=k.domY,B=i-m,w=E-z,f=parseInt(B.toString()),g=parseInt(w.toString()),b=new Date,v=r.list.length;return r.list.push({key:b.getTime(),index:v+1,x:f,y:g}),n.click&&n.click(f,g),o.cancelBubble=!0,o.preventDefault(),!1},p=o=>(n.confirm&&n.confirm(e.toRaw(r.list),()=>{y()}),o.cancelBubble=!0,o.preventDefault(),!1),c=o=>(t(),o.cancelBubble=!0,o.preventDefault(),!1),d=o=>(h(),o.cancelBubble=!0,o.preventDefault(),!1),t=()=>{n.close&&n.close(),y()},h=()=>{n.refresh&&n.refresh(),y()},y=()=>{r.list=[]};return{dots:r,clickEvent:a,confirmEvent:p,closeEvent:c,refreshEvent:d,resetData:y,clearData:()=>{y(),l&&l()},refresh:h,close:t}}const pe={class:"gc-header"},ue=["src"],_e={class:"gc-loading"},Ee=["src"],we={class:"gc-dots"},be={class:"gc-footer"},ke={class:"gc-icon-block gc-icon-block2"},ye={class:"gc-button-block"},U=e.defineComponent({__name:"index",props:{config:{default:ne},events:{default:()=>({})},data:{default:()=>({})}},setup(s,{expose:n}){const l=s,{data:r,events:a,config:p}=l,c=e.reactive({...e.toRaw(r)}),d=e.reactive({...e.toRaw(a)}),t=e.reactive({...ne(),...e.toRaw(p)});e.watch(()=>l.data,(i,E)=>{Object.assign(c,i)},{deep:!0}),e.watch(()=>l.events,(i,E)=>{Object.assign(d,i)},{deep:!0}),e.watch(()=>l.config,(i,E)=>{Object.assign(t,i)},{deep:!0});const h=ge(c,d,()=>{c.thumb="",c.image=""}),y=e.computed(()=>{const i=t.horizontalPadding||0,E=t.verticalPadding||0;return{width:(t.width||0)+i*2+(t.showTheme?2:0)+"px",paddingLeft:i+"px",paddingRight:i+"px",paddingTop:E+"px",paddingBottom:E+"px"}}),u=e.computed(()=>({width:t.thumbWidth+"px",height:t.thumbHeight+"px"})),o=e.computed(()=>({width:t.width+"px",height:t.height+"px"})),_=e.computed(()=>c.image&&c.image.length>0||c.thumb&&c.thumb.length>0),k=e.computed(()=>(t.width||0)>0||(t.height||0)>0);return n({reset:h.resetData,clear:h.clearData,refresh:h.refresh,close:h.close}),(i,E)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`go-captcha gc-wrapper ${t.showTheme&&"gc-theme"}`),style:e.normalizeStyle(y.value)},[e.createElementVNode("div",pe,[e.createElementVNode("span",null,e.toDisplayString(t.title),1),e.withDirectives(e.createElementVNode("img",{style:e.normalizeStyle(u.value),src:c.thumb,alt:""},null,12,ue),[[e.vShow,_.value]])]),e.createElementVNode("div",{class:"gc-body",style:e.normalizeStyle(o.value)},[e.createElementVNode("div",_e,[e.createVNode(ee)]),e.withDirectives(e.createElementVNode("img",{style:e.normalizeStyle(o.value),class:"gc-picture",src:c.image,onClick:E[0]||(E[0]=(...m)=>e.unref(h).clickEvent&&e.unref(h).clickEvent(...m)),alt:""},null,12,Ee),[[e.vShow,_.value]]),e.createElementVNode("div",we,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).dots.list,m=>(e.openBlock(),e.createElementBlock("div",{class:"gc-dot",key:`${m.key+"-"+m.index}`,style:e.normalizeStyle({width:t.dotSize+"px",height:t.dotSize+"px",borderRadius:t.dotSize+"px",top:m.y-(t.dotSize||1)/2-1+"px",left:m.x-(t.dotSize||1)/2-1+"px"})},e.toDisplayString(m.index),5))),128))])],4),e.createElementVNode("div",be,[e.createElementVNode("div",ke,[e.createVNode(Q,{width:t.iconSize,height:t.iconSize,onClick:e.unref(h).closeEvent},null,8,["width","height","onClick"]),e.createVNode(Z,{width:t.iconSize,height:t.iconSize,onClick:e.unref(h).refreshEvent},null,8,["width","height","onClick"])]),e.createElementVNode("div",ye,[e.createElementVNode("button",{class:e.normalizeClass(!_.value&&"disabled"),onClick:E[1]||(E[1]=(...m)=>e.unref(h).confirmEvent&&e.unref(h).confirmEvent(...m))},e.toDisplayString(t.buttonText),3)])])],6)),[[e.vShow,k.value]])}}),rt="";U.name="gocaptcha-click",U.install=function(s){s.component("gocaptcha-click",U)};const ce=()=>({width:300,height:220,thumbWidth:150,thumbHeight:40,verticalPadding:16,horizontalPadding:12,showTheme:!0,title:"请拖动滑块完成拼图",iconSize:22,scope:!0}),xe=[e.createElementVNode("path",{d:`M131.6,116.3c0,0-75.6,0-109.7,0c-9.1,0-16.2-7.4-16.2-16.2c0-9.1,7.4-16.2,16.2-16.2c28.7,0,109.7,0,109.7,0
s-5.4-5.4-30.4-30.7c-6.4-6.4-6.4-16.7,0-23.1s16.7-6.4,23.1,0l58.4,58.4c6.4,6.4,6.4,16.7,0,23.1c0,0-32.9,32.9-57.9,57.9
c-6.4,6.4-16.7,6.4-23.1,0c-6.4-6.4-6.4-16.7,0-23.1C121.8,126.2,131.6,116.3,131.6,116.3z`},null,-1)],oe=e.defineComponent({__name:"arrows-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),xe,16))}}),se=()=>({thumbX:0,thumbY:0,thumbWidth:0,thumbHeight:0,image:"",thumb:""});function Le(s,n,l,r,a,p,c,d,t){const h=e.reactive({dragLeft:0,thumbLeft:s.thumbX||0,isFreeze:!1});e.watch(()=>s,(m,z)=>{h.isFreeze||(h.thumbLeft=m.thumbX||0)},{deep:!0});const y=m=>{if(!I(d.value,m))return;const z=m.touches&&m.touches[0],B=c.value.offsetLeft,w=a.value.offsetWidth,f=c.value.offsetWidth,g=w-f,b=p.value.offsetWidth,v=p.value.offsetLeft,j=w-b,F=(w-(b+v))/g;let R=!1,D=null,H=0,T=0;z?H=z.pageX-B:H=m.clientX-B;const N=$=>{R=!0;const Y=$.touches&&$.touches[0];let V=0;Y?V=Y.pageX-H:V=$.clientX-H;let ot=v+V*F;if(V>=g){h.dragLeft=g,h.thumbLeft=T=j;return}if(V<=0){h.dragLeft=0,h.thumbLeft=T=v;return}h.dragLeft=V,h.thumbLeft=T=ot,n.move&&n.move(T,s.thumbY||0),$.cancelBubble=!0,$.preventDefault()},M=$=>{I(d.value,$)&&(C(),R&&(R=!1,!(T<0)&&(n.confirm&&n.confirm({x:parseInt(T.toString()),y:s.thumbY||0},()=>{i()}),$.cancelBubble=!0,$.preventDefault())))},P=$=>{D=$},X=()=>{D=null},A=$=>{D&&(M(D),C())},x=l.scope,L=x?r.value:d.value,S=x?r.value:document.body,C=()=>{S.removeEventListener("mousemove",N,!1),S.removeEventListener("touchmove",N,{passive:!1}),L.removeEventListener("mouseup",M,!1),L.removeEventListener("mouseenter",X,!1),L.removeEventListener("mouseleave",P,!1),L.removeEventListener("touchend",M,!1),S.removeEventListener("mouseleave",M,!1),S.removeEventListener("mouseup",A,!1),h.isFreeze=!1};h.isFreeze=!0,S.addEventListener("mousemove",N,!1),S.addEventListener("touchmove",N,{passive:!1}),L.addEventListener("mouseup",M,!1),L.addEventListener("mouseenter",X,!1),L.addEventListener("mouseleave",P,!1),L.addEventListener("touchend",M,!1),S.addEventListener("mouseleave",M,!1),S.addEventListener("mouseup",A,!1)},u=m=>(_(),m.cancelBubble=!0,m.preventDefault(),!1),o=m=>(k(),m.cancelBubble=!0,m.preventDefault(),!1),_=()=>{n&&n.close&&n.close(),i()},k=()=>{n&&n.refresh&&n.refresh(),i()},i=()=>{h.dragLeft=0,h.thumbLeft=s.thumbX||0};return{state:h,dragEvent:y,closeEvent:u,refreshEvent:o,resetData:i,clearData:()=>{t&&t(),i()},refresh:k,close:_}}const Se={class:"gc-header"},ze={class:"gc-icon-block"},ve={class:"gc-loading"},De=["src"],Ce=["src"],$e={class:"gc-footer"},Ve=e.createElementVNode("div",{class:"gc-drag-line"},null,-1),q=e.defineComponent({__name:"index",props:{config:{default:ce},events:{default:()=>({})},data:{default:se}},setup(s,{expose:n}){const l=s,{data:r,events:a,config:p}=l,c=e.reactive({...se(),...e.toRaw(r)}),d=e.reactive({...e.toRaw(a)}),t=e.reactive({...ce(),...e.toRaw(p)});e.watch(()=>l.data,(g,b)=>{Object.assign(c,g)},{deep:!0}),e.watch(()=>l.events,(g,b)=>{Object.assign(d,g)},{deep:!0}),e.watch(()=>l.config,(g,b)=>{Object.assign(t,g)},{deep:!0});const h=e.ref(null),y=e.ref(null),u=e.ref(null),o=e.ref(null),_=e.ref(null),k=Le(c,d,t,h,u,_,o,y,()=>{c.thumb="",c.image="",c.thumbX=0,c.thumbY=0,c.thumbWidth=0,c.thumbHeight=0}),i=e.computed(()=>{const g=t.horizontalPadding||0,b=t.verticalPadding||0;return{width:(t.width||0)+g*2+(t.showTheme?2:0)+"px",paddingLeft:g+"px",paddingRight:g+"px",paddingTop:b+"px",paddingBottom:b+"px"}}),E=e.computed(()=>({width:c.thumbWidth+"px",height:c.thumbHeight+"px",top:c.thumbY+"px",left:k.state.thumbLeft+"px"})),m=e.computed(()=>({width:t.width+"px",height:t.height+"px"})),z=e.computed(()=>c.image&&c.image.length>0),B=e.computed(()=>c.thumb&&c.thumb.length>0),w=e.computed(()=>(t.width||0)>0||(t.height||0)>0),f=g=>g.preventDefault();return e.onMounted(async()=>{await e.nextTick(),o.value&&o.value.addEventListener("dragstart",f)}),e.onUnmounted(()=>{o.value&&o.value.removeEventListener("dragstart",f)}),n({reset:k.resetData,clear:k.clearData,refresh:k.refresh,close:k.close}),(g,b)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`go-captcha gc-wrapper ${t.showTheme&&"gc-theme"}`),style:e.normalizeStyle(i.value),ref_key:"rootRef",ref:h},[e.createElementVNode("div",Se,[e.createElementVNode("span",null,e.toDisplayString(t.title),1),e.createElementVNode("div",ze,[e.createVNode(Q,{width:t.iconSize,height:t.iconSize,onClick:e.unref(k).closeEvent},null,8,["width","height","onClick"]),e.createVNode(Z,{width:t.iconSize,height:t.iconSize,onClick:e.unref(k).refreshEvent},null,8,["width","height","onClick"])])]),e.createElementVNode("div",{class:"gc-body",ref_key:"containerRef",ref:u,style:e.normalizeStyle(m.value)},[e.createElementVNode("div",ve,[e.createVNode(ee)]),e.withDirectives(e.createElementVNode("img",{class:"gc-picture",style:e.normalizeStyle(m.value),src:c.image,alt:""},null,12,De),[[e.vShow,z.value]]),e.createElementVNode("div",{class:"gc-tile",ref_key:"tileRef",ref:_,style:e.normalizeStyle(E.value)},[e.withDirectives(e.createElementVNode("img",{src:c.thumb,alt:""},null,8,Ce),[[e.vShow,B.value]])],4)],4),e.createElementVNode("div",$e,[e.createElementVNode("div",{class:"gc-drag-slide-bar",ref_key:"dragBarRef",ref:y},[Ve,e.createElementVNode("div",{class:e.normalizeClass(["gc-drag-block",!z.value&&"disabled"]),ref_key:"dragBlockRef",ref:o,onMousedown:b[1]||(b[1]=(...v)=>e.unref(k).dragEvent&&e.unref(k).dragEvent(...v)),style:e.normalizeStyle({left:e.unref(k).state.dragLeft+"px"})},[e.createElementVNode("div",{class:"gc-drag-block-inline",onTouchstart:b[0]||(b[0]=(...v)=>e.unref(k).dragEvent&&e.unref(k).dragEvent(...v))},[e.createVNode(oe)],32)],38)],512)])],6)),[[e.vShow,w.value]])}}),ht="";q.name="gocaptcha-slide",q.install=function(s){s.component("gocaptcha-slide",q)};const ae=()=>({width:300,height:220,verticalPadding:16,horizontalPadding:12,showTheme:!0,title:"请拖拽贴图完成拼图",iconSize:22,scope:!0}),le=()=>({thumbX:0,thumbY:0,thumbWidth:0,thumbHeight:0,image:"",thumb:""});function Be(s,n,l,r,a,p,c){const d=e.reactive({x:s.thumbX||0,y:s.thumbY||0,isFreeze:!1});e.watch(()=>s,(i,E)=>{d.isFreeze||(d.x=i.thumbX||0,d.y=i.thumbY||0)},{deep:!0});const t=i=>{if(!I(a.value,i))return;const E=i.touches&&i.touches[0],m=p.value.offsetLeft,z=p.value.offsetTop,B=a.value.offsetWidth,w=a.value.offsetHeight,f=p.value.offsetWidth,g=p.value.offsetHeight,b=B-f,v=w-g;let j=!1,O=null,F=0,R=0,D=0,H=0;E?(F=E.pageX-m,R=E.pageY-z):(F=i.clientX-m,R=i.clientY-z);const T=C=>{j=!0;const $=C.touches&&C.touches[0];let Y=0,V=0;$?(Y=$.pageX-F,V=$.pageY-R):(Y=C.clientX-F,V=C.clientY-R),Y<=0&&(Y=0),V<=0&&(V=0),Y>=b&&(Y=b),V>=v&&(V=v),d.x=Y,d.y=V,D=Y,H=V,n.move&&n.move(Y,V),C.cancelBubble=!0,C.preventDefault()},N=C=>{I(a.value,C)&&(S(),j&&(j=!1,!(D<0||H<0)&&(n.confirm&&n.confirm({x:D,y:H},()=>{_()}),C.cancelBubble=!0,C.preventDefault())))},M=C=>{O=C},P=()=>{O=null},X=C=>{O&&(N(O),S())},A=l.scope,x=A?r.value:a.value,L=A?r.value:document.body,S=()=>{L.removeEventListener("mousemove",T,!1),L.removeEventListener("touchmove",T,{passive:!1}),x.removeEventListener("mouseup",N,!1),x.removeEventListener("mouseenter",P,!1),x.removeEventListener("mouseleave",M,!1),x.removeEventListener("touchend",N,!1),L.removeEventListener("mouseleave",N,!1),L.removeEventListener("mouseup",X,!1),d.isFreeze=!1};d.isFreeze=!0,L.addEventListener("mousemove",T,!1),L.addEventListener("touchmove",T,{passive:!1}),x.addEventListener("mouseup",N,!1),x.addEventListener("mouseenter",P,!1),x.addEventListener("mouseleave",M,!1),x.addEventListener("touchend",N,!1),L.addEventListener("mouseleave",N,!1),L.addEventListener("mouseup",X,!1)},h=i=>(u(),i.cancelBubble=!0,i.preventDefault(),!1),y=i=>(o(),i.cancelBubble=!0,i.preventDefault(),!1),u=()=>{n&&n.close&&n.close(),_()},o=()=>{n&&n.refresh&&n.refresh(),_()},_=()=>{d.x=s.thumbX||0,d.y=s.thumbY||0};return{state:d,dragEvent:t,closeEvent:h,refreshEvent:y,resetData:_,clearData:()=>{c&&c(),_()},refresh:o,close:u}}const Ne={class:"gc-header gc-header2"},Te={class:"gc-loading"},Pe=["src"],Xe=["src"],Re={class:"gc-footer"},Me={class:"gc-icon-block"},G=e.defineComponent({__name:"index",props:{config:{default:ae},events:{default:()=>({})},data:{default:le}},setup(s,{expose:n}){const l=s,{data:r,events:a,config:p}=l,c=e.reactive({...le(),...e.toRaw(r)}),d=e.reactive({...e.toRaw(a)}),t=e.reactive({...ae(),...e.toRaw(p)});e.watch(()=>l.data,(w,f)=>{Object.assign(c,w)},{deep:!0}),e.watch(()=>l.events,(w,f)=>{Object.assign(d,w)},{deep:!0}),e.watch(()=>l.config,(w,f)=>{Object.assign(t,w)},{deep:!0});const h=e.ref(null),y=e.ref(null),u=e.ref(null),o=Be(c,d,t,h,y,u,()=>{c.thumb="",c.image="",c.thumbX=0,c.thumbY=0,c.thumbWidth=0,c.thumbHeight=0}),_=e.computed(()=>{const w=t.horizontalPadding||0,f=t.verticalPadding||0;return{width:(t.width||0)+w*2+(t.showTheme?2:0)+"px",paddingLeft:w+"px",paddingRight:w+"px",paddingTop:f+"px",paddingBottom:f+"px"}}),k=e.computed(()=>({width:c.thumbWidth+"px",height:c.thumbHeight+"px",top:o.state.y+"px",left:o.state.x+"px"})),i=e.computed(()=>({width:t.width+"px",height:t.height+"px"})),E=e.computed(()=>c.image&&c.image.length>0),m=e.computed(()=>c.thumb&&c.thumb.length>0),z=e.computed(()=>(t.width||0)>0||(t.height||0)>0),B=w=>w.preventDefault();return e.onMounted(async()=>{await e.nextTick(),u.value&&u.value.addEventListener("dragstart",B)}),e.onUnmounted(()=>{u.value&&u.value.removeEventListener("dragstart",B)}),n({reset:o.resetData,clear:o.clearData,refresh:o.refresh,close:o.close}),(w,f)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`go-captcha gc-wrapper ${t.showTheme&&"gc-theme"}`),style:e.normalizeStyle(_.value),ref_key:"rootRef",ref:h},[e.createElementVNode("div",Ne,[e.createElementVNode("span",null,e.toDisplayString(t.title),1)]),e.createElementVNode("div",{class:"gc-body",ref_key:"containerRef",ref:y,style:e.normalizeStyle(i.value)},[e.createElementVNode("div",Te,[e.createVNode(ee)]),e.withDirectives(e.createElementVNode("img",{class:"gc-picture",style:e.normalizeStyle(i.value),src:c.image,alt:""},null,12,Pe),[[e.vShow,E.value]]),e.createElementVNode("div",{class:"gc-tile",ref_key:"tileRef",ref:u,style:e.normalizeStyle(k.value),onMousedown:f[0]||(f[0]=(...g)=>e.unref(o).dragEvent&&e.unref(o).dragEvent(...g)),onTouchstart:f[1]||(f[1]=(...g)=>e.unref(o).dragEvent&&e.unref(o).dragEvent(...g))},[e.withDirectives(e.createElementVNode("img",{src:c.thumb,alt:""},null,8,Xe),[[e.vShow,m.value]])],36)],4),e.createElementVNode("div",Re,[e.createElementVNode("div",Me,[e.createVNode(Q,{width:t.iconSize,height:t.iconSize,onClick:e.unref(o).closeEvent},null,8,["width","height","onClick"]),e.createVNode(Z,{width:t.iconSize,height:t.iconSize,onClick:e.unref(o).refreshEvent},null,8,["width","height","onClick"])])])],6)),[[e.vShow,z.value]])}}),mt="";G.name="gocaptcha-slide-region",G.install=function(s){s.component("gocaptcha-slide-region",G)};const te=()=>({width:300,height:220,size:220,verticalPadding:16,horizontalPadding:12,showTheme:!0,title:"请拖动滑块完成拼图",iconSize:22,scope:!0}),ie=()=>({angle:0,image:"",thumb:"",thumbSize:0});function We(s,n,l,r,a,p,c){const d=e.reactive({dragLeft:0,thumbAngle:s.angle||0,isFreeze:!1});e.watch(()=>s,(i,E)=>{d.isFreeze||(d.thumbAngle=i.angle||0)},{deep:!0});const t=i=>{if(!I(p.value,i))return;const E=i.touches&&i.touches[0],m=a.value.offsetLeft,z=p.value.offsetWidth,B=a.value.offsetWidth,w=z-B,f=360,g=(f-s.angle)/w;let b=0,v=!1,j=null,O=0,F=0;E?O=E.pageX-m:O=i.clientX-m;const R=x=>{v=!0;const L=x.touches&&x.touches[0];let S=0;if(L?S=L.pageX-O:S=x.clientX-O,b=s.angle+S*g,S>=w){d.dragLeft=w,d.thumbAngle=F=f;return}if(S<=0){d.dragLeft=0,d.thumbAngle=F=s.angle;return}d.dragLeft=S,d.thumbAngle=F=b,n.rotate&&n.rotate(b),x.cancelBubble=!0,x.preventDefault()},D=x=>{I(p.value,x)&&(A(),v&&(v=!1,!(F<0)&&(n.confirm&&n.confirm(parseInt(F.toString()),()=>{_()}),x.cancelBubble=!0,x.preventDefault())))},H=x=>{j=x},T=()=>{j=null},N=x=>{j&&(D(j),A())},M=l.scope,P=M?r.value:p.value,X=M?r.value:document.body,A=()=>{X.removeEventListener("mousemove",R,!1),X.removeEventListener("touchmove",R,{passive:!1}),P.removeEventListener("mouseup",D,!1),P.removeEventListener("mouseenter",T,!1),P.removeEventListener("mouseleave",H,!1),P.removeEventListener("touchend",D,!1),X.removeEventListener("mouseleave",D,!1),X.removeEventListener("mouseup",N,!1),d.isFreeze=!1};d.isFreeze=!0,X.addEventListener("mousemove",R,!1),X.addEventListener("touchmove",R,{passive:!1}),P.addEventListener("mouseup",D,!1),P.addEventListener("mouseenter",T,!1),P.addEventListener("mouseleave",H,!1),P.addEventListener("touchend",D,!1),X.addEventListener("mouseleave",D,!1),X.addEventListener("mouseup",N,!1)},h=i=>(u(),i.cancelBubble=!0,i.preventDefault(),!1),y=i=>(o(),i.cancelBubble=!0,i.preventDefault(),!1),u=()=>{n&&n.close&&n.close(),_()},o=()=>{n&&n.refresh&&n.refresh(),_()},_=()=>{d.dragLeft=0,d.thumbAngle=s.angle};return{state:d,dragEvent:t,closeEvent:h,refreshEvent:y,resetData:_,clearData:()=>{c&&c(),_()},refresh:o,close:u}}const Fe={class:"gc-header"},Ye={class:"gc-icon-block"},He={class:"gc-loading"},je=["src"],Oe=e.createElementVNode("div",{class:"gc-round"},null,-1),Ae={class:"gc-thumb gc-rotate-thumb"},Ie=["src"],Ue={class:"gc-footer"},qe=e.createElementVNode("div",{class:"gc-drag-line"},null,-1),J=e.defineComponent({__name:"index",props:{config:{default:te},events:{default:()=>({})},data:{default:ie}},setup(s,{expose:n}){const l=s,{data:r,events:a,config:p}=l,c=e.reactive({...ie(),...e.toRaw(r)}),d=e.reactive({...e.toRaw(a)}),t=e.reactive({...te(),...e.toRaw(p)});e.watch(()=>l.data,(f,g)=>{Object.assign(c,f)},{deep:!0}),e.watch(()=>l.events,(f,g)=>{Object.assign(d,f)},{deep:!0}),e.watch(()=>l.config,(f,g)=>{Object.assign(t,f)},{deep:!0});const h=e.ref(null),y=e.ref(null),u=e.ref(null),o=We(c,d,t,h,u,y,()=>{c.thumb="",c.image="",c.angle=0}),_=e.computed(()=>{const f=t.horizontalPadding||0,g=t.verticalPadding||0;return{width:(t.width||0)+f*2+(t.showTheme?2:0)+"px",paddingLeft:f+"px",paddingRight:f+"px",paddingTop:g+"px",paddingBottom:g+"px"}}),k=e.computed(()=>({transform:`rotate(${o.state.thumbAngle}deg)`,...c.thumbSize>0?{width:c.thumbSize+"px",height:c.thumbSize+"px"}:{}})),i=e.computed(()=>({width:t.width+"px",height:t.height+"px"})),E=e.computed(()=>{const f=(t.size||0)>0?t.size:te().size;return{width:f+"px",height:f+"px"}}),m=e.computed(()=>c.image&&c.image.length>0),z=e.computed(()=>c.thumb&&c.thumb.length>0),B=e.computed(()=>(t.width||0)>0||(t.height||0)>0),w=f=>f.preventDefault();return e.onMounted(async()=>{await e.nextTick(),u.value&&u.value.addEventListener("dragstart",w)}),e.onUnmounted(()=>{u.value&&u.value.removeEventListener("dragstart",w)}),n({reset:o.resetData,clear:o.clearData,refresh:o.refresh,close:o.close}),(f,g)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(`go-captcha gc-wrapper ${t.showTheme&&"gc-theme"}`),style:e.normalizeStyle(_.value),ref_key:"rootRef",ref:h},[e.createElementVNode("div",Fe,[e.createElementVNode("span",null,e.toDisplayString(t.title),1),e.createElementVNode("div",Ye,[e.createVNode(Q,{width:t.iconSize,height:t.iconSize,onClick:e.unref(o).closeEvent},null,8,["width","height","onClick"]),e.createVNode(Z,{width:t.iconSize,height:t.iconSize,onClick:e.unref(o).refreshEvent},null,8,["width","height","onClick"])])]),e.createElementVNode("div",{class:"gc-body gc-rotate-body",ref:"containerRef",style:e.normalizeStyle(i.value)},[e.createElementVNode("div",{class:"gc-body-inner",style:e.normalizeStyle(E.value)},[e.createElementVNode("div",He,[e.createVNode(ee)]),e.createElementVNode("div",{class:"gc-picture gc-rotate-picture",style:e.normalizeStyle(E.value)},[e.withDirectives(e.createElementVNode("img",{src:c.image,alt:""},null,8,je),[[e.vShow,m.value]]),Oe],4),e.createElementVNode("div",Ae,[e.createElementVNode("div",{class:"gc-rotate-thumb-block",style:e.normalizeStyle(k.value)},[e.withDirectives(e.createElementVNode("img",{src:c.thumb,alt:""},null,8,Ie),[[e.vShow,z.value]])],4)])],4)],4),e.createElementVNode("div",Ue,[e.createElementVNode("div",{class:"gc-drag-slide-bar",ref_key:"dragBarRef",ref:y},[qe,e.createElementVNode("div",{class:e.normalizeClass(["gc-drag-block",!m.value&&"disabled"]),ref_key:"dragBlockRef",ref:u,onMousedown:g[1]||(g[1]=(...b)=>e.unref(o).dragEvent&&e.unref(o).dragEvent(...b)),style:e.normalizeStyle({left:e.unref(o).state.dragLeft+"px"})},[e.createElementVNode("div",{class:"gc-drag-block-inline",onTouchstart:g[0]||(g[0]=(...b)=>e.unref(o).dragEvent&&e.unref(o).dragEvent(...b))},[e.createVNode(oe)],32)],38)],512)])],6)),[[e.vShow,B.value]])}}),ft="";J.name="gocaptcha-rotate",J.install=function(s){s.component("gocaptcha-rotate",J)};const Ge=[e.createElementVNode("circle",{fill:"#3E7CFF",cx:"100",cy:"100",r:"96.3"},null,-1),e.createElementVNode("path",{fill:"#FFFFFF",d:`M140.8,64.4l-39.6-11.9h-2.4L59.2,64.4c-1.6,0.8-2.8,2.4-2.8,4v24.1c0,25.3,15.8,45.9,42.3,54.6
c0.4,0,0.8,0.4,1.2,0.4c0.4,0,0.8,0,1.2-0.4c26.5-8.7,42.3-28.9,42.3-54.6V68.3C143.5,66.8,142.3,65.2,140.8,64.4z`},null,-1)],Je=e.defineComponent({__name:"btn-default-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),Ge,16))}}),Ke=[e.createElementVNode("path",{fill:"#FFA000",d:`M184,26.6L102.4,2.1h-4.9L16,26.6c-3.3,1.6-5.7,4.9-5.7,8.2v49.8c0,52.2,32.6,94.7,87.3,112.6
c0.8,0,1.6,0.8,2.4,0.8s1.6,0,2.4-0.8c54.7-18,87.3-59.6,87.3-112.6V34.7C189.8,31.5,187.3,28.2,184,26.6z M107.3,109.1
c-0.5,5.4-3.9,7.9-7.3,7.9c-2.5,0,0,0,0,0c-3.2-0.6-5.7-2-6.8-7.4l-4.4-50.9c0-5.1,6.2-9.7,11.5-9.7c5.3,0,11,4.7,11,9.9
L107.3,109.1z M109.3,133.3c0,5.1-4.2,9.3-9.3,9.3c-5.1,0-9.3-4.2-9.3-9.3c0-5.1,4.2-9.3,9.3-9.3C105.1,124,109.3,128.1,109.3,133.3
z`},null,-1)],Qe=e.defineComponent({__name:"btn-warn-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),Ke,16))}}),Ze=[e.createElementVNode("path",{fill:"#ED4630",d:`M184,26.6L102.4,2.1h-4.9L16,26.6c-3.3,1.6-5.7,4.9-5.7,8.2v49.8c0,52.2,32.6,94.7,87.3,112.6
c0.8,0,1.6,0.8,2.4,0.8s1.6,0,2.4-0.8c54.7-18,87.3-59.6,87.3-112.6V34.7C189.8,31.5,187.3,28.2,184,26.6z M134.5,123.1
c3.1,3.1,3.1,8.2,0,11.3c-1.6,1.6-3.6,2.3-5.7,2.3s-4.1-0.8-5.7-2.3L100,111.3l-23.1,23.1c-1.6,1.6-3.6,2.3-5.7,2.3
c-2,0-4.1-0.8-5.7-2.3c-3.1-3.1-3.1-8.2,0-11.3L88.7,100L65.5,76.9c-3.1-3.1-3.1-8.2,0-11.3c3.1-3.1,8.2-3.1,11.3,0L100,88.7
l23.1-23.1c3.1-3.1,8.2-3.1,11.3,0c3.1,3.1,3.1,8.2,0,11.3L111.3,100L134.5,123.1z`},null,-1)],et=e.defineComponent({__name:"btn-error-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),Ze,16))}}),tt=[e.createElementVNode("path",{fill:"#5EAA2F",d:`M183.3,27.2L102.4,2.9h-4.9L16.7,27.2C13.4,28.8,11,32,11,35.3v49.4c0,51.8,32.4,93.9,86.6,111.7
c0.8,0,1.6,0.8,2.4,0.8c0.8,0,1.6,0,2.4-0.8c54.2-17.8,86.6-59.1,86.6-111.7V35.3C189,32,186.6,28.8,183.3,27.2z M146.1,81.4
l-48.5,48.5c-1.6,1.6-3.2,2.4-5.7,2.4c-2.4,0-4-0.8-5.7-2.4L62,105.7c-3.2-3.2-3.2-8.1,0-11.3c3.2-3.2,8.1-3.2,11.3,0l18.6,18.6
l42.9-42.9c3.2-3.2,8.1-3.2,11.3,0C149.4,73.3,149.4,78.2,146.1,81.4L146.1,81.4z`},null,-1)],nt=e.defineComponent({__name:"btn-success-icon",emits:["click"],setup(s,{emit:n}){const l=n;function r(a){l("click",a)}return(a,p)=>(e.openBlock(),e.createElementBlock("svg",e.mergeProps({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 200 200",width:"20",height:"20"},a.$attrs,{onClick:r}),tt,16))}}),re=()=>({width:330,height:44,verticalPadding:12,horizontalPadding:16}),K=e.defineComponent({__name:"index",props:{config:{default:re},clickEvent:{},disabled:{type:Boolean,default:!1},type:{default:"default"},title:{default:"点击按键进行验证"}},emits:["click-event"],setup(s,{emit:n}){const l=s,{type:r,title:a,disabled:p,config:c}=e.toRefs(l),d=e.reactive({...re(),...e.toRaw(c)});e.watch(()=>l.config,(o,_)=>{Object.assign(d,o)},{deep:!0});const t=e.computed(()=>["go-captcha","gc-btn-block",`gc-${r.value}`,p.value?"gc-disabled":""]),h=e.computed(()=>({width:d.width+"px",height:d.height+"px",paddingLeft:d.horizontalPadding+"px",paddingRight:d.horizontalPadding+"px",paddingTop:d.verticalPadding+"px",paddingBottom:d.verticalPadding+"px"})),y=n;function u(o){y("click-event",o)}return(o,_)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(t.value),style:e.normalizeStyle(h.value),onClick:u},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r)==="default"?"gc-ripple":"")},[e.unref(r)==="default"?(e.openBlock(),e.createBlock(Je,{key:0})):e.unref(r)==="warn"?(e.openBlock(),e.createBlock(Qe,{key:1})):e.unref(r)==="error"?(e.openBlock(),e.createBlock(et,{key:2})):e.unref(r)==="success"?(e.openBlock(),e.createBlock(nt,{key:3})):e.createCommentVNode("",!0)],2),e.createElementVNode("span",null,e.toDisplayString(e.unref(a)),1)],6))}}),wt="";K.name="gocaptcha-button",K.install=function(s){s.component("gocaptcha-button",K)};const ct={install(s){U.install(s),q.install(s),G.install(s),J.install(s),K.install(s)}};W.Button=K,W.Click=U,W.Rotate=J,W.Slide=q,W.SlideRegion=G,W.default=ct,Object.defineProperties(W,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});