i&&v0&&Math.abs(l-45)<=d?l-=l-45:l<0&&Math.abs(l+45)<=d?l-=l+45:l>0&&Math.abs(l-90)<=d?l-=l-90:l<0&&Math.abs(l+90)<=d?l-=l+90:l>0&&Math.abs(l-135)<=d?l-=l-135:l<0&&Math.abs(l+135)<=d?l-=l+135:l>0&&Math.abs(l-180)<=d?l-=l-180:l<0&&Math.abs(l+180)<=d&&(l-=l+180),e.value=e.value.map((function(e){return c.id===e.id?Object(P["a"])(Object(P["a"])({},e),{},{rotate:l}):e}))}},document.onmouseup=function(){r=!1,document.onmousemove=null,document.onmouseup=null,i!==l&&(n.commit(g.UPDATE_SLIDE,{elements:e.value}),a())}}};return{rotateElement:r}},Ht=n("14b7");(function(e){e["UPDATE_TEXT_STATE"]="UPDATE_TEXT_STATE",e["EXEC_TEXT_COMMAND"]="EXEC_TEXT_COMMAND",e["UPDATE_TABLE_SELECTED_CELL"]="UPDATE_TABLE_SELECTED_CELL",e["SCALE_ELEMENT_STATE"]="SCALE_ELEMENT_STATE"})(Lt||(Lt={}));var zt=Object(Ht["a"])(),Ut=zt,Gt={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格"},qt={text:20,image:20,shape:15,chart:200,table:20},Wt=function(e,t){var n=e.left,o=e.top,c=e.width,a=e.height,r=Math.sqrt(Math.pow(c,2)+Math.pow(a,2))/2,l=180*Math.atan(a/c)/Math.PI,i=(180-t-l)*Math.PI/180,u=(l-t)*Math.PI/180,d=(90-t)*Math.PI/180,s=t*Math.PI/180,f=c/2,p=a/2,b=n+f,m=o+p,v={left:b+r*Math.cos(i),top:m-r*Math.sin(i)},O={left:b+p*Math.cos(d),top:m-p*Math.sin(d)},j={left:b+r*Math.cos(u),top:m-r*Math.sin(u)},h={left:b+f*Math.cos(s),top:m+f*Math.sin(s)},g={left:b-r*Math.cos(i),top:m+r*Math.sin(i)},y={left:b-p*Math.sin(s),top:m+p*Math.cos(s)},k={left:b-r*Math.cos(u),top:m+r*Math.sin(u)},E={left:b-f*Math.cos(s),top:m-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:j,rightPoint:h,rightBottomPoint:g,bottomPoint:y,leftBottomPoint:k,leftPoint:E}},Xt=function(e,t){var n,o=(n={},Object(S["a"])(n,te.RIGHT_BOTTOM,t.leftTopPoint),Object(S["a"])(n,te.LEFT_BOTTOM,t.rightTopPoint),Object(S["a"])(n,te.LEFT_TOP,t.rightBottomPoint),Object(S["a"])(n,te.RIGHT_TOP,t.leftBottomPoint),Object(S["a"])(n,te.TOP,t.bottomPoint),Object(S["a"])(n,te.BOTTOM,t.topPoint),Object(S["a"])(n,te.LEFT,t.rightPoint),Object(S["a"])(n,te.RIGHT,t.leftPoint),n);return o[e]},Yt=function(e,t,n){var o=X(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),r=Object(j["computed"])((function(){return o.state.canvasScale})),l=Se(),i=l.addHistorySnapshot,u=function(l,u,d){var s=!0;Ut.emit(Lt.SCALE_ELEMENT_STATE,!0);var f,p=u.left,b=u.top,m=u.width,v=u.height,O="rotate"in u&&u.rotate?u.rotate:0,j=Math.PI*O/180,h=a.value||"fixedRatio"in u&&u.fixedRatio,y=m/v,k=l.pageX,E=l.pageY,I=qt[u.type]||20,C=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||o.commit(g.SET_EDITORAREA_FOCUS,!0),c.value.includes(u.id)){if(l.value){var s=[];if(u.groupId){var f=[];e.value.forEach((function(e){e.groupId===u.groupId&&f.push(e.id)})),s=c.value.filter((function(e){return!f.includes(e)}))}else s=c.value.filter((function(e){return e!==u.id}));s.length>0&&o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,s)}else if(a.value!==u.id)o.commit(g.SET_HANDLE_ELEMENT_ID,u.id);else if(t.value!==u.id){var p=i.pageX,b=i.pageY;i.target.onmouseup=function(e){var n=e.pageX,o=e.pageY;p===n&&b===o&&(t.value=u.id,e.target.onmouseup=null)}}}else{var m=[];if(m=l.value?[].concat(Object(A["a"])(c.value),[u.id]):[u.id],u.groupId){var v=[];e.value.forEach((function(e){e.groupId===u.groupId&&v.push(e.id)})),m=[].concat(Object(A["a"])(m),v)}o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,Jt()(m)),o.commit(g.SET_HANDLE_ELEMENT_ID,u.id)}d&&n(i,u)},u=function(){var t=e.value.filter((function(e){return!e.lock})),n=t.map((function(e){return e.id}));o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,n)};return{selectElement:i,selectAllElement:u}},Qt=function(e,t,n){var o=X(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.state.canvasScale})),r=Se(),l=r.addHistorySnapshot,i=function(r,i){if(c.value.includes(i.id)){var u,d=!0,s=Le,f=Le*Te,p=5,b=JSON.parse(JSON.stringify(e.value)),m=b.filter((function(e){return c.value.includes(e.id)})),v=i.left,O=i.top,j=i.width,h="height"in i&&i.height?i.height:0,y="rotate"in i&&i.rotate?i.rotate:0,k=r.pageX,E=r.pageY,I=null,C=i.id===t.value,S=[],N=[],x=Object(ye["a"])(e.value);try{for(x.s();!(u=x.n()).done;){var L=u.value;if("line"!==L.type&&((!C||L.id!==i.id)&&(C||!c.value.includes(L.id)))){var T=void 0,w=void 0,V=void 0,_=void 0;if("rotate"in L&&L.rotate){var B=_t({left:L.left,top:L.top,width:L.width,height:L.height,rotate:L.rotate}),M=B.xRange,D=B.yRange;T=M[0],w=D[0],V=M[1]-M[0],_=D[1]-D[0]}else T=L.left,w=L.top,V=L.width,_=L.height;var R=T+V,F=w+_,H=w+_/2,z=T+V/2,U={value:w,range:[T,R]},G={value:F,range:[T,R]},q={value:H,range:[T,R]},W={value:T,range:[w,F]},X={value:R,range:[w,F]},Y={value:z,range:[w,F]};S.push(U,G,q),N.push(W,X,Y)}}}catch(te){x.e(te)}finally{x.f()}var Z={value:0,range:[0,s]},J={value:f,range:[0,s]},K={value:f/2,range:[0,s]},Q={value:0,range:[0,f]},$={value:s,range:[0,f]},ee={value:s/2,range:[0,f]};S.push(Z,J,K),N.push(Q,$,ee),S=Dt(S),N=Dt(N),document.onmousemove=function(t){var o=t.pageX,r=t.pageY;if(!1!==I&&(I=Math.abs(k-o)v&&(M[0]=_-w,D[0]=0),m>O&&(M[1]=B-V,D[1]=0),e.value=e.value.map((function(e){if(e.id===a.id){var t=Object(P["a"])(Object(P["a"])({},e),{},{left:w,top:V,start:M,end:D});return r!==ne.MID?(a.broken&&(t.broken=[(M[0]+D[0])/2,(M[1]+D[1])/2]),a.curve&&(t.curve=[(M[0]+D[0])/2,(M[1]+D[1])/2])):(a.broken&&(t.broken=[h-w,g-V]),a.curve&&(t.curve=[h-w,g-V])),t}return e}))}},document.onmouseup=function(n){l=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,a=n.pageY;u===o&&d===a||(t.commit(g.UPDATE_SLIDE,{elements:e.value}),c())}};return{dragLineElement:a}},en=n("3835"),tn=function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.creatingElement})),c=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(en["a"])(o,2),l=r[0],i=r[1],u=Object(en["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,j=(p-f)/n.value,h=(m-b)/n.value;return{left:v,top:O,width:j,height:h}}},a=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(en["a"])(o,2),l=r[0],i=r[1],u=Object(en["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,j=(p-f)/n.value,h=(m-b)/n.value,g=[l===f?0:j,i===b?0:h],y=[d===f?0:j,s===b?0:h];return{left:v,top:O,start:g,end:y}}},r=we(),l=r.createTextElement,i=r.createShapeElement,u=r.createLineElement,d=function(e){if(o.value){var n=o.value.type;if("text"===n){var r=c(e);r&&l(r)}else if("shape"===n){var d=c(e);d&&i(d,o.value.data)}else if("line"===n){var s=a(e);s&&u(s,o.value.data)}t.commit(g.SET_CREATING_ELEMENT,null)}};return{insertElementFromCreateSelection:d}};function nn(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-"+e.elementInfo.id,style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,["id"])}var on;n("a9e3");(function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table"})(on||(on={}));var cn,an,rn=function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Se(),a=c.addHistorySnapshot,r=function(c){var r,l=Le,i=Le*Te,u=Mt(n.value),d=u.minX,s=u.maxX,f=u.minY,p=u.maxY,b=JSON.parse(JSON.stringify(o.value.elements)),m=Object(ye["a"])(b);try{for(m.s();!(r=m.n()).done;){var v=r.value;if(t.value.includes(v.id)){if(c===$.CENTER){var O=f+(p-f)/2-i/2,j=d+(s-d)/2-l/2;v.top=v.top-O,v.left=v.left-j}if(c===$.TOP){var h=f-0;v.top=v.top-h}else if(c===$.VERTICAL){var y=f+(p-f)/2-i/2;v.top=v.top-y}else if(c===$.BOTTOM){var k=p-i;v.top=v.top-k}else if(c===$.LEFT){var E=d-0;v.left=v.left-E}else if(c===$.HORIZONTAL){var I=d+(s-d)/2-l/2;v.left=v.left-I}else if(c===$.RIGHT){var C=s-l;v.left=v.left-C}}}}catch(S){m.e(S)}finally{m.f()}e.commit(g.UPDATE_SLIDE,{elements:b}),a()};return{alignElementToCanvas:r}},ln=Object(j["withScopeId"])("data-v-5e75c7ca"),un=ln((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageClipHandler"),l=Object(j["resolveComponent"])("ImageOutline"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-image",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")},onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[e.isCliping?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,clipPath:e.clipShape.style,onClip:t[1]||(t[1]=function(t){return e.handleClip(t)})},null,8,["src","clipData","width","height","top","left","clipPath"])):Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},alt:""},null,12,["src"])],4)],4)),[[i,e.contextmenus]])],38)})),dn=function(e){var t=Object(j["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,c=t.blur,a=t.color;return"".concat(n,"px ").concat(o,"px ").concat(c,"px ").concat(a)}return""}));return{shadowStyle:t}},sn=function(e){var t=Object(j["computed"])((function(){if(e.value){var t="",n=e.value,o=n.x,c=n.y;return o&&c?t="rotateX(".concat(o,"deg) rotateY(").concat(c,"deg)"):o?t="rotateX(".concat(o,"deg)"):c&&(t="rotateY(".concat(c,"deg)")),t}return""}));return{flipStyle:t}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(cn||(cn={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(an||(an={}));var fn={rect:{name:"矩形",type:cn.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:cn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},rect3:{name:"矩形3",type:cn.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.8*t," Z")}},roundRect:{name:"圆角矩形",type:cn.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:cn.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:cn.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L 0 ").concat(t," L ").concat(e," ").concat(t," Z")}},triangle2:{name:"三角形2",type:cn.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:function(e,t){return"M ".concat(.5*e," ").concat(t," L 0 0 L ").concat(e," 0 Z")}},triangle3:{name:"三角形3",type:cn.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," Z")}},rhombus:{name:"菱形",type:cn.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.5*e," ").concat(t," L 0 ").concat(.5*t," Z")}},hexagon:{name:"六边形",type:cn.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.2*e," 0 L ").concat(.8*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.8*e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.5*t," Z")}},pentagon:{name:"五边形",type:cn.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.38*t," L ").concat(.82*e," ").concat(t," L ").concat(.18*e," ").concat(t," L 0 ").concat(.38*t," Z")}},parallelogram:{name:"平行四边形",type:cn.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.3*e," 0 L ").concat(e," 0 L ").concat(.7*e," ").concat(t," L 0 ").concat(t," Z")}},parallelogram2:{name:"平行四边形2",type:cn.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:function(e,t){return"M ".concat(.3*e," ").concat(t," L ").concat(e," ").concat(t," L ").concat(.7*e," 0 L 0 0 Z")}},trapezoid:{name:"梯形",type:cn.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.25*e," 0 L ").concat(.75*e," 0 L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},trapezoid2:{name:"梯形2",type:cn.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:function(e,t){return"M 0 0 L ".concat(e," 0 L ").concat(.75*e," ").concat(t," L ").concat(.25*e," ").concat(t," Z")}}},pn=function(e){var t=Object(j["computed"])((function(){if(!e.value)return fn.rect;var t=e.value.shape||cn.RECT;return fn[t]})),n=Object(j["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(en["a"])(e.value.range,2),n=t[0],o=t[1],c=(o[0]-n[0])/100,a=(o[1]-n[1])/100,r=n[0]/c,l=n[1]/a;return{left:-r+"%",top:-l+"%",width:100/c+"%",height:100/a+"%"}}));return{clipShape:t,imgPosition:n}},bn=(n("b64b"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);nr.width&&(p=r.width-i.width),b<0?b=0:b+i.height>r.height&&(b=r.height-i.height),f.left=p,f.top=b}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout((function(){l.value=!1}),0)}},y=function(t,n){l.value=!0;var o=!0,r=50/e.width*100,i=50/e.height*100,u=t.pageX,s=t.pageY,p=d.value,b={left:f.left,top:f.top,width:f.width,height:f.height},m=f.width/f.height;document.onmousemove=function(t){if(o){var l,d,v,O,j=t.pageX,h=t.pageY,g=(j-u)/c.value/e.width*100,y=(h-s)/c.value/e.height*100;a.value&&("b-r"!==n&&"t-l"!==n||(y=g/m),"b-l"!==n&&"t-r"!==n||(y=-g/m)),"t-l"===n?(b.left+g<0&&(g=-b.left),b.top+y<0&&(y=-b.top),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+y<0&&(y=-b.top),b.width+gp.height&&(y=p.height-(b.top+b.height)),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+b.height+y>p.height&&(y=p.height-(b.top+b.height)),b.width+g\s$/,e)},$n=function(e){return Object(Jn["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},eo=function(e){return Object(Jn["g"])(/^\s*([-+*])\s$/,e)},to=function(e){return Object(Jn["e"])(/^```$/,e)},no=function(e){var t=[].concat(Object(A["a"])(Jn["d"]),[Jn["a"],Jn["b"]]);return t.push(Qn(e.nodes.blockquote)),t.push($n(e.nodes.ordered_list)),t.push(eo(e.nodes.bullet_list)),t.push(to(e.nodes.code_block)),Object(Jn["c"])({rules:t})},oo=function(e){return[no(e),Object(qn["b"])(Kn(e)),Object(qn["b"])(Hn["a"]),Object(Xn["a"])(),Object(Yn["a"])(),Object(Wn["a"])()]},co=n("2210"),ao=Object(P["a"])(Object(P["a"])({},Zn["d"]),{},{content:"list_item+",group:"block"}),ro=Object(P["a"])(Object(P["a"])({},Zn["a"]),{},{content:"list_item+",group:"block"}),lo=Object(P["a"])(Object(P["a"])({},Zn["c"]),{},{content:"paragraph block*",group:"block"}),io={attrs:{align:{default:""}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";return n=/(left|right|center|justify)/.test(n)?n:"",{align:n}}}],toDOM:function(e){var t=e.attrs.align,n="";return t&&"left"!==t&&(n+="text-align: ".concat(t,";")),["p",{style:n},0]}},uo=Object(P["a"])(Object(P["a"])({},co["b"]),{},{ordered_list:ao,bullet_list:ro,list_item:lo,paragraph:io}),so=(n("ac1f"),n("5319"),{excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}}),fo={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},po={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:function(e){return"line-through"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"line-through"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration-line: line-through"},0]}},bo={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:function(e){return"underline"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"underline"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration: underline"},0]}},mo={attrs:{color:{}},parseDOM:[{style:"color",getAttrs:function(e){return e?{color:e}:{}}}],toDOM:function(e){var t=e.attrs.color,n="";return t&&(n+="color: ".concat(t,";")),["span",{style:n},0]}},vo={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{tag:"span[style*=background-color]",getAttrs:function(e){return e?{backcolor:e}:{}}}],toDOM:function(e){var t=e.attrs.backcolor,n="";return t&&(n+="background-color: ".concat(t,";")),["span",{style:n},0]}},Oo={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:function(e){return e?{fontsize:e}:{}}}],toDOM:function(e){var t=e.attrs.fontsize,n="";return t&&(n+="font-size: ".concat(t)),["span",{style:n},0]}},jo={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:function(e){return{fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""}}}],toDOM:function(e){var t=e.attrs.fontname,n="";return t&&(n+="font-family: ".concat(t)),["span",{style:n},0]}},ho=Object(P["a"])(Object(P["a"])({},co["a"]),{},{subscript:so,superscript:fo,strikethrough:po,underline:bo,forecolor:mo,backcolor:vo,fontsize:Oo,fontname:jo}),go=uo,yo=ho,ko=new Gn["i"]({nodes:go,marks:yo}),Eo=function(e){var t="".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return Gn["a"].fromSchema(ko).parse(o)},Io=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Un["c"](e,Object(P["a"])({state:zn["b"].create({doc:Eo(t),plugins:oo(ko)})},n))},Co=(n("b0c0"),function(e,t){return Array.isArray(e)&&e.indexOf(t.type)>-1||t.type===e}),So=function(e,t){for(var n=e.depth;n>0;n--){var o=e.node(n);if(t(o))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:o}}},No=function(e){return function(t){return So(t.$from,e)}},xo=function(e){return function(t){return No((function(t){return Co(e,t)}))(t)}},Lo=function(e,t){var n=t.schema.nodes[e];return!!xo(n)(t.selection)},To=function(e){var t=e.state,n=t.selection,o=t.doc,c=n.from,a=o.nodeAt(c);return(null===a||void 0===a?void 0:a.marks)||[]},wo=function(e,t,n){var o,c=To(e),a=Object(ye["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if(r.type.name===t&&r.attrs[n])return r.attrs[n]}}catch(l){a.e(l)}finally{a.f()}return null},Vo=function(e,t){var n,o=To(e),c=Object(ye["a"])(o);try{for(c.s();!(n=c.n()).done;){var a=n.value;if(a.type.name===t)return!0}}catch(r){c.e(r)}finally{c.f()}return!1},_o=function(e,t){var n=e.state,o=n.selection,c=n.doc,a=o.from,r=o.to,l=!0,i="";return c.nodesBetween(a,r,(function(e){return l&&e.attrs[t]&&(l=!1,i=e.attrs[t]),l})),i},Bo=function(e){var t=Vo(e,"strong"),n=Vo(e,"em"),o=Vo(e,"underline"),c=Vo(e,"strikethrough"),a=Vo(e,"superscript"),r=Vo(e,"subscript"),l=Vo(e,"code"),i=wo(e,"forecolor","color")||"#000",u=wo(e,"backcolor","backcolor")||"#000",d=wo(e,"fontsize","fontsize")||"20px",s=wo(e,"fontname","fontname")||"微软雅黑",f=_o(e,"align")||"left",p=Lo("bullet_list",e.state),b=Lo("ordered_list",e.state),m=Lo("blockquote",e.state);return{bold:t,em:n,underline:o,strikethrough:c,superscript:a,subscript:r,code:l,color:i,backcolor:u,fontsize:d,fontname:s,align:f,bulletList:p,orderedList:b,blockquote:m}},Mo=(n("6062"),n("3ca3"),function(e,t,n){var o=e,c=o.selection,a=o.doc;if(!c||!a)return e;var r=c.from,l=c.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var p=new Set([u,d,s]);return a.nodesBetween(r,l,(function(e,t){var o=e.type,c=e.attrs.align||"";return c!==n&&p.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,c=t.pos,a=t.nodeType,r=o.attrs;r=n?Object(P["a"])(Object(P["a"])({},r),{},{align:n}):Object(P["a"])(Object(P["a"])({},r),{},{align:null}),e=e.setNodeMarkup(c,a,r,o.marks)})),e):e}),Do=function(e,t){var n=e.state,o=n.schema,c=n.selection,a=Mo(n.tr.setSelection(c),o,t);e.dispatch(a)},Ao=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},Po=function(e,t){return function(n,o){var c=n.schema,a=n.selection,r=a.$from,l=a.$to,i=r.blockRange(l);if(!i)return!1;var u=No((function(e){return Ao(e,c)}))(a);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object(Zn["b"])(t)(n,o);if(Ao(u.node,c)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object(Zn["g"])(e)(n,o)}},Ro=Object(j["withScopeId"])("data-v-2ddaa919"),Fo=Ro((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return e.outline?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},{default:Ro((function(){return[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",d:"M0,0 L".concat(e.width,",0 L").concat(e.width,",").concat(e.height," L0,").concat(e.height," Z"),stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,["d","stroke","stroke-width","stroke-dasharray"])]})),_:1},8,["width","height"])):Object(j["createCommentVNode"])("",!0)})),Ho=Object(j["defineComponent"])({name:"element-outline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=hn(Object(j["toRef"])(e,"outline")),n=t.outlineWidth,o=t.outlineStyle,c=t.outlineColor;return{outlineWidth:n,outlineStyle:o,outlineColor:c}}});n("d9a3");Ho.render=Fo,Ho.__scopeId="data-v-2ddaa919";var zo=Ho,Uo=Object(j["defineComponent"])({name:"editable-element-text",components:{ElementOutline:zo},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t,n=X(),o=Se(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(-1),i=Object(j["ref"])(),u=Object(j["computed"])((function(){return e.elementInfo.shadow})),d=dn(u),s=d.shadowStyle,f=Object(j["computed"])((function(){return n.state.handleElementId})),p=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},b=function(t){r.value=t,t||-1===l.value||(n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:l.value}}),l.value=-1)};Ut.on(Lt.SCALE_ELEMENT_STATE,(function(e){return b(e)})),Object(j["onUnmounted"])((function(){Ut.off(Lt.SCALE_ELEMENT_STATE,(function(e){return b(e)}))}));var m=function(t){var o=t[0].contentRect;if(a.value){var c=o.height;e.elementInfo.height!==c&&(r.value?l.value=c:n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:c}}))}},v=new ResizeObserver(m);Object(j["onMounted"])((function(){a.value&&v.observe(a.value)})),Object(j["onUnmounted"])((function(){a.value&&v.unobserve(a.value)}));var O=Ee()((function(){n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{content:t.dom.innerHTML}}),c()}),300,{trailing:!0}),h=function(){"请输入内容"===e.elementInfo.content&&(t.dom.innerHTML="",O()),n.commit(g.SET_DISABLE_HOTKEYS_STATE,!0)},y=function(){n.commit(g.SET_DISABLE_HOTKEYS_STATE,!1)},k=Ee()((function(){var e=Bo(t);Ut.emit(Lt.UPDATE_TEXT_STATE,e)}),30,{trailing:!0}),E=function(){O(),k()},I=Object(j["computed"])((function(){return e.elementInfo.content}));Object(j["watch"])(I,(function(){t&&(t.hasFocus()||(t.dom.innerHTML=I.value))}));var C=Object(j["computed"])((function(){return!e.elementInfo.lock}));Object(j["watch"])(C,(function(){t.setProps({editable:function(){return C.value}})})),Object(j["onMounted"])((function(){t=Io(i.value,I.value,{handleDOMEvents:{focus:h,blur:y,keydown:E,click:k},editable:function(){return C.value}})})),Object(j["onUnmounted"])((function(){t&&t.destroy()}));var S=function(n){if(f.value===e.elementInfo.id){var o,c="command"in n?[n]:n,a=Object(ye["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if("fontname"===r.command&&r.value){var l=t.state.schema.marks.fontname.create({fontname:r.value}),i=t.state.selection.empty;i&&Object(Hn["d"])(t.state,t.dispatch);var u=t.state.selection,d=u.$from,s=u.$to;t.dispatch(t.state.tr.addMark(d.pos,s.pos,l))}else if("fontsize"===r.command&&r.value){var p=t.state.schema.marks.fontsize.create({fontsize:r.value}),b=t.state.selection.empty;b&&Object(Hn["d"])(t.state,t.dispatch);var m=t.state.selection,v=m.$from,j=m.$to;t.dispatch(t.state.tr.addMark(v.pos,j.pos,p))}else if("color"===r.command&&r.value){var h=t.state.schema.marks.forecolor.create({color:r.value}),g=t.state.selection.empty;g&&Object(Hn["d"])(t.state,t.dispatch);var y=t.state.selection,E=y.$from,I=y.$to;t.dispatch(t.state.tr.addMark(E.pos,I.pos,h))}else if("backcolor"===r.command&&r.value){var C=t.state.schema.marks.backcolor.create({backcolor:r.value}),S=t.state.selection.empty;S&&Object(Hn["d"])(t.state,t.dispatch);var N=t.state.selection,x=N.$from,L=N.$to;t.dispatch(t.state.tr.addMark(x.pos,L.pos,C))}else if("bold"===r.command){var T=t.state.selection.empty;T&&Object(Hn["d"])(t.state,t.dispatch),Object(Hn["f"])(t.state.schema.marks.strong)(t.state,t.dispatch)}else if("em"===r.command){var w=t.state.selection.empty;w&&Object(Hn["d"])(t.state,t.dispatch),Object(Hn["f"])(t.state.schema.marks.em)(t.state,t.dispatch)}else if("underline"===r.command){var V=t.state.selection.empty;V&&Object(Hn["d"])(t.state,t.dispatch),Object(Hn["f"])(t.state.schema.marks.underline)(t.state,t.dispatch)}else if("strikethrough"===r.command){var _=t.state.selection.empty;_&&Object(Hn["d"])(t.state,t.dispatch),Object(Hn["f"])(t.state.schema.marks.strikethrough)(t.state,t.dispatch)}else if("subscript"===r.command)Object(Hn["f"])(t.state.schema.marks.subscript)(t.state,t.dispatch);else if("superscript"===r.command)Object(Hn["f"])(t.state.schema.marks.superscript)(t.state,t.dispatch);else if("blockquote"===r.command)Object(Hn["g"])(t.state.schema.nodes.blockquote)(t.state,t.dispatch);else if("code"===r.command)Object(Hn["f"])(t.state.schema.marks.code)(t.state,t.dispatch);else if("align"===r.command&&r.value)Do(t,r.value);else if("bulletList"===r.command){var B=t.state.schema.nodes,M=B.bullet_list,D=B.list_item;Po(M,D)(t.state,t.dispatch)}else if("orderedList"===r.command){var A=t.state.schema.nodes,P=A.ordered_list,R=A.list_item;Po(P,R)(t.state,t.dispatch)}else if("clear"===r.command){var F=t.state.selection.empty;F&&Object(Hn["d"])(t.state,t.dispatch);var H=t.state.selection,z=H.$from,U=H.$to;t.dispatch(t.state.tr.removeMark(z.pos,U.pos))}}}catch(G){a.e(G)}finally{a.f()}t.focus(),O(),k()}};return Ut.on(Lt.EXEC_TEXT_COMMAND,(function(e){return S(e)})),Object(j["onUnmounted"])((function(){Ut.off(Lt.EXEC_TEXT_COMMAND,(function(e){return S(e)}))})),{elementRef:a,editorViewRef:i,handleSelectElement:p,shadowStyle:s}}});n("d5a1");Uo.render=Fn,Uo.__scopeId="data-v-6769a5f7";var Go=Uo,qo=Object(j["withScopeId"])("data-v-a0860bd0");Object(j["pushScopeId"])("data-v-a0860bd0");var Wo={key:0};Object(j["popScopeId"])();var Xo=qo((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GradientDefs"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},{default:qo((function(){return[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createBlock"])("defs",Wo,[Object(j["createVNode"])(r,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,["d","fill","stroke","stroke-width","stroke-dasharray"])],8,["transform"])]})),_:1},8,["width","height"])],4),[[i,e.contextmenus]])],38)}));function Yo(e,t,n,o,c,a){return"linear"===e.type?(Object(j["openBlock"])(),Object(j["createBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(j["createVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,["stop-color"]),Object(j["createVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,["stop-color"])],8,["id","gradientTransform"])):(Object(j["openBlock"])(),Object(j["createBlock"])("radialGradient",{key:1,id:e.id},[Object(j["createVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,["stop-color"]),Object(j["createVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,["stop-color"])],8,["id"]))}var Zo=Object(j["defineComponent"])({name:"gradient-defs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}}});Zo.render=Yo;var Jo=Zo,Ko=Object(j["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:Jo},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.outline})),o=hn(n),c=o.outlineWidth,a=o.outlineStyle,r=o.outlineColor,l=Object(j["computed"])((function(){return e.elementInfo.shadow})),i=dn(l),u=i.shadowStyle,d=Object(j["computed"])((function(){return e.elementInfo.flip})),s=sn(d),f=s.flipStyle;return{handleSelectElement:t,shadowStyle:u,outlineWidth:c,outlineStyle:a,outlineColor:r,flipStyle:f}}});n("50af");Ko.render=Xo,Ko.__scopeId="data-v-a0860bd0";var Qo=Ko,$o=Object(j["withScopeId"])("data-v-7d3d40d6"),ec=$o((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.svgWidth,height:e.svgHeight},{default:$o((function(){return[Object(j["createVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"]),Object(j["withDirectives"])(Object(j["createVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},null,40,["d"]),[[i,e.contextmenus]])]})),_:1},8,["width","height"])],4)],6)}));function tc(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*e.size,markerHeight:3*e.size,refX:1.5*e.size,refY:1.5*e.size},[Object(j["createVNode"])("path",{d:e.path,fill:e.color,transform:"scale(".concat(.3*e.size,", ").concat(.3*e.size,") rotate(").concat(e.rotate,", 5, 5)")},null,8,["d","fill","transform"])],8,["id","markerWidth","markerHeight","refX","refY"])}var nc={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},oc={"arrow-start":180,"arrow-end":0},cc=Object(j["defineComponent"])({name:"line-point-marker",props:{id:{type:String,required:!0},position:{type:String,required:!0},type:{type:String,required:!0},color:{type:String},baseSize:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return nc[e.type]})),n=Object(j["computed"])((function(){return oc["".concat(e.type,"-").concat(e.position)]||0})),o=Object(j["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});cc.render=tc;var ac=cc,rc=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:ac},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.shadow})),o=dn(n),c=o.shadowStyle,a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),r=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),l=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(j["computed"])((function(){var t=e.elementInfo.start.join(","),n=e.elementInfo.end.join(",");if(e.elementInfo.broken){var o=e.elementInfo.broken.join(",");return"M".concat(t," L").concat(o," L").concat(n)}if(e.elementInfo.curve){var c=e.elementInfo.curve.join(",");return"M".concat(t," Q").concat(c," ").concat(n)}return"M".concat(t," L").concat(n)}));return{handleSelectElement:t,shadowStyle:c,svgWidth:a,svgHeight:r,lineDashArray:l,path:i}}});n("b7b4");rc.render=ec,rc.__scopeId="data-v-7d3d40d6";var lc=rc,ic=Object(j["withScopeId"])("data-v-6277fc70"),uc=ic((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-chart",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor},null,8,["width","height","type","data","options","themeColor","gridColor"])],4),[[i,e.contextmenus]])],38)})),dc=Object(j["withScopeId"])("data-v-233b1dc8");Object(j["pushScopeId"])("data-v-233b1dc8");var sc={class:"chart"};Object(j["popScopeId"])();var fc=dc((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",sc,[Object(j["createVNode"])("div",{class:"chart-content",ref:"chartRef",style:{width:e.width+"px",height:e.height+"px",transform:"scale(".concat(1/e.slideScale,")")}},null,4)])})),pc=n("8103"),bc=n.n(pc),mc=n("66cb"),vc=n.n(mc),Oc=n("ba48"),jc=n.n(Oc),hc=(n("aa97"),Object(j["defineComponent"])({name:"chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:String,required:!0},gridColor:{type:String}},setup:function(e){var t,n=Object(j["ref"])(),o=Object(j["inject"])("slideScale")||Object(j["ref"])(1),c=function(){var t=e.options||{},n=Object(P["a"])(Object(P["a"])({},t),{},{width:e.width*o.value,height:e.height*o.value}),c="pie"===e.type?Object(P["a"])(Object(P["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:c,options:n}},a=function(){if(n.value){var o=bc()(e.type),a=c(),r=a.data,l=a.options;t=new jc.a[o](n.value,r,l)}},r=function(){if(t){var e=c(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(j["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},o],r),Object(j["onMounted"])(a);var l=function(){if(n.value)for(var t=vc()(e.themeColor).analogous(10),o=0;o<10;o++){var c=t[o].toRgbString();n.value.style.setProperty("--theme-color-".concat(o+1),c)}};Object(j["watch"])((function(){return e.themeColor}),l),Object(j["onMounted"])(l);var i=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(j["watch"])((function(){return e.gridColor}),i),Object(j["onMounted"])(i),{slideScale:o,chartRef:n}}}));n("a902"),n("32d8");hc.render=fc,hc.__scopeId="data-v-233b1dc8";var gc=hc,yc=Object(j["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:zo,Chart:gc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))};return{handleSelectElement:t}}});n("ea33");yc.render=uc,yc.__scopeId="data-v-6277fc70";var kc=yc,Ec=Object(j["withScopeId"])("data-v-c0edfdac");Object(j["pushScopeId"])("data-v-c0edfdac");var Ic={class:"element-content"};Object(j["popScopeId"])();var Cc=Ec((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("EditableTable"),l=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-table",{lock:e.elementInfo.lock}],ref:"elementRef",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"}},[Object(j["withDirectives"])(Object(j["createVNode"])("div",Ic,[Object(j["createVNode"])(r,{onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:e.editable,onChange:t[2]||(t[2]=function(t){return e.updateTableCells(t)}),onChangeColWidths:t[3]||(t[3]=function(t){return e.updateColWidths(t)}),onChangeSelectedCells:t[4]||(t[4]=function(t){return e.updateSelectedCells(t)})},null,8,["data","width","colWidths","outline","theme","editable"]),!e.editable||e.elementInfo.lock?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["table-mask",{lock:e.elementInfo.lock}],onDblclick:t[5]||(t[5]=function(t){return e.startEdit()}),onMousedown:t[6]||(t[6]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])("div",{class:"mask-tip",style:{transform:"scale(".concat(1/e.canvasScale,")")}},"双击编辑",4)],34)):Object(j["createCommentVNode"])("",!0)],512),[[l,e.contextmenus]])],6)})),Sc=(n("13d5"),Object(j["withScopeId"])("data-v-ae1d6576"));Object(j["pushScopeId"])("data-v-ae1d6576");var Nc={key:0,class:"handler"};Object(j["popScopeId"])();var xc=Sc((function(e,t,n,o,c,a){var r,l,i,u,d,s=Object(j["resolveComponent"])("CustomTextarea"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-table",style:{width:e.totalWidth+"px"}},[e.editable?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Nc,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.dragLinePosition,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"drag-line",key:n,style:{left:t+"px"},onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,["onMousedown"])})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("table",{class:{theme:e.theme,"row-header":null===(r=e.theme)||void 0===r?void 0:r.rowHeader,"row-footer":null===(l=e.theme)||void 0===l?void 0:l.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter},style:"--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1])},[Object(j["createVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])("col",{span:"1",key:t,width:e},null,8,["width"])})),128))]),Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tableCells,(function(n,o){return Object(j["openBlock"])(),Object(j["createBlock"])("tr",{key:o},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n,(function(n,c){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("td",{class:["cell",{selected:e.selectedCells.includes("".concat(o,"_").concat(c))&&e.selectedCells.length>1,active:e.activedCell==="".concat(o,"_").concat(c)}],style:Object(P["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(n.style)),key:n.id,rowspan:n.rowspan,colspan:n.colspan,"data-cell-index":"".concat(o,"_").concat(c),onMousedown:function(t){return e.handleCellMousedown(t,o,c)},onMouseenter:function(t){return e.handleCellMouseenter(o,c)}},[Object(j["createVNode"])(s,{class:["cell-text",{active:e.activedCell==="".concat(o,"_").concat(c)}],contenteditable:e.activedCell==="".concat(o,"_").concat(c)&&"plaintext-only",modelValue:n.text,"onUpdate:modelValue":[function(e){return n.text=e},t[1]||(t[1]=function(t){return e.handleInput()})]},null,8,["class","contenteditable","modelValue","onUpdate:modelValue"])],46,["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"])),[[j["vShow"],!e.hideCells.includes("".concat(o,"_").concat(c))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)})),Lc=(n("1276"),n("cc71"),function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,c=e.strikethrough,a=e.color,r=e.backcolor,l=e.fontsize,i=e.fontname,u=e.align;return{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:"".concat(o?"underline":""," ").concat(c?"line-through":""),color:a||"#000",backgroundColor:r||"",fontSize:l||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}}),Tc=function(e){var t=Object(j["computed"])((function(){for(var t=[],n=0;n1||a.rowspan>1)for(var r=n;r=d&&b<=f&&v>=s&&v<=p&&u.push("".concat(b,"_").concat(v));return u}));Object(j["watch"])(g,(function(){n("changeSelectedCells",g.value)}));var y=Object(j["computed"])((function(){return g.value.length>1?null:g.value[0]})),k=Object(j["computed"])((function(){if(!r.value.length)return null;var e=Object(en["a"])(r.value,2),t=e[0],n=e[1];if(!l.value.length)return{row:[t,t],col:[n,n]};var o=Object(en["a"])(l.value,2),c=o[0],a=o[1];if(t===c&&n===a)return{row:[t,t],col:[n,n]};var i=Math.min(t,c),u=Math.min(n,a),d=Math.max(t,c),s=Math.max(n,a);return{row:[i,d],col:[u,s]}})),E=function(){return a.value=!1},I=function(e,t,n){0===e.button&&(l.value=[],a.value=!0,r.value=[t,n])},C=function(e,t){a.value&&(l.value=[e,t])};Object(j["onMounted"])((function(){document.addEventListener("mouseup",E)})),Object(j["onUnmounted"])((function(){document.removeEventListener("mouseup",E)}));var S=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},N=function(e){var t=i.value.length-1;r.value=[0,e],l.value=[t,e]},x=function(e){var t=i.value[e].length-1;r.value=[e,0],l.value=[e,t]},L=function(){var e=i.value.length-1,t=i.value[e].length-1;r.value=[0,0],l.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],c=0;c=0;u--)if(!S(u,l)){t[u][l].rowspan=t[u][l].rowspan-1;break}t.splice(e,1),i.value=t},w=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),o=[],c=0;c=0;u--)if(!S(l,u)){t[l][u].colspan=t[l][u].colspan-1;break}i.value=t.map((function(t){return t.splice(e,1),t})),f.value.splice(e,1),n("changeColWidths",f.value)},V=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;o1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},U=function(e,t){var n=g.value.length>1,o=i.value[e][t],c=n,a=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:c,canSplit:a}},G=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];g.value.includes("".concat(n,"_").concat(o))||(r.value=[n,o],l.value=[]);var c=U(n,o),a=c.canMerge,i=c.canSplit,u=z(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return _(o)}},{text:"到右侧",handler:function(){return _(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return V(n)}},{text:"到下方",handler:function(){return V(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return w(o)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!a,handler:B},{text:"取消合并单元格",disable:!i,handler:function(){return M(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return N(o)}},{text:"选中当前行",handler:function(){return x(n)}},{text:"选中全部单元格",handler:L}]};return{getTextStyle:Lc,dragLinePosition:m,tableCells:i,colSizeList:f,totalWidth:p,hideCells:h,selectedCells:g,activedCell:y,selectedRange:k,handleCellMousedown:I,handleCellMouseenter:C,selectCol:N,selectRow:x,handleMousedownColHandler:D,contextmenus:G,handleInput:F,subThemeColor:s}}});n("eb09");Mc.render=xc,Mc.__scopeId="data-v-ae1d6576";var Dc=Mc,Ac=Object(j["defineComponent"])({name:"editable-element-table",components:{EditableTable:Dc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.handleElementId})),c=Object(j["ref"])(),a=Se(),r=a.addHistorySnapshot,l=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},i=Object(j["ref"])(!1);Object(j["watch"])(o,(function(){o.value!==e.elementInfo.id&&(i.value=!1)})),Object(j["watch"])(i,(function(){t.commit(g.SET_DISABLE_HOTKEYS_STATE,i.value)}));var u=function(){e.elementInfo.lock||(i.value=!0)},d=Object(j["ref"])(!1),s=Object(j["ref"])(-1),f=function(n){d.value=n,n&&(i.value=!1),n||-1===s.value||(t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:s.value}}),s.value=-1)};Ut.on(Lt.SCALE_ELEMENT_STATE,(function(e){return f(e)})),Object(j["onUnmounted"])((function(){Ut.off(Lt.SCALE_ELEMENT_STATE,(function(e){return f(e)}))}));var p=function(n){var o=n[0].contentRect;if(c.value){var a=o.height;e.elementInfo.height!==a&&(d.value?s.value=a:t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:a}}))}},b=new ResizeObserver(p);Object(j["onMounted"])((function(){c.value&&b.observe(c.value)})),Object(j["onUnmounted"])((function(){c.value&&b.unobserve(c.value)}));var m=function(n){t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{data:n}}),r()},v=function(n){var o=n.reduce((function(e,t){return e+t})),c=n.map((function(e){return e/o}));t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{width:o,colWidths:c}}),r()},O=function(e){Object(j["nextTick"])((function(){return Ut.emit(Lt.UPDATE_TABLE_SELECTED_CELL,e)}))};return{elementRef:c,canvasScale:n,handleSelectElement:l,updateTableCells:m,updateColWidths:v,editable:i,startEdit:u,updateSelectedCells:O}}});n("254e");Ac.render=Cc,Ac.__scopeId="data-v-c0edfdac";var Pc=Ac,Rc=Object(j["defineComponent"])({name:"editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},isMultiSelect:{type:Boolean,required:!0},selectElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.theme})),o=Object(j["computed"])((function(){var t,n=(t={},Object(S["a"])(t,on.IMAGE,Pn),Object(S["a"])(t,on.TEXT,Go),Object(S["a"])(t,on.SHAPE,Qo),Object(S["a"])(t,on.LINE,lc),Object(S["a"])(t,on.CHART,kc),Object(S["a"])(t,on.TABLE,Pc),t);return n[e.elementInfo.type]||null})),c=Fe(),a=c.orderElement,r=rn(),l=r.alignElementToCanvas,i=De(),u=i.combineElements,d=i.uncombineElements,s=Me(),f=s.deleteElement,p=Be(),b=p.lockElement,m=p.unlockElement,v=Ae(),O=v.copyElement,h=v.pasteElement,g=v.cutElement,y=Pe(),k=y.selectAllElement,E=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return m(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:g},{text:"复制",subText:"Ctrl + C",handler:O},{text:"粘贴",subText:"Ctrl + V",handler:h},{divider:!0},{text:"对齐方式",children:[{text:"水平垂直居中",handler:function(){return l($.CENTER)}},{divider:!0},{text:"水平居中",handler:function(){return l($.HORIZONTAL)}},{text:"左对齐",handler:function(){return l($.LEFT)}},{text:"右对齐",handler:function(){return l($.RIGHT)}},{divider:!0},{text:"垂直居中",handler:function(){return l($.VERTICAL)}},{text:"顶部对齐",handler:function(){return l($.TOP)}},{text:"底部对齐",handler:function(){return l($.BOTTOM)}}]},{text:"层级排序",disable:e.isMultiSelect&&!e.elementInfo.groupId,children:[{text:"置顶层",handler:function(){return a(e.elementInfo,Q.TOP)}},{text:"置底层",handler:function(){return a(e.elementInfo,Q.BOTTOM)}},{divider:!0},{text:"上移一层",handler:function(){return a(e.elementInfo,Q.UP)}},{text:"下移一层",handler:function(){return a(e.elementInfo,Q.DOWN)}}]},{divider:!0},{text:e.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:e.elementInfo.groupId?d:u,hide:!e.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:k},{text:"锁定",subText:"Ctrl + L",handler:b},{text:"删除",subText:"Delete",handler:f}]};return{currentElementComponent:o,contextmenus:E,theme:n}}});Rc.render=nn;var Fc=Rc,Hc=Object(j["withScopeId"])("data-v-1619c258"),zc=Hc((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"mouse-selection quadrant-".concat(n.quadrant),style:{top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"}},null,6)})),Uc={name:"mouse-selection",props:{top:{type:Number,required:!0},left:{type:Number,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},quadrant:{type:Number,required:!0,validator:function(e){return[1,2,3,4].includes(e)}}}};n("2007");Uc.render=zc,Uc.__scopeId="data-v-1619c258";var Gc=Uc,qc=Object(j["withScopeId"])("data-v-a9ca1b50"),Wc=qc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GridLines");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"viewport-background",style:e.backgroundStyle},[e.showGridLines?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0})):Object(j["createCommentVNode"])("",!0)],4)})),Xc=Object(j["withScopeId"])("data-v-5664d2b2"),Yc=Xc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"grid-lines"},{default:Xc((function(){return[Object(j["createVNode"])("path",{style:{transform:"scale(".concat(e.canvasScale,")")},d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","shape-rendering":"crispEdges","stroke-dasharray":"5"},null,12,["d","stroke"])]})),_:1})})),Zc=Object(j["defineComponent"])({name:"grid-lines",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),o=Object(j["computed"])((function(){if(!n.value||"image"===n.value.type)return"rgba(100, 100, 100, 0.5)";var e=n.value.color,t=vc()(e).toRgb(),o={r:t.r>128?t.r-128:t.r+127,g:t.g>128?t.g-128:t.g+127,b:t.b>128?t.b-128:t.b+127,a:.5};return"rgba(".concat([o.r,o.g,o.b,o.a].join(","),")")})),c=50,a=function(){for(var e=Le,t=Le*Te,n="",o=0;o<=Math.floor(t/c);o++)n+="M0 ".concat(o*c,", L").concat(e," ").concat(o*c);for(var a=0;a<=Math.floor(e/c);a++)n+="M".concat(a*c," 0, L").concat(a*c," ").concat(t);return n};return{canvasScale:t,gridColor:o,width:Le,height:Le*Te,path:a()}}});n("51ad");Zc.render=Yc,Zc.__scopeId="data-v-5664d2b2";var Jc=Zc,Kc=function(e){var t=Object(j["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,c=t.image,a=t.imageSize,r=t.gradientColor,l=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return c?"repeat"===a?{backgroundImage:"url(".concat(c),backgroundRepeat:"repeat",backgroundSize:"initial"}:{backgroundImage:"url(".concat(c),backgroundRepeat:"no-repeat",backgroundSize:a||"cover"}:{backgroundColor:"#fff"};if("gradient"===n){var u=l||0,d=r?r[0]:"#fff",s=r?r[1]:"#fff";return"radial"===i?{backgroundImage:"radial-gradient(".concat(d,", ").concat(s)}:{backgroundImage:"linear-gradient(".concat(u,"deg, ").concat(d,", ").concat(s)}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},Qc=Object(j["defineComponent"])({name:"viewport-background",components:{GridLines:Jc},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.showGridLines})),n=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),o=Kc(n),c=o.backgroundStyle;return{showGridLines:t,backgroundStyle:c}}});n("f802");Qc.render=Wc,Qc.__scopeId="data-v-a9ca1b50";var $c=Qc,ea=Object(j["withScopeId"])("data-v-2d3eddf5"),ta=ea((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"alignment-line",style:{left:e.left,top:e.top}},[Object(j["createVNode"])("div",{class:["line",e.type],style:e.sizeStyle},null,6)],4)})),na=Object(j["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.axis.x*n.value+"px"})),c=Object(j["computed"])((function(){return e.axis.y*n.value+"px"})),a=Object(j["computed"])((function(){return"vertical"===e.type?{height:e.length*n.value+"px"}:{width:e.length*n.value+"px"}}));return{left:o,top:c,sizeStyle:a}}});n("92ad");na.render=ta,na.__scopeId="data-v-2d3eddf5";var oa=na,ca=Object(j["withScopeId"])("data-v-6baf3897"),aa=ca((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.createSelection(t)}),["stop"]))},[e.start&&e.end?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["selection",e.creatingElement.type],style:e.position},["line"===e.creatingElement.type&&e.lineData?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},{default:ca((function(){return[Object(j["createVNode"])("path",{d:e.lineData.path,stroke:"#d14424",fill:"none","stroke-width":"1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":""},null,8,["d"])]})),_:1},8,["width","height"])):Object(j["createCommentVNode"])("",!0)],6)):Object(j["createCommentVNode"])("",!0)],544)})),ra=Object(j["defineComponent"])({name:"element-create-selection",setup:function(e,t){var n=t.emit,o=X(),c=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),a=Object(j["computed"])((function(){return o.state.creatingElement})),r=Object(j["ref"])(null),l=Object(j["ref"])(null),i=Object(j["ref"])(),u=Object(j["reactive"])({x:0,y:0});Object(j["onMounted"])((function(){if(i.value){var e=i.value.getBoundingClientRect(),t=e.x,n=e.y;u.x=t,u.y=n}}));var d=function(e){var t=!0,i=e.pageX,u=e.pageY;r.value=[i,u],document.onmousemove=function(e){if(a.value&&t){var n=e.pageX,o=e.pageY;if(c.value){var r=n-i,d=o-u,s=Math.abs(r),f=Math.abs(d);if("shape"===a.value.type){var p=d>0&&r<0||d<0&&r>0;s>f?o=p?u-r:u+r:n=p?i-d:i+d}else"line"===a.value.type&&(s>f?o=u:n=i)}l.value=[n,o]}},document.onmouseup=function(e){document.onmousemove=null,document.onmouseup=null,t=!1;var c=e.pageX,a=e.pageY,d=30;Math.abs(c-i)>=d||Math.abs(a-u)>=d?n("created",{start:r.value,end:l.value}):o.commit(g.SET_CREATING_ELEMENT,null)}},s=Object(j["computed"])((function(){if(!r.value||!l.value)return null;if(!a.value||"line"!==a.value.type)return null;var e=Object(en["a"])(r.value,2),t=e[0],n=e[1],o=Object(en["a"])(l.value,2),c=o[0],i=o[1],u=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,i),f=Math.max(n,i),p=d-u>=24?d-u:24,b=f-s>=24?f-s:24,m=t===u?0:d-u,v=n===s?0:f-s,O=c===u?0:d-u,j=i===s?0:f-s,h="M".concat(m,", ").concat(v," L").concat(O,", ").concat(j);return{svgWidth:p,svgHeight:b,startX:m,startY:v,endX:O,endY:j,path:h}})),f=Object(j["computed"])((function(){if(!r.value||!l.value)return{};var e=Object(en["a"])(r.value,2),t=e[0],n=e[1],o=Object(en["a"])(l.value,2),c=o[0],a=o[1],i=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,a),f=Math.max(n,a),p=d-i,b=f-s;return{left:i-u.x+"px",top:s-u.y+"px",width:p+"px",height:b+"px"}}));return{selectionRef:i,start:r,end:l,creatingElement:a,createSelection:d,lineData:s,position:f}}});n("1259");ra.render=aa,ra.__scopeId="data-v-6baf3897";var la=ra,ia=Object(j["withScopeId"])("data-v-4def6455"),ua=ia((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"multi-select-operate",style:{left:e.minX*e.canvasScale+"px",top:e.minY*e.canvasScale+"px"}},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.disableResize?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleMultiElement(n,{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY},t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)})),da=function(e,t){var n=Object(j["computed"])((function(){return[{direction:te.LEFT_TOP,style:{}},{direction:te.TOP,style:{left:e.value/2+"px"}},{direction:te.RIGHT_TOP,style:{left:e.value+"px"}},{direction:te.LEFT,style:{top:t.value/2+"px"}},{direction:te.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:te.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:te.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:te.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(j["computed"])((function(){return[{direction:te.LEFT,style:{top:t.value/2+"px"}},{direction:te.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),c=Object(j["computed"])((function(){return[{type:ee.T,style:{width:e.value+"px"}},{type:ee.B,style:{top:t.value+"px",width:e.value+"px"}},{type:ee.L,style:{height:t.value+"px"}},{type:ee.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:o,borderLines:c}},sa=Object(j["withScopeId"])("data-v-1c2a68d0"),fa=sa((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["resize-handler",n.type]},null,2)})),pa={name:"resize-handler",props:{type:{type:String,default:""}}};n("a933");pa.render=fa,pa.__scopeId="data-v-1c2a68d0";var ba=pa,ma=Object(j["withScopeId"])("data-v-630e246b"),va=ma((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["border-line",n.type,{wide:n.isWide}]},null,2)})),Oa={name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}};n("fb1d");Oa.render=va,Oa.__scopeId="data-v-630e246b";var ja=Oa,ha=Object(j["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:ba,BorderLine:ja},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.activeElementIdList})),o=Object(j["computed"])((function(){return t.state.canvasScale})),c=Object(j["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),a=Object(j["reactive"])({minX:0,maxX:0,minY:0,maxY:0}),r=Object(j["computed"])((function(){return(a.maxX-a.minX)*o.value})),l=Object(j["computed"])((function(){return(a.maxY-a.minY)*o.value})),i=da(r,l),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=Mt(c.value),t=e.minX,n=e.maxX,o=e.minY,r=e.maxY;a.minX=t,a.maxX=n,a.minY=o,a.maxY=r};Object(j["watchEffect"])(s);var f=Object(j["computed"])((function(){return c.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return Object(P["a"])(Object(P["a"])({},Object(j["toRefs"])(a)),{},{canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u})}});n("de7c");ha.render=ua,ha.__scopeId="data-v-4def6455";var ga=ha,ya=Object(j["withScopeId"])("data-v-558a94fe");Object(j["pushScopeId"])("data-v-558a94fe");var ka={key:1,class:"animation-index"};Object(j["popScopeId"])();var Ea=ya((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["operate",{"multi-select":e.isMultiSelect&&!e.isActive}],style:{top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")}},[e.isSelected?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentOperateComponent),{key:0,elementInfo:e.elementInfo,isActiveGroupElement:e.isActiveGroupElement,isMultiSelect:e.isMultiSelect,rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])):Object(j["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&-1!==e.elementIndexInAnimation?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ka,Object(j["toDisplayString"])(e.elementIndexInAnimation+1),1)):Object(j["createCommentVNode"])("",!0)],6)})),Ia=Object(j["withScopeId"])("data-v-5b0628aa"),Ca=Ia((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["image-element-operate",{cliping:e.isCliping}]},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))],2)})),Sa=Object(j["withScopeId"])("data-v-9a549510");Object(j["pushScopeId"])("data-v-9a549510");var Na={class:"rotate-handler"};Object(j["popScopeId"])();var xa=Sa((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Na)})),La={name:"rotate-handler"};n("8754");La.render=xa,La.__scopeId="data-v-9a549510";var Ta=La,wa=Object(j["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:Ta,ResizeHandler:ba,BorderLine:ja},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.clipingImageElementId})),c=Object(j["computed"])((function(){return o.value===e.elementInfo.id})),a=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),r=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=da(a,r),i=l.resizeHandlers,u=l.borderLines;return{isCliping:c,scaleWidth:a,resizeHandlers:i,borderLines:u}}});n("5c02");wa.render=Ca,wa.__scopeId="data-v-5b0628aa";var Va=wa,_a={class:"text-element-operate"};function Ba(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",_a,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var Ma=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:Ta,ResizeHandler:ba,BorderLine:ja},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=da(o,c),r=a.textElementResizeHandlers,l=a.borderLines;return{scaleWidth:o,textElementResizeHandlers:r,borderLines:l}}});Ma.render=Ba;var Da=Ma,Aa={class:"shape-element-operate"};function Pa(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Aa,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var Ra=Object(j["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:Ta,ResizeHandler:ba,BorderLine:ja},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=da(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});Ra.render=Pa;var Fa=Ra,Ha={class:"text-element-operate"};function za(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ha,[e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var Ua=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{ResizeHandler:ba},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){var t=[{handler:ne.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:ne.END,style:{left:e.elementInfo.end[0]*n.value+"px",top:e.elementInfo.end[1]*n.value+"px"}}];if(e.elementInfo.curve||e.elementInfo.broken){var o=e.elementInfo.curve||e.elementInfo.broken;t.push({handler:ne.MID,style:{left:o[0]*n.value+"px",top:o[1]*n.value+"px"}})}return t}));return{resizeHandlers:o}}});Ua.render=za;var Ga=Ua,qa={class:"chart-element-operate"};function Wa(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",qa,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var Xa=Object(j["defineComponent"])({name:"chart-element-operate",inheritAttrs:!1,components:{ResizeHandler:ba,BorderLine:ja},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=da(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});Xa.render=Wa;var Ya=Xa,Za={class:"table-element-operate"};function Ja(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Za,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var Ka=Object(j["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{ResizeHandler:ba,BorderLine:ja},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.outline.width||1})),c=Object(j["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),a=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),r=da(c,a),l=r.textElementResizeHandlers,i=r.borderLines;return{scaleWidth:c,textElementResizeHandlers:l,borderLines:i}}});Ka.render=Ja;var Qa=Ka,$a=Object(j["defineComponent"])({name:"operate",props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},isActive:{type:Boolean,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.toolbarState})),c=Object(j["computed"])((function(){return t.getters.currentSlide})),a=Object(j["computed"])((function(){var t,n=(t={},Object(S["a"])(t,on.IMAGE,Va),Object(S["a"])(t,on.TEXT,Da),Object(S["a"])(t,on.SHAPE,Fa),Object(S["a"])(t,on.LINE,Ga),Object(S["a"])(t,on.CHART,Ya),Object(S["a"])(t,on.TABLE,Qa),t);return n[e.elementInfo.type]||null})),r=Object(j["computed"])((function(){var t=c.value.animations||[];return t.findIndex((function(t){return t.elId===e.elementInfo.id}))}));return{currentOperateComponent:a,canvasScale:n,toolbarState:o,elementIndexInAnimation:r}}});n("9884");$a.render=Ea,$a.__scopeId="data-v-558a94fe";var er=$a,tr=Object(j["defineComponent"])({name:"editor-canvas",components:{EditableElement:Fc,MouseSelection:Gc,ViewportBackground:$c,AlignmentLine:oa,ElementCreateSelection:la,MultiSelectOperate:ga,Operate:er},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.state.handleElementId})),o=Object(j["computed"])((function(){return e.state.editorAreaFocus})),c=Object(j["computed"])((function(){return e.state.ctrlKeyState})),a=Object(j["computed"])((function(){return e.getters.ctrlOrShiftKeyActive})),r=Object(j["ref"])(),l=Object(j["ref"])([]),i=Object(j["ref"])("");Object(j["watch"])(n,(function(){return i.value=""}));var u=Object(j["computed"])((function(){return e.getters.currentSlide})),d=Object(j["ref"])([]),s=function(){d.value=u.value?JSON.parse(JSON.stringify(u.value.elements)):[]};Object(j["watchEffect"])(s);var f=Object(j["ref"])(),p=Object(j["computed"])((function(){return e.state.canvasScale})),b=Vt(f),m=b.viewportStyles;Pt(f);var v=At(d,r),O=v.mouseSelectionState,h=v.updateMouseSelection,y=Qt(d,i,l),k=y.dragElement,E=$t(d),I=E.dragLineElement,C=Kt(d,i,k),S=C.selectElement,N=Yt(d,i,l),x=N.scaleElement,L=N.scaleMultiElement,T=Ft(d,r),w=T.rotateElement,V=Pe(),_=V.selectAllElement,B=Me(),M=B.deleteAllElements,D=Ae(),A=D.pasteElement,P=Ge(),R=P.enterScreening,F=function(t){e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,[]),a.value||h(t),o.value||e.commit(g.SET_EDITORAREA_FOCUS,!0),wt()},H=function(){o.value&&e.commit(g.SET_EDITORAREA_FOCUS,!1)},z=qe(),U=z.scaleCanvas,G=Ce()(U,100,{leading:!0,trailing:!1}),q=function(e){c.value&&(e.preventDefault(),e.deltaY>0?G("-"):e.deltaY<0&&G("+"))},W=Object(j["computed"])((function(){return e.state.showGridLines})),Y=function(){e.commit(g.SET_GRID_LINES_STATE,!W.value)},Z=Object(j["computed"])((function(){return e.state.creatingElement})),J=tn(r),K=J.insertElementFromCreateSelection,Q=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:A},{text:"全选",subText:"Ctrl + A",handler:_},{text:"网格线",subText:W.value?"√":"",handler:Y},{text:"重置当前页",handler:M},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:R}]};return Object(j["provide"])("slideScale",p),{elementList:d,activeElementIdList:t,handleElementId:n,activeGroupElementId:i,canvasRef:f,viewportRef:r,viewportStyles:m,canvasScale:p,mouseSelectionState:O,handleClickBlankArea:F,removeEditorAreaFocus:H,currentSlide:u,creatingElement:Z,insertElementFromCreateSelection:K,alignmentLines:l,selectElement:S,rotateElement:w,scaleElement:x,dragLineElement:I,scaleMultiElement:L,mousewheelScaleCanvas:q,contextmenus:Q}}});n("0b92");tr.render=Tt,tr.__scopeId="data-v-17169d5c";var nr=tr,or=Object(j["withScopeId"])("data-v-236c5f54");Object(j["pushScopeId"])("data-v-236c5f54");var cr={class:"canvas-tool"},ar={class:"left-handler"},rr={class:"add-element-handler"},lr={class:"right-handler"},ir={class:"text"};Object(j["popScopeId"])();var ur=or((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconBack"),l=Object(j["resolveComponent"])("Tooltip"),i=Object(j["resolveComponent"])("IconNext"),u=Object(j["resolveComponent"])("IconFontSize"),d=Object(j["resolveComponent"])("IconPicture"),s=Object(j["resolveComponent"])("FileInput"),f=Object(j["resolveComponent"])("ShapePool"),p=Object(j["resolveComponent"])("IconPentagonOne"),b=Object(j["resolveComponent"])("Popover"),m=Object(j["resolveComponent"])("LinePool"),v=Object(j["resolveComponent"])("IconConnection"),O=Object(j["resolveComponent"])("ChartPool"),h=Object(j["resolveComponent"])("IconChartProportion"),g=Object(j["resolveComponent"])("TableGenerator"),y=Object(j["resolveComponent"])("IconInsertTable"),k=Object(j["resolveComponent"])("IconMinus"),E=Object(j["resolveComponent"])("IconPlus"),I=Object(j["resolveComponent"])("IconFullScreen");return Object(j["openBlock"])(),Object(j["createBlock"])("div",cr,[Object(j["createVNode"])("div",ar,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:or((function(){return[Object(j["createVNode"])(r,{class:["handler-item",{disable:!e.canUndo}],onClick:t[1]||(t[1]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:or((function(){return[Object(j["createVNode"])(i,{class:["handler-item",{disable:!e.canRedo}],onClick:t[2]||(t[2]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(j["createVNode"])("div",rr,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:or((function(){return[Object(j["createVNode"])(u,{class:"handler-item",onClick:t[3]||(t[3]=function(t){return e.drawText()})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(s,{onChange:t[4]||(t[4]=function(t){return e.insertImageElement(t)})},{default:or((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:or((function(){return[Object(j["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(b,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[6]||(t[6]=function(t){return e.shapePoolVisible=t})},{content:or((function(){return[Object(j["createVNode"])(f,{onSelect:t[5]||(t[5]=function(t){return e.drawShape(t)})})]})),default:or((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:or((function(){return[Object(j["createVNode"])(p,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[8]||(t[8]=function(t){return e.linePoolVisible=t})},{content:or((function(){return[Object(j["createVNode"])(m,{onSelect:t[7]||(t[7]=function(t){return e.drawLine(t)})})]})),default:or((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:or((function(){return[Object(j["createVNode"])(v,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[10]||(t[10]=function(t){return e.chartPoolVisible=t})},{content:or((function(){return[Object(j["createVNode"])(O,{onSelect:t[9]||(t[9]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:or((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:or((function(){return[Object(j["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[13]||(t[13]=function(t){return e.tableGeneratorVisible=t})},{content:or((function(){return[Object(j["createVNode"])(g,{onClose:t[11]||(t[11]=function(t){return e.tableGeneratorVisible=!1}),onInsert:t[12]||(t[12]=function(t){var n=t.row,o=t.col;e.createTableElement(n,o),e.tableGeneratorVisible=!1})})]})),default:or((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:or((function(){return[Object(j["createVNode"])(y,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(j["createVNode"])("div",lr,[Object(j["createVNode"])(k,{class:"handler-item viewport-size",onClick:t[14]||(t[14]=function(t){return e.scaleCanvas("-")})}),Object(j["createVNode"])("span",ir,Object(j["toDisplayString"])(e.canvasScalePercentage),1),Object(j["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[15]||(t[15]=function(t){return e.scaleCanvas("+")})}),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适配屏幕"},{default:or((function(){return[Object(j["createVNode"])(I,{class:"handler-item viewport-size-adaptation",onClick:t[16]||(t[16]=function(t){return e.setCanvasPercentage(90)})})]})),_:1},8,["mouseEnterDelay"])])])})),dr=Object(j["withScopeId"])("data-v-5aabd717");Object(j["pushScopeId"])("data-v-5aabd717");var sr={class:"shape-pool"},fr={class:"category-name"},pr={class:"shape-list"};Object(j["popScopeId"])();var br=dr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",sr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"category",key:t.type},[Object(j["createVNode"])("div",fr,Object(j["toDisplayString"])(t.type),1),Object(j["createVNode"])("div",pr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"shape-item",key:n},[Object(j["createVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[Object(j["createVNode"])(r,{overflow:"visible",width:"18",height:"18"},{default:dr((function(){return[Object(j["createVNode"])("g",{transform:"scale(".concat(18/t.viewBox,", ").concat(18/t.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",stroke:"#999","stroke-width":"2",d:t.path},null,8,["d"])],8,["transform"])]})),_:2},1024)],8,["onClick"])])})),128))])])})),128))])})),mr=[{type:"矩形",children:[{viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:200,path:"M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z"},{viewBox:200,path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z"},{viewBox:200,path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200"},{viewBox:200,path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z"}]},{type:"常用形状",children:[{viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:200,path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:200,path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z"},{viewBox:200,path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:200,path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:200,path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z"},{viewBox:200,path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z"},{viewBox:200,path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z"},{viewBox:200,path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:200,path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z"},{viewBox:200,path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z"},{viewBox:200,path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z"},{viewBox:200,path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:200,path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"}]},{type:"箭头",children:[{viewBox:200,path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z"},{viewBox:200,path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:200,path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z"},{viewBox:200,path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z"},{viewBox:200,path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:200,path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:200,path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:200,path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:1024,path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z"},{viewBox:1024,path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z"}]},{type:"其他形状",children:[{viewBox:1024,path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z"},{viewBox:1024,path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z"},{viewBox:1024,path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z"},{viewBox:1024,path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z"},{viewBox:1024,path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z"},{viewBox:1024,path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z"},{viewBox:1024,path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z"},{viewBox:1024,path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z"},{viewBox:1024,path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z"},{viewBox:1024,path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z"},{viewBox:1024,path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z"},{viewBox:1024,path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z"},{viewBox:1024,path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z"},{viewBox:1024,path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z"},{viewBox:1024,path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z"},{viewBox:1024,path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z"}]}],vr=Object(j["defineComponent"])({name:"shape-pool",setup:function(e,t){var n=t.emit,o=mr,c=function(e){n("select",e)};return{shapeList:o,selectShape:c}}});n("3041");vr.render=br,vr.__scopeId="data-v-5aabd717";var Or=vr,jr=Object(j["withScopeId"])("data-v-5087394c");Object(j["pushScopeId"])("data-v-5087394c");var hr={class:"line-pool"},gr={class:"category-name"},yr={class:"line-list"};Object(j["popScopeId"])();var kr=jr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",hr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"category",key:t.type},[Object(j["createVNode"])("div",gr,Object(j["toDisplayString"])(t.type),1),Object(j["createVNode"])("div",yr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"line-item",key:n},[Object(j["createVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[Object(j["createVNode"])(l,{overflow:"visible",width:"20",height:"20"},{default:jr((function(){return[Object(j["createVNode"])("defs",null,[t.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"line-marker",id:"preset-line-".concat(n),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0),t.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"line-marker",id:"preset-line-".concat(n),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n),"-",t.points[1],"-end)"):""},null,8,["d","stroke-dasharray","marker-start","marker-end"])]})),_:2},1024)],8,["onClick"])])})),128))])])})),128))])})),Er=[{type:"直线",children:[{path:"M 0 0 L 20 20",style:"solid",points:["",""]},{path:"M 0 0 L 20 20",style:"dashed",points:["",""]},{path:"M 0 0 L 20 20",style:"solid",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"dashed",points:["","arrow"]},{path:"M 0 0 L 20 20",style:"solid",points:["","dot"]}]},{type:"折线、曲线",children:[{path:"M 0 0 L 0 20 L 20 20",style:"solid",points:["","arrow"],isBroken:!0},{path:"M 0 0 Q 0 20 20 20",style:"solid",points:["","arrow"],isCurve:!0}]}],Ir=Object(j["defineComponent"])({name:"line-pool",components:{LinePointMarker:ac},setup:function(e,t){var n=t.emit,o=Er,c=function(e){n("select",e)};return{lineList:o,selectLine:c}}});n("6530");Ir.render=kr,Ir.__scopeId="data-v-5087394c";var Cr=Ir,Sr=Object(j["withScopeId"])("data-v-58ced0dd");Object(j["pushScopeId"])("data-v-58ced0dd");var Nr={class:"chart-pool"};Object(j["popScopeId"])();var xr=Sr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconChartLine"),l=Object(j["resolveComponent"])("IconChartHistogram"),i=Object(j["resolveComponent"])("IconChartProportion");return Object(j["openBlock"])(),Object(j["createBlock"])("ul",Nr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.chartList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("li",{class:"chart-item",key:n},[Object(j["createVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,size:"24"})):"bar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,size:"24"})):"pie"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:2,size:"24"})):Object(j["createCommentVNode"])("",!0)],8,["onClick"])])})),128))])})),Lr=Object(j["defineComponent"])({name:"chart-pool",setup:function(e,t){var n=t.emit,o=["bar","line","pie"],c=function(e){n("select",e)};return{chartList:o,selectChart:c}}});n("d091");Lr.render=xr,Lr.__scopeId="data-v-58ced0dd";var Tr=Lr,wr=Object(j["withScopeId"])("data-v-576c614c");Object(j["pushScopeId"])("data-v-576c614c");var Vr={class:"table-generator"},_r={class:"title"},Br={class:"lef"},Mr={key:1,class:"custom"},Dr={class:"row"},Ar=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1),Pr={class:"row"},Rr=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1),Fr={class:"btns"},Hr=Object(j["createTextVNode"])("取消"),zr=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var Ur=wr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("InputNumber"),l=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Vr,[Object(j["createVNode"])("div",_r,[Object(j["createVNode"])("div",Br,"表格 "+Object(j["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(j["createVNode"])("div",{class:"right",onClick:t[1]||(t[1]=function(t){return e.isCustom=!e.isCustom})},Object(j["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Mr,[Object(j["createVNode"])("div",Dr,[Ar,Object(j["createVNode"])(r,{min:1,max:20,value:e.customRow,"onUpdate:value":t[4]||(t[4]=function(t){return e.customRow=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Pr,[Rr,Object(j["createVNode"])(r,{min:1,max:20,value:e.customCol,"onUpdate:value":t[5]||(t[5]=function(t){return e.customCol=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Fr,[Object(j["createVNode"])(l,{class:"btn",onClick:t[6]||(t[6]=function(t){return e.close()})},{default:wr((function(){return[Hr]})),_:1}),Object(j["createVNode"])(l,{class:"btn",type:"primary",onClick:t[7]||(t[7]=function(t){return e.insertCustomTable()})},{default:wr((function(){return[zr]})),_:1})])])):(Object(j["openBlock"])(),Object(j["createBlock"])("table",{key:0,onMouseleave:t[2]||(t[2]=function(t){return e.endCell=[]}),onClick:t[3]||(t[3]=function(t){return e.handleClickTable()})},[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(n){return Object(j["createVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(j["createVNode"])("div",{class:["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}]},null,2)],40,["onMouseenter"])})),64))])})),64))])],32))])})),Gr=Object(j["defineComponent"])({name:"table-generator",setup:function(e,t){var n=t.emit,o=Object(j["ref"])([]),c=Object(j["ref"])(3),a=Object(j["ref"])(3),r=Object(j["ref"])(!1),l=function(){if(o.value.length){var e=Object(en["a"])(o.value,2),t=e[0],c=e[1];n("insert",{row:t,col:c})}},i=function(){return c.value<1||c.value>20||a.value<1||a.value>20?re["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:c.value,col:a.value}),void(r.value=!1))},u=function(){n("close"),r.value=!1};return{endCell:o,customRow:c,customCol:a,handleClickTable:l,insertCustomTable:i,isCustom:r,close:u}}});n("b61d");Gr.render=Ur,Gr.__scopeId="data-v-576c614c";var qr=Gr,Wr=Object(j["defineComponent"])({name:"canvas-tool",components:{ShapePool:Or,LinePool:Cr,ChartPool:Tr,TableGenerator:qr},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){return e.getters.canUndo})),o=Object(j["computed"])((function(){return e.getters.canRedo})),c=Object(j["computed"])((function(){return parseInt(100*t.value+"")+"%"})),a=qe(),r=a.scaleCanvas,l=a.setCanvasPercentage,i=Se(),u=i.redo,d=i.undo,s=we(),f=s.createImageElement,p=s.createChartElement,b=s.createTableElement,m=function(e){var t=e[0];t&&xe(t).then((function(e){return f(e)}))},v=Object(j["ref"])(!1),O=Object(j["ref"])(!1),h=Object(j["ref"])(!1),y=Object(j["ref"])(!1),k=function(){e.commit(g.SET_CREATING_ELEMENT,{type:"text",data:null})},E=function(t){e.commit(g.SET_CREATING_ELEMENT,{type:"shape",data:t}),v.value=!1},I=function(t){e.commit(g.SET_CREATING_ELEMENT,{type:"line",data:t}),O.value=!1};return{scaleCanvas:r,setCanvasPercentage:l,canvasScalePercentage:c,canUndo:n,canRedo:o,redo:u,undo:d,insertImageElement:m,shapePoolVisible:v,linePoolVisible:O,chartPoolVisible:h,tableGeneratorVisible:y,drawText:k,drawShape:E,drawLine:I,createChartElement:p,createTableElement:b}}});n("70de");Wr.render=ur,Wr.__scopeId="data-v-236c5f54";var Xr=Wr,Yr=Object(j["withScopeId"])("data-v-2148e3da");Object(j["pushScopeId"])("data-v-2148e3da");var Zr=Object(j["createTextVNode"])(" 添加幻灯片"),Jr={class:"label"};Object(j["popScopeId"])();var Kr=Yr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconPlus"),l=Object(j["resolveComponent"])("ThumbnailSlide"),i=Object(j["resolveComponent"])("Draggable"),u=Object(j["resolveDirective"])("contextmenu"),d=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnails",onMousedown:t[2]||(t[2]=function(){return e.setThumbnailsFocus(!0)})},[Object(j["createVNode"])("div",{class:"add-slide",onClick:t[1]||(t[1]=function(t){return e.createSlide()})},[Object(j["createVNode"])(r),Zr]),Object(j["createVNode"])(i,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Yr((function(t){var n=t.element,o=t.index;return[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:["thumbnail-item",{selected:e.slideIndex===o}],onMousedown:function(t){return e.changSlideIndex(o)}},[Object(j["createVNode"])("div",Jr,Object(j["toDisplayString"])(e.fillDigit(o+1,2)),1),Object(j["createVNode"])(l,{class:"thumbnail",slide:n,size:120},null,8,["slide"])],42,["onMousedown"]),[[u,e.contextmenusThumbnailItem]])]})),_:1},8,["modelValue","onEnd"])],544)),[[d,function(){return e.setThumbnailsFocus(!1)}],[u,e.contextmenusThumbnails]])})),Qr=n("b76a"),$r=n.n(Qr),el=Object(j["withScopeId"])("data-v-7c55aca2"),tl=el((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ThumbnailElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnail-slide",style:{width:e.size+"px",height:e.size*e.VIEWPORT_ASPECT_RATIO+"px"}},[Object(j["createVNode"])("div",{class:"elements",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.VIEWPORT_ASPECT_RATIO+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:e.backgroundStyle},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])})),128))],4)],4)}));function nl(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element",style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],4)}var ol=Object(j["withScopeId"])("data-v-1285108e"),cl=ol((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageOutline");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-image",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},alt:""},null,12,["src"])],4)],4)],4)})),al=Object(j["defineComponent"])({name:"base-element-image",components:{ImageOutline:wn},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=dn(t),o=n.shadowStyle,c=Object(j["computed"])((function(){return e.elementInfo.flip})),a=sn(c),r=a.flipStyle,l=Object(j["computed"])((function(){return e.elementInfo.clip})),i=pn(l),u=i.clipShape,d=i.imgPosition,s=Object(j["computed"])((function(){return e.elementInfo.filters})),f=bn(s),p=f.filter;return{imgPosition:d,filter:p,flipStyle:r,shadowStyle:o,clipShape:u}}});n("760a");al.render=cl,al.__scopeId="data-v-1285108e";var rl=al,ll=Object(j["withScopeId"])("data-v-fc2d45e0"),il=ll((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-text",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:e.shadowStyle,lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px"}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])("div",{class:"text ProseMirror-static",innerHTML:e.elementInfo.content},null,8,["innerHTML"])],4)],4)})),ul=Object(j["defineComponent"])({name:"base-element-text",components:{ElementOutline:zo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=dn(t),o=n.shadowStyle;return{shadowStyle:o}}});n("beaa");ul.render=il,ul.__scopeId="data-v-fc2d45e0";var dl=ul,sl=Object(j["withScopeId"])("data-v-d0a0fd1c");Object(j["pushScopeId"])("data-v-d0a0fd1c");var fl={key:0};Object(j["popScopeId"])();var pl=sl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GradientDefs"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-shape",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},{default:sl((function(){return[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createBlock"])("defs",fl,[Object(j["createVNode"])(r,{id:"base-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#base-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 5":"0 0"},null,8,["d","fill","stroke","stroke-width","stroke-dasharray"])],8,["transform"])]})),_:1},8,["width","height"])],4)],4)})),bl=Object(j["defineComponent"])({name:"base-element-shape",components:{GradientDefs:Jo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.outline})),n=hn(t),o=n.outlineWidth,c=n.outlineStyle,a=n.outlineColor,r=Object(j["computed"])((function(){return e.elementInfo.shadow})),l=dn(r),i=l.shadowStyle,u=Object(j["computed"])((function(){return e.elementInfo.flip})),d=sn(u),s=d.flipStyle;return{shadowStyle:i,outlineWidth:o,outlineStyle:c,outlineColor:a,flipStyle:s}}});n("2251");bl.render=pl,bl.__scopeId="data-v-d0a0fd1c";var ml=bl,vl=Object(j["withScopeId"])("data-v-56b0510c"),Ol=vl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-element-shape",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.svgWidth,height:e.svgHeight},{default:vl((function(){return[Object(j["createVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"])]})),_:1},8,["width","height"])],4)],4)})),jl=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:ac},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=dn(t),o=n.shadowStyle,c=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10, 5":"0, 0"})),l=Object(j["computed"])((function(){var t=e.elementInfo.start.join(","),n=e.elementInfo.end.join(",");if(e.elementInfo.broken){var o=e.elementInfo.broken.join(",");return"M".concat(t," L").concat(o," L").concat(n)}if(e.elementInfo.curve){var c=e.elementInfo.curve.join(",");return"M".concat(t," Q").concat(c," ").concat(n)}return"M".concat(t," L").concat(n)}));return{shadowStyle:o,svgWidth:c,svgHeight:a,lineDashArray:r,path:l}}});n("387f");jl.render=Ol,jl.__scopeId="data-v-56b0510c";var hl=jl,gl=Object(j["withScopeId"])("data-v-b4562eca"),yl=gl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("IconChartLine"),i=Object(j["resolveComponent"])("IconChartHistogram"),u=Object(j["resolveComponent"])("IconChartProportion");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-chart",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),"line"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:0,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):"bar"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):"pie"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:2,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):Object(j["createCommentVNode"])("",!0)],4)],4)})),kl=Object(j["defineComponent"])({name:"base-element-chart",components:{ElementOutline:zo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)}));return{size:t}}});n("3deb");kl.render=yl,kl.__scopeId="data-v-b4562eca";var El=kl,Il=Object(j["withScopeId"])("data-v-dea016ac");Object(j["pushScopeId"])("data-v-dea016ac");var Cl={class:"element-content"};Object(j["popScopeId"])();var Sl=Il((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("StaticTable");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-table",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"}},[Object(j["createVNode"])("div",Cl,[Object(j["createVNode"])(r,{data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","colWidths","outline","theme"])])],4)})),Nl=Object(j["withScopeId"])("data-v-01f791ba"),xl=Nl((function(e,t,n,o,c,a){var r,l,i,u,d;return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"static-table",style:{width:e.totalWidth+"px"}},[Object(j["createVNode"])("table",{class:{theme:e.theme,"row-header":null===(r=e.theme)||void 0===r?void 0:r.rowHeader,"row-footer":null===(l=e.theme)||void 0===l?void 0:l.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter},style:"--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1])},[Object(j["createVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])("col",{span:"1",key:t,width:e},null,8,["width"])})),128))]),Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.data,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("tr",{key:n},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t,o){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("td",{class:"cell",style:Object(P["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style)),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(j["createVNode"])("div",{class:"cell-text",innerHTML:t.text},null,8,["innerHTML"])],12,["rowspan","colspan"])),[[j["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))]])})),128))])})),128))])],6)],4)})),Ll=Object(j["defineComponent"])({name:"static-table",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup:function(e){var t=Object(j["ref"])([]),n=Object(j["computed"])((function(){return t.value.reduce((function(e,t){return e+t}))}));Object(j["watch"])([function(){return e.colWidths},function(){return e.width}],(function(){t.value=e.colWidths.map((function(t){return t*e.width}))}),{immediate:!0});var o=Object(j["computed"])((function(){return e.data})),c=Tc(o),a=c.hideCells,r=Object(j["computed"])((function(){return e.theme})),l=wc(r),i=l.subThemeColor;return{colSizeList:t,totalWidth:n,hideCells:a,getTextStyle:Lc,subThemeColor:i}}});n("1726");Ll.render=xl,Ll.__scopeId="data-v-01f791ba";var Tl=Ll,wl=Object(j["defineComponent"])({name:"base-element-table",components:{StaticTable:Tl},props:{elementInfo:{type:Object,required:!0}}});n("ba04");wl.render=Sl,wl.__scopeId="data-v-dea016ac";var Vl=wl,_l=Object(j["defineComponent"])({name:"base-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.theme})),o=Object(j["computed"])((function(){var t,n=(t={},Object(S["a"])(t,on.IMAGE,rl),Object(S["a"])(t,on.TEXT,dl),Object(S["a"])(t,on.SHAPE,ml),Object(S["a"])(t,on.LINE,hl),Object(S["a"])(t,on.CHART,El),Object(S["a"])(t,on.TABLE,Vl),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:o,theme:n}}});_l.render=nl;var Bl=_l,Ml=Object(j["defineComponent"])({name:"thumbnail-slide",components:{ThumbnailElement:Bl},props:{slide:{type:Object,required:!0},size:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.slide.background})),n=Kc(t),o=n.backgroundStyle,c=Object(j["computed"])((function(){return e.size/Le}));return{scale:c,backgroundStyle:o,VIEWPORT_SIZE:Le,VIEWPORT_ASPECT_RATIO:Te}}});n("773c");Ml.render=tl,Ml.__scopeId="data-v-7c55aca2";var Dl=Ml,Al=Object(j["defineComponent"])({name:"thumbnails",components:{Draggable:$r.a,ThumbnailSlide:Dl},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=_e(),c=o.copySlide,a=o.pasteSlide,r=o.createSlide,l=o.copyAndPasteSlide,i=o.deleteSlide,u=o.cutSlide,d=function(t){e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,[]),n.value!==t&&e.commit(g.UPDATE_SLIDE_INDEX,t)},s=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),f=function(t){s.value!==t&&e.commit(g.SET_THUMBNAILS_FOCUS,t)},p=function(n){var o=n.newIndex,c=n.oldIndex;if(c!==o){var a=JSON.parse(JSON.stringify(t.value)),r=a[c];a.splice(c,1),a.splice(o,0,r),e.commit(g.SET_SLIDES,a),e.commit(g.UPDATE_SLIDE_INDEX,o)}},b=Ge(),m=b.enterScreening,v=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:a},{text:"新建页面",subText:"Enter",handler:r},{text:"开始演示",subText:"Ctrl + F",handler:m}]},O=function(){return[{text:"剪切",subText:"Ctrl + X",handler:u},{text:"复制",subText:"Ctrl + C",handler:c},{text:"粘贴",subText:"Ctrl + V",handler:a},{divider:!0},{text:"新建页面",subText:"Enter",handler:r},{text:"复制页面",subText:"Ctrl + D",handler:l},{text:"删除页面",subText:"Delete",handler:i},{divider:!0},{text:"从当前页演示",subText:"Ctrl + F",handler:m}]};return{setThumbnailsFocus:f,slides:t,slideIndex:n,createSlide:r,changSlideIndex:d,contextmenusThumbnails:v,contextmenusThumbnailItem:O,fillDigit:de,handleDragEnd:p}}});n("15d2");Al.render=Kr,Al.__scopeId="data-v-2148e3da";var Pl=Al,Rl=Object(j["withScopeId"])("data-v-58d77c92");Object(j["pushScopeId"])("data-v-58d77c92");var Fl={class:"toolbar"},Hl={class:"tabs"},zl={class:"content"};Object(j["popScopeId"])();var Ul=Rl((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Fl,[Object(j["createVNode"])("div",Hl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.currentTabs,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["tab",{active:t.value===e.toolbarState}],key:t.value,onClick:function(n){return e.setToolbarState(t.value)}},Object(j["toDisplayString"])(t.label),11,["onClick"])})),128))]),Object(j["createVNode"])("div",zl,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentPanelComponent)))])])})),Gl={EL_ANIMATION:"elAnimation",EL_STYLE:"elStyle",EL_POSITION:"elPosition",SLIDE_STYLE:"slideStyle",SLIDE_ANIMATION:"slideAnimation",MULTI_POSITION:"multiPosition"},ql={class:"element-style-panel"},Wl={key:0};function Xl(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",ql,[e.currentPanelComponent?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",Wl," 请先选中要编辑的元素 ")),e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentPanelComponent),{key:1})):Object(j["createCommentVNode"])("",!0)])}var Yl=Object(j["withScopeId"])("data-v-43fccffc");Object(j["pushScopeId"])("data-v-43fccffc");var Zl={class:"text-style-panel"},Jl={class:"preset-style"},Kl={class:"row"},Ql=Object(j["createVNode"])("div",{style:{flex:"2"}},"行间距:",-1),$l={class:"row"},ei=Object(j["createVNode"])("div",{style:{flex:"2"}},"字间距:",-1);Object(j["popScopeId"])();var ti=Yl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Divider"),l=Object(j["resolveComponent"])("IconFontSize"),i=Object(j["resolveComponent"])("SelectOption"),u=Object(j["resolveComponent"])("SelectOptGroup"),d=Object(j["resolveComponent"])("Select"),s=Object(j["resolveComponent"])("IconAddText"),f=Object(j["resolveComponent"])("InputGroup"),p=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("IconText"),m=Object(j["resolveComponent"])("Button"),v=Object(j["resolveComponent"])("Tooltip"),O=Object(j["resolveComponent"])("Popover"),h=Object(j["resolveComponent"])("IconBackgroundColor"),g=Object(j["resolveComponent"])("IconFill"),y=Object(j["resolveComponent"])("ButtonGroup"),k=Object(j["resolveComponent"])("IconTextBold"),E=Object(j["resolveComponent"])("CheckboxButton"),I=Object(j["resolveComponent"])("IconTextItalic"),C=Object(j["resolveComponent"])("IconTextUnderline"),S=Object(j["resolveComponent"])("IconStrikethrough"),N=Object(j["resolveComponent"])("CheckboxButtonGroup"),x=Object(j["resolveComponent"])("IconUpOne"),L=Object(j["resolveComponent"])("IconDownOne"),T=Object(j["resolveComponent"])("IconCode"),w=Object(j["resolveComponent"])("IconQuote"),V=Object(j["resolveComponent"])("IconFormat"),_=Object(j["resolveComponent"])("IconAlignTextLeft"),B=Object(j["resolveComponent"])("RadioButton"),M=Object(j["resolveComponent"])("IconAlignTextCenter"),D=Object(j["resolveComponent"])("IconAlignTextRight"),A=Object(j["resolveComponent"])("RadioGroup"),P=Object(j["resolveComponent"])("IconList"),R=Object(j["resolveComponent"])("IconOrderedList"),F=Object(j["resolveComponent"])("IconRowHeight"),H=Object(j["resolveComponent"])("IconFullwidth"),z=Object(j["resolveComponent"])("ElementOutline"),U=Object(j["resolveComponent"])("ElementShadow"),G=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Zl,[Object(j["createVNode"])("div",Jl,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetStyles,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"preset-style-item",key:t.label,style:t.style,onClick:function(n){return e.emitBatchRichTextCommand(t.cmd)}},Object(j["toDisplayString"])(t.label),13,["onClick"])})),128))]),Object(j["createVNode"])(r),Object(j["createVNode"])(f,{compact:"",class:"row"},{default:Yl((function(){return[Object(j["createVNode"])(d,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[1]||(t[1]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Yl((function(){return[Object(j["createVNode"])(l)]})),default:Yl((function(){return[Object(j["createVNode"])(u,{label:"系统字体"},{default:Yl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Yl((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(u,{label:"在线字体"},{default:Yl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Yl((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(d,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[2]||(t[2]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Yl((function(){return[Object(j["createVNode"])(s)]})),default:Yl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Yl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(y,{class:"row"},{default:Yl((function(){return[Object(j["createVNode"])(O,{trigger:"click"},{content:Yl((function(){return[Object(j["createVNode"])(p,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Yl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(b),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.richTextAttrs.color}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(O,{trigger:"click"},{content:Yl((function(){return[Object(j["createVNode"])(p,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.emitRichTextCommand("backcolor",t)})},null,8,["modelValue"])]})),default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Yl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(h),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.richTextAttrs.backcolor}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(O,{trigger:"click"},{content:Yl((function(){return[Object(j["createVNode"])(p,{modelValue:e.fill,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文本框填充"},{default:Yl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(g),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.fill}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(N,{class:"row"},{default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[6]||(t[6]=function(t){return e.emitRichTextCommand("bold")})},{default:Yl((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[7]||(t[7]=function(t){return e.emitRichTextCommand("em")})},{default:Yl((function(){return[Object(j["createVNode"])(I)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[8]||(t[8]=function(t){return e.emitRichTextCommand("underline")})},{default:Yl((function(){return[Object(j["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.strikethrough,onClick:t[9]||(t[9]=function(t){return e.emitRichTextCommand("strikethrough")})},{default:Yl((function(){return[Object(j["createVNode"])(S)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(N,{class:"row"},{default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上标"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.superscript,onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("superscript")})},{default:Yl((function(){return[Object(j["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下标"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.subscript,onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("subscript")})},{default:Yl((function(){return[Object(j["createVNode"])(L)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"行内代码"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.code,onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("code")})},{default:Yl((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"引用"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.blockquote,onClick:t[13]||(t[13]=function(t){return e.emitRichTextCommand("blockquote")})},{default:Yl((function(){return[Object(j["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.emitRichTextCommand("clear")})},{default:Yl((function(){return[Object(j["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(r),Object(j["createVNode"])(A,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[15]||(t[15]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Yl((function(){return[Object(j["createVNode"])(B,{value:"left",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Yl((function(){return[Object(j["createVNode"])(B,{value:"center",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Yl((function(){return[Object(j["createVNode"])(B,{value:"right",style:{flex:"1"}},{default:Yl((function(){return[Object(j["createVNode"])(D)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(N,{class:"row"},{default:Yl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"项目符号"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.bulletList,onClick:t[16]||(t[16]=function(t){return e.emitRichTextCommand("bulletList")})},{default:Yl((function(){return[Object(j["createVNode"])(P)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"编号"},{default:Yl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.orderedList,onClick:t[17]||(t[17]=function(t){return e.emitRichTextCommand("orderedList")})},{default:Yl((function(){return[Object(j["createVNode"])(R)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(r),Object(j["createVNode"])("div",Kl,[Ql,Object(j["createVNode"])(d,{style:{flex:"3"},value:e.lineHeight,onChange:t[18]||(t[18]=function(t){return e.updateLineHeight(t)})},{suffixIcon:Yl((function(){return[Object(j["createVNode"])(F)]})),default:Yl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineHeightOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Yl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e)+"倍",1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]),Object(j["createVNode"])("div",$l,[ei,Object(j["createVNode"])(d,{style:{flex:"3"},value:e.wordSpace,onChange:t[19]||(t[19]=function(t){return e.updateWordSpace(t)})},{suffixIcon:Yl((function(){return[Object(j["createVNode"])(H)]})),default:Yl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.wordSpaceOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Yl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e)+"px",1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]),Object(j["createVNode"])(r),Object(j["createVNode"])(z),Object(j["createVNode"])(r),Object(j["createVNode"])(U),Object(j["createVNode"])(r),Object(j["createVNode"])(G)])})),ni=Object(j["withScopeId"])("data-v-b884607e");Object(j["pushScopeId"])("data-v-b884607e");var oi={class:"element-opacity"},ci={class:"row"},ai=Object(j["createVNode"])("div",{style:{flex:"2"}},"不透明度:",-1);Object(j["popScopeId"])();var ri=ni((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Slider");return Object(j["openBlock"])(),Object(j["createBlock"])("div",oi,[Object(j["createVNode"])("div",ci,[ai,Object(j["createVNode"])(r,{min:0,max:1,step:.1,value:e.opacity,style:{flex:"3"},onChange:t[1]||(t[1]=function(t){return e.updateOpacity(t)})},null,8,["step","value"])])])})),li=Object(j["defineComponent"])({name:"element-opacity",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])();Object(j["watch"])(t,(function(){t.value&&(n.value="opacity"in t.value&&void 0!==t.value.opacity?t.value.opacity:1)}),{deep:!0,immediate:!0});var o=Se(),c=o.addHistorySnapshot,a=function(n){var o={opacity:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{opacity:n,updateOpacity:a}}});n("64c0");li.render=ri,li.__scopeId="data-v-b884607e";var ii=li,ui=(n("c7cd"),Object(j["withScopeId"])("data-v-2d8ce9c0"));Object(j["pushScopeId"])("data-v-2d8ce9c0");var di={class:"element-outline"},si={key:0,class:"row"},fi=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用边框:",-1),pi={class:"switch-wrapper",style:{flex:"3"}},bi={class:"row"},mi=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框样式:",-1),vi=Object(j["createTextVNode"])("实线边框"),Oi=Object(j["createTextVNode"])("虚线边框"),ji={class:"row"},hi=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1),gi={class:"row"},yi=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1);Object(j["popScopeId"])();var ki=ui((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Switch"),l=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("Select"),u=Object(j["resolveComponent"])("ColorPicker"),d=Object(j["resolveComponent"])("ColorButton"),s=Object(j["resolveComponent"])("Popover"),f=Object(j["resolveComponent"])("InputNumber");return Object(j["openBlock"])(),Object(j["createBlock"])("div",di,[e.fixed?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",si,[fi,Object(j["createVNode"])("div",pi,[Object(j["createVNode"])(r,{checked:e.hasOutline,onChange:t[1]||(t[1]=function(t){return e.toggleOutline(t)})},null,8,["checked"])])])),e.hasOutline?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])("div",bi,[mi,Object(j["createVNode"])(i,{style:{flex:"3"},value:e.outline.style,onChange:t[2]||(t[2]=function(t){return e.updateOutline({style:t})})},{default:ui((function(){return[Object(j["createVNode"])(l,{value:"solid"},{default:ui((function(){return[vi]})),_:1}),Object(j["createVNode"])(l,{value:"dashed"},{default:ui((function(){return[Oi]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",ji,[hi,Object(j["createVNode"])(s,{trigger:"click"},{content:ui((function(){return[Object(j["createVNode"])(u,{modelValue:e.outline.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateOutline({color:t})})},null,8,["modelValue"])]})),default:ui((function(){return[Object(j["createVNode"])(d,{color:e.outline.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",gi,[yi,Object(j["createVNode"])(f,{value:e.outline.width,onChange:t[4]||(t[4]=function(t){return e.updateOutline({width:t})}),style:{flex:"3"}},null,8,["value"])])],64)):Object(j["createCommentVNode"])("",!0)])})),Ei=Object(j["withScopeId"])("data-v-39016b60"),Ii=Ei((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconPlatte"),l=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"color-btn"},{default:Ei((function(){return[Object(j["createVNode"])("div",{class:"color-block",style:{backgroundColor:n.color}},null,4),Object(j["createVNode"])(r,{class:"color-btn-icon"})]})),_:1})})),Ci={name:"color-button",props:{color:{type:String,required:!0}}};n("1401");Ci.render=Ii,Ci.__scopeId="data-v-39016b60";var Si=Ci,Ni=Object(j["defineComponent"])({name:"element-outline",components:{ColorButton:Si},props:{fixed:{type:Boolean,default:!1}},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){t.value&&(n.value="outline"in t.value?t.value.outline:void 0,o.value=!!n.value)}),{deep:!0,immediate:!0});var c=Se(),a=c.addHistorySnapshot,r=function(o){var c={outline:Object(P["a"])(Object(P["a"])({},n.value),o)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),a()},l=function(n){if(n){var o={outline:{width:2,color:"#000",style:"solid"}};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})}else e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"outline"});a()};return{outline:n,hasOutline:o,toggleOutline:l,updateOutline:r}}});n("7d4a");Ni.render=ki,Ni.__scopeId="data-v-2d8ce9c0";var xi=Ni,Li=Object(j["withScopeId"])("data-v-5cca6474");Object(j["pushScopeId"])("data-v-5cca6474");var Ti={class:"element-shadow"},wi={class:"row"},Vi=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用阴影:",-1),_i={class:"switch-wrapper",style:{flex:"3"}},Bi={class:"row"},Mi=Object(j["createVNode"])("div",{style:{flex:"2"}},"水平阴影:",-1),Di={class:"row"},Ai=Object(j["createVNode"])("div",{style:{flex:"2"}},"垂直阴影:",-1),Pi={class:"row"},Ri=Object(j["createVNode"])("div",{style:{flex:"2"}},"模糊距离:",-1),Fi={class:"row"},Hi=Object(j["createVNode"])("div",{style:{flex:"2"}},"阴影颜色:",-1);Object(j["popScopeId"])();var zi=Li((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Switch"),l=Object(j["resolveComponent"])("Slider"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ti,[Object(j["createVNode"])("div",wi,[Vi,Object(j["createVNode"])("div",_i,[Object(j["createVNode"])(r,{checked:e.hasShadow,onChange:t[1]||(t[1]=function(t){return e.toggleShadow(t)})},null,8,["checked"])])]),e.hasShadow?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Bi,[Mi,Object(j["createVNode"])(l,{min:0,max:10,step:1,value:e.shadow.h,onChange:t[2]||(t[2]=function(t){return e.updateShadow({h:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Di,[Ai,Object(j["createVNode"])(l,{min:0,max:10,step:1,value:e.shadow.v,onChange:t[3]||(t[3]=function(t){return e.updateShadow({v:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Pi,[Ri,Object(j["createVNode"])(l,{min:1,max:20,step:1,value:e.shadow.blur,onChange:t[4]||(t[4]=function(t){return e.updateShadow({blur:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Fi,[Hi,Object(j["createVNode"])(d,{trigger:"click"},{content:Li((function(){return[Object(j["createVNode"])(i,{modelValue:e.shadow.color,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateShadow({color:t})})},null,8,["modelValue"])]})),default:Li((function(){return[Object(j["createVNode"])(u,{color:e.shadow.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])})),Ui=Object(j["defineComponent"])({name:"element-shadow",components:{ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){t.value&&(n.value="shadow"in t.value?t.value.shadow:void 0,o.value=!!n.value)}),{deep:!0,immediate:!0});var c=Se(),a=c.addHistorySnapshot,r=function(o){var c={shadow:Object(P["a"])(Object(P["a"])({},n.value),o)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),a()},l=function(n){if(n){var o={shadow:{h:1,v:1,blur:2,color:"#000"}};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})}else e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"shadow"});a()};return{shadow:n,hasShadow:o,toggleShadow:l,updateShadow:r}}});n("c2a4");Ui.render=zi,Ui.__scopeId="data-v-5cca6474";var Gi=Ui,qi=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"fontsize",value:"48px"},{command:"align",value:"center"},{command:"bold"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"fontsize",value:"36px"},{command:"align",value:"center"},{command:"bold"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],Wi=z,Xi=Object(j["defineComponent"])({name:"text-style-panel",components:{ElementOpacity:ii,ElementOutline:xi,ElementShadow:Gi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])();Object(j["watch"])(t,(function(){t.value&&"text"===t.value.type&&(n.value=t.value.fill||"#000",o.value=t.value.lineHeight||1.5,c.value=t.value.wordSpace||0)}),{deep:!0,immediate:!0});var a=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left",bulletList:!1,orderedList:!1,blockquote:!1}),r=Object(j["computed"])((function(){return e.state.availableFonts})),l=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],i=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],u=[0,1,2,3,4,5,6,8,10],d=function(e){return a.value=e};Ut.on(Lt.UPDATE_TEXT_STATE,(function(e){return d(e)})),Object(j["onUnmounted"])((function(){Ut.off(Lt.UPDATE_TEXT_STATE,(function(e){return d(e)}))}));var s=function(e,t){Ut.emit(Lt.EXEC_TEXT_COMMAND,{command:e,value:t})},f=function(e){Ut.emit(Lt.EXEC_TEXT_COMMAND,e)},p=Se(),b=p.addHistorySnapshot,m=function(n){var o={lineHeight:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},v=function(n){var o={wordSpace:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},O=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()};return{fill:n,lineHeight:o,wordSpace:c,richTextAttrs:a,availableFonts:r,webFonts:Wi,fontSizeOptions:l,lineHeightOptions:i,wordSpaceOptions:u,updateLineHeight:m,updateWordSpace:v,updateFill:O,emitRichTextCommand:s,emitBatchRichTextCommand:f,presetStyles:qi}}});n("90d9");Xi.render=ti,Xi.__scopeId="data-v-43fccffc";var Yi=Xi,Zi=Object(j["withScopeId"])("data-v-76aa2020");Object(j["pushScopeId"])("data-v-76aa2020");var Ji={class:"image-style-panel"},Ki=Object(j["createTextVNode"])(" 裁剪图片"),Qi={class:"clip"},$i=Object(j["createVNode"])("div",{class:"title"},"按形状裁剪:",-1),eu={class:"shape-clip"},tu={key:0,class:"title"},nu={class:"filter"},ou={class:"name"},cu={class:"value"},au=Object(j["createTextVNode"])(" 设置滤镜"),ru=Object(j["createTextVNode"])(" 替换图片"),lu=Object(j["createTextVNode"])(" 重置样式"),iu=Object(j["createTextVNode"])(" 设为背景");Object(j["popScopeId"])();var uu=Zi((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconTailoring"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("ButtonGroup"),u=Object(j["resolveComponent"])("IconDown"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("Slider"),f=Object(j["resolveComponent"])("IconColorFilter"),p=Object(j["resolveComponent"])("ElementFlip"),b=Object(j["resolveComponent"])("Divider"),m=Object(j["resolveComponent"])("ElementOutline"),v=Object(j["resolveComponent"])("ElementShadow"),O=Object(j["resolveComponent"])("IconTransform"),h=Object(j["resolveComponent"])("FileInput"),g=Object(j["resolveComponent"])("IconUndo"),y=Object(j["resolveComponent"])("IconTheme");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ji,[Object(j["createVNode"])("div",{class:"origin-image",style:{backgroundImage:"url(".concat(e.handleElement.src,")")}},null,4),Object(j["createVNode"])(i,{class:"row"},{default:Zi((function(){return[Object(j["createVNode"])(l,{style:{flex:"5"},onClick:t[1]||(t[1]=function(t){return e.clipImage()})},{default:Zi((function(){return[Object(j["createVNode"])(r,{class:"btn-icon"}),Ki]})),_:1}),Object(j["createVNode"])(d,{trigger:"click",visible:e.clipPanelVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.clipPanelVisible=t})},{content:Zi((function(){return[Object(j["createVNode"])("div",Qi,[$i,Object(j["createVNode"])("div",eu,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeClipPathOptions,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"shape-clip-item",key:n,onClick:function(t){return e.presetImageClip(n)}},[Object(j["createVNode"])("div",{class:"shape",style:{backgroundImage:"url(".concat(e.handleElement.src,")"),clipPath:t.style}},null,4)],8,["onClick"])})),128))]),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.ratioClipOptions,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:t.label},[t.label?(Object(j["openBlock"])(),Object(j["createBlock"])("div",tu,Object(j["toDisplayString"])(t.label)+":",1)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i,{class:"row"},{default:Zi((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{style:{flex:"1"},key:t.key,onClick:function(n){return e.presetImageClip("rect",t.ratio)}},{default:Zi((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(t.key),1)]})),_:2},1032,["onClick"])})),128))]})),_:2},1024)],64)})),128))])]})),default:Zi((function(){return[Object(j["createVNode"])(l,{class:"no-padding",style:{flex:"1"}},{default:Zi((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["visible"])]})),_:1}),Object(j["createVNode"])(d,{trigger:"click"},{content:Zi((function(){return[Object(j["createVNode"])("div",nu,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.filterOptions,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"filter-item",key:t.key},[Object(j["createVNode"])("div",ou,Object(j["toDisplayString"])(t.label),1),Object(j["createVNode"])(s,{class:"filter-slider",max:t.max,min:t.min,step:t.step,value:t.value,onChange:function(n){return e.updateFilter(t,n)}},null,8,["max","min","step","value","onChange"]),Object(j["createVNode"])("div",cu,Object(j["toDisplayString"])(t.value),1)])})),128))])]})),default:Zi((function(){return[Object(j["createVNode"])(l,{class:"full-width-btn"},{default:Zi((function(){return[Object(j["createVNode"])(f,{class:"btn-icon"}),au]})),_:1})]})),_:1}),Object(j["createVNode"])(p),Object(j["createVNode"])(b),Object(j["createVNode"])(m),Object(j["createVNode"])(b),Object(j["createVNode"])(v),Object(j["createVNode"])(b),Object(j["createVNode"])(h,{onChange:t[3]||(t[3]=function(t){return e.replaceImage(t)})},{default:Zi((function(){return[Object(j["createVNode"])(l,{class:"full-width-btn"},{default:Zi((function(){return[Object(j["createVNode"])(O,{class:"btn-icon"}),ru]})),_:1})]})),_:1}),Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[4]||(t[4]=function(t){return e.resetImage()})},{default:Zi((function(){return[Object(j["createVNode"])(g,{class:"btn-icon"}),lu]})),_:1}),Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[5]||(t[5]=function(t){return e.setBackgroundImage()})},{default:Zi((function(){return[Object(j["createVNode"])(y,{class:"btn-icon"}),iu]})),_:1})])})),du=Object(j["withScopeId"])("data-v-4a631c86");Object(j["pushScopeId"])("data-v-4a631c86");var su={class:"element-flip"},fu=Object(j["createTextVNode"])(" 垂直翻转"),pu=Object(j["createTextVNode"])(" 水平翻转");Object(j["popScopeId"])();var bu=du((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconFlipVertically"),l=Object(j["resolveComponent"])("CheckboxButton"),i=Object(j["resolveComponent"])("IconFlipHorizontally"),u=Object(j["resolveComponent"])("CheckboxButtonGroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",su,[Object(j["createVNode"])(u,{class:"row"},{default:du((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},checked:180===e.flip.x,onClick:t[1]||(t[1]=function(t){return e.updateFlip({x:180===e.flip.x?0:180,y:e.flip.y})})},{default:du((function(){return[Object(j["createVNode"])(r),fu]})),_:1},8,["checked"]),Object(j["createVNode"])(l,{style:{flex:"1"},checked:180===e.flip.y,onClick:t[2]||(t[2]=function(t){return e.updateFlip({x:e.flip.x,y:180===e.flip.y?0:180})})},{default:du((function(){return[Object(j["createVNode"])(i),pu]})),_:1},8,["checked"])]})),_:1})])})),mu=Object(j["defineComponent"])({name:"element-flip",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])({x:0,y:0});Object(j["watch"])(t,(function(){t.value&&["image","shape"].includes(t.value.type)&&(t.value.flip?n.value={x:t.value.flip.x||0,y:t.value.flip.y||0}:n.value={x:0,y:0})}),{deep:!0,immediate:!0});var o=Se(),c=o.addHistorySnapshot,a=function(n){var o={flip:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{flip:n,updateFlip:a}}});n("75f6");mu.render=bu,mu.__scopeId="data-v-4a631c86";var vu=mu,Ou=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],ju=fn,hu=[{label:"纵横比(方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],gu=Object(j["defineComponent"])({name:"image-style-panel",components:{ElementOutline:xi,ElementShadow:Gi,ElementFlip:vu},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Object(j["ref"])(!1),c=Object(j["ref"])(JSON.parse(JSON.stringify(Ou)));Object(j["watch"])(t,(function(){if(t.value&&"image"===t.value.type){var e=t.value.filters;c.value=e?Ou.map((function(t){return void 0!==e[t.key]?Object(P["a"])(Object(P["a"])({},t),{},{value:parseInt(e[t.key])}):t})):JSON.parse(JSON.stringify(Ou))}}),{deep:!0,immediate:!0});var a=Se(),r=a.addHistorySnapshot,l=function(n,o){var c=t.value.filters||{},a=Object(P["a"])(Object(P["a"])({},c),{},Object(S["a"])({},n.key,"".concat(o).concat(n.unit))),l={filters:a};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:l}),r()},i=function(){e.commit(g.SET_CLIPING_IMAGE_ELEMENT_ID,t.value.id),o.value=!1},u=function(){var e=t.value.width,n=t.value.height,o=t.value.left,c=t.value.top,a=t.value.clip?t.value.clip.range:[[0,0],[100,100]],r=e/((a[1][0]-a[0][0])/100),l=n/((a[1][1]-a[0][1])/100),i=o-r*(a[0][0]/100),u=c-l*(a[0][1]/100);return{originClipRange:a,originWidth:r,originHeight:l,originLeft:i,originTop:u}},d=function(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,c=u(),a=c.originClipRange,l=c.originWidth,d=c.originHeight,s=c.originLeft,f=c.originTop;if(o){var p,b=d/l,m=0,v=100;if(b>o){var O=(1-o/b)/2*100;p=[[m,O],[v,v-O]]}else{var j=(1-b/o)/2*100;p=[[j,m],[v-j,v]]}e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(P["a"])(Object(P["a"])({},t.value.clip),{},{shape:n,range:p}),left:s+l*(p[0][0]/100),top:f+d*(p[0][1]/100),width:l*(p[1][0]-p[0][0])/100,height:d*(p[1][1]-p[0][1])/100}})}else e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(P["a"])(Object(P["a"])({},t.value.clip),{},{shape:n,range:a})}});i(),r()},s=function(n){var o=n[0];o&&(xe(o).then((function(n){var o={src:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})})),r())},f=function(){if(t.value.clip){var n=u(),o=n.originWidth,c=n.originHeight,a=n.originLeft,l=n.originTop;e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{left:a,top:l,width:o,height:c}})}e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:["clip","outline","flip","shadow","filters"]}),r()},p=function(){var o=Object(P["a"])(Object(P["a"])({},n.value.background),{},{type:"image",image:t.value.src,imageSize:"cover"});e.commit(g.UPDATE_SLIDE,{background:o}),r()};return{clipPanelVisible:o,shapeClipPathOptions:ju,ratioClipOptions:hu,filterOptions:c,handleElement:t,updateFilter:l,clipImage:i,presetImageClip:d,replaceImage:s,resetImage:f,setBackgroundImage:p}}});n("ee01");gu.render=uu,gu.__scopeId="data-v-76aa2020";var yu=gu,ku=Object(j["withScopeId"])("data-v-998a7a02");Object(j["pushScopeId"])("data-v-998a7a02");var Eu={class:"shape-style-panel"},Iu={class:"row"},Cu=Object(j["createTextVNode"])("纯色填充"),Su=Object(j["createTextVNode"])("渐变填充"),Nu=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),xu=Object(j["createTextVNode"])("线性渐变"),Lu=Object(j["createTextVNode"])("径向渐变"),Tu={class:"row"},wu=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),Vu={class:"row"},_u=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),Bu={key:0,class:"row"},Mu=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1);Object(j["popScopeId"])();var Du=ku((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("Slider"),f=Object(j["resolveComponent"])("ElementFlip"),p=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("ElementOutline"),m=Object(j["resolveComponent"])("ElementShadow"),v=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Eu,[Object(j["createVNode"])("div",Iu,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.fillType,onChange:t[1]||(t[1]=function(t){return e.updateFillType(t)})},{default:ku((function(){return[Object(j["createVNode"])(r,{value:"fill"},{default:ku((function(){return[Cu]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:ku((function(){return[Su]})),_:1})]})),_:1},8,["value"]),Nu,"fill"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:ku((function(){return[Object(j["createVNode"])(i,{modelValue:e.fill,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:ku((function(){return[Object(j["createVNode"])(u,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[3]||(t[3]=function(t){return e.updateGradient({type:t})})},{default:ku((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:ku((function(){return[xu]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:ku((function(){return[Lu]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Tu,[wu,Object(j["createVNode"])(d,{trigger:"click"},{content:ku((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[0],"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateGradient({color:[t,e.gradient.color[1]]})})},null,8,["modelValue"])]})),default:ku((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Vu,[_u,Object(j["createVNode"])(d,{trigger:"click"},{content:ku((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[1],"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateGradient({color:[e.gradient.color[0],t]})})},null,8,["modelValue"])]})),default:ku((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Bu,[Mu,Object(j["createVNode"])(s,{min:0,max:360,step:15,value:e.gradient.rotate,style:{flex:"3"},onChange:t[6]||(t[6]=function(t){return e.updateGradient({rotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(f),Object(j["createVNode"])(p),Object(j["createVNode"])(b),Object(j["createVNode"])(p),Object(j["createVNode"])(m),Object(j["createVNode"])(p),Object(j["createVNode"])(v)])})),Au=Object(j["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:ii,ElementOutline:xi,ElementShadow:Gi,ElementFlip:vu,ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])("fill");Object(j["watch"])(t,(function(){t.value&&"shape"===t.value.type&&(n.value=t.value.fill||"#000",o.value=t.value.gradient||{type:"linear",rotate:0,color:[n.value,"#fff"]},c.value=t.value.gradient?"gradient":"fill")}),{deep:!0,immediate:!0});var a=Se(),r=a.addHistorySnapshot,l=function(n){if("fill"===n)e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"gradient"});else{var c={gradient:o.value};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c})}r()},i=function(n){var c={gradient:Object(P["a"])(Object(P["a"])({},o.value),n)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),r()},u=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),r()};return{fill:n,gradient:o,fillType:c,updateFillType:l,updateFill:u,updateGradient:i}}});n("6f16");Au.render=Du,Au.__scopeId="data-v-998a7a02";var Pu=Au,Ru=Object(j["withScopeId"])("data-v-65b24fb3");Object(j["pushScopeId"])("data-v-65b24fb3");var Fu={class:"line-style-panel"},Hu={class:"row"},zu=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条样式:",-1),Uu=Object(j["createTextVNode"])("实线"),Gu=Object(j["createTextVNode"])("虚线"),qu={class:"row"},Wu=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1),Xu={class:"row"},Yu=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1),Zu={class:"row"},Ju=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点样式:",-1),Ku=Object(j["createTextVNode"])("无"),Qu=Object(j["createTextVNode"])("箭头"),$u=Object(j["createTextVNode"])("圆点"),ed={class:"row"},td=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点样式:",-1),nd=Object(j["createTextVNode"])("无"),od=Object(j["createTextVNode"])("箭头"),cd=Object(j["createTextVNode"])("圆点");Object(j["popScopeId"])();var ad=Ru((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("Divider"),p=Object(j["resolveComponent"])("ElementShadow");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Fu,[Object(j["createVNode"])("div",Hu,[zu,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.style,onChange:t[1]||(t[1]=function(t){return e.updateLine({style:t})})},{default:Ru((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:Ru((function(){return[Uu]})),_:1}),Object(j["createVNode"])(r,{value:"dashed"},{default:Ru((function(){return[Gu]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",qu,[Wu,Object(j["createVNode"])(d,{trigger:"click"},{content:Ru((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Ru((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Xu,[Yu,Object(j["createVNode"])(s,{value:e.handleElement.width,onChange:t[3]||(t[3]=function(t){return e.updateLine({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Zu,[Ju,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[0],onChange:t[4]||(t[4]=function(t){return e.updateLine({points:[t,e.handleElement.points[1]]})})},{default:Ru((function(){return[Object(j["createVNode"])(r,{value:""},{default:Ru((function(){return[Ku]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:Ru((function(){return[Qu]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:Ru((function(){return[$u]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",ed,[td,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[1],onChange:t[5]||(t[5]=function(t){return e.updateLine({points:[e.handleElement.points[0],t]})})},{default:Ru((function(){return[Object(j["createVNode"])(r,{value:""},{default:Ru((function(){return[nd]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:Ru((function(){return[od]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:Ru((function(){return[cd]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(f),Object(j["createVNode"])(p)])})),rd=Object(j["defineComponent"])({name:"line-style-panel",components:{ElementShadow:Gi,ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Se(),o=n.addHistorySnapshot,c=function(n){e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:n}),o()};return{handleElement:t,updateLine:c}}});n("8df8e");rd.render=ad,rd.__scopeId="data-v-65b24fb3";var ld=rd,id=Object(j["withScopeId"])("data-v-4dd87e36");Object(j["pushScopeId"])("data-v-4dd87e36");var ud={class:"chart-style-panel"},dd=Object(j["createTextVNode"])(" 编辑图表数据 "),sd={class:"row"},fd=Object(j["createTextVNode"])("面积图样式"),pd=Object(j["createTextVNode"])("散点图样式"),bd={class:"row"},md=Object(j["createTextVNode"])("使用平滑曲线"),vd={key:1,class:"row"},Od=Object(j["createTextVNode"])("条形图样式"),jd={key:2,class:"row"},hd=Object(j["createTextVNode"])("环形图样式"),gd={class:"row"},yd=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景填充:",-1),kd={class:"row"},Ed=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题配色:",-1),Id={class:"row"},Cd=Object(j["createVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1);Object(j["popScopeId"])();var Sd=id((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEdit"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Divider"),u=Object(j["resolveComponent"])("Checkbox"),d=Object(j["resolveComponent"])("ColorPicker"),s=Object(j["resolveComponent"])("ColorButton"),f=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("ElementOutline"),b=Object(j["resolveComponent"])("ChartDataEditor"),m=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createBlock"])("div",ud,[Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[1]||(t[1]=function(t){return e.chartDataEditorVisible=!0})},{default:id((function(){return[Object(j["createVNode"])(r,{class:"btn-icon"}),dd]})),_:1}),Object(j["createVNode"])(i),"line"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",sd,[Object(j["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:id((function(){return[fd]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:id((function(){return[pd]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",bd,[Object(j["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:id((function(){return[md]})),_:1},8,["checked"])])],64)):Object(j["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",vd,[Object(j["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:id((function(){return[Od]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",jd,[Object(j["createVNode"])(u,{onChange:t[6]||(t[6]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:id((function(){return[hd]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i),Object(j["createVNode"])("div",gd,[yd,Object(j["createVNode"])(f,{trigger:"click"},{content:id((function(){return[Object(j["createVNode"])(d,{modelValue:e.fill,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:id((function(){return[Object(j["createVNode"])(s,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",kd,[Ed,Object(j["createVNode"])(f,{trigger:"click"},{content:id((function(){return[Object(j["createVNode"])(d,{modelValue:e.themeColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateTheme(t)})},null,8,["modelValue"])]})),default:id((function(){return[Object(j["createVNode"])(s,{color:e.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Id,[Cd,Object(j["createVNode"])(f,{trigger:"click"},{content:id((function(){return[Object(j["createVNode"])(d,{modelValue:e.gridColor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:id((function(){return[Object(j["createVNode"])(s,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(i),Object(j["createVNode"])(p),Object(j["createVNode"])(m,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:id((function(){return[Object(j["createVNode"])(b,{data:e.handleElement.data,onClose:t[10]||(t[10]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[11]||(t[11]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])})),Nd=Object(j["withScopeId"])("data-v-08aba838");Object(j["pushScopeId"])("data-v-08aba838");var xd={class:"chart-data-editor"},Ld={class:"editor-content"},Td={class:"range-box"},wd={class:"btns"},Vd=Object(j["createTextVNode"])("取消"),_d=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var Bd=Nd((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",xd,[Object(j["createVNode"])("div",Ld,[Object(j["createVNode"])("div",Td,[Object(j["createVNode"])("div",{class:"temp-range",style:{width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"}},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.rangeLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["range-line",e.type],key:e.type,style:e.style},null,6)})),128)),Object(j["createVNode"])("div",{class:"resizable",style:e.resizablePointStyle,onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(j["createVNode"])("table",null,[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(30,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(7,(function(n){return Object(j["createVNode"])("td",{key:n,class:{head:1===n&&t<=e.selectedRange[1]}},[Object(j["createVNode"])("input",{class:["item",{selected:t<=e.selectedRange[1]&&n<=e.selectedRange[0]}],id:"cell-".concat(t-1,"-").concat(n-1),autocomplete:"off"},null,10,["id"])],2)})),64))])})),64))])])]),Object(j["createVNode"])("div",wd,[Object(j["createVNode"])(r,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Nd((function(){return[Vd]})),_:1}),Object(j["createVNode"])(r,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()})},{default:Nd((function(){return[_d]})),_:1})])])})),Md=100,Dd=32,Ad=Object(j["defineComponent"])({name:"chart-data-editor",props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])([0,0]),c=Object(j["ref"])({width:0,height:0}),a=Object(j["computed"])((function(){var e=o.value[0]*Md,t=o.value[1]*Dd;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),r=Object(j["computed"])((function(){var e=o.value[0]*Md,t=o.value[1]*Dd;return{left:e+"px",top:t+"px"}})),l=function(){for(var t=[],n=e.data,c=n.labels,a=n.series,r=c.length,l=a.length,i=0;i.5*Md&&(i+=Md-i%Md),u%Dd>.5*Dd&&(u+=Dd-u%Dd);var d=Math.round(u/Dd),s=Math.round(i/Md);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],c.value={width:0,height:0}}}};return{tempRangeSize:c,rangeLines:a,resizablePointStyle:r,changeSelectRange:d,selectedRange:o,getTableData:i,closeEditor:u}}});n("aede");Ad.render=Bd,Ad.__scopeId="data-v-08aba838";var Pd=Ad,Rd=Object(j["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:xi,ChartDataEditor:Pd,ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(!1),o=Se(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(""),l=Object(j["ref"])(""),i=Object(j["ref"])(!0),u=Object(j["ref"])(!0),d=Object(j["ref"])(!1),s=Object(j["ref"])(!1),f=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){if(t.value&&"chart"===t.value.type){if(a.value=t.value.fill||"#000",t.value.options){var e=t.value.options,n=e.lineSmooth,o=e.showLine,c=e.showArea,p=e.horizontalBars,b=e.donut;void 0!==n&&(i.value=n),void 0!==o&&(u.value=o),void 0!==c&&(d.value=c),void 0!==p&&(s.value=p),void 0!==b&&(f.value=b)}r.value=t.value.themeColor,l.value=t.value.gridColor||"rgba(0, 0, 0, 0.4)"}}),{deep:!0,immediate:!0});var p=function(o){n.value=!1;var a={data:o};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:a}),c()},b=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},m=function(n){var o=t.value.options||{},a=Object(P["a"])(Object(P["a"])({},o),n),r={options:a};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:r}),c()},v=function(n){var o={themeColor:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},O=function(n){var o={gridColor:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{chartDataEditorVisible:n,handleElement:t,updateData:p,fill:a,updateFill:b,lineSmooth:i,showLine:u,showArea:d,horizontalBars:s,donut:f,updateOptions:m,themeColor:r,gridColor:l,updateTheme:v,updateGridColor:O}}});n("167e");Rd.render=Sd,Rd.__scopeId="data-v-4dd87e36";var Fd=Rd,Hd=Object(j["withScopeId"])("data-v-90d47588");Object(j["pushScopeId"])("data-v-90d47588");var zd={class:"table-style-panel"},Ud={class:"row"},Gd=Object(j["createVNode"])("div",{style:{flex:"2"}},"行数:",-1),qd={class:"row"},Wd=Object(j["createVNode"])("div",{style:{flex:"2"}},"列数:",-1),Xd={class:"row theme-switch"},Yd=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1),Zd={class:"switch-wrapper",style:{flex:"3"}},Jd={class:"row"},Kd=Object(j["createTextVNode"])("标题行"),Qd=Object(j["createTextVNode"])("汇总行"),$d={class:"row"},es=Object(j["createTextVNode"])("第一列"),ts=Object(j["createTextVNode"])("最后一列"),ns={class:"row"},os=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1);Object(j["popScopeId"])();var cs=Hd((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconFontSize"),l=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("Select"),u=Object(j["resolveComponent"])("IconAddText"),d=Object(j["resolveComponent"])("InputGroup"),s=Object(j["resolveComponent"])("ColorPicker"),f=Object(j["resolveComponent"])("IconText"),p=Object(j["resolveComponent"])("Button"),b=Object(j["resolveComponent"])("Tooltip"),m=Object(j["resolveComponent"])("Popover"),v=Object(j["resolveComponent"])("IconFill"),O=Object(j["resolveComponent"])("ButtonGroup"),h=Object(j["resolveComponent"])("IconTextBold"),g=Object(j["resolveComponent"])("CheckboxButton"),y=Object(j["resolveComponent"])("IconTextItalic"),k=Object(j["resolveComponent"])("IconTextUnderline"),E=Object(j["resolveComponent"])("IconStrikethrough"),I=Object(j["resolveComponent"])("CheckboxButtonGroup"),C=Object(j["resolveComponent"])("IconAlignTextLeft"),S=Object(j["resolveComponent"])("RadioButton"),N=Object(j["resolveComponent"])("IconAlignTextCenter"),x=Object(j["resolveComponent"])("IconAlignTextRight"),L=Object(j["resolveComponent"])("RadioGroup"),T=Object(j["resolveComponent"])("Divider"),w=Object(j["resolveComponent"])("ElementOutline"),V=Object(j["resolveComponent"])("InputNumber"),_=Object(j["resolveComponent"])("Switch"),B=Object(j["resolveComponent"])("Checkbox"),M=Object(j["resolveComponent"])("ColorButton");return Object(j["openBlock"])(),Object(j["createBlock"])("div",zd,[Object(j["createVNode"])(d,{compact:"",class:"row"},{default:Hd((function(){return[Object(j["createVNode"])(i,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Hd((function(){return[Object(j["createVNode"])(r)]})),default:Hd((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e.en,value:e.en},{default:Hd((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.en}},Object(j["toDisplayString"])(e.zh),5)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"]),Object(j["createVNode"])(i,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[2]||(t[2]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Hd((function(){return[Object(j["createVNode"])(u)]})),default:Hd((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e,value:e},{default:Hd((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(O,{class:"row"},{default:Hd((function(){return[Object(j["createVNode"])(m,{trigger:"click"},{content:Hd((function(){return[Object(j["createVNode"])(s,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Hd((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Hd((function(){return[Object(j["createVNode"])(p,{class:"text-color-btn",style:{flex:"1"}},{default:Hd((function(){return[Object(j["createVNode"])(f),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.color}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m,{trigger:"click"},{content:Hd((function(){return[Object(j["createVNode"])(s,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Hd((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Hd((function(){return[Object(j["createVNode"])(p,{class:"text-color-btn",style:{flex:"1"}},{default:Hd((function(){return[Object(j["createVNode"])(v),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.backcolor}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(I,{class:"row"},{default:Hd((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Hd((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.bold,onClick:t[5]||(t[5]=function(t){return e.updateTextAttrs({bold:!e.textAttrs.bold})})},{default:Hd((function(){return[Object(j["createVNode"])(h)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Hd((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.em,onClick:t[6]||(t[6]=function(t){return e.updateTextAttrs({em:!e.textAttrs.em})})},{default:Hd((function(){return[Object(j["createVNode"])(y)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Hd((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.underline,onClick:t[7]||(t[7]=function(t){return e.updateTextAttrs({underline:!e.textAttrs.underline})})},{default:Hd((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Hd((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.strikethrough,onClick:t[8]||(t[8]=function(t){return e.updateTextAttrs({strikethrough:!e.textAttrs.strikethrough})})},{default:Hd((function(){return[Object(j["createVNode"])(E)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(L,{class:"row","button-style":"solid",value:e.textAttrs.align,onChange:t[9]||(t[9]=function(t){return e.updateTextAttrs({align:t.target.value})})},{default:Hd((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Hd((function(){return[Object(j["createVNode"])(S,{value:"left",style:{flex:"1"}},{default:Hd((function(){return[Object(j["createVNode"])(C)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Hd((function(){return[Object(j["createVNode"])(S,{value:"center",style:{flex:"1"}},{default:Hd((function(){return[Object(j["createVNode"])(N)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Hd((function(){return[Object(j["createVNode"])(S,{value:"right",style:{flex:"1"}},{default:Hd((function(){return[Object(j["createVNode"])(x)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(T),Object(j["createVNode"])(w,{fixed:!0}),Object(j["createVNode"])(T),Object(j["createVNode"])("div",Ud,[Gd,Object(j["createVNode"])(V,{min:e.minRowCount,max:20,value:e.rowCount,"onUpdate:value":t[10]||(t[10]=function(t){return e.rowCount=t}),onPressEnter:t[11]||(t[11]=function(t){return e.setTableRow(t)}),onBlur:t[12]||(t[12]=function(t){return e.setTableRow(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])("div",qd,[Wd,Object(j["createVNode"])(V,{min:e.minColCount,max:20,value:e.colCount,"onUpdate:value":t[13]||(t[13]=function(t){return e.colCount=t}),onPressEnter:t[14]||(t[14]=function(t){return e.setTableCol(t)}),onBlur:t[15]||(t[15]=function(t){return e.setTableCol(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])(T),Object(j["createVNode"])("div",Xd,[Yd,Object(j["createVNode"])("div",Zd,[Object(j["createVNode"])(_,{checked:e.hasTheme,onChange:t[16]||(t[16]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.hasTheme?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Jd,[Object(j["createVNode"])(B,{onChange:t[17]||(t[17]=function(t){return e.updateTheme({rowHeader:t.target.checked})}),checked:e.theme.rowHeader,style:{flex:"1"}},{default:Hd((function(){return[Kd]})),_:1},8,["checked"]),Object(j["createVNode"])(B,{onChange:t[18]||(t[18]=function(t){return e.updateTheme({rowFooter:t.target.checked})}),checked:e.theme.rowFooter,style:{flex:"1"}},{default:Hd((function(){return[Qd]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",$d,[Object(j["createVNode"])(B,{onChange:t[19]||(t[19]=function(t){return e.updateTheme({colHeader:t.target.checked})}),checked:e.theme.colHeader,style:{flex:"1"}},{default:Hd((function(){return[es]})),_:1},8,["checked"]),Object(j["createVNode"])(B,{onChange:t[20]||(t[20]=function(t){return e.updateTheme({colFooter:t.target.checked})}),checked:e.theme.colFooter,style:{flex:"1"}},{default:Hd((function(){return[ts]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",ns,[os,Object(j["createVNode"])(m,{trigger:"click"},{content:Hd((function(){return[Object(j["createVNode"])(s,{modelValue:e.theme.color,"onUpdate:modelValue":t[21]||(t[21]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Hd((function(){return[Object(j["createVNode"])(M,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])})),as=Object(j["defineComponent"])({name:"table-style-panel",components:{ElementOutline:xi,ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.state.availableFonts})),o=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],c=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(0),d=Object(j["ref"])(0);Object(j["watch"])(t,(function(){t.value&&"table"===t.value.type&&(a.value=t.value.theme,r.value=!!a.value,l.value=t.value.data.length,i.value=t.value.data[0].length,u.value=t.value.data.length,d.value=t.value.data[0].length)}),{deep:!0,immediate:!0});var s=Se(),f=s.addHistorySnapshot,p=Object(j["ref"])([]),b=function(){if(t.value){var e=0,n=0;if(p.value.length){var o=p.value[0];e=+o.split("_")[0],n=+o.split("_")[1]}var a=t.value.data[e][n].style;c.value=a?{bold:!!a.bold,em:!!a.em,underline:!!a.underline,strikethrough:!!a.strikethrough,color:a.color||"#000",backcolor:a.backcolor||"#000",fontsize:a.fontsize||"12px",fontname:a.fontname||"微软雅黑",align:a.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}},m=function(e){p.value=e,b()};Ut.on(Lt.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)})),Object(j["onUnmounted"])((function(){Ut.off(Lt.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)}))}));var v=function(n){for(var o=JSON.parse(JSON.stringify(t.value.data)),c=0;cX
Y
',1),ms={class:"row"},vs=Object(j["createVNode"])("div",{style:{flex:"3"}},"大小:",-1),Os={key:1,style:{flex:"1"}},js=Object(j["createStaticVNode"])('',1),hs={class:"row"},gs=Object(j["createVNode"])("div",{style:{flex:"3"}},"旋转:",-1),ys=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1);Object(j["popScopeId"])();var ks=us((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconSendToBack"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconBringToFrontOne"),d=Object(j["resolveComponent"])("IconBringToFront"),s=Object(j["resolveComponent"])("IconSentToBack"),f=Object(j["resolveComponent"])("ButtonGroup"),p=Object(j["resolveComponent"])("IconAlignLeft"),b=Object(j["resolveComponent"])("IconAlignVertically"),m=Object(j["resolveComponent"])("IconAlignRight"),v=Object(j["resolveComponent"])("IconAlignTop"),O=Object(j["resolveComponent"])("IconAlignHorizontally"),h=Object(j["resolveComponent"])("IconAlignBottom"),g=Object(j["resolveComponent"])("Divider"),y=Object(j["resolveComponent"])("InputNumber"),k=Object(j["resolveComponent"])("IconLock"),E=Object(j["resolveComponent"])("IconUnlock"),I=Object(j["resolveComponent"])("IconRotate");return Object(j["openBlock"])(),Object(j["createBlock"])("div",ds,[Object(j["createVNode"])(f,{class:"row"},{default:us((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置顶层"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,"top")})},{default:us((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置底层"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,"bottom")})},{default:us((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上移一层"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,"up")})},{default:us((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下移一层"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.orderElement(e.handleElement,"down")})},{default:us((function(){return[Object(j["createVNode"])(s)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:us((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas("left")})},{default:us((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas("horizontal")})},{default:us((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas("right")})},{default:us((function(){return[Object(j["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:us((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas("top")})},{default:us((function(){return[Object(j["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas("vertical")})},{default:us((function(){return[Object(j["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:us((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[10]||(t[10]=function(t){return e.alignElementToCanvas("bottom")})},{default:us((function(){return[Object(j["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(g),Object(j["createVNode"])("div",ss,[fs,Object(j["createVNode"])(y,{step:5,value:e.left,onChange:t[11]||(t[11]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),ps,Object(j["createVNode"])(y,{step:5,value:e.top,onChange:t[12]||(t[12]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),bs,"line"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",ms,[vs,Object(j["createVNode"])(y,{min:e.minSize,max:1500,step:5,value:e.width,onChange:t[13]||(t[13]=function(t){return e.updateWidth(t)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[e.fixedRatio?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:us((function(){return[Object(j["createVNode"])(k,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:us((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},class:"icon-btn",onClick:t[15]||(t[15]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(j["openBlock"])(),Object(j["createBlock"])("div",Os)),Object(j["createVNode"])(y,{min:e.minSize,max:800,step:5,disabled:"text"===e.handleElement.type,value:e.height,onChange:t[16]||(t[16]=function(t){return e.updateHeight(t)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),js],64)):Object(j["createCommentVNode"])("",!0),["text","image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(g),Object(j["createVNode"])("div",hs,[gs,Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:us((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:us((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[18]||(t[18]=function(t){return e.updateRotate45("+")}),style:{flex:2,transform:"rotateY(180deg)"}},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),ys,Object(j["createVNode"])(y,{min:-180,max:180,step:5,value:e.rotate,onChange:t[19]||(t[19]=function(t){return e.updateRotate(t)}),style:{flex:"4"}},null,8,["value"])])],64)):Object(j["createCommentVNode"])("",!0)])})),Es=n("b69c"),Is=n.n(Es),Cs=Object(j["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(0),o=Object(j["ref"])(0),c=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),l=Object(j["ref"])(!1),i=Object(j["computed"])((function(){return t.value&&qt[t.value.type]||20}));Object(j["watch"])(t,(function(){t.value&&(n.value=Is()(t.value.left,1),o.value=Is()(t.value.top,1),l.value="fixedRatio"in t.value&&!!t.value.fixedRatio,"line"!==t.value.type&&(c.value=Is()(t.value.width,1),a.value=Is()(t.value.height,1),r.value="rotate"in t.value&&void 0!==t.value.rotate?Is()(t.value.rotate,1):0))}),{deep:!0,immediate:!0});var u=Fe(),d=u.orderElement,s=rn(),f=s.alignElementToCanvas,p=Se(),b=p.addHistorySnapshot,m=function(n){var o={left:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},v=function(n){var o={top:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},O=function(n){var o={width:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},h=function(n){var o={height:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},y=function(n){var o={rotate:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},k=function(n){var o={fixedRatio:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},E=function(n){var o=45*Math.floor(r.value/45);"+"===n?o+=45:"-"===n&&(o-=45),o<-180&&(o=-180),o>180&&(o=180);var c={rotate:o};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),b()};return{handleElement:t,orderElement:d,alignElementToCanvas:f,left:n,top:o,width:c,height:a,rotate:r,fixedRatio:l,minSize:i,updateLeft:m,updateTop:v,updateWidth:O,updateHeight:h,updateRotate:y,updateFixedRatio:k,updateRotate45:E}}});n("b7a1");Cs.render=ks,Cs.__scopeId="data-v-15c9ddcc";var Ss=Cs,Ns=Object(j["withScopeId"])("data-v-79c3f50b");Object(j["pushScopeId"])("data-v-79c3f50b");var xs={class:"element-animation-panel"},Ls={key:0,class:"element-animation"},Ts={class:"animation-pool"},ws={class:"type-title"},Vs={class:"pool-item-wrapper"},_s={key:1,class:"tip"},Bs=Object(j["createTextVNode"])(" 选中画布中的元素添加动画"),Ms={class:"index"},Ds={class:"text"},As={class:"handler"};Object(j["popScopeId"])();var Ps,Rs=Ns((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEffects"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("IconClick"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPlayOne"),f=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconCloseSmall"),b=Object(j["resolveComponent"])("Draggable");return Object(j["openBlock"])(),Object(j["createBlock"])("div",xs,[e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Ls,[Object(j["createVNode"])(i,{trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.animationPoolVisible=t})},{content:Ns((function(){return[Object(j["createVNode"])("div",Ts,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-type",key:n.name},[Object(j["createVNode"])("div",ws,Object(j["toDisplayString"])(n.name)+":",1),Object(j["createVNode"])("div",Vs,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n.children,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(t){return e.hoverPreviewAnimation=n.value},onMouseleave:t[1]||(t[1]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n.value)}},[Object(j["createVNode"])("div",{class:["animation-box",["animate__animated","animate__faster",e.hoverPreviewAnimation===n.value&&"animate__".concat(n.value)]]},Object(j["toDisplayString"])(n.name),3)],40,["onMouseenter","onClick"])})),128))])])})),128))])]})),default:Ns((function(){return[Object(j["createVNode"])(l,{class:"element-animation-btn"},{default:Ns((function(){return[Object(j["createVNode"])(r,{style:{"margin-right":"5px"}}),Object(j["createTextVNode"])(" "+Object(j["toDisplayString"])(e.handleElementAnimation||"点击选择动画"),1)]})),_:1})]})),_:1},8,["visible"])])):(Object(j["openBlock"])(),Object(j["createBlock"])("div",_s,[Object(j["createVNode"])(u),Bs])),Object(j["createVNode"])(d),Object(j["createVNode"])(b,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Ns((function(t){var n,o=t.element,c=t.index;return[Object(j["createVNode"])("div",{class:["sequence-item",{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===o.elId}]},[Object(j["createVNode"])("div",Ms,Object(j["toDisplayString"])(c+1),1),Object(j["createVNode"])("div",Ds,"【"+Object(j["toDisplayString"])(o.elType)+"】"+Object(j["toDisplayString"])(o.animationType),1),Object(j["createVNode"])("div",As,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Ns((function(){return[Object(j["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(o.elId,o.type)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Ns((function(){return[Object(j["createVNode"])(p,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(o.elId)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])],2)]})),_:1},8,["modelValue","onEnd"])])})),Fs=[{type:"bounce",name:"弹跳",children:[{name:"弹入",value:"bounceIn"},{name:"向右弹入",value:"bounceInLeft"},{name:"向左弹入",value:"bounceInRight"},{name:"向上弹入",value:"bounceInUp"},{name:"向下弹入",value:"bounceInDown"}]},{type:"fade",name:"浮现",children:[{name:"浮入",value:"fadeIn"},{name:"向下浮入",value:"fadeInDown"},{name:"向下长距浮入",value:"fadeInDownBig"},{name:"向右浮入",value:"fadeInLeft"},{name:"向右长距浮入",value:"fadeInLeftBig"},{name:"向左浮入",value:"fadeInRight"},{name:"向左长距浮入",value:"fadeInRightBig"},{name:"向上浮入",value:"fadeInUp"},{name:"向上长距浮入",value:"fadeInUpBig"},{name:"从左上浮入",value:"fadeInTopLeft"},{name:"从右上浮入",value:"fadeInTopRight"},{name:"从左下浮入",value:"fadeInBottomLeft"},{name:"从右下浮入",value:"fadeInBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转进入",value:"rotateIn"},{name:"绕左下旋转进入",value:"rotateInDownLeft"},{name:"绕右下旋转进入",value:"rotateInDownRight"},{name:"绕左上旋转进入",value:"rotateInUpLeft"},{name:"绕右上旋转进入",value:"rotateInUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"放大进入",value:"zoomIn"},{name:"向下放大进入",value:"zoomInDown"},{name:"从左放大进入",value:"zoomInLeft"},{name:"从右放大进入",value:"zoomInRight"},{name:"向上放大进入",value:"zoomInUp"}]},{type:"slide",name:"滑入",children:[{name:"向下滑入",value:"slideInDown"},{name:"从右滑入",value:"slideInLeft"},{name:"从左滑入",value:"slideInRight"},{name:"向上滑入",value:"slideInUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转进入",value:"flipInX"},{name:"Y轴翻转进入",value:"flipInY"}]},{type:"back",name:"放大滑入",children:[{name:"向下放大滑入",value:"backInDown"},{name:"从左放大滑入",value:"backInLeft"},{name:"从右放大滑入",value:"backInRight"},{name:"向上放大滑入",value:"backInUp"}]},{type:"lightSpeed",name:"飞入",children:[{name:"从右飞入",value:"lightSpeedInRight"},{name:"从左飞入",value:"lightSpeedInLeft"}]}],Hs={},zs=Object(ye["a"])(Fs);try{for(zs.s();!(Ps=zs.n()).done;){var Us,Gs=Ps.value,qs=Object(ye["a"])(Gs.children);try{for(qs.s();!(Us=qs.n()).done;){var Ws=Us.value;Hs[Ws.value]=Ws.name}}catch(Xv){qs.e(Xv)}finally{qs.f()}}}catch(Xv){zs.e(Xv)}finally{zs.f()}var Xs=Object(j["defineComponent"])({name:"element-animation-panel",components:{Draggable:$r.a},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.getters.currentSlideAnimations})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["ref"])(""),a=Object(j["ref"])(!1),r=Se(),l=r.addHistorySnapshot,i=Fs,u=Object(j["computed"])((function(){if(!n.value)return[];var e,t=[],c=Object(ye["a"])(n.value);try{var a=function(){var n=e.value,c=o.value.elements.find((function(e){return e.id===n.elId}));if(!c)return"continue";var a=Gt[c.type],r=Hs[n.type];t.push(Object(P["a"])(Object(P["a"])({},n),{},{elType:a,animationType:r}))};for(c.s();!(e=c.n()).done;)a()}catch(Xv){c.e(Xv)}finally{c.f()}return t})),d=Object(j["computed"])((function(){if(!t.value)return null;var e=n.value||[],o=e.find((function(e){return e.elId===t.value.id}));return o?Hs[o.type]:null})),s=function(t){var o=n.value.filter((function(e){return e.elId!==t}));e.commit(g.UPDATE_SLIDE,{animations:o}),l()},f=function(t){var o=t.newIndex,c=t.oldIndex;if(c!==o){var a=JSON.parse(JSON.stringify(n.value)),r=a[c];a.splice(c,1),a.splice(o,0,r),e.commit(g.UPDATE_SLIDE,{animations:a}),l()}},p=function(e,t){var n="animate__",o=document.querySelector("#editable-element-".concat(e," [class^=editable-element-]"));if(o){var c="".concat(n).concat(t);o.classList.add("".concat(n,"animated"),c);var a=function(){o.classList.remove("".concat(n,"animated"),c)};o.addEventListener("animationend",a,{once:!0})}},b=function(o){var c=n.value.map((function(e){return e.elId===t.value.id?Object(P["a"])(Object(P["a"])({},e),{},{type:o}):e}));e.commit(g.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)},m=function(o){if(d.value)b(o);else{var c=n.value?JSON.parse(JSON.stringify(n.value)):[];c.push({elId:t.value.id,type:o,duration:1e3}),e.commit(g.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)}};return{handleElement:t,animationPoolVisible:a,animations:i,animationSequence:u,hoverPreviewAnimation:c,handleElementAnimation:d,addAnimation:m,deleteAnimation:s,handleDragEnd:f,runAnimation:p}}});n("f8c3");Xs.render=Rs,Xs.__scopeId="data-v-79c3f50b";var Ys=Xs,Zs=Object(j["withScopeId"])("data-v-5069f2f0");Object(j["pushScopeId"])("data-v-5069f2f0");var Js={class:"slide-style-panel"},Ks=Object(j["createVNode"])("div",{class:"title"},"背景填充",-1),Qs={class:"row"},$s=Object(j["createTextVNode"])("纯色填充"),ef=Object(j["createTextVNode"])("图片填充"),tf=Object(j["createTextVNode"])("渐变填充"),nf=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),of=Object(j["createTextVNode"])("原始大小"),cf=Object(j["createTextVNode"])("缩放"),af=Object(j["createTextVNode"])("拼贴"),rf=Object(j["createTextVNode"])("缩放铺满"),lf=Object(j["createTextVNode"])("线性渐变"),uf=Object(j["createTextVNode"])("径向渐变"),df={key:0,class:"background-image-wrapper"},sf={class:"background-image"},ff={key:1,class:"background-gradient-wrapper"},pf={class:"row"},bf=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),mf={class:"row"},vf=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),Of={key:0,class:"row"},jf=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1),hf={class:"row"},gf=Object(j["createTextVNode"])("应用背景到全部"),yf=Object(j["createVNode"])("div",{class:"title"},"全局主题",-1),kf={class:"row"},Ef=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体:",-1),If={class:"row"},Cf=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1),Sf={class:"row"},Nf=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1),xf={class:"row"},Lf=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题色:",-1),Tf=Object(j["createVNode"])("div",{class:"title",style:{"margin-top":"20px"}},"预置主题:",-1),wf={class:"theme-list"},Vf={class:"theme-item-content"},_f={class:"row"},Bf=Object(j["createTextVNode"])("应用主题到全部");Object(j["popScopeId"])();var Mf=Zs((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("IconPlus"),f=Object(j["resolveComponent"])("FileInput"),p=Object(j["resolveComponent"])("Slider"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("SelectOptGroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Js,[Ks,Object(j["createVNode"])("div",Qs,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.background.type,onChange:t[1]||(t[1]=function(t){return e.updateBackgroundType(t)})},{default:Zs((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:Zs((function(){return[$s]})),_:1}),Object(j["createVNode"])(r,{value:"image"},{default:Zs((function(){return[ef]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:Zs((function(){return[tf]})),_:1})]})),_:1},8,["value"]),nf,"solid"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.background.size||"cover",onChange:t[3]||(t[3]=function(t){return e.updateBackground({imageSize:t})})},{default:Zs((function(){return[Object(j["createVNode"])(r,{value:"initial"},{default:Zs((function(){return[of]})),_:1}),Object(j["createVNode"])(r,{value:"contain"},{default:Zs((function(){return[cf]})),_:1}),Object(j["createVNode"])(r,{value:"repeat"},{default:Zs((function(){return[af]})),_:1}),Object(j["createVNode"])(r,{value:"cover"},{default:Zs((function(){return[rf]})),_:1})]})),_:1},8,["value"])):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:2,style:{flex:"10"},value:e.background.gradientType,onChange:t[4]||(t[4]=function(t){return e.updateBackground({gradientType:t})})},{default:Zs((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:Zs((function(){return[lf]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:Zs((function(){return[uf]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",df,[Object(j["createVNode"])(f,{onChange:t[5]||(t[5]=function(t){return e.uploadBackgroundImage(t)})},{default:Zs((function(){return[Object(j["createVNode"])("div",sf,[Object(j["createVNode"])("div",{class:"content",style:{backgroundImage:"url(".concat(e.background.image,")")}},[Object(j["createVNode"])(s)],4)])]})),_:1})])):Object(j["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ff,[Object(j["createVNode"])("div",pf,[bf,Object(j["createVNode"])(d,{trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[0],"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateBackground({gradientColor:[t,e.background.gradientColor[1]]})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",mf,[vf,Object(j["createVNode"])(d,{trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[1],"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateBackground({gradientColor:[e.background.gradientColor[0],t]})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Of,[jf,Object(j["createVNode"])(p,{min:0,max:360,step:15,value:e.background.gradientRotate,style:{flex:"3"},onChange:t[8]||(t[8]=function(t){return e.updateBackground({gradientRotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",hf,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.applyBackgroundAllSlide()})},{default:Zs((function(){return[gf]})),_:1})]),Object(j["createVNode"])(m),yf,Object(j["createVNode"])("div",kf,[Ef,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Zs((function(){return[Object(j["createVNode"])(v,{label:"系统字体"},{default:Zs((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Zs((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(v,{label:"在线字体"},{default:Zs((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Zs((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",If,[Cf,Object(j["createVNode"])(d,{trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Sf,[Nf,Object(j["createVNode"])(d,{trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",xf,[Lf,Object(j["createVNode"])(d,{trigger:"click"},{content:Zs((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Zs((function(){return[Object(j["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Tf,Object(j["createVNode"])("div",wf,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themes,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"theme-item",key:n,style:{backgroundColor:t.background},onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(j["createVNode"])("div",Vf,[Object(j["createVNode"])("div",{class:"text",style:{color:t.text}},"Aa",4),Object(j["createVNode"])("div",{class:"color-block",style:{backgroundColor:t.color}},null,4)])],12,["onClick"])})),128))]),Object(j["createVNode"])("div",_f,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.applyThemeAllSlide()})},{default:Zs((function(){return[Bf]})),_:1})])])})),Df=[{color:"#d14424",background:"#ffffff",text:"#333"},{color:"#42464b",background:"#ffffff",text:"#333"},{color:"#5d82ba",background:"#ffffff",text:"#333"},{color:"#005a6f",background:"#ffffff",text:"#333"},{color:"#d0614c",background:"#dfb044",text:"#333"},{color:"#86a1ad",background:"#dfdbd4",text:"#333"},{color:"#697586",background:"#d5c4a4",text:"#333"},{color:"#333333",background:"#7acfa6",text:"#333"},{color:"#42464b",background:"#415065",text:"#fff"},{color:"#0c5999",background:"#35a2cd",text:"#fff"},{color:"#c49a41",background:"#8c4357",text:"#fff"},{color:"#dfaa00",background:"#2e4e7d",text:"#fff"},{color:"#d1ad88",background:"#f99070",text:"#fff"},{color:"#464d52",background:"#657984",text:"#fff"},{color:"#ffcfb6",background:"#1e4c6f",text:"#fff"},{color:"#c3a043",background:"#43292a",text:"#fff"},{color:"#ffffff",background:"#171925",text:"#fff"},{color:"#df9636",background:"#5b89a0",text:"#fff"},{color:"#b898a4",background:"#93716b",text:"#fff"},{color:"#c47a11",background:"#187db1",text:"#fff"},{color:"#333333",background:"#759564",text:"#fff"},{color:"#355b5e",background:"#424b50",text:"#fff"},{color:"#d29090",background:"#942a32",text:"#fff"},{color:"#00cfdf",background:"#3b434d",text:"#fff"},{color:"#424246",background:"#c70042",text:"#fff"},{color:"#2e4155",background:"#b35d44",text:"#fff"},{color:"#11bfce",background:"#8f98aa",text:"#fff"},{color:"#333333",background:"#549688",text:"#fff"}],Af=Df,Pf=z,Rf=Object(j["defineComponent"])({name:"slide-style-panel",components:{ColorButton:Si},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.theme})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["computed"])((function(){return e.state.availableFonts})),a=Object(j["computed"])((function(){return o.value.background?o.value.background:{type:"solid",value:"#fff"}})),r=Se(),l=r.addHistorySnapshot,i=function(t){if("solid"===t){var n=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"solid",color:a.value.color||"#fff"});e.commit(g.UPDATE_SLIDE,{background:n})}else if("image"===t){var o=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"image",image:a.value.image||"",imageSize:a.value.imageSize||"cover"});e.commit(g.UPDATE_SLIDE,{background:o})}else{var c=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"gradient",gradientType:a.value.gradientType||"linear",gradientColor:a.value.gradientColor||["#fff","#fff"],gradientRotate:a.value.gradientRotate||0});e.commit(g.UPDATE_SLIDE,{background:c})}l()},u=function(t){e.commit(g.UPDATE_SLIDE,{background:Object(P["a"])(Object(P["a"])({},a.value),t)}),l()},d=function(e){var t=e[0];t&&xe(t).then((function(e){return u({image:e})}))},s=function(){var n=t.value.map((function(e){return Object(P["a"])(Object(P["a"])({},e),{},{background:o.value.background})}));e.commit(g.SET_SLIDES,n),l()},f=function(t){e.commit(g.SET_THEME,t)},p=function(){var o,c=JSON.parse(JSON.stringify(t.value)),a=n.value,r=a.themeColor,i=a.backgroundColor,u=a.fontColor,d=Object(ye["a"])(c);try{for(d.s();!(o=d.n()).done;){var s=o.value;s.background&&"image"===s.background.type||(s.background=Object(P["a"])(Object(P["a"])({},s.background),{},{type:"solid",color:i}));var f,p=s.elements,b=Object(ye["a"])(p);try{for(b.s();!(f=b.n()).done;){var m=f.value;"shape"===m.type?m.fill=r:"line"===m.type?m.color=r:"text"===m.type?m.fill&&(m.fill=r):"table"===m.type?m.theme&&(m.theme.color=r):"chart"===m.type&&(m.themeColor=r,m.gridColor=u)}}catch(Xv){b.e(Xv)}finally{b.f()}}}catch(Xv){d.e(Xv)}finally{d.f()}e.commit(g.SET_SLIDES,c),l()};return{availableFonts:c,background:a,updateBackgroundType:i,updateBackground:u,uploadBackgroundImage:d,applyBackgroundAllSlide:s,themes:Af,theme:n,webFonts:Pf,updateTheme:f,applyThemeAllSlide:p}}});n("872a6");Rf.render=Mf,Rf.__scopeId="data-v-5069f2f0";var Ff=Rf,Hf=Object(j["withScopeId"])("data-v-6e3028f1");Object(j["pushScopeId"])("data-v-6e3028f1");var zf={class:"slide-animation-panel"},Uf={class:"animation-pool"},Gf={class:"animation-text"},qf=Object(j["createTextVNode"])("应用到全部");Object(j["popScopeId"])();var Wf=Hf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",zf,[Object(j["createVNode"])("div",Uf,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["animation-item",{active:e.currentTurningMode===t.value}],key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(j["createVNode"])("div",{class:["animation-block",t.value]},null,2),Object(j["createVNode"])("div",Gf,Object(j["toDisplayString"])(t.label),1)],10,["onClick"])})),128))]),Object(j["createVNode"])(r,{style:{width:"100%"},onClick:t[1]||(t[1]=function(t){return e.applyAllSlide()})},{default:Hf((function(){return[qf]})),_:1})])})),Xf=Object(j["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Object(j["computed"])((function(){return n.value.turningMode||"slideY"})),c=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=Se(),r=a.addHistorySnapshot,l=function(t){t!==o.value&&(e.commit(g.UPDATE_SLIDE,{turningMode:t}),r())},i=function(){var o=t.value.map((function(e){return Object(P["a"])(Object(P["a"])({},e),{},{turningMode:n.value.turningMode})}));e.commit(g.SET_SLIDES,o),r()};return{currentTurningMode:o,animations:c,updateTurningMode:l,applyAllSlide:i}}});n("5217");Xf.render=Wf,Xf.__scopeId="data-v-6e3028f1";var Yf=Xf,Zf=Object(j["withScopeId"])("data-v-540e3d06");Object(j["pushScopeId"])("data-v-540e3d06");var Jf={class:"multi-position-panel"},Kf=Object(j["createTextVNode"])("组合"),Qf=Object(j["createTextVNode"])("取消组合");Object(j["popScopeId"])();var $f=Zf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconAlignLeft"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconAlignVertically"),d=Object(j["resolveComponent"])("IconAlignRight"),s=Object(j["resolveComponent"])("ButtonGroup"),f=Object(j["resolveComponent"])("IconAlignTop"),p=Object(j["resolveComponent"])("IconAlignHorizontally"),b=Object(j["resolveComponent"])("IconAlignBottom"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconGroup"),O=Object(j["resolveComponent"])("IconUngroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Jf,[Object(j["createVNode"])(s,{class:"row"},{default:Zf((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignActiveElement("left")})},{default:Zf((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignActiveElement("horizontal")})},{default:Zf((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignActiveElement("right")})},{default:Zf((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(s,{class:"row"},{default:Zf((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignActiveElement("top")})},{default:Zf((function(){return[Object(j["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignActiveElement("vertical")})},{default:Zf((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Zf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignActiveElement("bottom")})},{default:Zf((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m),Object(j["createVNode"])(s,{class:"row"},{default:Zf((function(){return[Object(j["createVNode"])(l,{disabled:!e.canCombine,onClick:t[7]||(t[7]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Zf((function(){return[Object(j["createVNode"])(v,{style:{"margin-right":"3px"}}),Kf]})),_:1},8,["disabled"]),Object(j["createVNode"])(l,{disabled:e.canCombine,onClick:t[8]||(t[8]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Zf((function(){return[Object(j["createVNode"])(O,{style:{"margin-right":"3px"}}),Qf]})),_:1},8,["disabled"])]})),_:1})])})),ep=Object(j["defineComponent"])({name:"multi-position-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Se(),a=c.addHistorySnapshot,r=De(),l=r.combineElements,i=r.uncombineElements,u=Object(j["computed"])((function(){var e=n.value[0].groupId;if(!e)return!0;var t=n.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),d=function(c){var r,l=Mt(n.value),i=l.minX,u=l.maxX,d=l.minY,s=l.maxY,f=JSON.parse(JSON.stringify(o.value.elements)),p={},b=Object(ye["a"])(n.value);try{var m=function(){var e=r.value;if(e.groupId&&!p[e.groupId]){var t=n.value.filter((function(t){return t.groupId===e.groupId}));p[e.groupId]=Mt(t)}};for(b.s();!(r=b.n()).done;)m()}catch(Xv){b.e(Xv)}finally{b.f()}if(c===$.LEFT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minX-i;e.left=e.left-o}else e.left=i}));else if(c===$.RIGHT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxX-u;e.left=e.left-o}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=u-c}}));else if(c===$.TOP)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minY-d;e.top=e.top-o}else e.top=d}));else if(c===$.BOTTOM)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxY-s;e.top=e.top-o}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=s-c}}));else if(c===$.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxX+n.minX)/2,c=o-v;e.left=e.left-c}else{var a="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-a/2}}))}else if(c===$.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxY+n.minY)/2,c=o-O;e.top=e.top-c}else{var a="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-a/2}}))}e.commit(g.UPDATE_SLIDE,{elements:f}),a()};return{canCombine:u,combineElements:l,uncombineElements:i,alignActiveElement:d}}});n("a607");ep.render=$f,ep.__scopeId="data-v-540e3d06";var tp=ep,np=Object(j["defineComponent"])({name:"toolbar",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.toolbarState})),n=[{label:"样式",value:Gl.EL_STYLE},{label:"位置",value:Gl.EL_POSITION},{label:"动画",value:Gl.EL_ANIMATION}],o=[{label:"页面样式",value:Gl.SLIDE_STYLE},{label:"切换",value:Gl.SLIDE_ANIMATION},{label:"动画",value:Gl.EL_ANIMATION}],c=[{label:"位置",value:Gl.MULTI_POSITION},{label:"样式",value:Gl.EL_STYLE}],a=function(t){e.commit(g.SET_TOOLBAR_STATE,t)},r=Object(j["computed"])((function(){return e.state.activeElementIdList})),l=Object(j["computed"])((function(){return r.value.length?r.value.length>1?c:n:o}));Object(j["watch"])(l,(function(){var n=l.value.map((function(e){return e.value}));n.includes(t.value)||e.commit(g.SET_TOOLBAR_STATE,n[0])}));var i=Object(j["computed"])((function(){var e,n=(e={},Object(S["a"])(e,Gl.EL_STYLE,is),Object(S["a"])(e,Gl.EL_POSITION,Ss),Object(S["a"])(e,Gl.EL_ANIMATION,Ys),Object(S["a"])(e,Gl.SLIDE_STYLE,Ff),Object(S["a"])(e,Gl.SLIDE_ANIMATION,Yf),Object(S["a"])(e,Gl.MULTI_POSITION,tp),e);return n[t.value]||null}));return{toolbarState:t,currentTabs:l,setToolbarState:a,currentPanelComponent:i}}});n("31e2");np.render=Ul,np.__scopeId="data-v-58d77c92";var op=np,cp=Object(j["defineComponent"])({name:"editor",components:{EditorHeader:St,Canvas:nr,CanvasTool:Xr,Thumbnails:Pl,Toolbar:op},setup:function(){We(),Xe()}});n("58b2");cp.render=ce,cp.__scopeId="data-v-429c76fd";var ap=cp,rp=Object(j["withScopeId"])("data-v-661c33b7");Object(j["pushScopeId"])("data-v-661c33b7");var lp={class:"pptist-screen"},ip={class:"tools"};Object(j["popScopeId"])();var up=rp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenSlide"),l=Object(j["resolveComponent"])("SlideThumbnails"),i=Object(j["resolveComponent"])("IconLeftC"),u=Object(j["resolveComponent"])("IconRightC"),d=Object(j["resolveComponent"])("IconSearch"),s=Object(j["resolveComponent"])("WritingBoardTool"),f=Object(j["resolveComponent"])("IconWrite"),p=Object(j["resolveComponent"])("Popover"),b=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",lp,[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"slide-list",onMousewheel:t[1]||(t[1]=function(t){return e.mousewheelListener(t)})},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["slide-item","turning-mode-".concat(t.turningMode||"slideY"),{current:n===e.slideIndex,before:ne.slideIndex,hide:(n===e.slideIndex-1||n===e.slideIndex+1)&&t.turningMode!==e.currentSlide.turningMode}],key:t.id},[Object(j["createVNode"])("div",{class:"slide-content",style:{width:e.slideWidth+"px",height:e.slideHeight+"px"}},[Object(j["createVNode"])(r,{slide:t,scale:e.scale,animationIndex:e.animationIndex},null,8,["slide","scale","animationIndex"])],4)],2)})),128))],544),[[b,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[2]||(t[2]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",ip,[Object(j["createVNode"])(i,{class:"tool-btn",onClick:t[3]||(t[3]=function(t){return e.execPrev()})}),Object(j["createVNode"])(u,{class:"tool-btn",onClick:t[4]||(t[4]=function(t){return e.execNext()})}),Object(j["createVNode"])(d,{class:"tool-btn",onClick:t[5]||(t[5]=function(t){return e.slideThumbnailModelVisible=!0})}),Object(j["createVNode"])(p,{trigger:"click",visible:e.writingBoardToolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.writingBoardToolVisible=t})},{content:rp((function(){return[Object(j["createVNode"])(s,{onClose:t[6]||(t[6]=function(t){return e.writingBoardToolVisible=!1})})]})),default:rp((function(){return[Object(j["createVNode"])(f,{class:"tool-btn"})]})),_:1},8,["visible"])])])})),dp=Object(j["withScopeId"])("data-v-5e193d56"),sp=dp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-slide",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.VIEWPORT_ASPECT_RATIO+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:Object(P["a"])({},e.backgroundStyle)},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{id:"screen-element-".concat(t.id),key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex},null,8,["id","elementInfo","elementIndex","animationIndex"])})),128))],4)}));function fp(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element",style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName,visibility:e.needWaitAnimation?"hidden":"visible"}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],4)}var pp=Object(j["withScopeId"])("data-v-1423f8c2"),bp=pp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element-chart",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor},null,8,["width","height","type","data","options","themeColor","gridColor"])],4)],4)})),mp=Object(j["defineComponent"])({name:"screen-element-chart",components:{ElementOutline:zo,Chart:gc},props:{elementInfo:{type:Object,required:!0}}});n("1539");mp.render=bp,mp.__scopeId="data-v-1423f8c2";var vp=mp,Op=Object(j["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(S["a"])(t,on.IMAGE,rl),Object(S["a"])(t,on.TEXT,dl),Object(S["a"])(t,on.SHAPE,ml),Object(S["a"])(t,on.LINE,hl),Object(S["a"])(t,on.CHART,vp),Object(S["a"])(t,on.TABLE,Vl),t);return n[e.elementInfo.type]||null})),n=X(),o=Object(j["computed"])((function(){return n.state.theme})),c=Object(j["computed"])((function(){return n.getters.currentSlide})),a=Object(j["computed"])((function(){var t=c.value.animations||[],n=t.findIndex((function(t){return t.elId===e.elementInfo.id}));return-1!==n&&n>=e.animationIndex}));return{currentElementComponent:t,needWaitAnimation:a,theme:o}}});Op.render=fp;var jp=Op,hp=Object(j["defineComponent"])({name:"screen-slide",components:{ScreenElement:jp},props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Object(j["computed"])((function(){return e.slide.background})),n=Kc(t),o=n.backgroundStyle;return{backgroundStyle:o,VIEWPORT_SIZE:Le,VIEWPORT_ASPECT_RATIO:Te}}});n("993a");hp.render=sp,hp.__scopeId="data-v-5e193d56";var gp=hp,yp=Object(j["withScopeId"])("data-v-49960bc8");Object(j["pushScopeId"])("data-v-49960bc8");var kp={class:"slide-thumbnails"},Ep={class:"return-button"},Ip={class:"slide-thumbnails-content"};Object(j["popScopeId"])();var Cp=yp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconArrowCircleLeft"),l=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createBlock"])("div",kp,[Object(j["createVNode"])("div",Ep,[Object(j["createVNode"])(r,{class:"icon",onClick:t[1]||(t[1]=function(t){return e.close()})})]),Object(j["createVNode"])("div",Ip,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["thumbnail",{active:n===e.slideIndex}],key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(j["createVNode"])(l,{slide:t,size:150},null,8,["slide"])],10,["onClick"])})),128))])])})),Sp=Object(j["defineComponent"])({name:"slide-thumbnails",components:{ThumbnailSlide:Dl},props:{turnSlideToIndex:{type:Function}},setup:function(e,t){var n=t.emit,o=X(),c=Object(j["computed"])((function(){return o.state.slides})),a=Object(j["computed"])((function(){return o.state.slideIndex})),r=function(){return n("close")};return{slides:c,slideIndex:a,close:r}}});n("9a54");Sp.render=Cp,Sp.__scopeId="data-v-49960bc8";var Np=Sp,xp=Object(j["withScopeId"])("data-v-0bfb345d");Object(j["pushScopeId"])("data-v-0bfb345d");var Lp={class:"writing-board-tool"},Tp={class:"tools"},wp={class:"colors"};Object(j["popScopeId"])();var Vp=xp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("WritingBoard"),l=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Lp,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Teleport"],{to:"body"},[e.writingBoardVisible?Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,ref:"writingBoardRef",color:e.writingBoardColor,model:e.writingBoardModel},null,8,["color","model"])),[[l,e.contextmenus]]):Object(j["createCommentVNode"])("",!0)])),Object(j["createVNode"])("div",Tp,[Object(j["createVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.changePen()})},"画笔"),Object(j["createVNode"])("div",{class:"btn",onClick:t[2]||(t[2]=function(t){return e.changeEraser()})},"橡皮擦"),Object(j["createVNode"])("div",{class:"btn",onClick:t[3]||(t[3]=function(t){return e.clearCanvas()})},"擦除所有墨迹"),Object(j["createVNode"])("div",{class:"btn",onClick:t[4]||(t[4]=function(t){return e.closeWritingBoard()})},"退出画笔"),Object(j["createVNode"])("div",wp,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.writingBoardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["color",{active:t===e.writingBoardColor}],key:t,style:{backgroundColor:t},onClick:function(n){return e.changeColor(t)}},null,14,["onClick"])})),128))])])])})),_p=Object(j["withScopeId"])("data-v-4ddc4b2c");Object(j["pushScopeId"])("data-v-4ddc4b2c");var Bp={class:"writing-board",ref:"writingBoardRef"};Object(j["popScopeId"])();var Mp=_p((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconWrite");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Bp,[Object(j["createVNode"])("canvas",{class:"canvas",ref:"canvasRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMousedown(t)}),onMousemove:t[2]||(t[2]=function(t){return e.handleMousemove(t)}),onMouseup:t[3]||(t[3]=function(t){return e.handleMouseup()}),onMouseleave:t[4]||(t[4]=function(t){e.handleMouseup(),e.mouseInCanvas=!1}),onMouseenter:t[5]||(t[5]=function(t){return e.mouseInCanvas=!0})},null,544),e.mouseInCanvas&&"pen"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:"pen",style:{left:e.mouse.x-e.penSize/2+"px",top:e.mouse.y-36+e.penSize/2+"px",color:e.color}},[Object(j["createVNode"])(r,{class:"icon",size:"36"})],4)):Object(j["createCommentVNode"])("",!0),e.mouseInCanvas&&"eraser"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"eraser",style:{left:e.mouse.x-e.rubberSize/2+"px",top:e.mouse.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"}},null,4)):Object(j["createCommentVNode"])("",!0)],512)})),Dp=6,Ap=80,Pp=Object(j["defineComponent"])({name:"writing-board",props:{color:{type:String,default:"#ffcc00"},model:{type:String,default:"pen"}},setup:function(e){var t=null,n=Object(j["ref"])(),o=Object(j["ref"])(),c={x:0,y:0},a=!1,r=0,l=-1,i=Object(j["reactive"])({x:0,y:0}),u=function(e){i.x=e.pageX,i.y=e.pageY},d=Object(j["ref"])(!1),s=function(){o.value&&n.value&&(t=o.value.getContext("2d"),t&&(o.value.width=n.value.clientWidth,o.value.height=n.value.clientHeight,o.value.style.width=n.value.clientWidth+"px",o.value.style.height=n.value.clientHeight+"px",t.lineCap="round",t.lineJoin="round"))};Object(j["onMounted"])(s);var f=function(n,o,a){if(t){var r=c.x,l=c.y;t.lineWidth=a,t.strokeStyle=e.color,t.beginPath(),t.moveTo(r,l),t.lineTo(n,o),t.stroke(),t.closePath()}},p=function(e,n){var a,r,l,i;if(t&&o.value){var u=c.x,d=c.y,s=Ap/2,f=s*Math.sin(Math.atan((n-d)/(e-u))),p=s*Math.cos(Math.atan((n-d)/(e-u))),b=[u+f,d-p],m=[u-f,d+p],v=[e+f,n-p],O=[e-f,n+p];t.save(),t.beginPath(),t.arc(e,n,s,0,2*Math.PI),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore(),t.save(),t.beginPath(),(a=t).moveTo.apply(a,b),(r=t).lineTo.apply(r,v),(l=t).lineTo.apply(l,O),(i=t).lineTo.apply(i,m),t.closePath(),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore()}},b=function(e){a=!0,c={x:e.offsetX,y:e.offsetY},r=(new Date).getTime()},m=function(e,t){var n=c.x,o=c.y;return Math.sqrt((e-n)*(e-n)+(t-o)*(t-o))},v=function(e,t){var n,o=10,c=.1,a=Dp,r=3,i=e/t;return n=i<=c?a:i>=o?r:a-i/o*a,-1===l?n:1*n/3+2*l/3},O=function(t){if(u(t),a){var n=(new Date).getTime();if("pen"===e.model){var o=m(t.offsetX,t.offsetY),i=n-r,d=v(o,i);f(t.offsetX,t.offsetY,d),l=d}else p(t.offsetX,t.offsetY);c={x:t.offsetX,y:t.offsetY},r=(new Date).getTime()}},h=function(){a&&(a=!1)},g=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)};return{mouse:i,mouseInCanvas:d,penSize:Dp,rubberSize:Ap,writingBoardRef:n,canvasRef:o,handleMousedown:b,handleMousemove:O,handleMouseup:h,clearCanvas:g}}});n("6c26");Pp.render=Mp,Pp.__scopeId="data-v-4ddc4b2c";var Rp=Pp,Fp=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],Hp=Object(j["defineComponent"])({name:"writing-board-tool",components:{WritingBoard:Rp},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])(!1),a=Object(j["ref"])("#e2534d"),r=Object(j["ref"])("pen"),l=function(){c.value||(c.value=!0),r.value="pen",n("close")},i=function(){r.value="eraser",n("close")},u=function(){o.value.clearCanvas(),n("close")},d=function(e){"pen"!==r.value&&(r.value="pen"),a.value=e,n("close")},s=function(){c.value=!1,n("close")},f=function(){return[{text:"画笔",handler:l,disable:"pen"===r.value},{text:"橡皮擦",handler:i,disable:"eraser"===r.value},{text:"擦除所有墨迹",handler:u},{text:"退出画笔",handler:s}]};return{writingBoardRef:o,writingBoardVisible:c,writingBoardColors:Fp,writingBoardColor:a,writingBoardModel:r,changePen:l,changeEraser:i,clearCanvas:u,changeColor:d,closeWritingBoard:s,contextmenus:f}}});n("4e25");Hp.render=Vp,Hp.__scopeId="data-v-0bfb345d";var zp=Hp,Up=Object(j["defineComponent"])({name:"screen",components:{ScreenSlide:gp,SlideThumbnails:Np,WritingBoardTool:zp},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["computed"])((function(){return c.value/Le})),l=Object(j["ref"])(!1),i=Object(j["ref"])(!1),u=function(){var e,t,n=document.body.clientWidth,o=document.body.clientHeight;o/n===Te?(e=n,t=o):o/n>Te?(e=n,t=n*Te):(e=o/Te,t=o),c.value=e,a.value=t},d=Ge(),s=d.exitScreening,f=function(){u(),Ue()||s()};Object(j["onMounted"])((function(){window.addEventListener("resize",f)})),Object(j["onUnmounted"])((function(){window.removeEventListener("resize",f)}));var p=Object(j["computed"])((function(){return o.value.animations||[]})),b=Object(j["ref"])(0),m=function(){var e="animate__",t=p.value[b.value];b.value+=1;var n=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(n){var o="".concat(e).concat(t.type);n.classList.add("".concat(e,"animated"),o);var c=function(){n.classList.remove("".concat(e,"animated"),o)};n.addEventListener("animationend",c,{once:!0})}},v=function(){if(p.value.length&&b.value>0)b.value-=1;else if(n.value>0){e.commit(g.UPDATE_SLIDE_INDEX,n.value-1);var t=p.value?p.value.length:0;b.value=t}},O=function(){p.value.length&&b.value0&&O()}),500,{leading:!0,trailing:!1}),y=function(e){var t=e.key.toUpperCase();t===oe.UP||t===oe.LEFT?v():t!==oe.DOWN&&t!==oe.RIGHT&&t!==oe.SPACE&&t!==oe.ENTER||O()};Object(j["onMounted"])((function(){document.addEventListener("keydown",y)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",y)}));var k=function(){e.commit(g.UPDATE_SLIDE_INDEX,n.value-1),b.value=0},E=function(){e.commit(g.UPDATE_SLIDE_INDEX,n.value+1),b.value=0},I=function(t){l.value=!1,e.commit(g.UPDATE_SLIDE_INDEX,t),b.value=0},C=function(){return[{text:"上一张",subText:"↑、←",disable:n.value<=0,handler:function(){return k()}},{text:"下一张",subText:"↓、→",disable:n.value>=t.value.length-1,handler:function(){return E()}},{divider:!0},{text:"查看所有幻灯片",handler:function(){return l.value=!0}},{divider:!0},{text:"结束放映",subText:"ESC",handler:s}]};return Object(j["provide"])("slideScale",r),{slides:t,slideIndex:n,currentSlide:o,slideWidth:c,slideHeight:a,scale:r,mousewheelListener:h,animationIndex:b,contextmenus:C,execPrev:v,execNext:O,slideThumbnailModelVisible:l,turnSlideToIndex:I,writingBoardToolVisible:i}}});n("ae4d");Up.render=up,Up.__scopeId="data-v-661c33b7";var Gp=Up,qp=Object(j["defineComponent"])({name:"app",components:{Editor:ap,Screen:Gp},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.screening}));return Object(j["onMounted"])((function(){e.commit(g.SET_AVAILABLE_FONTS),e.dispatch(y.INIT_SNAPSHOT_DATABASE)})),{screening:t}}});n("a2af");qp.render=h;var Wp=qp;n("793f"),n("41ed"),n("5952"),n("c860"),n("ae3f"),n("8c56"),n("77ed");function Xp(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("MenuContent");return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,[Object(j["createVNode"])("div",{class:"mask",onContextmenu:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[2]||(t[2]=function(t){return e.removeContextmenu()})},null,32),Object(j["createVNode"])("div",{class:"contextmenu",style:{left:e.style.left+"px",top:e.style.top+"px"},onContextmenu:t[3]||(t[3]=Object(j["withModifiers"])((function(){}),["prevent"]))},[Object(j["createVNode"])(r,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var Yp=Object(j["withScopeId"])("data-v-d08042ec");Object(j["pushScopeId"])("data-v-d08042ec");var Zp={class:"menu-content"},Jp={class:"text"},Kp={key:0,class:"sub-text"};Object(j["popScopeId"])();var Qp=Yp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("_self");return Object(j["openBlock"])(),Object(j["createBlock"])("ul",Zp,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.menus,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:t.text||n},[t.hide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("li",{key:0,class:["menu-item",{divider:t.divider,disable:t.disable}],onClick:Object(j["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["menu-item-content",{"has-children":t.children}]},[Object(j["createVNode"])("span",Jp,Object(j["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(j["openBlock"])(),Object(j["createBlock"])("span",Kp,Object(j["toDisplayString"])(t.subText),1)):Object(j["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(j["createCommentVNode"])("",!0)],2))],10,["onClick"]))],64)})),128))])})),$p=Object(j["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("53fd");$p.render=Qp,$p.__scopeId="data-v-d08042ec";var eb=$p,tb=Object(j["defineComponent"])({name:"contextmenu",components:{MenuContent:eb},props:{axis:{type:Object,required:!0},el:{type:Object,required:!0},menus:{type:Array,required:!0},removeContextmenu:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t=170,n=30,o=11,c=5,a=e.axis,r=a.x,l=a.y,i=e.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=e.menus.filter((function(e){return e.divider})).length,d=t,s=i*n+u*o+2*c,f=document.body.clientWidth,p=document.body.clientHeight;return{left:f<=r+d?r-d:r,top:p<=l+s?l-s:l}})),n=function(t){t.disable||t.children||(t.handler&&t.handler(e.el),e.removeContextmenu())};return{style:t,handleClickMenuItem:n}}});n("7ef3");tb.render=Xp;var nb=tb,ob="CTX_CONTEXTMENU_HANDLER",cb=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var c=null,a=function t(){c&&(document.body.removeChild(c),c=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",t),window.removeEventListener("resize",t)},r={axis:{x:t.x,y:t.y},el:e,menus:o,removeContextmenu:a};c=document.createElement("div");var l=Object(j["createVNode"])(nb,r,null);Object(j["render"])(l,c),document.body.appendChild(c),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",a),window.addEventListener("resize",a)}},ab={mounted:function(e,t){e[ob]=function(n){return cb(e,n,t)},e.addEventListener("contextmenu",e[ob])},unmounted:function(e){e&&e[ob]&&(e.removeEventListener("contextmenu",e[ob]),delete e[ob])}},rb=ab,lb="CTX_CLICK_OUTSIDE_HANDLER",ib=function(e,t,n){var o=n.value,c=t.composedPath(),a=c?c.indexOf(e)<0:!e.contains(t.target);a&&o(t)},ub={mounted:function(e,t){e[lb]=function(n){return ib(e,n,t)},setTimeout((function(){document.addEventListener("click",e[lb])}),0)},unmounted:function(e){e[lb]&&(document.removeEventListener("click",e[lb]),delete e[lb])}},db=ub,sb=n("8845"),fb=n("a3ef"),pb=n("8331"),bb=n("4040"),mb=n("f745"),vb=n("2e2d"),Ob=n("6010"),jb=n("1fcb"),hb=n("0996"),gb=n("1646"),yb=n("fbe7"),kb=n("b8af"),Eb=n("bdf8"),Ib=n("bf2c"),Cb=n("e970"),Sb=n("c53e"),Nb=n("23fa"),xb=n("8377"),Lb=n("33a2"),Tb=n("fdbcb"),wb=n("031f"),Vb=n("d26b"),_b=n("3a3e"),Bb=n("eac59"),Mb=n("694b"),Db=n("e9ec"),Ab=n("ea01"),Pb=n("74f3"),Rb=n("4bad"),Fb=n("e7f4"),Hb=n("eb50"),zb=n("0be2"),Ub=n("a90c"),Gb=n("c90a"),qb=n("d41d6"),Wb=n("2c06"),Xb=n("a5dc"),Yb=n("8678"),Zb=n("d7fb"),Jb=n("ce42"),Kb=n("7abc"),Qb=n("5b20"),$b=n("69de"),em=n("d0c6"),tm=n("dcc2"),nm=n("f1d2"),om=n("d16b"),cm=n("a5f1"),am=n("df0d"),rm=n("70f2"),lm=n("b7c8"),im=n("f99d"),um=n("40bb"),dm=n("ae33"),sm=n("8c1a"),fm=n("b7b3"),pm=n("96be"),bm=n("5a69"),mm=n("f9e5"),vm=n("bbce"),Om=n("77ad"),jm=n("46cd"),hm=n("3ee3"),gm=n("dde4"),ym=n("cead"),km=n("fa00"),Em=n("f3c2"),Im=n("c8bf"),Cm=n("5294b"),Sm=n("9fbc"),Nm={install:function(e){e.component("IconFontSize",Sm["a"]),e.component("IconPicture",Cm["a"]),e.component("IconPentagonOne",Im["a"]),e.component("IconConnection",Em["a"]),e.component("IconInsertTable",km["a"]),e.component("IconLock",ym["a"]),e.component("IconUnlock",gm["a"]),e.component("IconFullScreen",hm["a"]),e.component("IconBack",jm["a"]),e.component("IconNext",Om["a"]),e.component("IconAlignTop",vm["a"]),e.component("IconAlignLeft",mm["a"]),e.component("IconAlignRight",bm["a"]),e.component("IconAlignBottom",pm["a"]),e.component("IconAlignVertically",fm["a"]),e.component("IconAlignHorizontally",sm["a"]),e.component("IconBringToFront",dm["a"]),e.component("IconSentToBack",um["a"]),e.component("IconBringToFrontOne",im["a"]),e.component("IconSendToBack",lm["a"]),e.component("IconGroup",rm["a"]),e.component("IconUngroup",am["a"]),e.component("IconFill",cm["a"]),e.component("IconBackgroundColor",om["a"]),e.component("IconPlatte",nm["a"]),e.component("IconTailoring",tm["a"]),e.component("IconColorFilter",em["a"]),e.component("IconFlipVertically",$b["a"]),e.component("IconFlipHorizontally",Qb["a"]),e.component("IconText",Kb["a"]),e.component("IconAddText",Jb["a"]),e.component("IconAlignTextLeft",Zb["a"]),e.component("IconAlignTextRight",Yb["a"]),e.component("IconAlignTextCenter",Xb["a"]),e.component("IconRowHeight",Wb["a"]),e.component("IconFullwidth",qb["a"]),e.component("IconCode",Gb["a"]),e.component("IconTextBold",Ub["a"]),e.component("IconTextItalic",zb["a"]),e.component("IconTextUnderline",Hb["a"]),e.component("IconStrikethrough",Fb["a"]),e.component("IconQuote",Rb["a"]),e.component("IconList",Pb["a"]),e.component("IconOrderedList",Ab["a"]),e.component("IconUpOne",Db["a"]),e.component("IconDownOne",Mb["a"]),e.component("IconFormat",Bb["a"]),e.component("IconDown",_b["a"]),e.component("IconLeftC",Vb["a"]),e.component("IconRightC",wb["a"]),e.component("IconPlus",Tb["a"]),e.component("IconMinus",Lb["a"]),e.component("IconCloseSmall",xb["a"]),e.component("IconChartLine",Nb["a"]),e.component("IconChartHistogram",Sb["a"]),e.component("IconChartProportion",Cb["a"]),e.component("IconPlayOne",Ib["a"]),e.component("IconSearch",Eb["a"]),e.component("IconPpt",kb["a"]),e.component("IconHelpcenter",yb["a"]),e.component("IconGithub",gb["a"]),e.component("IconWrite",hb["a"]),e.component("IconEffects",jb["a"]),e.component("IconRotate",Ob["a"]),e.component("IconEdit",vb["a"]),e.component("IconUndo",mb["a"]),e.component("IconTransform",bb["a"]),e.component("IconClick",pb["a"]),e.component("IconTheme",fb["a"]),e.component("IconArrowCircleLeft",sb["a"])}},xm=Object(j["withScopeId"])("data-v-bf80565c"),Lm=xm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"file-input",onClick:t[2]||(t[2]=function(t){return e.handleClick()})},[Object(j["renderSlot"])(e.$slots,"default"),Object(j["createVNode"])("input",{class:"input",type:"file",name:"upload",ref:"inputRef",accept:e.accept,onChange:t[1]||(t[1]=function(t){return e.handleChange(t)})},null,40,["accept"])])})),Tm=Object(j["defineComponent"])({name:"file-input",props:{accept:{type:String,default:"image/*"}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=function(){o.value&&(o.value.value="",o.value.click())},a=function(e){var t=e.target.files;t&&n("change",t)};return{handleClick:c,handleChange:a,inputRef:o}}});n("e3f5");Tm.render=Lm,Tm.__scopeId="data-v-bf80565c";var wm=Tm,Vm={xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1"};function _m(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("svg",Vm,[Object(j["renderSlot"])(e.$slots,"default")])}var Bm={name:"svg-wrapper"};Bm.render=_m;var Mm=Bm,Dm=Object(j["withScopeId"])("data-v-7cae2b90"),Am=Dm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("button",{class:["checkbox-button",{checked:n.checked}]},[Object(j["renderSlot"])(e.$slots,"default")],2)})),Pm={name:"checkbox-button",props:{checked:{type:Boolean,default:!1}}};n("782e");Pm.render=Am,Pm.__scopeId="data-v-7cae2b90";var Rm=Pm,Fm=Object(j["withScopeId"])("data-v-7dafd0a9");Object(j["pushScopeId"])("data-v-7dafd0a9");var Hm={class:"checkbox-button-group"};Object(j["popScopeId"])();var zm=Fm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Hm,[Object(j["renderSlot"])(e.$slots,"default")])})),Um={name:"checkbox-button-group"};n("69d58");Um.render=zm,Um.__scopeId="data-v-7dafd0a9";var Gm=Um,qm=Object(j["withScopeId"])("data-v-067119ff");Object(j["pushScopeId"])("data-v-067119ff");var Wm={class:"color-picker"},Xm={class:"picker-saturation-wrap"},Ym={class:"picker-controls"},Zm={class:"picker-color-wrap"},Jm={class:"picker-sliders"},Km={class:"picker-hue-wrap"},Qm={class:"picker-alpha-wrap"},$m={class:"picker-field"},ev={class:"picker-presets"},tv={class:"picker-gradient-presets"},nv={class:"picker-presets"},ov={key:0,class:"recent-colors-title"},cv={class:"recent-colors"};Object(j["popScopeId"])();var av=qm((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Saturation"),l=Object(j["resolveComponent"])("Checkboard"),i=Object(j["resolveComponent"])("Hue"),u=Object(j["resolveComponent"])("Alpha"),d=Object(j["resolveComponent"])("EditableInput");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Wm,[Object(j["createVNode"])("div",Xm,[Object(j["createVNode"])(r,{value:e.color,hue:e.hue,onColorChange:t[1]||(t[1]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",Ym,[Object(j["createVNode"])("div",Zm,[Object(j["createVNode"])("div",{class:"picker-current-color",style:{background:e.currentColor}},null,4),Object(j["createVNode"])(l)]),Object(j["createVNode"])("div",Jm,[Object(j["createVNode"])("div",Km,[Object(j["createVNode"])(i,{value:e.color,hue:e.hue,onColorChange:t[2]||(t[2]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",Qm,[Object(j["createVNode"])(u,{value:e.color,onColorChange:t[3]||(t[3]=function(t){return e.changeColor(t)})},null,8,["value"])])])]),Object(j["createVNode"])("div",$m,[Object(j["createVNode"])(d,{value:e.color,onColorChange:t[4]||(t[4]=function(t){return e.changeColor(t)})},null,8,["value"])]),Object(j["createVNode"])("div",ev,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themeColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-presets-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))]),Object(j["createVNode"])("div",tv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetColors,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-col",key:n},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])})),128))]),Object(j["createVNode"])("div",nv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.standardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:t,class:"picker-presets-color",style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))]),e.recentColors.length?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ov,"最近使用:")):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",cv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.recentColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:t,class:"picker-presets-color",style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])])})),rv=Object(j["withScopeId"])("data-v-ecf7d10e");Object(j["pushScopeId"])("data-v-ecf7d10e");var lv={class:"alpha"},iv={class:"alpha-checkboard-wrap"},uv=Object(j["createVNode"])("div",{class:"alpha-picker"},null,-1);Object(j["popScopeId"])();var dv=rv((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Checkboard");return Object(j["openBlock"])(),Object(j["createBlock"])("div",lv,[Object(j["createVNode"])("div",iv,[Object(j["createVNode"])(r)]),Object(j["createVNode"])("div",{class:"alpha-gradient",style:{background:e.gradientColor}},null,4),Object(j["createVNode"])("div",{class:"alpha-container",ref:"alphaRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"alpha-pointer",style:{left:100*e.color.a+"%"}},[uv],4)],544)])})),sv=Object(j["withScopeId"])("data-v-e9a0ac98"),fv=sv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"checkerboard",style:e.bgStyle},null,4)})),pv={},bv=function(e,t,n){var o=document.createElement("canvas");o.width=o.height=2*n;var c=o.getContext("2d");return c?(c.fillStyle=e,c.fillRect(0,0,o.width,o.height),c.fillStyle=t,c.fillRect(0,0,n,n),c.translate(n,n),c.fillRect(0,0,n,n),o.toDataURL()):null},mv=function(e,t,n){var o=e+","+t+","+n;if(pv[o])return pv[o];var c=bv(e,t,n);return pv[o]=c,c},vv=Object(j["defineComponent"])({name:"checkboard",props:{size:{type:Number,default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},setup:function(e){var t=Object(j["computed"])((function(){var t=mv(e.white,e.grey,e.size);return{backgroundImage:"url(".concat(t,")")}}));return{bgStyle:t}}});n("62d8");vv.render=fv,vv.__scopeId="data-v-e9a0ac98";var Ov=vv,jv=Object(j["defineComponent"])({name:"alpha",components:{Checkboard:Ov},props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){return e.value})),c=Object(j["computed"])((function(){var e=[o.value.r,o.value.g,o.value.b].join(",");return"linear-gradient(to right, rgba(".concat(e,", 0) 0%, rgba(").concat(e,", 1) 100%)")})),a=Object(j["ref"])(),r=function(e){if(e.preventDefault(),a.value){var t,c=a.value.clientWidth,r=a.value.getBoundingClientRect().left+window.pageXOffset,l=e.pageX-r;t=l<0?0:l>c?1:Math.round(100*l/c)/100,o.value.a!==t&&n("colorChange",{r:o.value.r,g:o.value.g,b:o.value.b,a:t})}},l=function e(){window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",e)},i=function(e){r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",l)};return Object(j["onUnmounted"])(l),{alphaRef:a,gradientColor:c,handleMouseDown:i,color:o}}});n("5c5e");jv.render=dv,jv.__scopeId="data-v-ecf7d10e";var hv=jv,gv=Object(j["withScopeId"])("data-v-7b983451");Object(j["pushScopeId"])("data-v-7b983451");var yv={class:"hue"},kv=Object(j["createVNode"])("div",{class:"hue-picker"},null,-1);Object(j["popScopeId"])();var Ev=gv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",yv,[Object(j["createVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"hue-pointer",style:{left:e.pointerLeft}},[kv],4)],544)])})),Iv=Object(j["defineComponent"])({name:"hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(0),c=Object(j["ref"])(""),a=Object(j["computed"])((function(){var t=vc()(e.value).toHsl();return 0===t.s&&(t.h=e.hue),t})),r=Object(j["computed"])((function(){return 0===a.value.h&&"right"===c.value?"100%":100*a.value.h/360+"%"}));Object(j["watch"])((function(){return e.value}),(function(){var t=vc()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(c.value="right"),0!==n&&n-o.value<0&&(c.value="left"),o.value=n}));var l=Object(j["ref"])(),i=function(e){if(e.preventDefault(),l.value){var t,o,c=l.value.clientWidth,r=l.value.getBoundingClientRect().left+window.pageXOffset,i=e.pageX-r;i<0?t=0:i>c?t=360:(o=100*i/c,t=360*o/100),a.value.h!==t&&n("colorChange",{h:t,l:a.value.l,s:a.value.s,a:a.value.a})}},u=function e(){window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)},d=function(e){i(e),window.addEventListener("mousemove",i),window.addEventListener("mouseup",u)};return Object(j["onUnmounted"])(u),{hueRef:l,handleMouseDown:d,pointerLeft:r}}});n("a025");Iv.render=Ev,Iv.__scopeId="data-v-7b983451";var Cv=Iv,Sv=Object(j["withScopeId"])("data-v-5310dbb4");Object(j["pushScopeId"])("data-v-5310dbb4");var Nv=Object(j["createVNode"])("div",{class:"saturation-white"},null,-1),xv=Object(j["createVNode"])("div",{class:"saturation-black"},null,-1),Lv=Object(j["createVNode"])("div",{class:"saturation-circle"},null,-1);Object(j["popScopeId"])();var Tv=Sv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"saturation",ref:"saturationRef",style:{background:e.bgColor},onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Nv,xv,Object(j["createVNode"])("div",{class:"saturation-pointer",style:{top:e.pointerTop,left:e.pointerLeft}},[Lv],4)],36)})),wv=n("f678"),Vv=n.n(wv),_v=Object(j["defineComponent"])({name:"saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t=vc()(e.value).toHsv();return 0===t.s&&(t.h=e.hue),t})),c=Object(j["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),a=Object(j["computed"])((function(){return-100*o.value.v+1+100+"%"})),r=Object(j["computed"])((function(){return 100*o.value.s+"%"})),l=Ce()((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(j["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,c=i.value.getBoundingClientRect().left+window.pageXOffset,a=i.value.getBoundingClientRect().top+window.pageYOffset,r=Vv()(e.pageX-c,0,t),u=Vv()(e.pageY-a,0,n),d=r/t,s=Vv()(-u/n+1,0,1);l({h:o.value.h,s:d,v:s,a:o.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(j["onUnmounted"])(d),{saturationRef:i,bgColor:c,handleMouseDown:s,pointerTop:a,pointerLeft:r}}});n("5070");_v.render=Tv,_v.__scopeId="data-v-5310dbb4";var Bv=_v,Mv=Object(j["withScopeId"])("data-v-0311fdee");Object(j["pushScopeId"])("data-v-0311fdee");var Dv={class:"editable-input"};Object(j["popScopeId"])();var Av=Mv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Dv,[Object(j["createVNode"])("input",{class:"input-content",value:e.val,onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,["value"])])})),Pv=Object(j["defineComponent"])({name:"editable-input",props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t="";return t=e.value.a<1?vc()(e.value).toHex8String().toUpperCase():vc()(e.value).toHexString().toUpperCase(),t.replace("#","")})),c=function(e){var t=e.target.value;t.length>=6&&n("colorChange",vc()(t).toRgb())};return{val:o,handleInput:c}}});n("3706");Pv.render=Av,Pv.__scopeId="data-v-0311fdee";var Rv=Pv,Fv="RECENT_COLORS",Hv=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],zv=function(e,t,n){for(var o=vc()(e).toRgb(),c=vc()(t).toRgb(),a=(c.r-o.r)/n,r=(c.g-o.g)/n,l=(c.b-o.b)/n,i=[],u=0;ut&&(c.value=c.value.slice(-t))}}),300,{trailing:!0});Object(j["onMounted"])((function(){var e=localStorage.getItem(Fv);e&&(c.value=JSON.parse(e))})),Object(j["watch"])(c,(function(){var e=JSON.stringify(c.value);localStorage.setItem(Fv,e)}));var f=function(e){"h"in e?(o.value=e.h,a.value=vc()(e).toRgb()):a.value=e,s()};return{themeColors:r,standardColors:l,presetColors:i,color:a,hue:o,currentColor:u,changeColor:f,selectPresetColor:d,recentColors:c}}});n("1e75");Gv.render=av,Gv.__scopeId="data-v-067119ff";var qv=Gv,Wv=Object(j["createApp"])(Wp);Wv.directive("contextmenu",rb),Wv.directive("click-outside",db),Wv.use(Nm),Wv.component("FileInput",wm),Wv.component("SvgWrapper",Mm),Wv.component("CheckboxButton",Rm),Wv.component("CheckboxButtonGroup",Gm),Wv.component("ColorPicker",qv),Wv.component("InputNumber",O["a"]),Wv.component("Divider",v["a"]),Wv.component("Button",m["a"]),Wv.component("ButtonGroup",m["a"].Group),Wv.component("Tooltip",b["a"]),Wv.component("Popover",p["a"]),Wv.component("Slider",f["a"]),Wv.component("Select",s["a"]),Wv.component("SelectOption",s["a"].Option),Wv.component("SelectOptGroup",s["a"].OptGroup),Wv.component("Switch",d["a"]),Wv.component("Radio",u["a"]),Wv.component("RadioGroup",u["a"].Group),Wv.component("RadioButton",u["a"].Button),Wv.component("Input",i["a"]),Wv.component("InputGroup",i["a"].Group),Wv.component("Modal",l["a"]),Wv.component("Dropdown",r["a"]),Wv.component("Menu",a["a"]),Wv.component("MenuItem",a["a"].Item),Wv.component("Checkbox",c["a"]),Wv.component("Drawer",o["a"]),Wv.use(W,q),Wv.mount("#app")},ce7d:function(e,t,n){},d091:function(e,t,n){"use strict";n("4da1")},d572:function(e,t,n){},d5a1:function(e,t,n){"use strict";n("2f77")},d9a3:function(e,t,n){"use strict";n("0eae")},dc7a:function(e,t,n){},de7c:function(e,t,n){"use strict";n("fad2")},e0f6:function(e,t,n){"use strict";n("be5c")},e3f5:function(e,t,n){"use strict";n("13b2")},ea33:function(e,t,n){"use strict";n("2cee")},eb09:function(e,t,n){"use strict";n("4147")},ec3f:function(e,t,n){},ee01:function(e,t,n){"use strict";n("c1da")},ef0f:function(e,t,n){"use strict";n("930c")},f0b6:function(e,t,n){},f2d4:function(e,t,n){},f802:function(e,t,n){"use strict";n("84e7")},f8c3:function(e,t,n){"use strict";n("b14c")},f8f9:function(e,t,n){},fa04:function(e,t,n){},fad2:function(e,t,n){},fb1d:function(e,t,n){"use strict";n("d572")},fb76:function(e,t,n){},fff2:function(e,t,n){}});
+//# sourceMappingURL=app.6686043a.js.map
\ No newline at end of file
diff --git a/dist/js/app.6686043a.js.map b/dist/js/app.6686043a.js.map
new file mode 100644
index 00000000..b784e045
--- /dev/null
+++ b/dist/js/app.6686043a.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Editor/Canvas/index.vue?6a6c","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?048e","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?bd6e","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?f10a","webpack:///./src/views/Editor/Thumbnails/index.vue?146c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?0296","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?a4df","webpack:///./src/views/components/element/TableElement/StaticTable.vue?70f4","webpack:///./src/components/ColorPicker/index.vue?a089","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?185b","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?4e3a","webpack:///./src/views/components/element/TableElement/index.vue?916a","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?9f2f","webpack:///./src/views/Editor/Toolbar/index.vue?7099","webpack:///./src/views/components/element/ChartElement/Chart.vue?6f91","webpack:///./src/components/ColorPicker/EditableInput.vue?72fc","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?23c0","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?f399","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/views/Screen/WritingBoardTool.vue?85a4","webpack:///./src/components/ColorPicker/Saturation.vue?8110","webpack:///./src/views/components/element/ShapeElement/index.vue?e0c8","webpack:///./src/views/Editor/Canvas/GridLines.vue?a413","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?0831","webpack:///./src/components/Contextmenu/MenuContent.vue?e6e4","webpack:///./src/views/components/element/ImageElement/index.vue?fac4","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?ef13","webpack:///./src/views/Editor/index.vue?a578","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?8e40","webpack:///./src/components/ColorPicker/Alpha.vue?464a","webpack:///./src/components/ColorPicker/Checkboard.vue?024a","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?de61","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?6c64","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?4645","webpack:///./src/components/CheckboxButtonGroup.vue?3a3e","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?7480","webpack:///./src/components/WritingBoard.vue?261d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?b1b9","webpack:///./src/views/Editor/CanvasTool/index.vue?3c4d","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?c039","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?750b","webpack:///./src/views/components/ThumbnailSlide/index.vue?3e5a","webpack:///./src/components/CheckboxButton.vue?2273","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?a0ca","webpack:///./src/components/Contextmenu/index.vue?3987","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?9f38","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?ba52","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?ae92","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?627d","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?fb4e","webpack:///./src/views/Editor/Canvas/Operate/index.vue?13d6","webpack:///./src/views/Screen/ScreenSlide.vue?83ff","webpack:///./src/views/Screen/SlideThumbnails.vue?dc65","webpack:///./src/components/ColorPicker/Hue.vue?e4fe","webpack:///./src/App.vue?af3c","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?756b","webpack:///./src/views/components/element/ChartElement/Chart.vue?607f","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?16dd","webpack:///./src/views/Screen/index.vue?d475","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?bc39","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?a16c","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?5e37","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?9d3f","webpack:///./src/views/components/element/LineElement/index.vue?e320","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?04c5","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?eaae","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?152c","webpack:///./src/App.vue","webpack:///./src/store/constants.ts","webpack:///./src/mocks/index.ts","webpack:///./src/store/state.ts","webpack:///./src/store/getters.ts","webpack:///./src/utils/database.ts","webpack:///./src/store/actions.ts","webpack:///./src/configs/font.ts","webpack:///./src/utils/fontFamily.ts","webpack:///./src/store/mutations.ts","webpack:///./src/store/index.ts","webpack:///./src/views/Editor/index.vue","webpack:///./src/types/edit.ts","webpack:///./src/configs/hotkey.ts","webpack:///./src/utils/common.ts","webpack:///./src/utils/clipboard.ts","webpack:///./src/utils/crypto.ts","webpack:///./src/hooks/useHistorySnapshot.ts","webpack:///./src/utils/image.ts","webpack:///./src/configs/canvas.ts","webpack:///./src/hooks/useCreateElement.ts","webpack:///./src/hooks/usePasteTextClipboardData.ts","webpack:///./src/hooks/useSlideHandler.ts","webpack:///./src/hooks/useLockElement.ts","webpack:///./src/hooks/useDeleteElement.ts","webpack:///./src/hooks/useCombineElement.ts","webpack:///./src/hooks/useCopyAndPasteElement.ts","webpack:///./src/hooks/useSelectAllElement.ts","webpack:///./src/hooks/useMoveElement.ts","webpack:///./src/hooks/useOrderElement.ts","webpack:///./src/utils/fullscreen.ts","webpack:///./src/hooks/useScreening.ts","webpack:///./src/hooks/useScaleCanvas.ts","webpack:///./src/hooks/useGlobalHotkey.ts","webpack:///./src/hooks/usePasteEvent.ts","webpack:///./src/views/Editor/EditorHeader/index.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?98af","webpack:///./src/views/Editor/EditorHeader/index.vue?ac7b","webpack:///./src/views/Editor/EditorHeader/index.vue?0c5a","webpack:///./src/views/Editor/Canvas/index.vue","webpack:///./src/utils/emitter.ts","webpack:///./src/utils/selection.ts","webpack:///./src/views/Editor/Canvas/hooks/useViewportSize.ts","webpack:///./src/utils/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useMouseSelection.ts","webpack:///./src/views/Editor/Canvas/hooks/useDropImageOrText.ts","webpack:///./src/views/Editor/Canvas/hooks/useRotateElement.ts","webpack:///./src/configs/element.ts","webpack:///./src/views/Editor/Canvas/hooks/useScaleElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useSelectElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useDragLineElement.ts","webpack:///./src/views/Editor/Canvas/hooks/useInsertFromCreateSelection.ts","webpack:///./src/views/Editor/Canvas/EditableElement.vue","webpack:///./src/types/slides.ts","webpack:///./src/hooks/useAlignElementToCanvas.ts","webpack:///./src/configs/imageClip.ts","webpack:///./src/views/components/element/ImageElement/index.vue","webpack:///./src/views/components/element/hooks/useElementShadow.ts","webpack:///./src/views/components/element/hooks/useElementFlip.ts","webpack:///./src/views/components/element/ImageElement/useClipImage.ts","webpack:///./src/views/components/element/ImageElement/useFilter.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue","webpack:///./src/views/components/element/hooks/useElementOutline.ts","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?b8d0","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageRectOutline.vue?8b4e","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?b2f6","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImageEllipseOutline.vue?87cf","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?8d2c","webpack:///./src/views/components/element/ImageElement/ImageOutline/ImagePolygonOutline.vue?00b2","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?8881","webpack:///./src/views/components/element/ImageElement/ImageOutline/index.vue?f84d","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?90b3","webpack:///./src/views/components/element/ImageElement/ImageClipHandler.vue?59cd","webpack:///./src/views/components/element/ImageElement/index.vue?7284","webpack:///./src/views/components/element/ImageElement/index.vue?18e8","webpack:///./src/views/components/element/TextElement/index.vue","webpack:///./src/prosemirror/plugins/keymap.ts","webpack:///./src/prosemirror/plugins/inputrules.ts","webpack:///./src/prosemirror/plugins/index.ts","webpack:///./src/prosemirror/schema/nodes.ts","webpack:///./src/prosemirror/schema/marks.ts","webpack:///./src/prosemirror/schema/index.ts","webpack:///./src/prosemirror/index.ts","webpack:///./src/prosemirror/utils.ts","webpack:///./src/prosemirror/commands/setTextAlign.ts","webpack:///./src/prosemirror/commands/toggleList.ts","webpack:///./src/views/components/element/ElementOutline.vue","webpack:///./src/views/components/element/ElementOutline.vue?3f74","webpack:///./src/views/components/element/ElementOutline.vue?8633","webpack:///./src/views/components/element/TextElement/index.vue?f1a2","webpack:///./src/views/components/element/TextElement/index.vue?6e22","webpack:///./src/views/components/element/ShapeElement/index.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?2333","webpack:///./src/views/components/element/ShapeElement/GradientDefs.vue?fbe6","webpack:///./src/views/components/element/ShapeElement/index.vue?c8a7","webpack:///./src/views/components/element/ShapeElement/index.vue?a321","webpack:///./src/views/components/element/LineElement/index.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?9702","webpack:///./src/views/components/element/LineElement/LinePointMarker.vue?0e0f","webpack:///./src/views/components/element/LineElement/index.vue?a024","webpack:///./src/views/components/element/LineElement/index.vue?8fb3","webpack:///./src/views/components/element/ChartElement/index.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue","webpack:///./src/views/components/element/ChartElement/Chart.vue?10d5","webpack:///./src/views/components/element/ChartElement/Chart.vue?9c6f","webpack:///./src/views/components/element/ChartElement/index.vue?e4b0","webpack:///./src/views/components/element/ChartElement/index.vue?2e94","webpack:///./src/views/components/element/TableElement/index.vue","webpack:///./src/views/components/element/TableElement/EditableTable.vue","webpack:///./src/views/components/element/TableElement/utils.ts","webpack:///./src/views/components/element/TableElement/useHideCells.ts","webpack:///./src/views/components/element/TableElement/useSubThemeColor.ts","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?aea3","webpack:///./src/views/components/element/TableElement/CustomTextarea.vue?e254","webpack:///./src/views/components/element/TableElement/EditableTable.vue?8831","webpack:///./src/views/components/element/TableElement/EditableTable.vue?4197","webpack:///./src/views/components/element/TableElement/index.vue?7604","webpack:///./src/views/components/element/TableElement/index.vue?1057","webpack:///./src/views/Editor/Canvas/EditableElement.vue?381f","webpack:///./src/views/Editor/Canvas/EditableElement.vue?de80","webpack:///./src/views/Editor/Canvas/MouseSelection.vue","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?8b4c","webpack:///./src/views/Editor/Canvas/MouseSelection.vue?8ddc","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue","webpack:///./src/views/Editor/Canvas/GridLines.vue?f828","webpack:///./src/views/Editor/Canvas/GridLines.vue?ee36","webpack:///./src/hooks/useSlideBackgroundStyle.ts","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?0b0c","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?d49d","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?b5a1","webpack:///./src/views/Editor/Canvas/AlignmentLine.vue?52c1","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?e8f4","webpack:///./src/views/Editor/Canvas/ElementCreateSelection.vue?464b","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue","webpack:///./src/views/Editor/Canvas/hooks/useCommonOperate.ts","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?93e1","webpack:///./src/views/Editor/Canvas/Operate/ResizeHandler.vue?06a8","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?e6a8","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?c893","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?d499","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?65a2","webpack:///./src/views/Editor/Canvas/Operate/index.vue","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?f60b","webpack:///./src/views/Editor/Canvas/Operate/RotateHandler.vue?6579","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?2229","webpack:///./src/views/Editor/Canvas/Operate/ImageElementOperate.vue?2d82","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?84ca","webpack:///./src/views/Editor/Canvas/Operate/TextElementOperate.vue?592c","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?c074","webpack:///./src/views/Editor/Canvas/Operate/ShapeElementOperate.vue?5f30","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?df88","webpack:///./src/views/Editor/Canvas/Operate/LineElementOperate.vue?121c","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue?4d68","webpack:///./src/views/Editor/Canvas/Operate/ChartElementOperate.vue?054d","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?ce2a","webpack:///./src/views/Editor/Canvas/Operate/TableElementOperate.vue?bf02","webpack:///./src/views/Editor/Canvas/Operate/index.vue?4919","webpack:///./src/views/Editor/Canvas/Operate/index.vue?3933","webpack:///./src/views/Editor/Canvas/index.vue?3cd8","webpack:///./src/views/Editor/Canvas/index.vue?2ed7","webpack:///./src/views/Editor/CanvasTool/index.vue","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue","webpack:///./src/configs/shapes.ts","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?ddb3","webpack:///./src/views/Editor/CanvasTool/ShapePool.vue?8e86","webpack:///./src/views/Editor/CanvasTool/LinePool.vue","webpack:///./src/configs/lines.ts","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?cda8","webpack:///./src/views/Editor/CanvasTool/LinePool.vue?1c05","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?cfe0","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?067e","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?3234","webpack:///./src/views/Editor/CanvasTool/TableGenerator.vue?9744","webpack:///./src/views/Editor/CanvasTool/index.vue?0ffc","webpack:///./src/views/Editor/CanvasTool/index.vue?a532","webpack:///./src/views/Editor/Thumbnails/index.vue","webpack:///./src/views/components/ThumbnailSlide/index.vue","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?9dd5","webpack:///./src/views/components/element/ImageElement/BaseImageElement.vue?32f2","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?ac4f","webpack:///./src/views/components/element/TextElement/BaseTextElement.vue?6911","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?c63c","webpack:///./src/views/components/element/ShapeElement/BaseShapeElement.vue?a27a","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?24f7","webpack:///./src/views/components/element/LineElement/BaseLineElement.vue?3b6b","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?b511","webpack:///./src/views/components/element/ChartElement/BaseChartElement.vue?aa7f","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue","webpack:///./src/views/components/element/TableElement/StaticTable.vue","webpack:///./src/views/components/element/TableElement/StaticTable.vue?a3ae","webpack:///./src/views/components/element/TableElement/StaticTable.vue?b2de","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?341a","webpack:///./src/views/components/element/TableElement/BaseTableElement.vue?a02b","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?2f2d","webpack:///./src/views/components/ThumbnailSlide/ThumbnailElement.vue?944e","webpack:///./src/views/components/ThumbnailSlide/index.vue?ef6c","webpack:///./src/views/components/ThumbnailSlide/index.vue?8be7","webpack:///./src/views/Editor/Thumbnails/index.vue?1806","webpack:///./src/views/Editor/Thumbnails/index.vue?ccb9","webpack:///./src/views/Editor/Toolbar/index.vue","webpack:///./src/types/toolbar.ts","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?5b98","webpack:///./src/views/Editor/Toolbar/common/ElementOpacity.vue?a078","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?f8b9","webpack:///./src/views/Editor/Toolbar/common/ColorButton.vue?da97","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?3bfa","webpack:///./src/views/Editor/Toolbar/common/ElementOutline.vue?fb3b","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?d5a3","webpack:///./src/views/Editor/Toolbar/common/ElementShadow.vue?270f","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?655d","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue?5a19","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?e3e2","webpack:///./src/views/Editor/Toolbar/common/ElementFlip.vue?4679","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?b46c","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?fd61","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?11b1","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ShapeStylePanel.vue?e0af","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?f4cd","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/LineStylePanel.vue?e25e","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?8789","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/ChartDataEditor.vue?2855","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?ef13","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ChartStylePanel/index.vue?b3de","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?ea14","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/TableStylePanel.vue?0d68","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?7c3a","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/index.vue?72ab","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?ed09","webpack:///./src/views/Editor/Toolbar/ElementPositionPanel.vue?e2ca","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue","webpack:///./src/configs/animation.ts","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?9b7c","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?afe1","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue","webpack:///./src/configs/theme.ts","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?1908","webpack:///./src/views/Editor/Toolbar/SlideStylePanel.vue?0da1","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?0069","webpack:///./src/views/Editor/Toolbar/SlideAnimationPanel.vue?7cbb","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?d8f3","webpack:///./src/views/Editor/Toolbar/MultiPositionPanel.vue?e1fe","webpack:///./src/views/Editor/Toolbar/index.vue?2e1e","webpack:///./src/views/Editor/Toolbar/index.vue?f66c","webpack:///./src/views/Editor/index.vue?a4f9","webpack:///./src/views/Editor/index.vue?894c","webpack:///./src/views/Screen/index.vue","webpack:///./src/views/Screen/ScreenSlide.vue","webpack:///./src/views/Screen/ScreenElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?fccb","webpack:///./src/views/components/element/ChartElement/ScreenChartElement.vue?f992","webpack:///./src/views/Screen/ScreenElement.vue?e100","webpack:///./src/views/Screen/ScreenElement.vue?5632","webpack:///./src/views/Screen/ScreenSlide.vue?749f","webpack:///./src/views/Screen/ScreenSlide.vue?67b9","webpack:///./src/views/Screen/SlideThumbnails.vue","webpack:///./src/views/Screen/SlideThumbnails.vue?6af1","webpack:///./src/views/Screen/SlideThumbnails.vue?02c0","webpack:///./src/views/Screen/WritingBoardTool.vue","webpack:///./src/components/WritingBoard.vue","webpack:///./src/components/WritingBoard.vue?419f","webpack:///./src/components/WritingBoard.vue?f8b8","webpack:///./src/views/Screen/WritingBoardTool.vue?b982","webpack:///./src/views/Screen/WritingBoardTool.vue?2e1b","webpack:///./src/views/Screen/index.vue?4bb4","webpack:///./src/views/Screen/index.vue?5535","webpack:///./src/App.vue?1d14","webpack:///./src/App.vue?97f5","webpack:///./src/components/Contextmenu/index.vue","webpack:///./src/components/Contextmenu/MenuContent.vue","webpack:///./src/components/Contextmenu/MenuContent.vue?e94a","webpack:///./src/components/Contextmenu/MenuContent.vue?bb2c","webpack:///./src/components/Contextmenu/index.vue?93d7","webpack:///./src/components/Contextmenu/index.vue?d39d","webpack:///./src/plugins/contextmenu.ts","webpack:///./src/plugins/clickOutside.ts","webpack:///./src/plugins/iconPark.ts","webpack:///./src/components/FileInput.vue","webpack:///./src/components/FileInput.vue?c273","webpack:///./src/components/FileInput.vue?ebff","webpack:///./src/components/SvgWrapper.vue","webpack:///./src/components/SvgWrapper.vue?a337","webpack:///./src/components/SvgWrapper.vue?4c4a","webpack:///./src/components/CheckboxButton.vue","webpack:///./src/components/CheckboxButton.vue?a662","webpack:///./src/components/CheckboxButton.vue?e089","webpack:///./src/components/CheckboxButtonGroup.vue","webpack:///./src/components/CheckboxButtonGroup.vue?2771","webpack:///./src/components/CheckboxButtonGroup.vue?3ae2","webpack:///./src/components/ColorPicker/index.vue","webpack:///./src/components/ColorPicker/Alpha.vue","webpack:///./src/components/ColorPicker/Checkboard.vue","webpack:///./src/components/ColorPicker/Checkboard.vue?23ca","webpack:///./src/components/ColorPicker/Checkboard.vue?d504","webpack:///./src/components/ColorPicker/Alpha.vue?103b","webpack:///./src/components/ColorPicker/Alpha.vue?8cd5","webpack:///./src/components/ColorPicker/Hue.vue","webpack:///./src/components/ColorPicker/Hue.vue?8d53","webpack:///./src/components/ColorPicker/Hue.vue?e08e","webpack:///./src/components/ColorPicker/Saturation.vue","webpack:///./src/components/ColorPicker/Saturation.vue?7dac","webpack:///./src/components/ColorPicker/Saturation.vue?b755","webpack:///./src/components/ColorPicker/EditableInput.vue","webpack:///./src/components/ColorPicker/EditableInput.vue?6a4f","webpack:///./src/components/ColorPicker/EditableInput.vue?f9ac","webpack:///./src/components/ColorPicker/index.vue?5336","webpack:///./src/components/ColorPicker/index.vue?4c0a","webpack:///./src/main.ts","webpack:///./src/views/Editor/CanvasTool/ChartPool.vue?a1c8","webpack:///./src/views/components/element/TextElement/index.vue?5997","webpack:///./src/views/components/element/ElementOutline.vue?a889","webpack:///./src/views/Editor/Canvas/Operate/MultiSelectOperate.vue?a30e","webpack:///./src/views/Editor/EditorHeader/index.vue?f28b","webpack:///./src/components/FileInput.vue?320a","webpack:///./src/views/components/element/ChartElement/index.vue?09cb","webpack:///./src/views/components/element/TableElement/EditableTable.vue?3919","webpack:///./src/views/Editor/Toolbar/ElementStylePanel/ImageStylePanel.vue?6f4d","webpack:///./src/views/Editor/EditorHeader/HotkeyDoc.vue?e4d6","webpack:///./src/views/Editor/Canvas/ViewportBackground.vue?f419","webpack:///./src/views/Editor/Toolbar/ElementAnimationPanel.vue?e32e","webpack:///./src/views/Editor/Canvas/Operate/BorderLine.vue?efe0"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","screening","MutationTypes","ActionTypes","elements","activeElementIdList","handleElementId","canvasPercentage","canvasScale","thumbnailsFocus","editorAreaFocus","disableHotkeys","showGridLines","creatingElement","availableFonts","toolbarState","theme","themeColor","fontColor","fontName","backgroundColor","slides","slideIndex","snapshotCursor","snapshotLength","ctrlKeyState","shiftKeyState","clipingImageElementId","getters","currentSlide","state","currentSlideAnimations","animations","els","elIds","el","filter","animation","includes","elId","activeElementList","element","handleElement","find","canUndo","canRedo","ctrlOrShiftKeyActive","version","stores","snapshots","table","snapshotDB","actions","INIT_SNAPSHOT_DATABASE","commit","orderBy","toArray","lastSnapshot","clear","newFirstSnapshot","index","add","SET_SNAPSHOT_CURSOR","SET_SNAPSHOT_LENGTH","ADD_SNAPSHOT","allKeys","needDeleteKeys","snapshot","update","bulkDelete","UN_DO","SET_SLIDES","UPDATE_SLIDE_INDEX","SET_ACTIVE_ELEMENT_ID_LIST","RE_DO","SYS_FONTS","label","WEB_FONTS","isSupportFontFamily","fontFamily","arial","toLowerCase","size","width","height","str","canvas","document","createElement","ctx","getContext","textAlign","fillStyle","textBaseline","getDotArray","_fontFamily","clearRect","font","fillText","imageData","getImageData","item","join","mutations","SET_HANDLE_ELEMENT_ID","SET_CANVAS_PERCENTAGE","percentage","SET_CANVAS_SCALE","scale","SET_THUMBNAILS_FOCUS","isFocus","SET_EDITORAREA_FOCUS","SET_DISABLE_HOTKEYS_STATE","disable","SET_GRID_LINES_STATE","show","SET_CREATING_ELEMENT","SET_AVAILABLE_FONTS","SET_TOOLBAR_STATE","type","SET_CLIPING_IMAGE_ELEMENT_ID","SET_THEME","themeProps","ADD_SLIDE","slide","addIndex","UPDATE_SLIDE","props","DELETE_SLIDE","slideId","deleteIndex","findIndex","ADD_ELEMENT","Array","isArray","currentSlideEls","newEls","UPDATE_ELEMENT","elIdList","REMOVE_ELEMENT_PROPS","propName","propsNames","cursor","SET_CTRL_KEY_STATE","isActive","SET_SHIFT_KEY_STATE","SET_SCREENING","class","ElementOrderCommands","ElementAlignCommands","OperateBorderLines","OperateResizeHandlers","OperateLineHandlers","KEYS","HOTKEY_DOC","children","createRandomCode","len","charset","maxLen","ret","randomIndex","Math","floor","random","digit","Promise","reject","fakeElement","clipboard","text","action","container","body","on","destroy","appendChild","click","removeChild","readClipboard","navigator","readText","then","CRYPTO_KEY","msg","AES","encrypt","toString","ciphertext","bytes","decrypt","enc","Utf8","store","addHistorySnapshot","dispatch","trailing","redo","leading","undo","getImageSize","src","img","style","opacity","onload","imgWidth","clientWidth","imgHeight","clientHeight","onerror","getImageDataURL","file","reader","FileReader","addEventListener","readAsDataURL","VIEWPORT_SIZE","VIEWPORT_ASPECT_RATIO","useHistorySnapshot","createImageElement","left","top","fixedRatio","createChartElement","chartType","gridColor","labels","series","createTableElement","row","col","rowCells","fill","colspan","rowspan","DEFAULT_CELL_WIDTH","DEFAULT_CELL_HEIGHT","colWidths","outline","color","rowHeader","rowFooter","colHeader","colFooter","createTextElement","position","content","createShapeElement","viewBox","path","createLineElement","start","end","newElement","points","isBroken","broken","isCurve","curve","useCreateElement","pasteElement","groupIdMap","elIdMap","groupId","currentSlideElementIdList","inCurrentSlide","values","pasteSlide","pasteText","pasteTextClipboardData","options","clipboardData","onlySlide","onlyElements","JSON","parse","slidesLength","usePasteTextClipboardData","updateSlideIndex","command","targetIndex","UP","DOWN","copySlide","stringify","catch","err","message","warning","createSlide","emptySlide","background","copyAndPasteSlide","deleteSlide","cutSlide","lockElement","newElementList","lock","unlockElement","deleteElement","deleteAllElements","combineElements","combineElementList","combineElementMaxLevel","_element","combineElementIdList","insertLevel","uncombineElements","hasElementInGroup","some","handleElementIdList","useDeleteElement","copyElement","cutElement","quickCopyElement","selectAllElement","unlockedElements","newActiveElementIdList","moveElement","step","LEFT","RIGHT","getCombineElementLevelRange","elementList","minLevel","maxLevel","moveUpElement","copyOfElementList","nextElement","movedElementList","nextCombineElementList","level","movedElement","moveDownElement","prevElement","prevCombineElementList","moveTopElement","moveBottomElement","unshift","orderElement","TOP","BOTTOM","enterFullscreen","docElm","documentElement","requestFullscreen","mozRequestFullScreen","webkitRequestFullScreen","exitFullscreen","mozCancelFullScreen","webkitCancelFullScreen","isFullscreen","mozFullScreen","webkitIsFullScreen","webkitFullScreen","enterScreening","enterScreeningFromStart","exitScreening","scaleCanvas","max","min","setCanvasPercentage","ctrlKeyActive","shiftKeyActive","useSlideHandler","useCombineElement","useLockElement","useCopyAndPasteElement","useSelectAllElement","useMoveElement","useOrderElement","useScreening","useScaleCanvas","copy","cut","quickCopy","selectAll","combine","uncombine","remove","move","order","keydownListener","ctrlKey","shiftKey","altKey","metaKey","toUpperCase","F","preventDefault","C","X","D","Z","Y","A","L","G","B","DELETE","BACKSPACE","ENTER","MINUS","EQUAL","DIGIT_0","keyupListener","removeEventListener","pasteImageFile","imageFile","dataURL","pasteListener","clipboardDataItems","items","clipboardDataFirstItem","kind","indexOf","getAsFile","getAsString","href","target","trigger","visible","editDropdownVisible","overlay","toggleGridLines","resetSlides","screenDropdownVisible","helpDropdownVisible","openDoc","hotkeyDrawerVisible","mouseLeaveDelay","title","placement","hotkeys","hotkey","setup","render","__scopeId","components","HotkeyDoc","EmitterEvents","ref","$event","mousewheelScaleCanvas","handleClickBlankArea","insertElementFromCreateSelection","alignmentLines","line","axis","scaleMultiElement","elementInfo","isSelected","isActiveGroupElement","activeGroupElementId","isMultiSelect","rotateElement","scaleElement","dragLineElement","mouseSelectionState","isShow","quadrant","elementIndex","selectElement","contextmenus","removeEditorAreaFocus","removeAllRanges","selection","getSelection","canvasRef","viewportLeft","viewportTop","setViewportPosition","canvasWidth","canvasHeight","viewportActualWidth","viewportActualHeight","viewportStyles","resizeObserver","ResizeObserver","observe","unobserve","getRectRotatedRange","rotate","radius","sqrt","pow","auxiliaryAngle","atan","PI","tlbraRadian","trblaRadian","middleLeft","middleTop","xAxis","cos","yAxis","sin","xRange","yRange","getElementRange","minX","maxX","minY","maxY","getElementListRange","leftValues","topValues","rightValues","bottomValues","forEach","uniqAlignLines","lines","uniqLines","_line","uniqLine","rangeMin","range","rangeMax","viewportRef","updateMouseSelection","isMouseDown","viewportRect","getBoundingClientRect","minSelectionRange","startPageX","pageX","startPageY","pageY","x","y","onmousemove","currentPageX","currentPageY","offsetWidth","offsetHeight","abs","onmouseup","inRangeElementList","mouseSelectionLeft","mouseSelectionTop","mouseSelectionWidth","mouseSelectionHeight","isInclude","inRangeElement","groupElementList","every","groupElement","inRangeElementIdList","elementRef","handleDrop","dataTransfer","dataTransferItem","ondragleave","ondrop","ondragenter","ondragover","getAngleFromCoordinate","radian","atan2","angle","elOriginRotate","elLeft","elTop","elWidth","elHeight","centerX","centerY","mouseX","mouseY","sorptionRange","emitter","ELEMENT_TYPE_ZH","image","shape","chart","MIN_SIZE","getRotateElementPoints","taRadian","raRadian","halfWidth","halfHeight","leftTopPoint","topPoint","rightTopPoint","rightPoint","rightBottomPoint","bottomPoint","leftBottomPoint","leftPoint","direction","oppositeMap","RIGHT_BOTTOM","LEFT_BOTTOM","LEFT_TOP","RIGHT_TOP","emit","SCALE_ELEMENT_STATE","elOriginLeft","elOriginTop","elOriginWidth","elOriginHeight","elRotate","rotateRadian","aspectRatio","minSize","getSizeWithinRange","baseLeft","baseTop","horizontalLines","verticalLines","oppositePoint","edgeWidth","edgeHeight","right","bottom","topLine","bottomLine","leftLine","rightLine","edgeTopLine","edgeBottomLine","edgeHorizontalCenterLine","edgeLeftLine","edgeRightLine","edgeVerticalCenterLine","alignedAdsorption","currentX","currentY","_alignmentLines","isVerticalAdsorbed","isHorizontalAdsorbed","correctionVal","offsetX","offsetY","revisedX","revisedY","currentPoints","currentOppositePoint","currentBaseLeft","currentBaseTop","moveX","moveY","operateWidth","operateHeight","originElementList","currentMinX","currentMaxX","currentMinY","currentMaxY","currentOppositeWidth","currentOppositeHeight","widthScale","heightScale","originElement","originEl","canMove","newActiveIdList","groupMembersId","dragElement","originActiveElementList","isMisoperation","horizontalCenterLine","verticalCenterLine","targetMinX","targetMaxX","targetMinY","targetMaxY","targetLeft","targetTop","targetCenterX","targetCenterY","adsorptionPoints","startX","startY","endX","endY","mid","midX","midY","START","adsorptionPoint","END","newEl","MID","formatCreateSelection","selectionData","formatCreateSelectionForLine","_start","_end","currentElementComponent","ElementTypes","ClipPathTypes","ClipPaths","alignElementToCanvas","viewportWidth","viewportHeight","CENTER","VERTICAL","HORIZONTAL","handleSelectElement","isCliping","clipData","clip","clipPath","clipShape","handleClip","draggable","alt","shadow","shadowStyle","h","v","blur","flip","flipStyle","CLIPPATHS","rect","RECT","rect2","POLYGON","createPath","rect3","roundRect","ellipse","ELLIPSE","triangle","triangle2","triangle3","rhombus","hexagon","pentagon","parallelogram","parallelogram2","trapezoid","trapezoid2","imgPosition","filters","overflow","vector-effect","stroke-linecap","stroke-miterlimit","stroke-linejoin","rx","ry","stroke","outlineColor","stroke-width","outlineWidth","stroke-dasharray","outlineStyle","Number","required","String","default","useElementOutline","cx","cy","Function","ImageRectOutline","ImageEllipseOutline","ImagePolygonOutline","useClipImage","shape-rendering","clipWrapperPositionStyle","bottomImgPositionStyle","topImgPositionStyle","topImgWrapperPositionStyle","moveClipRange","point","scaleClipRange","isSettingClipRange","currentRange","getClipDataTransformInfo","topImgWrapperPosition","bottomWidth","bottomHeight","topLeft","topTop","topWidth","topHeight","initClipPosition","clipedEmitData","keyboardListener","updateRange","retPosition","parseInt","bottomPosition","originPositopn","setTimeout","minWidth","minHeight","targetWidth","targetHeight","ImageOutline","ImageClipHandler","useElementShadow","useElementFlip","useFilter","stopPropagation","originClip","_props","schema","cmd","marks","strong","em","underline","strikethrough","nodes","list_item","nodeType","match","node","childCount","attrs","rules","blockquote","ordered_list","bullet_list","code_block","_orderedList","group","_bulletList","align","parseDOM","tag","getAttrs","dom","getAttribute","test","toDOM","paragraph","subscript","excludes","superscript","forecolor","mark","backcolor","inline","fontsize","fontname","replace","schemaNodes","schemaMarks","htmlString","parser","DOMParser","parseFromString","firstElementChild","fromSchema","doc","plugins","equalNodeType","findParentNodeClosestToPos","$pos","predicate","depth","pos","before","findParentNode","_ref","$from","findParentNodeOfType","isActiveOfParentNodeType","getMarkAttrs","view","from","nodeAt","markType","attr","getAttrValueInSelection","to","keepChecking","nodesBetween","getTextAttrs","isBold","isEm","isUnderline","isStrikethrough","isSuperscript","isSubscript","isCode","isBulletList","isOrderedList","isBlockquote","bold","bulletList","orderedList","tr","alignment","listItem","tasks","allowedNodeTypes","Set","has","task","setNodeMarkup","alignmentCommand","setSelection","isList","listType","itemType","$to","blockRange","parentList","validContent","ElementOutline","editorView","isScaling","realHeightCache","editorViewRef","scaleElementStateListener","off","updateTextElementHeight","entries","contentRect","realHeight","handleInput","innerHTML","handleFocus","handleBlur","handleClick","UPDATE_TEXT_STATE","handleKeydown","textContent","hasFocus","setProps","editable","handleDOMEvents","focus","keydown","execCommand","payload","commands","empty","addMark","removeMark","EXEC_TEXT_COMMAND","gradient","color1","color2","transform","x1","y1","x2","y2","gradientTransform","offset","stop-color","GradientDefs","svgWidth","svgHeight","baseSize","lineDashArray","marker-start","marker-end","markerUnits","orient","markerWidth","markerHeight","refX","refY","pathMap","dot","arrow","rotateMap","LinePointMarker","chartRef","slideScale","getDataAndOptions","propsOptopns","renderChart","updateChart","updateTheme","colors","analogous","toRgbString","setProperty","updateGridColor","Chart","updateTableCells","widths","updateColWidths","cells","updateSelectedCells","startEdit","totalWidth","dragLinePosition","handleMousedownColHandler","subThemeColor","colSizeList","span","tableCells","rowIndex","cell","colIndex","data-cell-index","handleCellMousedown","handleCellMouseenter","activedCell","contenteditable","hideCells","getTextStyle","fontWeight","fontStyle","textDecoration","fontSize","rgba","toRgb","subRgba1","g","b","a","subRgba2","immediate","modelValue","Boolean","textareaRef","onpaste","CustomTextarea","isStartSelect","startCell","endCell","set","newData","useSubThemeColor","reduce","removeSelectedCells","useHideCells","selectedCells","selectedRange","handleMouseup","button","isHideCell","selectCol","maxRow","selectRow","maxCol","deleteRow","_tableCells","targetCells","hideCellsPos","deleteCol","insertRow","insertCol","mergeCells","splitCells","originWidth","round","clearSelectedCellText","tabActiveCell","getNextCell","nextRow","nextCol","nextCell","textRef","querySelector","TAB","split","getEffectiveTableCells","effectiveTableCells","_rowCells","checkCanDeleteRowOrCol","canDeleteRow","canDeleteCol","checkCanMergeOrSplit","isMultiSelected","targetCell","canMerge","canSplit","cellIndex","dataset","handler","divider","EditableTable","updateTableElementHeight","UPDATE_TABLE_SELECTED_CELL","elementTypeMap","IMAGE","ImageElement","TEXT","TextElement","SHAPE","ShapeElement","LINE","LineElement","CHART","ChartElement","TABLE","TableElement","useAlignElementToCanvas","subText","hide","validator","backgroundStyle","newRgba","gridSize","getPath","imageSize","gradientColor","gradientRotate","gradientType","backgroundImage","backgroundRepeat","backgroundSize","GridLines","useSlideBackgroundStyle","sizeStyle","createSelection","lineData","selectionRef","absX","absY","isOpposite","endPageX","endPageY","_startX","_startY","_endX","_endY","borderLines","disableResize","resizeHandlers","textElementResizeHandlers","T","R","isWide","ResizeHandler","BorderLine","localActiveElementList","useCommonOperate","setRange","currentOperateComponent","elementIndexInAnimation","scaleWidth","inheritAttrs","RotateHandler","scaleHeight","handlers","midHandler","ImageElementOperate","TextElementOperate","ShapeElementOperate","LineElementOperate","ChartElementOperate","TableElementOperate","EditableElement","MouseSelection","ViewportBackground","AlignmentLine","ElementCreateSelection","MultiSelectOperate","Operate","setLocalElementList","useViewportSize","useDropImageOrText","useMouseSelection","useDragElement","useDragLineElement","useSelectElement","useScaleElement","useRotateElement","throttleScaleCanvas","deltaY","useInsertFromCreateSelection","mouseEnterDelay","drawText","files","insertImageElement","shapePoolVisible","drawShape","linePoolVisible","drawLine","chartPoolVisible","tableGeneratorVisible","canvasScalePercentage","shapeList","selectShape","SHAPE_LIST","lineList","selectLine","LINE_LIST","chartList","selectChart","isCustom","customRow","customCol","close","insertCustomTable","handleClickTable","ShapePool","LinePool","ChartPool","TableGenerator","setThumbnailsFocus","scroll","scrollSensitivity","handleDragEnd","itemKey","changSlideIndex","fillDigit","contextmenusThumbnailItem","contextmenusThumbnails","strokeWidth","StaticTable","BaseImageElement","BaseTextElement","BaseShapeElement","BaseLineElement","BaseChartElement","BaseTableElement","ThumbnailElement","Draggable","ThumbnailSlide","eventData","newIndex","oldIndex","_slides","_slide","currentTabs","tab","setToolbarState","currentPanelComponent","ToolbarStates","EL_ANIMATION","EL_STYLE","EL_POSITION","SLIDE_STYLE","SLIDE_ANIMATION","MULTI_POSITION","presetStyles","emitBatchRichTextCommand","compact","richTextAttrs","emitRichTextCommand","suffixIcon","webFonts","fontSizeOptions","updateFill","checked","button-style","lineHeight","updateLineHeight","lineHeightOptions","wordSpace","updateWordSpace","wordSpaceOptions","updateOpacity","undefined","deep","fixed","hasOutline","toggleOutline","updateOutline","ColorButton","outlineProps","hasShadow","toggleShadow","updateShadow","shadowProps","ElementOpacity","ElementShadow","updateRichTextAttrs","clipImage","clipPanelVisible","shapeClipPathOptions","presetImageClip","ratioClipOptions","ratio","filterOptions","updateFilter","replaceImage","resetImage","setBackgroundImage","updateFlip","defaultFilters","unit","ElementFlip","originFilters","getImageElementDataBeforeClip","imgLeft","imgTop","originClipRange","originHeight","originLeft","originTop","imageRatio","distance","fillType","updateFillType","updateGradient","gradientProps","updateLine","chartDataEditorVisible","updateOptions","showArea","showLine","lineSmooth","horizontalBars","donut","footer","centered","closable","destroyOnClose","updateData","rangeLines","resizablePointStyle","changeSelectRange","autocomplete","closeEditor","getTableData","CELL_WIDTH","CELL_HEIGHT","tempRangeSize","initData","_data","rowCount","colCount","inputRef","labelsItem","labelInputRef","seriesItem","valueInputRef","ChartDataEditor","_lineSmooth","_showLine","_showArea","_horizontalBars","_donut","optionProps","newOptions","textAttrs","updateTextAttrs","en","zh","minRowCount","setTableRow","minColCount","setTableCol","hasTheme","toggleTheme","updateTextAttrState","selectedCell","textAttrProp","themeProp","currentTheme","newTableCells","newColSizeList","panelMap","TextStylePanel","ImageStylePanel","ShapeStylePanel","LineStylePanel","ChartStylePanel","TableStylePanel","updateLeft","updateTop","updateWidth","updateFixedRatio","disabled","updateHeight","updateRotate45","updateRotate","_rotate","animationPoolVisible","hoverPreviewAnimation","addAnimation","handleElementAnimation","animationSequence","elType","animationType","runAnimation","deleteAnimation","ANIMATIONS","animationTypes","prefix","elRef","animationName","classList","handleAnimationEnd","once","updateElementAnimation","duration","updateBackgroundType","updateBackground","uploadBackgroundImage","applyBackgroundAllSlide","themes","applyThemeAllSlide","PRESET_THEMES","newBackground","newSlides","currentTurningMode","updateTurningMode","applyAllSlide","turningMode","alignActiveElement","canCombine","firstGroupId","inSameGroup","groupElementRangeMap","activeElement","groupElements","horizontalCenter","center","verticalCenter","elementTabs","slideTabs","multiSelectTabs","currentTabsValue","ElementStylePanel","ElementPositionPanel","ElementAnimationPanel","SlideStylePanel","SlideAnimationPanel","MultiPositionPanel","EditorHeader","Canvas","CanvasTool","Thumbnails","Toolbar","useGlobalHotkey","usePasteEvent","mousewheelListener","animationIndex","slideThumbnailModelVisible","turnSlideToIndex","execPrev","execNext","writingBoardToolVisible","ScreenChartElement","needWaitAnimation","ScreenElement","writingBoardVisible","writingBoardColor","model","writingBoardModel","changePen","changeEraser","clearCanvas","closeWritingBoard","writingBoardColors","changeColor","handleMousedown","handleMousemove","mouseInCanvas","penSize","rubberSize","writingBoardRef","lastPos","lastTime","lastLineWidth","mouse","updateMousePosition","initCanvas","lineCap","lineJoin","draw","posX","posY","lineWidth","lastPosX","lastPosY","strokeStyle","beginPath","moveTo","lineTo","closePath","erase","sinRadius","cosRadius","rectPoint1","rectPoint2","rectPoint3","rectPoint4","save","arc","restore","Date","getTime","getDistance","getLineWidth","maxV","minV","maxWidth","time","WritingBoard","ScreenSlide","SlideThumbnails","WritingBoardTool","slideWidth","slideHeight","setSlideContentSize","winWidth","winHeight","windowResizeListener","lastIndex","SPACE","turnPrevSlide","turnNextSlide","Editor","Screen","removeContextmenu","menus","handleClickMenuItem","menu","MenuContent","MENU_WIDTH","MENU_HEIGHT","DIVIDER_HEIGHT","PADDING","menuCount","dividerCount","menuWidth","menuHeight","screenWidth","screenHeight","CTX_CONTEXTMENU_HANDLER","event","binding","vm","Contextmenu","ContextmenuDirective","mounted","unmounted","CTX_CLICK_OUTSIDE_HANDLER","clickListener","composedPath","isClickOutside","contains","ClickOutsideDirective","install","app","component","accept","handleChange","xmlns","xmlnsXlink","hue","currentColor","themeColors","selectPresetColor","presetColors","standardColors","recentColors","handleMouseDown","bgStyle","checkboardCache","renderCheckboard","white","grey","fillRect","translate","toDataURL","getCheckboard","checkboard","Checkboard","rgbaStr","alphaRef","containerWidth","xOffset","pageXOffset","unbindEventListeners","pointerLeft","oldHue","pullDirection","hsla","toHsl","hueRef","percent","bgColor","hsva","toHsv","pointerTop","emitChangeEvent","param","saturationRef","containerHeight","yOffset","pageYOffset","saturation","bright","val","_hex","toHex8String","toHexString","RECENT_COLORS","presetColorConfig","startColor","endColor","_startColor","_endColor","rStep","gStep","bStep","gradientColorArr","Alpha","Hue","Saturation","EditableInput","rgbaString","colorString","updateRecentColorsCache","_color","maxLength","recentColorsCache","localStorage","getItem","setItem","App","directive","use","FileInput","SvgWrapper","CheckboxButton","CheckboxButtonGroup","ColorPicker","Group","Option","OptGroup","Button","Item","mount"],"mappings":"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,OACfC,oBAAkB,IAClBC,kBAAA,GACA7f,KAAK,cACLggB,OAAO,OACPE,eAAa,IACZ9wB,EAAGimB,EAAMpU,M,4FCnBfi6B,GAAa,CACxB,CACEpiC,KAAM,KACNoC,SAAU,CACR,CACE8F,QAAS,IACTC,KAAM,qCAER,CACED,QAAS,IACTC,KAAM,wGAER,CACED,QAAS,IACTC,KAAM,+DAER,CACED,QAAS,IACTC,KAAM,oDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,yEAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,yEAKZ,CACEnI,KAAM,OACNoC,SAAU,CACR,CACE8F,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,yDAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,yCAER,CACED,QAAS,IACTC,KAAM,uCAER,CACED,QAAS,IACTC,KAAM,6BAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,wDAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,gFAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,uDAER,CACED,QAAS,IACTC,KAAM,0DAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,+CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,6CAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,wEAER,CACED,QAAS,IACTC,KAAM,iEAER,CACED,QAAS,IACTC,KAAM,oHAER,CACED,QAAS,IACTC,KAAM,sHAER,CACED,QAAS,IACTC,KAAM,uEAER,CACED,QAAS,IACTC,KAAM,oIAER,CACED,QAAS,IACTC,KAAM,qEAER,CACED,QAAS,IACTC,KAAM,+CAKZ,CACEnI,KAAM,KACNoC,SAAU,CACR,CACE8F,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,6EAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qGAER,CACED,QAAS,IACTC,KAAM,qOAER,CACED,QAAS,IACTC,KAAM,uFAER,CACED,QAAS,IACTC,KAAM,sFAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8GAER,CACED,QAAS,IACTC,KAAM,8DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,gEAER,CACED,QAAS,IACTC,KAAM,4CAER,CACED,QAAS,IACTC,KAAM,iDAER,CACED,QAAS,IACTC,KAAM,6DAER,CACED,QAAS,IACTC,KAAM,kEAER,CACED,QAAS,IACTC,KAAM,6FAER,CACED,QAAS,IACTC,KAAM,yFAER,CACED,QAAS,IACTC,KAAM,0HAER,CACED,QAAS,KACTC,KAAM,+IAER,CACED,QAAS,KACTC,KAAM,mJAKZ,CACEnI,KAAM,OACNoC,SAAU,CACR,CACE8F,QAAS,KACTC,KAAM,svCAER,CACED,QAAS,KACTC,KAAM,62BAER,CACED,QAAS,KACTC,KAAM,kcAER,CACED,QAAS,KACTC,KAAM,ofAER,CACED,QAAS,KACTC,KAAM,ipDAER,CACED,QAAS,KACTC,KAAM,6uBAER,CACED,QAAS,KACTC,KAAM,ibAER,CACED,QAAS,KACTC,KAAM,usCAER,CACED,QAAS,KACTC,KAAM,y/BAER,CACED,QAAS,KACTC,KAAM,y3CAER,CACED,QAAS,KACTC,KAAM,ykBAER,CACED,QAAS,KACTC,KAAM,2jBAER,CACED,QAAS,KACTC,KAAM,syBAER,CACE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","file":"js/app.6686043a.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=17169d5c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementCreateSelection.vue?vue&type=style&index=0&id=6baf3897&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ScreenChartElement.vue?vue&type=style&index=0&id=1423f8c2&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=2148e3da&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=4dd87e36&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageEllipseOutline.vue?vue&type=style&index=0&id=6655f0f0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./StaticTable.vue?vue&type=style&index=0&id=01f791ba&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=067119ff&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseShapeElement.vue?vue&type=style&index=0&id=d0a0fd1c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=c0edfdac&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ShapePool.vue?vue&type=style&index=0&id=5aabd717&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=58d77c92&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Chart.vue?vue&type=style&index=1&id=233b1dc8&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EditableInput.vue?vue&type=style&index=0&id=0311fdee&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseLineElement.vue?vue&type=style&index=0&id=56b0510c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseChartElement.vue?vue&type=style&index=0&id=b4562eca&lang=scss&scoped=true\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./WritingBoardTool.vue?vue&type=style&index=0&id=0bfb345d&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Saturation.vue?vue&type=style&index=0&id=5310dbb4&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=a0860bd0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./GridLines.vue?vue&type=style&index=0&id=5664d2b2&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideAnimationPanel.vue?vue&type=style&index=0&id=6e3028f1&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MenuContent.vue?vue&type=style&index=0&id=d08042ec&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5e75c7ca&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TableStylePanel.vue?vue&type=style&index=0&id=90d47588&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=429c76fd&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageElementOperate.vue?vue&type=style&index=0&id=5b0628aa&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Alpha.vue?vue&type=style&index=0&id=ecf7d10e&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Checkboard.vue?vue&type=style&index=0&id=e9a0ac98&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImagePolygonOutline.vue?vue&type=style&index=0&id=8d85e878&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOpacity.vue?vue&type=style&index=0&id=b884607e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./LinePool.vue?vue&type=style&index=0&id=5087394c&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageClipHandler.vue?vue&type=style&index=0&id=1d9b5032&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./WritingBoard.vue?vue&type=style&index=0&id=4ddc4b2c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ShapeStylePanel.vue?vue&type=style&index=0&id=998a7a02&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=236c5f54&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementFlip.vue?vue&type=style&index=0&id=4a631c86&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseImageElement.vue?vue&type=style&index=0&id=1285108e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=7c55aca2&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOutline.vue?vue&type=style&index=0&id=2d8ce9c0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=71468c62&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideStylePanel.vue?vue&type=style&index=0&id=5069f2f0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./LineStylePanel.vue?vue&type=style&index=0&id=65b24fb3&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TextStylePanel.vue?vue&type=style&index=0&id=43fccffc&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./AlignmentLine.vue?vue&type=style&index=0&id=2d3eddf5&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=558a94fe&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ScreenSlide.vue?vue&type=style&index=0&id=5e193d56&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./SlideThumbnails.vue?vue&type=style&index=0&id=49960bc8&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Hue.vue?vue&type=style&index=0&id=7b983451&lang=scss&scoped=true\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=7fa1c35b&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MultiPositionPanel.vue?vue&type=style&index=0&id=540e3d06&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Chart.vue?vue&type=style&index=0&id=233b1dc8&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ResizeHandler.vue?vue&type=style&index=0&id=1c2a68d0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=661c33b7&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChartDataEditor.vue?vue&type=style&index=0&id=08aba838&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageRectOutline.vue?vue&type=style&index=0&id=4126ab7f&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./TableGenerator.vue?vue&type=style&index=0&id=576c614c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementPositionPanel.vue?vue&type=style&index=0&id=15c9ddcc&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=7d3d40d6&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseTableElement.vue?vue&type=style&index=0&id=dea016ac&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BaseTextElement.vue?vue&type=style&index=0&id=fc2d45e0&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementShadow.vue?vue&type=style&index=0&id=5cca6474&lang=scss&scoped=true\"","\r\n \r\n \r\n\r\n\r\n\r\n\r\n","export const enum MutationTypes {\r\n\r\n // editor\r\n SET_ACTIVE_ELEMENT_ID_LIST = 'setActiveElementIdList',\r\n SET_HANDLE_ELEMENT_ID = 'setHandleElementId',\r\n SET_CANVAS_PERCENTAGE = 'setCanvasPercentage',\r\n SET_CANVAS_SCALE = 'setCanvasScale',\r\n SET_THUMBNAILS_FOCUS = 'setThumbnailsFocus',\r\n SET_EDITORAREA_FOCUS = 'setEditorAreaFocus',\r\n SET_DISABLE_HOTKEYS_STATE = 'setDisableHotkeysState',\r\n SET_GRID_LINES_STATE = 'setGridLinesState',\r\n SET_CREATING_ELEMENT = 'setCreatingElement',\r\n SET_AVAILABLE_FONTS = 'setAvailableFonts',\r\n SET_TOOLBAR_STATE = 'setToolbarState',\r\n SET_CLIPING_IMAGE_ELEMENT_ID = 'setClipingImageElementId',\r\n\r\n // slides\r\n SET_THEME = 'setTheme',\r\n SET_SLIDES = 'setSlides',\r\n ADD_SLIDE = 'addSlide',\r\n UPDATE_SLIDE = 'updateSlide',\r\n DELETE_SLIDE = 'deleteSlide',\r\n UPDATE_SLIDE_INDEX = 'updateSlideIndex',\r\n ADD_ELEMENT = 'addElement',\r\n UPDATE_ELEMENT = 'updateElement',\r\n REMOVE_ELEMENT_PROPS = 'removeElementProps',\r\n\r\n // snapshot\r\n SET_SNAPSHOT_CURSOR = 'setSnapshotCursor',\r\n SET_SNAPSHOT_LENGTH = 'setSnapshotLength',\r\n\r\n // keyboard\r\n SET_CTRL_KEY_STATE = 'setCtrlKeyState',\r\n SET_SHIFT_KEY_STATE = 'setShiftKeyState',\r\n\r\n // screen\r\n SET_SCREENING = 'setScreening',\r\n}\r\n\r\nexport const enum ActionTypes {\r\n INIT_SNAPSHOT_DATABASE = 'initSnapshotDatabase',\r\n ADD_SNAPSHOT = 'addSnapshot',\r\n UN_DO = 'undo',\r\n RE_DO = 'redo',\r\n}","import { Slide } from '@/types/slides'\r\n\r\nexport const slides: Slide[] = [\r\n {\r\n id: 'test123456',\r\n elements: [],\r\n },\r\n]","import { Slide, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { ToolbarState } from '@/types/toolbar'\r\nimport { slides } from '@/mocks/index'\r\nimport { SYS_FONTS } from '@/configs/font'\r\n\r\nexport interface State {\r\n activeElementIdList: string[];\r\n handleElementId: string;\r\n canvasPercentage: number;\r\n canvasScale: number;\r\n thumbnailsFocus: boolean;\r\n editorAreaFocus: boolean;\r\n disableHotkeys: boolean;\r\n showGridLines: boolean;\r\n creatingElement: CreatingElement | null;\r\n availableFonts: typeof SYS_FONTS;\r\n toolbarState: ToolbarState;\r\n theme: SlideTheme;\r\n slides: Slide[];\r\n slideIndex: number;\r\n snapshotCursor: number;\r\n snapshotLength: number;\r\n ctrlKeyState: boolean;\r\n shiftKeyState: boolean;\r\n screening: boolean;\r\n clipingImageElementId: string;\r\n}\r\n\r\nexport const state: State = {\r\n activeElementIdList: [],\r\n handleElementId: '',\r\n canvasPercentage: 90,\r\n canvasScale: 1,\r\n thumbnailsFocus: false,\r\n editorAreaFocus: false,\r\n disableHotkeys: false,\r\n showGridLines: false,\r\n creatingElement: null,\r\n availableFonts: [],\r\n toolbarState: 'slideStyle',\r\n theme: {\r\n themeColor: '#d14424',\r\n fontColor: '#333',\r\n fontName: '微软雅黑',\r\n backgroundColor: '#fff',\r\n },\r\n slides: slides,\r\n slideIndex: 0,\r\n snapshotCursor: -1,\r\n snapshotLength: 0,\r\n ctrlKeyState: false,\r\n shiftKeyState: false,\r\n screening: false,\r\n clipingImageElementId: '',\r\n}","import { GetterTree } from 'vuex'\r\nimport { State } from './state'\r\n\r\nexport const getters: GetterTree = {\r\n currentSlide(state) {\r\n return state.slides[state.slideIndex] || null\r\n },\r\n\r\n currentSlideAnimations(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide) return null\r\n const animations = currentSlide.animations\r\n if (!animations) return null\r\n\r\n const els = currentSlide.elements\r\n const elIds = els.map(el => el.id)\r\n return animations.filter(animation => elIds.includes(animation.elId))\r\n },\r\n\r\n activeElementList(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return []\r\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\r\n },\r\n\r\n handleElement(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return null\r\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\r\n },\r\n\r\n canUndo(state) {\r\n return state.snapshotCursor > 0\r\n },\r\n\r\n canRedo(state) {\r\n return state.snapshotCursor < state.snapshotLength - 1\r\n },\r\n\r\n ctrlOrShiftKeyActive(state) {\r\n return state.ctrlKeyState || state.shiftKeyState\r\n },\r\n}","import Dexie from 'dexie'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport interface Snapshot {\r\n index: number;\r\n slides: Slide[];\r\n}\r\n\r\nclass SnapshotDatabase extends Dexie {\r\n public snapshots: Dexie.Table\r\n\r\n public constructor() {\r\n super('SnapshotDatabase')\r\n this.version(1).stores({\r\n snapshots: '++id'\r\n })\r\n this.snapshots = this.table('snapshots')\r\n }\r\n}\r\n\r\nexport const snapshotDB = new SnapshotDatabase()","import { ActionTree } from 'vuex'\r\nimport { IndexableTypeArray } from 'dexie'\r\nimport { State } from './state'\r\nimport { ActionTypes, MutationTypes } from './constants'\r\nimport { snapshotDB, Snapshot } from '@/utils/database'\r\n\r\nexport const actions: ActionTree = {\r\n async [ActionTypes.INIT_SNAPSHOT_DATABASE]({ commit, state }) {\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const lastSnapshot = snapshots.slice(-1)[0]\r\n\r\n if (lastSnapshot) {\r\n snapshotDB.snapshots.clear()\r\n }\r\n\r\n const newFirstSnapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await snapshotDB.snapshots.add(newFirstSnapshot)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, 0)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, 1)\r\n },\r\n\r\n async [ActionTypes.ADD_SNAPSHOT]({ state, commit }) {\r\n const allKeys = await snapshotDB.snapshots.orderBy('id').keys()\r\n\r\n let needDeleteKeys: IndexableTypeArray = []\r\n\r\n if (state.snapshotCursor >= 0 && state.snapshotCursor < allKeys.length - 1) {\r\n needDeleteKeys = allKeys.slice(state.snapshotCursor + 1)\r\n }\r\n\r\n const snapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await snapshotDB.snapshots.add(snapshot)\r\n\r\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\r\n\r\n if (snapshotLength > 20) {\r\n needDeleteKeys.push(allKeys[0])\r\n snapshotLength--\r\n }\r\n if (snapshotLength >= 2) {\r\n snapshotDB.snapshots.update(allKeys[snapshotLength - 2] as number, { index: state.slideIndex })\r\n }\r\n\r\n await snapshotDB.snapshots.bulkDelete(needDeleteKeys)\r\n\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotLength - 1)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, snapshotLength)\r\n },\r\n\r\n async [ActionTypes.UN_DO]({ state, commit }) {\r\n if (state.snapshotCursor <= 0) return\r\n\r\n const snapshotCursor = state.snapshotCursor - 1\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n\r\n async [ActionTypes.RE_DO]({ state, commit }) {\r\n if (state.snapshotCursor >= state.snapshotLength - 1) return\r\n\r\n const snapshotCursor = state.snapshotCursor + 1\r\n const snapshots: Snapshot[] = await snapshotDB.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n const slideIndex = index > slides.length - 1 ? slides.length - 1 : index\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n}","export const SYS_FONTS = [\r\n { label: 'Arial', value: 'Arial' },\r\n { label: '微软雅黑', value: 'Microsoft Yahei' },\r\n { label: '宋体', value: 'SimSun' },\r\n { label: '黑体', value: 'SimHei' },\r\n { label: '楷体', value: 'KaiTi' },\r\n { label: '新宋体', value: 'NSimSun' },\r\n { label: '仿宋', value: 'FangSong' },\r\n { label: '苹方', value: 'PingFang SC' },\r\n { label: '华文黑体', value: 'STHeiti' },\r\n { label: '华文楷体', value: 'STKaiti' },\r\n { label: '华文宋体', value: 'STSong' },\r\n { label: '华文仿宋', value: 'STFangSong' },\r\n { label: '华文中宋', value: 'STZhongSong' },\r\n { label: '华文琥珀', value: 'STHupo' },\r\n { label: '华文新魏', value: 'STXinwei' },\r\n { label: '华文隶书', value: 'STLiti' },\r\n { label: '华文行楷', value: 'STXingkai' },\r\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\r\n { label: '兰亭黑', value: 'Lantinghei SC' },\r\n { label: '偏偏体', value: 'Hanzipen SC' },\r\n { label: '手札体', value: 'Hannotate SC' },\r\n { label: '宋体', value: 'Songti SC' },\r\n { label: '娃娃体', value: 'Wawati SC' },\r\n { label: '行楷', value: 'Xingkai SC' },\r\n { label: '圆体', value: 'Yuanti SC' },\r\n { label: '华文细黑', value: 'STXihei' },\r\n { label: '幼圆', value: 'YouYuan' },\r\n { label: '隶书', value: 'LiSu' },\r\n]\r\n\r\nexport const WEB_FONTS = [\r\n { label: '仓耳小丸子', value: '仓耳小丸子' },\r\n { label: '优设标题黑', value: '优设标题黑' },\r\n { label: '峰广明锐体', value: '峰广明锐体' },\r\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\r\n { label: '站酷快乐体', value: '站酷快乐体' },\r\n { label: '站酷酷黑体', value: '站酷酷黑体' },\r\n { label: '素材集市康康体', value: '素材集市康康体' },\r\n { label: '联盟起艺卢帅正锐黑体', value: '联盟起艺卢帅正锐黑体' },\r\n { label: '谦度手写楷体', value: '谦度手写楷体' },\r\n { label: '途牛类圆体', value: '途牛类圆体' },\r\n { label: '锐字真言体', value: '锐字真言体' },\r\n { label: '问藏书房', value: '问藏书房' },\r\n]","/**\r\n * 判断操作系统是否存在某字体\r\n * @param fontFamily 字体名\r\n */\r\nexport const isSupportFontFamily = (fontFamily: string) => {\r\n if (typeof fontFamily !== 'string') return false\r\n\r\n const arial = 'Arial'\r\n if (fontFamily.toLowerCase() === arial.toLowerCase()) return true\r\n\r\n const size = 100\r\n const width = 100\r\n const height = 100\r\n const str = 'a'\r\n\r\n const canvas = document.createElement('canvas')\r\n const ctx = canvas.getContext('2d')\r\n\r\n if (!ctx) return false\r\n\r\n canvas.width = width\r\n canvas.height = height\r\n ctx.textAlign = 'center'\r\n ctx.fillStyle = 'black'\r\n ctx.textBaseline = 'middle'\r\n\r\n const getDotArray = (_fontFamily: string) => {\r\n ctx.clearRect(0, 0, width, height)\r\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\r\n ctx.fillText(str, width / 2, height / 2)\r\n const imageData = ctx.getImageData(0, 0, width, height).data\r\n return [].slice.call(imageData).filter(item => item !== 0)\r\n }\r\n\r\n return getDotArray(arial).join('') !== getDotArray(fontFamily).join('')\r\n}","import { MutationTree } from 'vuex'\r\nimport omit from 'lodash/omit'\r\nimport { MutationTypes } from './constants'\r\nimport { State } from './state'\r\nimport { Slide, PPTElement, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { SYS_FONTS } from '@/configs/font'\r\nimport { isSupportFontFamily } from '@/utils/fontFamily'\r\n\r\ninterface RemoveElementPropData {\r\n id: string;\r\n propName: string | string[];\r\n}\r\n\r\ninterface UpdateElementData {\r\n id: string | string[];\r\n props: Partial;\r\n}\r\n\r\nexport const mutations: MutationTree = {\r\n\r\n // editor\r\n\r\n [MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST](state, activeElementIdList: string[]) {\r\n if (activeElementIdList.length === 1) state.handleElementId = activeElementIdList[0]\r\n else state.handleElementId = ''\r\n \r\n state.activeElementIdList = activeElementIdList\r\n },\r\n \r\n [MutationTypes.SET_HANDLE_ELEMENT_ID](state, handleElementId: string) {\r\n state.handleElementId = handleElementId\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_PERCENTAGE](state, percentage: number) {\r\n state.canvasPercentage = percentage\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_SCALE](state, scale: number) {\r\n state.canvasScale = scale\r\n },\r\n\r\n [MutationTypes.SET_THUMBNAILS_FOCUS](state, isFocus: boolean) {\r\n state.thumbnailsFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_EDITORAREA_FOCUS](state, isFocus: boolean) {\r\n state.editorAreaFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_DISABLE_HOTKEYS_STATE](state, disable: boolean) {\r\n state.disableHotkeys = disable\r\n },\r\n\r\n [MutationTypes.SET_GRID_LINES_STATE](state, show: boolean) {\r\n state.showGridLines = show\r\n },\r\n\r\n [MutationTypes.SET_CREATING_ELEMENT](state, element: CreatingElement | null) {\r\n state.creatingElement = element\r\n },\r\n\r\n [MutationTypes.SET_AVAILABLE_FONTS](state) {\r\n state.availableFonts = SYS_FONTS.filter(font => isSupportFontFamily(font.value))\r\n },\r\n\r\n [MutationTypes.SET_TOOLBAR_STATE](state, type) {\r\n state.toolbarState = type\r\n },\r\n\r\n [MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID](state, elId) {\r\n state.clipingImageElementId = elId\r\n },\r\n\r\n // slides\r\n\r\n [MutationTypes.SET_THEME](state, themeProps: Partial) {\r\n state.theme = { ...state.theme, ...themeProps }\r\n },\r\n\r\n [MutationTypes.SET_SLIDES](state, slides: Slide[]) {\r\n state.slides = slides\r\n },\r\n\r\n [MutationTypes.ADD_SLIDE](state, slide: Slide) {\r\n const addIndex = state.slideIndex + 1\r\n state.slides.splice(addIndex, 0, slide)\r\n state.slideIndex = addIndex\r\n },\r\n\r\n [MutationTypes.UPDATE_SLIDE](state, props: Partial) {\r\n const slideIndex = state.slideIndex\r\n state.slides[slideIndex] = { ...state.slides[slideIndex], ...props }\r\n },\r\n\r\n [MutationTypes.DELETE_SLIDE](state, slideId: string) {\r\n const deleteIndex = state.slides.findIndex(item => item.id === slideId)\r\n\r\n if (deleteIndex === state.slides.length - 1) {\r\n state.slideIndex = deleteIndex - 1\r\n }\r\n state.slides.splice(deleteIndex, 1)\r\n },\r\n\r\n [MutationTypes.UPDATE_SLIDE_INDEX](state, index: number) {\r\n state.slideIndex = index\r\n },\r\n\r\n [MutationTypes.ADD_ELEMENT](state, element: PPTElement | PPTElement[]) {\r\n const elements = Array.isArray(element) ? element : [element]\r\n const currentSlideEls = state.slides[state.slideIndex].elements\r\n const newEls = [...currentSlideEls, ...elements]\r\n state.slides[state.slideIndex].elements = newEls\r\n },\r\n\r\n [MutationTypes.UPDATE_ELEMENT](state, data: UpdateElementData) {\r\n const { id, props } = data\r\n const elIdList = typeof id === 'string' ? [id] : id\r\n\r\n const slideIndex = state.slideIndex\r\n const slide = state.slides[slideIndex]\r\n const elements = slide.elements.map(el => {\r\n return elIdList.includes(el.id) ? { ...el, ...props } : el\r\n })\r\n state.slides[slideIndex].elements = (elements as PPTElement[])\r\n },\r\n\r\n [MutationTypes.REMOVE_ELEMENT_PROPS](state, data: RemoveElementPropData) {\r\n const { id, propName } = data\r\n const propsNames = typeof propName === 'string' ? [propName] : propName\r\n\r\n const slideIndex = state.slideIndex\r\n const slide = state.slides[slideIndex]\r\n const elements = slide.elements.map(el => {\r\n return el.id === id ? omit(el, propsNames) : el\r\n })\r\n state.slides[slideIndex].elements = (elements as PPTElement[])\r\n },\r\n\r\n // snapshot\r\n\r\n [MutationTypes.SET_SNAPSHOT_CURSOR](state, cursor: number) {\r\n state.snapshotCursor = cursor\r\n },\r\n\r\n [MutationTypes.SET_SNAPSHOT_LENGTH](state, length: number) {\r\n state.snapshotLength = length\r\n },\r\n\r\n // keyboard\r\n\r\n [MutationTypes.SET_CTRL_KEY_STATE](state, isActive: boolean) {\r\n state.ctrlKeyState = isActive\r\n },\r\n [MutationTypes.SET_SHIFT_KEY_STATE](state, isActive: boolean) {\r\n state.shiftKeyState = isActive\r\n },\r\n\r\n // screen\r\n\r\n [MutationTypes.SET_SCREENING](state, screening) {\r\n state.screening = screening\r\n },\r\n}","import { InjectionKey } from 'vue'\r\nimport { createStore, Store, useStore as baseUseStore } from 'vuex'\r\nimport { state, State } from './state'\r\nimport { getters } from './getters'\r\nimport { actions } from './actions'\r\nimport { mutations } from './mutations'\r\nimport { MutationTypes, ActionTypes } from './constants'\r\n\r\nexport { MutationTypes, ActionTypes }\r\n\r\nexport const key: InjectionKey> = Symbol()\r\n\r\nexport const store = createStore({\r\n state,\r\n getters,\r\n mutations,\r\n actions,\r\n})\r\n\r\nexport const useStore = () => baseUseStore(key)","\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\n\r\nexport type ElementOrderCommand = 'up' | 'down' | 'top' | 'bottom'\r\n\r\nexport const enum ElementOrderCommands {\r\n UP = 'up',\r\n DOWN = 'down',\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n}\r\n\r\nexport type ElementAlignCommand = 'top'| 'bottom' | 'left' | 'right' | 'vertical' | 'horizontal' | 'center'\r\n\r\nexport const enum ElementAlignCommands {\r\n TOP = 'top',\r\n BOTTOM = 'bottom',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n VERTICAL = 'vertical',\r\n HORIZONTAL = 'horizontal',\r\n CENTER = 'center',\r\n}\r\n\r\nexport type OperateBorderLine = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport const enum OperateBorderLines {\r\n T = 'top',\r\n B = 'bottom',\r\n L = 'left',\r\n R = 'right',\r\n}\r\n\r\nexport type OperateResizeHandler = '' | 'left-top' | 'top' | 'right-top' | 'left' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'\r\n\r\nexport const enum OperateResizeHandlers {\r\n LEFT_TOP = 'left-top',\r\n TOP = 'top',\r\n RIGHT_TOP = 'right-top',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM = 'bottom',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n}\r\n\r\nexport type OperateLineHandler = 'start' | 'end' | 'mid'\r\n\r\nexport const enum OperateLineHandlers {\r\n START = 'start',\r\n END = 'end',\r\n MID = 'mid',\r\n}\r\n\r\nexport interface AlignmentLineAxis {\r\n x: number; \r\n y: number;\r\n}\r\n\r\nexport interface AlignmentLineProps {\r\n type: 'vertical' | 'horizontal';\r\n axis: AlignmentLineAxis;\r\n length: number;\r\n}\r\n\r\nexport interface MultiSelectRange {\r\n minX: number;\r\n maxX: number;\r\n minY: number;\r\n maxY: number;\r\n}\r\n\r\nexport type ImageClipDataRange = [[number, number], [number, number]]\r\n\r\nexport interface ImageClipData {\r\n range: ImageClipDataRange;\r\n path: string;\r\n}\r\n\r\nexport interface ImageClipedEmitData {\r\n range: ImageClipDataRange;\r\n position: {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n };\r\n}\r\n\r\nexport interface CreateElementSelectionData {\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport interface CreatingTextElement {\r\n type: 'text';\r\n}\r\nexport interface CreatingShapeElement {\r\n type: 'shape';\r\n data: ShapePoolItem;\r\n}\r\nexport interface CreatingLineElement {\r\n type: 'line';\r\n data: LinePoolItem;\r\n}\r\nexport type CreatingElement = CreatingTextElement | CreatingShapeElement | CreatingLineElement","export const enum KEYS {\r\n C = 'C',\r\n X = 'X',\r\n Z = 'Z',\r\n Y = 'Y',\r\n A = 'A',\r\n G = 'G',\r\n L = 'L',\r\n F = 'F',\r\n D = 'D',\r\n B = 'B',\r\n MINUS = '-',\r\n EQUAL = '=',\r\n DIGIT_0 = '0',\r\n DELETE = 'DELETE',\r\n UP = 'ARROWUP',\r\n DOWN = 'ARROWDOWN',\r\n LEFT = 'ARROWLEFT',\r\n RIGHT = 'ARROWRIGHT',\r\n ENTER = 'ENTER',\r\n SPACE = ' ',\r\n TAB = 'TAB',\r\n BACKSPACE = 'BACKSPACE',\r\n}\r\n\r\nexport const HOTKEY_DOC = [\r\n {\r\n type: '通用',\r\n children: [\r\n { label: '剪切', value: 'Ctrl + X' },\r\n { label: '复制', value: 'Ctrl + C' },\r\n { label: '粘贴', value: 'Ctrl + V' },\r\n { label: '快速复制粘贴', value: 'Ctrl + D' },\r\n { label: '全选', value: 'Ctrl + A' },\r\n { label: '撤销', value: 'Ctrl + Z' },\r\n { label: '恢复', value: 'Ctrl + Y' },\r\n { label: '删除', value: 'Delete / Backspace' },\r\n ],\r\n },\r\n {\r\n type: '幻灯片放映',\r\n children: [\r\n { label: '开始放映幻灯片', value: 'Ctrl + F' },\r\n { label: '切换上一页', value: '↑ / ←' },\r\n { label: '切换下一页', value: '↓ / → / Enter / Space' },\r\n { label: '退出放映', value: 'ESC' },\r\n ],\r\n },\r\n {\r\n type: '幻灯片编辑',\r\n children: [\r\n { label: '新建幻灯片', value: 'Enter' },\r\n { label: '缩放画布', value: 'Ctrl + 鼠标滚动' },\r\n { label: '放大画布', value: 'Ctrl + =' },\r\n { label: '缩小画布', value: 'Ctrl + -' },\r\n { label: '缩放画布到合适大小', value: 'Ctrl + 0' },\r\n { label: '编辑上一页', value: '↑ / ←' },\r\n { label: '编辑下一页', value: '↓ / →' },\r\n ],\r\n },\r\n {\r\n type: '元素操作',\r\n children: [\r\n { label: '移动', value: '↑ / ← / ↓ / →' },\r\n { label: '锁定', value: 'Ctrl + L' },\r\n { label: '组合', value: 'Ctrl + G' },\r\n { label: '取消组合', value: 'Ctrl + Shift + G' },\r\n { label: '置顶层', value: 'Alt + F' },\r\n { label: '置底层', value: 'Alt + B' },\r\n { label: '多选', value: '按住 Ctrl 或 Shift' },\r\n { label: '锁定宽高比例', value: '按住 Ctrl 或 Shift' },\r\n { label: '创建水平 / 垂直线条', value: '按住 Ctrl 或 Shift' },\r\n { label: '确认图片裁剪', value: 'Enter' },\r\n ],\r\n },\r\n {\r\n type: '表格编辑',\r\n children: [\r\n { label: '聚焦到下一个单元格', value: 'Tab' },\r\n { label: '在上方插入一行', value: 'Ctrl + ↑' },\r\n { label: '在下方插入一行', value: 'Ctrl + ↓' },\r\n { label: '在左侧插入一列', value: 'Ctrl + ←' },\r\n { label: '在右侧插入一列', value: 'Ctrl + →' },\r\n ],\r\n },\r\n {\r\n type: '文本编辑',\r\n children: [\r\n { label: '加粗', value: 'Ctrl + B' },\r\n { label: '斜体', value: 'Ctrl + I' },\r\n { label: '下划线', value: 'Ctrl + U' },\r\n { label: '删除线', value: 'Ctrl + D' },\r\n ],\r\n },\r\n]","import padStart from 'lodash/padStart'\r\n\r\n/**\r\n * 生成随机码\r\n * @param len 随机码长度\r\n */\r\nexport const createRandomCode = (len = 6) => {\r\n const charset = `_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`\r\n const maxLen = charset.length\r\n let ret = ''\r\n for (let i = 0; i < len; i++) {\r\n const randomIndex = Math.floor(Math.random() * maxLen)\r\n ret += charset[randomIndex]\r\n }\r\n return ret\r\n}\r\n\r\n/**\r\n * 补足数字位数\r\n * @param digit 数字\r\n * @param len 位数\r\n */\r\nexport const fillDigit = (digit: number, len: number) => {\r\n return padStart('' + digit, len, '0')\r\n}","import Clipboard from 'clipboard'\r\n\r\n/**\r\n * 复制文本到剪贴板\r\n * @param text 文本内容\r\n */\r\nexport const copyText = (text: string) => {\r\n return new Promise((resolve, reject) => {\r\n const fakeElement = document.createElement('button')\r\n const clipboard = new Clipboard(fakeElement, {\r\n text: () => text,\r\n action: () => 'copy',\r\n container: document.body,\r\n })\r\n clipboard.on('success', e => {\r\n clipboard.destroy()\r\n resolve(e)\r\n })\r\n clipboard.on('error', e => {\r\n clipboard.destroy()\r\n reject(e)\r\n })\r\n document.body.appendChild(fakeElement)\r\n fakeElement.click()\r\n document.body.removeChild(fakeElement)\r\n })\r\n}\r\n\r\n// 读取剪贴板\r\nexport const readClipboard = (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (navigator.clipboard) {\r\n navigator.clipboard.readText().then(text => {\r\n if (!text) reject('剪贴板为空或者不包含文本')\r\n return resolve(text)\r\n })\r\n }\r\n else reject('浏览器不支持或禁止访问剪贴板')\r\n })\r\n}","import CryptoJS from 'crypto-js'\r\n\r\nconst CRYPTO_KEY = 'pptist'\r\n\r\n/**\r\n * 加密\r\n * @param msg 待加密字符串\r\n */\r\nexport const encrypt = (msg: string) => {\r\n return CryptoJS.AES.encrypt(msg, CRYPTO_KEY).toString()\r\n}\r\n\r\n/**\r\n * 解密\r\n * @param ciphertext 待解密字符串\r\n */\r\nexport const decrypt = (ciphertext: string) => {\r\n const bytes = CryptoJS.AES.decrypt(ciphertext, CRYPTO_KEY)\r\n return bytes.toString(CryptoJS.enc.Utf8)\r\n}","import debounce from 'lodash/debounce'\r\nimport throttle from 'lodash/throttle'\r\nimport { ActionTypes, useStore } from '@/store'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n // 添加历史快照(历史记录)\r\n const addHistorySnapshot = debounce(function() {\r\n store.dispatch(ActionTypes.ADD_SNAPSHOT)\r\n }, 300, { trailing: true })\r\n\r\n // 重做\r\n const redo = throttle(function() {\r\n store.dispatch(ActionTypes.RE_DO)\r\n }, 100, { leading: true, trailing: false })\r\n\r\n // 撤销\r\n const undo = throttle(function() {\r\n store.dispatch(ActionTypes.UN_DO)\r\n }, 100, { leading: true, trailing: false })\r\n\r\n return {\r\n addHistorySnapshot,\r\n redo,\r\n undo,\r\n }\r\n}","interface ImageSize {\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/**\r\n * 获取图片的原始宽高\r\n * @param src 图片地址\r\n */\r\nexport const getImageSize = (src: string): Promise => {\r\n return new Promise(resolve => {\r\n const img = document.createElement('img')\r\n img.src = src\r\n img.style.opacity = '0'\r\n document.body.appendChild(img)\r\n\r\n img.onload = () => {\r\n const imgWidth = img.clientWidth\r\n const imgHeight = img.clientHeight\r\n \r\n img.onload = null\r\n img.onerror = null\r\n\r\n document.body.removeChild(img)\r\n\r\n resolve({ width: imgWidth, height: imgHeight })\r\n }\r\n\r\n img.onerror = () => {\r\n img.onload = null\r\n img.onerror = null\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 读取图片文件的dataURL\r\n * @param file 图片文件\r\n */\r\nexport const getImageDataURL = (file: File): Promise => {\r\n return new Promise(resolve => {\r\n const reader = new FileReader()\r\n reader.addEventListener('load', () => {\r\n resolve(reader.result as string)\r\n })\r\n reader.readAsDataURL(file)\r\n })\r\n}","export const VIEWPORT_SIZE = 1000\r\nexport const VIEWPORT_ASPECT_RATIO = 0.5625","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { getImageSize } from '@/utils/image'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport { PPTLineElement, ChartType, PPTElement, TableCell } from '@/types/slides'\r\nimport { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface CommonElementPosition {\r\n top: number;\r\n left: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\ninterface LineElementPosition {\r\n top: number;\r\n left: number;\r\n start: [number, number];\r\n end: [number, number];\r\n}\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const themeColor = computed(() => store.state.theme.themeColor)\r\n const fontColor = computed(() => store.state.theme.fontColor)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 创建(插入)一个元素并将其设置为被选中元素\r\n const createElement = (element: PPTElement) => {\r\n store.commit(MutationTypes.ADD_ELEMENT, element)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [element.id])\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 创建图片元素\r\n * @param src 图片地址\r\n */\r\n const createImageElement = (src: string) => {\r\n getImageSize(src).then(({ width, height }) => {\r\n const scale = height / width\r\n \r\n if (scale < VIEWPORT_ASPECT_RATIO && width > VIEWPORT_SIZE) {\r\n width = VIEWPORT_SIZE\r\n height = width * scale\r\n }\r\n else if (height > VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO) {\r\n height = VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO\r\n width = height / scale\r\n }\r\n\r\n createElement({\r\n type: 'image',\r\n id: createRandomCode(),\r\n src,\r\n width,\r\n height,\r\n left: (VIEWPORT_SIZE - width) / 2,\r\n top: (VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO - height) / 2,\r\n fixedRatio: true,\r\n })\r\n })\r\n }\r\n \r\n /**\r\n * 创建图表元素\r\n * @param chartType 图表类型\r\n */\r\n const createChartElement = (chartType: ChartType) => {\r\n createElement({\r\n type: 'chart',\r\n id: createRandomCode(),\r\n chartType,\r\n left: 300,\r\n top: 81.25,\r\n width: 400,\r\n height: 400,\r\n themeColor: themeColor.value,\r\n gridColor: fontColor.value,\r\n data: {\r\n labels: ['类别1', '类别2', '类别3', '类别4', '类别5'],\r\n series: [\r\n [12, 19, 5, 2, 18],\r\n ],\r\n },\r\n })\r\n }\r\n \r\n /**\r\n * 创建表格元素\r\n * @param row 行数\r\n * @param col 列数\r\n */\r\n const createTableElement = (row: number, col: number) => {\r\n const rowCells: TableCell[] = new Array(col).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n const data: TableCell[][] = new Array(row).fill(rowCells)\r\n\r\n const DEFAULT_CELL_WIDTH = 100\r\n const DEFAULT_CELL_HEIGHT = 36\r\n\r\n const colWidths: number[] = new Array(col).fill(1 / col)\r\n\r\n const width = col * DEFAULT_CELL_WIDTH\r\n const height = row * DEFAULT_CELL_HEIGHT\r\n\r\n createElement({\r\n type: 'table',\r\n id: createRandomCode(),\r\n width,\r\n height,\r\n colWidths,\r\n data,\r\n left: (VIEWPORT_SIZE - width) / 2,\r\n top: (VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO - height) / 2,\r\n outline: {\r\n width: 2,\r\n style: 'solid',\r\n color: '#eeece1',\r\n },\r\n theme: {\r\n color: themeColor.value,\r\n rowHeader: true,\r\n rowFooter: false,\r\n colHeader: false,\r\n colFooter: false,\r\n },\r\n })\r\n }\r\n \r\n /**\r\n * 创建文本元素\r\n * @param position 位置大小信息\r\n * @param content 文本内容\r\n */\r\n const createTextElement = (position: CommonElementPosition, content = '请输入内容') => {\r\n const { left, top, width, height } = position\r\n createElement({\r\n type: 'text',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n width, \r\n height,\r\n content,\r\n })\r\n }\r\n \r\n /**\r\n * 创建形状元素\r\n * @param position 位置大小信息\r\n * @param data 形状路径信息\r\n */\r\n const createShapeElement = (position: CommonElementPosition, data: ShapePoolItem) => {\r\n const { left, top, width, height } = position\r\n createElement({\r\n type: 'shape',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n width, \r\n height,\r\n viewBox: data.viewBox,\r\n path: data.path,\r\n fill: themeColor.value,\r\n fixedRatio: false,\r\n })\r\n }\r\n \r\n /**\r\n * 创建线条元素\r\n * @param position 位置大小信息\r\n * @param data 线条的路径和样式\r\n */\r\n const createLineElement = (position: LineElementPosition, data: LinePoolItem) => {\r\n const { left, top, start, end } = position\r\n\r\n const newElement: PPTLineElement = {\r\n type: 'line',\r\n id: createRandomCode(),\r\n left, \r\n top, \r\n start,\r\n end,\r\n points: data.points,\r\n color: themeColor.value,\r\n style: data.style,\r\n width: 2,\r\n }\r\n if (data.isBroken) newElement.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n if (data.isCurve) newElement.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n createElement(newElement)\r\n }\r\n\r\n return {\r\n createImageElement,\r\n createChartElement,\r\n createTableElement,\r\n createTextElement,\r\n createShapeElement,\r\n createLineElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { decrypt } from '@/utils/crypto'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\ninterface PasteTextClipboardDataOptions {\r\n onlySlide?: boolean;\r\n onlyElements?: boolean;\r\n}\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n const { createTextElement } = useCreateElement()\r\n\r\n /**\r\n * 粘贴元素(一组)\r\n * @param elements 元素列表数据\r\n */\r\n const pasteElement = (elements: PPTElement[]) => {\r\n const groupIdMap = {}\r\n const elIdMap = {}\r\n for (const element of elements) {\r\n const groupId = element.groupId\r\n if (groupId && !groupIdMap[groupId]) {\r\n groupIdMap[groupId] = createRandomCode()\r\n }\r\n elIdMap[element.id] = createRandomCode()\r\n }\r\n const currentSlideElementIdList = currentSlide.value.elements.map(el => el.id)\r\n \r\n for (const element of elements) {\r\n const inCurrentSlide = currentSlideElementIdList.includes(element.id)\r\n \r\n element.id = elIdMap[element.id]\r\n\r\n if (inCurrentSlide) {\r\n element.left = element.left + 10\r\n element.top = element.top + 10\r\n }\r\n\r\n if (element.groupId) element.groupId = groupIdMap[element.groupId]\r\n }\r\n store.commit(MutationTypes.ADD_ELEMENT, elements)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, Object.values(elIdMap))\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 粘贴页面\r\n * @param slide 页面数据\r\n */\r\n const pasteSlide = (slide: Slide) => {\r\n store.commit(MutationTypes.ADD_SLIDE, {\r\n ...slide,\r\n id: createRandomCode(8),\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 粘贴普通文本:创建为新的文本元素\r\n * @param text 文本\r\n */\r\n const pasteText = (text: string) => {\r\n createTextElement({\r\n left: 0,\r\n top: 0,\r\n width: 600,\r\n height: 50,\r\n }, text)\r\n }\r\n\r\n /**\r\n * 解析剪贴板内容,根据解析结果选择合适的粘贴方式\r\n * @param text 剪贴板内容\r\n * @param options 配置项:onlySlide -- 仅处理页面粘贴;onlyElements -- 仅处理元素粘贴;\r\n */\r\n const pasteTextClipboardData = (text: string, options?: PasteTextClipboardDataOptions) => {\r\n const onlySlide = options?.onlySlide || false\r\n const onlyElements = options?.onlyElements || false\r\n\r\n let clipboardData\r\n try {\r\n clipboardData = JSON.parse(decrypt(text))\r\n }\r\n catch {\r\n clipboardData = text\r\n }\r\n\r\n // 元素或页面\r\n if (typeof clipboardData === 'object') {\r\n const { type, data } = clipboardData\r\n\r\n if (type === 'elements' && !onlySlide) pasteElement(data)\r\n else if (type === 'slide' && !onlyElements) pasteSlide(data)\r\n }\r\n\r\n // 普通文本\r\n else if (!onlyElements && !onlySlide) pasteText(clipboardData)\r\n }\r\n\r\n return {\r\n pasteTextClipboardData,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { copyText, readClipboard } from '@/utils/clipboard'\r\nimport { encrypt } from '@/utils/crypto'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { message } from 'ant-design-vue'\r\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n const theme = computed(() => store.state.theme)\r\n const slidesLength = computed(() => store.state.slides.length)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 移动页面焦点\r\n * @param command 移动页面焦点命令:上移、下移\r\n */\r\n const updateSlideIndex = (command: string) => {\r\n let targetIndex = 0\r\n if (command === KEYS.UP && slideIndex.value > 0) {\r\n targetIndex = slideIndex.value - 1\r\n }\r\n else if (command === KEYS.DOWN && slideIndex.value < slidesLength.value - 1) {\r\n targetIndex = slideIndex.value + 1\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, targetIndex)\r\n }\r\n\r\n // 将当前页面数据加密后复制到剪贴板\r\n const copySlide = () => {\r\n const text = encrypt(JSON.stringify({\r\n type: 'slide',\r\n data: currentSlide.value,\r\n }))\r\n\r\n copyText(text).then(() => {\r\n store.commit(MutationTypes.SET_THUMBNAILS_FOCUS, true)\r\n })\r\n }\r\n\r\n // 尝试将剪贴板页面数据解密后添加到下一页(粘贴)\r\n const pasteSlide = () => {\r\n readClipboard().then(text => {\r\n pasteTextClipboardData(text, { onlySlide: true })\r\n }).catch(err => message.warning(err))\r\n }\r\n\r\n // 创建一页空白页并添加到下一页\r\n const createSlide = () => {\r\n const emptySlide = {\r\n id: createRandomCode(8),\r\n elements: [],\r\n background: {\r\n type: 'solid',\r\n color: theme.value.backgroundColor,\r\n },\r\n }\r\n store.commit(MutationTypes.ADD_SLIDE, emptySlide)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页复制一份到下一页\r\n const copyAndPasteSlide = () => {\r\n store.commit(MutationTypes.ADD_SLIDE, {\r\n ...currentSlide.value,\r\n id: createRandomCode(8),\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 删除当前页\r\n const deleteSlide = () => {\r\n if (slidesLength.value === 1) return message.warning('无法继续删除')\r\n \r\n store.commit(MutationTypes.DELETE_SLIDE, currentSlide.value.id)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页复制后删除(剪切)\r\n const cutSlide = () => {\r\n copySlide()\r\n deleteSlide()\r\n }\r\n\r\n return {\r\n updateSlideIndex,\r\n copySlide,\r\n pasteSlide,\r\n createSlide,\r\n copyAndPasteSlide,\r\n deleteSlide,\r\n cutSlide,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 锁定选中的元素,并清空选中元素状态\r\n const lockElement = () => {\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n \r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id)) element.lock = true\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 解除元素的锁定状态,并将其设置为当前选择元素\r\n * @param handleElement 需要解锁的元素\r\n */\r\n const unlockElement = (handleElement: PPTElement) => {\r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n if (handleElement.groupId) {\r\n for (const element of newElementList) {\r\n if (element.groupId === handleElement.groupId) element.lock = false\r\n }\r\n return newElementList\r\n }\r\n \r\n for (const element of newElementList) {\r\n if (element.id === handleElement.id) {\r\n element.lock = false\r\n break\r\n }\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [handleElement.id])\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n lockElement,\r\n unlockElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 删除全部选中元素\r\n const deleteElement = () => {\r\n if (!activeElementIdList.value.length) return\r\n const newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 删除内面内全部元素(无论是否选中)\r\n const deleteAllElements = () => {\r\n if (!currentSlide.value.elements.length) return\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: [] })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n deleteElement,\r\n deleteAllElements,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 组合当前选中的元素:给当前选中的元素赋予一个相同的分组ID\r\n */\r\n const combineElements = () => {\r\n if (!activeElementList.value.length) return\r\n\r\n // 生成一个新元素列表进行后续操作\r\n let newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 生成分组ID\r\n const groupId = createRandomCode()\r\n\r\n // 收集需要组合的元素列表,并赋上唯一分组ID\r\n const combineElementList: PPTElement[] = []\r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n element.groupId = groupId\r\n combineElementList.push(element)\r\n }\r\n }\r\n\r\n // 确保该组合内所有元素成员的层级是连续的,具体操作方法为:\r\n // 先获取到该组合内最上层元素的层级,将本次需要组合的元素从新元素列表中移除,\r\n // 再根据最上层元素的层级位置,将上面收集到的需要组合的元素列表一起插入到新元素列表中合适的位置\r\n const combineElementMaxLevel = newElementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id)\r\n const combineElementIdList = combineElementList.map(_element => _element.id)\r\n newElementList = newElementList.filter(_element => !combineElementIdList.includes(_element.id))\r\n\r\n const insertLevel = combineElementMaxLevel - combineElementList.length + 1\r\n newElementList.splice(insertLevel, 0, ...combineElementList)\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n /**\r\n * 取消组合元素:移除选中元素的分组ID\r\n */\r\n const uncombineElements = () => {\r\n if (!activeElementList.value.length) return\r\n const hasElementInGroup = activeElementList.value.some(item => item.groupId)\r\n if (!hasElementInGroup) return\r\n \r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n for (const element of newElementList) {\r\n if (activeElementIdList.value.includes(element.id) && element.groupId) delete element.groupId\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n\r\n // 取消组合后,需要重置激活元素状态\r\n // 默认重置为当前正在操作的元素,如果不存在则重置为空\r\n const handleElementIdList = handleElementId.value ? [handleElementId.value] : []\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, handleElementIdList)\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n combineElements,\r\n uncombineElements,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { copyText, readClipboard } from '@/utils/clipboard'\r\nimport { encrypt } from '@/utils/crypto'\r\nimport { message } from 'ant-design-vue'\r\nimport usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'\r\nimport useDeleteElement from './useDeleteElement'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { deleteElement } = useDeleteElement()\r\n\r\n // 将选中元素数据加密后复制到剪贴板\r\n const copyElement = () => {\r\n if (!activeElementIdList.value.length) return\r\n\r\n const text = encrypt(JSON.stringify({\r\n type: 'elements',\r\n data: activeElementList.value,\r\n }))\r\n\r\n copyText(text).then(() => {\r\n store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n })\r\n }\r\n\r\n // 将选中元素复制后删除(剪切)\r\n const cutElement = () => {\r\n copyElement()\r\n deleteElement()\r\n }\r\n\r\n // 尝试将剪贴板元素数据解密后进行粘贴\r\n const pasteElement = () => {\r\n readClipboard().then(text => {\r\n pasteTextClipboardData(text)\r\n }).catch(err => message.warning(err))\r\n }\r\n\r\n // 将选中元素复制后立刻粘贴\r\n const quickCopyElement = () => {\r\n copyElement()\r\n pasteElement()\r\n }\r\n\r\n return {\r\n copyElement,\r\n cutElement,\r\n pasteElement,\r\n quickCopyElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n // 将当前页面全部元素设置为被选择状态\r\n const selectAllElement = () => {\r\n const unlockedElements = currentSlide.value.elements.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectAllElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将元素向指定方向移动指定的距离\r\n * @param command 移动方向\r\n * @param step 移动距离\r\n */\r\n const moveElement = (command: string, step = 1) => {\r\n const newElementList = currentSlide.value.elements.map(el => {\r\n if (activeElementIdList.value.includes(el.id)) {\r\n let { left, top } = el\r\n switch (command) {\r\n case KEYS.LEFT: \r\n left = left - step\r\n break\r\n case KEYS.RIGHT: \r\n left = left + step\r\n break\r\n case KEYS.UP: \r\n top = top - step\r\n break\r\n case KEYS.DOWN: \r\n top = top + step\r\n break\r\n default: break\r\n }\r\n return { ...el, left, top }\r\n }\r\n return el\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n moveElement,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 获取组合元素层级范围\r\n * @param elementList 本页所有元素列表\r\n * @param combineElementList 组合元素列表\r\n */\r\n const getCombineElementLevelRange = (elementList: PPTElement[], combineElementList: PPTElement[]) => {\r\n return {\r\n minLevel: elementList.findIndex(_element => _element.id === combineElementList[0].id),\r\n maxLevel: elementList.findIndex(_element => _element.id === combineElementList[combineElementList.length - 1].id),\r\n }\r\n }\r\n\r\n /**\r\n * 上移一层\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveUpElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\r\n if (element.groupId) {\r\n\r\n // 获取到该组合全部成员,以及所有成员的层级范围\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (maxLevel === elementList.length - 1) return\r\n\r\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\r\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\r\n const nextElement = copyOfElementList[maxLevel + 1]\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n\r\n if (nextElement.groupId) {\r\n const nextCombineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\r\n copyOfElementList.splice(minLevel + nextCombineElementList.length, 0, ...movedElementList)\r\n }\r\n else copyOfElementList.splice(minLevel + 1, 0, ...movedElementList)\r\n }\r\n\r\n // 如果被操作的元素不是组合元素成员\r\n else {\r\n\r\n // 获取该元素在列表中的层级\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (level === elementList.length - 1) return\r\n\r\n // 获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n const nextElement = copyOfElementList[level + 1]\r\n const movedElement = copyOfElementList.splice(level, 1)[0]\r\n\r\n // 通过组合成员范围的最大值,获取到该组合上一层的元素,然后将该组合元素从元素列表中移除(并缓存被移除的元素列表)\r\n // 若上层元素处在另一个组合中,则将上述被移除的组合元素插入到该上层组合上方\r\n // 若上层元素不处于任何分组中,则将上述被移除的组合元素插入到该上层元素上方\r\n if (nextElement.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === nextElement.groupId)\r\n copyOfElementList.splice(level + combineElementList.length, 0, movedElement)\r\n }\r\n else copyOfElementList.splice(level + 1, 0, movedElement)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 下移一层,操作方式同上移\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveDownElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n if (element.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n if (minLevel === 0) return\r\n\r\n const prevElement = copyOfElementList[minLevel - 1]\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n\r\n if (prevElement.groupId) {\r\n const prevCombineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\r\n copyOfElementList.splice(minLevel - prevCombineElementList.length, 0, ...movedElementList)\r\n }\r\n else copyOfElementList.splice(minLevel - 1, 0, ...movedElementList)\r\n }\r\n\r\n else {\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n if (level === 0) return\r\n\r\n const prevElement = copyOfElementList[level - 1]\r\n const movedElement = copyOfElementList.splice(level, 1)[0]\r\n\r\n if (prevElement.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === prevElement.groupId)\r\n copyOfElementList.splice(level - combineElementList.length, 0, movedElement)\r\n }\r\n else copyOfElementList.splice(level - 1, 0, movedElement)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 置顶层\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveTopElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n // 如果被操作的元素是组合元素成员,需要将该组合全部成员一起进行移动\r\n if (element.groupId) {\r\n\r\n // 获取到该组合全部成员,以及所有成员的层级范围\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel, maxLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (maxLevel === elementList.length - 1) return null\r\n\r\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表顶部\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n copyOfElementList.push(...movedElementList)\r\n }\r\n\r\n // 如果被操作的元素不是组合元素成员\r\n else {\r\n\r\n // 获取该元素在列表中的层级\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n\r\n // 已经处在顶层,无法继续移动\r\n if (level === elementList.length - 1) return null\r\n\r\n // 将该组合元素从元素列表中移除,然后将被移除的元素添加到元素列表底部\r\n copyOfElementList.splice(level, 1)\r\n copyOfElementList.push(element)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 置底层,操作方式同置顶\r\n * @param elementList 本页所有元素列表\r\n * @param element 当前操作的元素\r\n */\r\n const moveBottomElement = (elementList: PPTElement[], element: PPTElement) => {\r\n const copyOfElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList))\r\n\r\n if (element.groupId) {\r\n const combineElementList = copyOfElementList.filter(_element => _element.groupId === element.groupId)\r\n const { minLevel } = getCombineElementLevelRange(elementList, combineElementList)\r\n if (minLevel === 0) return\r\n\r\n const movedElementList = copyOfElementList.splice(minLevel, combineElementList.length)\r\n copyOfElementList.unshift(...movedElementList)\r\n }\r\n\r\n else {\r\n const level = elementList.findIndex(item => item.id === element.id)\r\n if (level === 0) return\r\n\r\n copyOfElementList.splice(level, 1)\r\n copyOfElementList.unshift(element)\r\n }\r\n\r\n return copyOfElementList\r\n }\r\n\r\n /**\r\n * 调整元素层级\r\n * @param element 需要调整层级的元素\r\n * @param command 调整命令:上移、下移、置顶、置底\r\n */\r\n const orderElement = (element: PPTElement, command: ElementOrderCommand) => {\r\n let newElementList\r\n \r\n if (command === ElementOrderCommands.UP) newElementList = moveUpElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.DOWN) newElementList = moveDownElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.TOP) newElementList = moveTopElement(currentSlide.value.elements, element)\r\n else if (command === ElementOrderCommands.BOTTOM) newElementList = moveBottomElement(currentSlide.value.elements, element)\r\n\r\n if (!newElementList) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n orderElement,\r\n }\r\n}","// 进入全屏\r\nexport const enterFullscreen = () => {\r\n const docElm = document.documentElement\r\n if (docElm.requestFullscreen) docElm.requestFullscreen() \r\n else if (docElm.mozRequestFullScreen) docElm.mozRequestFullScreen() \r\n else if (docElm.webkitRequestFullScreen) docElm.webkitRequestFullScreen()\r\n}\r\n\r\n// 退出全屏\r\nexport const exitFullscreen = () => {\r\n if (document.exitFullscreen) document.exitFullscreen()\r\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\r\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\r\n}\r\n\r\n// 判断是否全屏\r\nexport const isFullscreen = () => (\r\n document.mozFullScreen || \r\n document.webkitIsFullScreen || \r\n document.webkitFullScreen\r\n)","import { MutationTypes, useStore } from '@/store'\r\nimport { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n // 进入放映状态(从当前页开始)\r\n const enterScreening = () => {\r\n enterFullscreen()\r\n store.commit(MutationTypes.SET_SCREENING, true)\r\n }\r\n\r\n // 进入放映状态(从第一页开始)\r\n const enterScreeningFromStart = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, 0)\r\n enterScreening()\r\n }\r\n\r\n // 退出放映状态\r\n const exitScreening = () => {\r\n store.commit(MutationTypes.SET_SCREENING, false)\r\n if (isFullscreen()) exitFullscreen()\r\n }\r\n\r\n return {\r\n enterScreening,\r\n enterScreeningFromStart,\r\n exitScreening,\r\n }\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const canvasPercentage = computed(() => store.state.canvasPercentage)\r\n\r\n /**\r\n * 缩放画布百分比\r\n * @param command 缩放命令:放大、缩小\r\n */\r\n const scaleCanvas = (command: '+' | '-') => {\r\n let percentage = canvasPercentage.value\r\n const step = 5\r\n const max = 120\r\n const min = 60\r\n if (command === '+' && percentage <= max) percentage += step\r\n if (command === '-' && percentage >= min) percentage -= step\r\n \r\n store.commit(MutationTypes.SET_CANVAS_PERCENTAGE, percentage)\r\n }\r\n\r\n /**\r\n * 设置画笔百分比\r\n * @param percentage 百分比(小数形式,如0.8)\r\n */\r\n const setCanvasPercentage = (percentage: number) => {\r\n store.commit(MutationTypes.SET_CANVAS_PERCENTAGE, percentage)\r\n }\r\n \r\n return {\r\n scaleCanvas,\r\n setCanvasPercentage,\r\n }\r\n}","import { computed, onMounted, onUnmounted } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ElementOrderCommand, ElementOrderCommands } from '@/types/edit'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { KEYS } from '@/configs/hotkey'\r\n\r\nimport useSlideHandler from './useSlideHandler'\r\nimport useLockElement from './useLockElement'\r\nimport useDeleteElement from './useDeleteElement'\r\nimport useCombineElement from './useCombineElement'\r\nimport useCopyAndPasteElement from './useCopyAndPasteElement'\r\nimport useSelectAllElement from './useSelectAllElement'\r\nimport useMoveElement from './useMoveElement'\r\nimport useOrderElement from './useOrderElement'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\nimport useScreening from './useScreening'\r\nimport useScaleCanvas from './useScaleCanvas'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n const ctrlKeyActive = computed(() => store.state.ctrlKeyState)\r\n const shiftKeyActive = computed(() => store.state.shiftKeyState)\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n\r\n const {\r\n updateSlideIndex,\r\n copySlide,\r\n createSlide,\r\n deleteSlide,\r\n cutSlide,\r\n copyAndPasteSlide,\r\n } = useSlideHandler()\r\n\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n const { deleteElement } = useDeleteElement()\r\n const { lockElement } = useLockElement()\r\n const { copyElement, cutElement, quickCopyElement } = useCopyAndPasteElement()\r\n const { selectAllElement } = useSelectAllElement()\r\n const { moveElement } = useMoveElement()\r\n const { orderElement } = useOrderElement()\r\n const { redo, undo } = useHistorySnapshot()\r\n const { enterScreening } = useScreening()\r\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\r\n\r\n const copy = () => {\r\n if (activeElementIdList.value.length) copyElement()\r\n else if (thumbnailsFocus.value) copySlide()\r\n }\r\n\r\n const cut = () => {\r\n if (activeElementIdList.value.length) cutElement()\r\n else if (thumbnailsFocus.value) cutSlide()\r\n }\r\n\r\n const quickCopy = () => {\r\n if (activeElementIdList.value.length) quickCopyElement()\r\n else if (thumbnailsFocus.value) copyAndPasteSlide()\r\n }\r\n\r\n const selectAll = () => {\r\n if (!editorAreaFocus.value) return\r\n selectAllElement()\r\n }\r\n\r\n const lock = () => {\r\n if (!editorAreaFocus.value) return\r\n lockElement()\r\n }\r\n const combine = () => {\r\n if (!editorAreaFocus.value) return\r\n combineElements()\r\n }\r\n\r\n const uncombine = () => {\r\n if (!editorAreaFocus.value) return\r\n uncombineElements()\r\n }\r\n\r\n const remove = () => {\r\n if (activeElementIdList.value.length) deleteElement()\r\n else if (thumbnailsFocus.value) deleteSlide()\r\n }\r\n\r\n const move = (key: string) => {\r\n if (activeElementIdList.value.length) moveElement(key)\r\n else if (key === KEYS.UP || key === KEYS.DOWN) updateSlideIndex(key)\r\n }\r\n\r\n const order = (command: ElementOrderCommand) => {\r\n if (!handleElement.value) return\r\n orderElement(handleElement.value, command)\r\n }\r\n\r\n const create = () => {\r\n if (!thumbnailsFocus.value) return\r\n createSlide()\r\n }\r\n\r\n const keydownListener = (e: KeyboardEvent) => {\r\n const { ctrlKey, shiftKey, altKey, metaKey } = e\r\n\r\n const key = e.key.toUpperCase()\r\n\r\n if (ctrlKey && !ctrlKeyActive.value) store.commit(MutationTypes.SET_CTRL_KEY_STATE, true)\r\n if (shiftKey && !shiftKeyActive.value) store.commit(MutationTypes.SET_SHIFT_KEY_STATE, true)\r\n\r\n if (ctrlKey && key === KEYS.F) {\r\n e.preventDefault()\r\n enterScreening()\r\n store.commit(MutationTypes.SET_CTRL_KEY_STATE, false)\r\n }\r\n \r\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return \r\n\r\n if ((ctrlKey || metaKey) && key === KEYS.C) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n copy()\r\n }\r\n if (ctrlKey && key === KEYS.X) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n cut()\r\n }\r\n if (ctrlKey && key === KEYS.D) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n quickCopy()\r\n }\r\n if (ctrlKey && key === KEYS.Z) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n undo()\r\n }\r\n if (ctrlKey && key === KEYS.Y) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n redo()\r\n }\r\n if (ctrlKey && key === KEYS.A) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n selectAll()\r\n }\r\n if (ctrlKey && key === KEYS.L) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n lock()\r\n }\r\n if (!shiftKey && ctrlKey && key === KEYS.G) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n combine()\r\n }\r\n if (shiftKey && ctrlKey && key === KEYS.G) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n uncombine()\r\n }\r\n if (altKey && key === KEYS.F) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n order(ElementOrderCommands.TOP)\r\n }\r\n if (altKey && key === KEYS.B) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n order(ElementOrderCommands.BOTTOM)\r\n }\r\n if (key === KEYS.DELETE || key === KEYS.BACKSPACE) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n remove()\r\n }\r\n if (key === KEYS.UP) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.UP)\r\n }\r\n if (key === KEYS.DOWN) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.DOWN)\r\n }\r\n if (key === KEYS.LEFT) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.LEFT)\r\n }\r\n if (key === KEYS.RIGHT) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n move(KEYS.RIGHT)\r\n }\r\n if (key === KEYS.ENTER) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n create()\r\n }\r\n if (key === KEYS.MINUS) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n scaleCanvas('-')\r\n }\r\n if (key === KEYS.EQUAL) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n scaleCanvas('+')\r\n }\r\n if (key === KEYS.DIGIT_0) {\r\n if (disableHotkeys.value) return\r\n e.preventDefault()\r\n setCanvasPercentage(90)\r\n }\r\n }\r\n \r\n const keyupListener = () => {\r\n if (ctrlKeyActive.value) store.commit(MutationTypes.SET_CTRL_KEY_STATE, false)\r\n if (shiftKeyActive.value) store.commit(MutationTypes.SET_SHIFT_KEY_STATE, false)\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n document.addEventListener('keyup', keyupListener)\r\n window.addEventListener('blur', keyupListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n document.removeEventListener('keyup', keyupListener)\r\n window.removeEventListener('blur', keyupListener)\r\n })\r\n}","import { computed, onMounted, onUnmounted } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport usePasteTextClipboardData from './usePasteTextClipboardData'\r\nimport useCreateElement from './useCreateElement'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n\r\n const { pasteTextClipboardData } = usePasteTextClipboardData()\r\n const { createImageElement } = useCreateElement()\r\n\r\n // 粘贴图片到幻灯片元素\r\n const pasteImageFile = (imageFile: File) => {\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n\r\n /**\r\n * 粘贴事件监听\r\n * @param e ClipboardEvent\r\n */\r\n const pasteListener = (e: ClipboardEvent) => {\r\n if (!editorAreaFocus.value && !thumbnailsFocus.value) return\r\n if (disableHotkeys.value) return\r\n\r\n if (!e.clipboardData) return\r\n\r\n const clipboardDataItems = e.clipboardData.items\r\n const clipboardDataFirstItem = clipboardDataItems[0]\r\n\r\n if (!clipboardDataFirstItem) return\r\n\r\n // 如果剪贴板内有图片,优先尝试读取图片\r\n for (const item of clipboardDataItems) {\r\n if (item.kind === 'file' && item.type.indexOf('image') !== -1) {\r\n const imageFile = item.getAsFile()\r\n if (imageFile) pasteImageFile(imageFile)\r\n return\r\n }\r\n }\r\n \r\n // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容\r\n if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\r\n clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text))\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('paste', pasteListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('paste', pasteListener)\r\n })\r\n}","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n {{item.type}}
\r\n \r\n
{{hotkey.label}}
\r\n
{{hotkey.value}}
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import { render } from \"./HotkeyDoc.vue?vue&type=template&id=47d0351b&scoped=true\"\nimport script from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\nexport * from \"./HotkeyDoc.vue?vue&type=script&lang=js\"\n\nimport \"./HotkeyDoc.vue?vue&type=style&index=0&id=47d0351b&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-47d0351b\"\n\nexport default script","\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useScreening from '@/hooks/useScreening'\r\nimport useSlideHandler from '@/hooks/useSlideHandler'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport HotkeyDoc from './HotkeyDoc.vue'\r\nimport { message } from 'ant-design-vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor-header',\r\n components: {\r\n HotkeyDoc,\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const { enterScreening, enterScreeningFromStart } = useScreening()\r\n const { createSlide, deleteSlide } = useSlideHandler()\r\n const { redo, undo } = useHistorySnapshot()\r\n\r\n const editDropdownVisible = ref(false)\r\n const screenDropdownVisible = ref(false)\r\n const helpDropdownVisible = ref(false)\r\n\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const toggleGridLines = () => {\r\n store.commit(MutationTypes.SET_GRID_LINES_STATE, !showGridLines.value)\r\n }\r\n\r\n const resetSlides = () => {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n store.commit(MutationTypes.SET_SLIDES, [{\r\n id: createRandomCode(),\r\n elements: [],\r\n }])\r\n }\r\n\r\n const openDoc = () => {\r\n message.warning('作者努力编写中...')\r\n }\r\n\r\n const hotkeyDrawerVisible = ref(false)\r\n\r\n return {\r\n enterScreening,\r\n enterScreeningFromStart,\r\n createSlide,\r\n deleteSlide,\r\n redo,\r\n undo,\r\n toggleGridLines,\r\n showGridLines,\r\n resetSlides,\r\n openDoc,\r\n hotkeyDrawerVisible,\r\n editDropdownVisible,\r\n screenDropdownVisible,\r\n helpDropdownVisible,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=5aa0ae1e&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5aa0ae1e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5aa0ae1e\"\n\nexport default script","\r\n mousewheelScaleCanvas($event)\"\r\n @mousedown=\"$event => handleClickBlankArea($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n v-click-outside=\"removeEditorAreaFocus\"\r\n >\r\n
insertElementFromCreateSelection(data)\"\r\n />\r\n \r\n
\r\n
\r\n
1\"\r\n :elementList=\"elementList\"\r\n :scaleMultiElement=\"scaleMultiElement\"\r\n />\r\n 1\"\r\n :rotateElement=\"rotateElement\"\r\n :scaleElement=\"scaleElement\"\r\n :dragLineElement=\"dragLineElement\"\r\n />\r\n \r\n \r\n\r\n
\r\n \r\n 1\"\r\n :selectElement=\"selectElement\"\r\n />\r\n
\r\n
\r\n \r\n\r\n\r\n\r\n\r\n","import mitt, { Emitter } from 'mitt'\r\n\r\nexport const enum EmitterEvents {\r\n UPDATE_TEXT_STATE = 'UPDATE_TEXT_STATE',\r\n EXEC_TEXT_COMMAND = 'EXEC_TEXT_COMMAND',\r\n UPDATE_TABLE_SELECTED_CELL = 'UPDATE_TABLE_SELECTED_CELL',\r\n SCALE_ELEMENT_STATE = 'SCALE_ELEMENT_STATE',\r\n}\r\n\r\nconst emitter: Emitter = mitt()\r\n\r\nexport default emitter","// 清除文字选区\r\nexport const removeAllRanges = () => {\r\n const selection = window.getSelection()\r\n selection && selection.removeAllRanges()\r\n}","import { ref, computed, onMounted, onUnmounted, Ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\n\r\nexport default (canvasRef: Ref) => {\r\n const viewportLeft = ref(0)\r\n const viewportTop = ref(0)\r\n\r\n const store = useStore()\r\n const canvasPercentage = computed(() => store.state.canvasPercentage)\r\n\r\n // 计算画布可视区域的位置\r\n const setViewportPosition = () => {\r\n if (!canvasRef.value) return\r\n const canvasWidth = canvasRef.value.clientWidth\r\n const canvasHeight = canvasRef.value.clientHeight\r\n\r\n if (canvasHeight / canvasWidth > VIEWPORT_ASPECT_RATIO) {\r\n const viewportActualWidth = canvasWidth * (canvasPercentage.value / 100)\r\n store.commit(MutationTypes.SET_CANVAS_SCALE, viewportActualWidth / VIEWPORT_SIZE)\r\n viewportLeft.value = (canvasWidth - viewportActualWidth) / 2\r\n viewportTop.value = (canvasHeight - viewportActualWidth * VIEWPORT_ASPECT_RATIO) / 2\r\n }\r\n else {\r\n const viewportActualHeight = canvasHeight * (canvasPercentage.value / 100)\r\n store.commit(MutationTypes.SET_CANVAS_SCALE, viewportActualHeight / (VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO))\r\n viewportLeft.value = (canvasWidth - viewportActualHeight / VIEWPORT_ASPECT_RATIO) / 2\r\n viewportTop.value = (canvasHeight - viewportActualHeight) / 2\r\n }\r\n }\r\n\r\n // 可视区域缩放时,更新可视区域的位置\r\n watch(canvasPercentage, setViewportPosition)\r\n\r\n // 画布可视区域位置和大小的样式\r\n const viewportStyles = computed(() => ({\r\n width: VIEWPORT_SIZE,\r\n height: VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO,\r\n left: viewportLeft.value,\r\n top: viewportTop.value,\r\n }))\r\n\r\n // 监听画布尺寸发生变化时,更新可视区域的位置\r\n const resizeObserver = new ResizeObserver(setViewportPosition)\r\n\r\n onMounted(() => {\r\n if (canvasRef.value) resizeObserver.observe(canvasRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (canvasRef.value) resizeObserver.unobserve(canvasRef.value)\r\n })\r\n\r\n return {\r\n viewportStyles,\r\n }\r\n}","import { PPTElement } from '@/types/slides'\r\n\r\ninterface RotatedElementData {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n rotate: number;\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的矩形范围旋转后的新位置范围\r\n * @param element 元素的位置大小和旋转角度信息\r\n */\r\nexport const getRectRotatedRange = (element: RotatedElementData) => {\r\n const { left, top, width, height, rotate = 0 } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - rotate - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - rotate) * Math.PI / 180\r\n\r\n const middleLeft = left + width / 2\r\n const middleTop = top + height / 2\r\n\r\n const xAxis = [\r\n middleLeft + radius * Math.cos(tlbraRadian),\r\n middleLeft + radius * Math.cos(trblaRadian),\r\n middleLeft - radius * Math.cos(tlbraRadian),\r\n middleLeft - radius * Math.cos(trblaRadian),\r\n ]\r\n const yAxis = [\r\n middleTop - radius * Math.sin(tlbraRadian),\r\n middleTop - radius * Math.sin(trblaRadian),\r\n middleTop + radius * Math.sin(tlbraRadian),\r\n middleTop + radius * Math.sin(trblaRadian),\r\n ]\r\n\r\n return {\r\n xRange: [Math.min(...xAxis), Math.max(...xAxis)],\r\n yRange: [Math.min(...yAxis), Math.max(...yAxis)],\r\n }\r\n}\r\n\r\n/**\r\n * 计算元素在画布中的位置范围\r\n * @param element 元素信息\r\n */\r\nexport const getElementRange = (element: PPTElement) => {\r\n let minX, maxX, minY, maxY\r\n\r\n if (element.type === 'line') {\r\n minX = element.left\r\n maxX = element.left + Math.max(element.start[0], element.end[0])\r\n minY = element.top\r\n maxY = element.top + Math.max(element.start[1], element.end[1])\r\n }\r\n else if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height, rotate } = element\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n minX = xRange[0]\r\n maxX = xRange[1]\r\n minY = yRange[0]\r\n maxY = yRange[1]\r\n }\r\n else {\r\n minX = element.left\r\n maxX = element.left + element.width\r\n minY = element.top\r\n maxY = element.top + element.height\r\n }\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\n/**\r\n * 计算一组元素在画布中的位置范围\r\n * @param elementList 一组元素信息\r\n */\r\nexport const getElementListRange = (elementList: PPTElement[]) => {\r\n const leftValues: number[] = []\r\n const topValues: number[] = []\r\n const rightValues: number[] = []\r\n const bottomValues: number[] = []\r\n\r\n elementList.forEach(element => {\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n leftValues.push(minX)\r\n topValues.push(minY)\r\n rightValues.push(maxX)\r\n bottomValues.push(maxY)\r\n })\r\n\r\n const minX = Math.min(...leftValues)\r\n const maxX = Math.max(...rightValues)\r\n const minY = Math.min(...topValues)\r\n const maxY = Math.max(...bottomValues)\r\n\r\n return { minX, maxX, minY, maxY }\r\n}\r\n\r\nexport interface AlignLine {\r\n value: number;\r\n range: [number, number];\r\n}\r\n\r\n/**\r\n * 将一组对齐吸附线进行去重:同位置的的多条对齐吸附线仅留下一条,取该位置所有对齐吸附线的最大值和最小值为新的范围\r\n * @param lines 一组对齐吸附线信息\r\n */\r\nexport const uniqAlignLines = (lines: AlignLine[]) => {\r\n const uniqLines: AlignLine[] = []\r\n lines.forEach(line => {\r\n const index = uniqLines.findIndex(_line => _line.value === line.value)\r\n if (index === -1) uniqLines.push(line)\r\n else {\r\n const uniqLine = uniqLines[index]\r\n const rangeMin = Math.min(uniqLine.range[0], line.range[0])\r\n const rangeMax = Math.max(uniqLine.range[1], line.range[1])\r\n const range: [number, number] = [rangeMin, rangeMax]\r\n const _line = { value: line.value, range }\r\n uniqLines[index] = _line\r\n }\r\n })\r\n return uniqLines\r\n}","import { Ref, reactive, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementRange } from '@/utils/element'\r\n\r\nexport default (elementList: Ref, viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const mouseSelectionState = reactive({\r\n isShow: false,\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0,\r\n quadrant: 1,\r\n })\r\n\r\n // 更新鼠标框选范围\r\n const updateMouseSelection = (e: MouseEvent) => {\r\n if (!viewportRef.value) return\r\n\r\n let isMouseDown = true\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const minSelectionRange = 5\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const left = (startPageX - viewportRect.x) / canvasScale.value\r\n const top = (startPageY - viewportRect.y) / canvasScale.value\r\n\r\n // 确定框选的起始位置和其他默认值初始化\r\n mouseSelectionState.isShow = false\r\n mouseSelectionState.quadrant = 4\r\n mouseSelectionState.top = top\r\n mouseSelectionState.left = left\r\n mouseSelectionState.width = 0\r\n mouseSelectionState.height = 0\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const offsetWidth = (currentPageX - startPageX) / canvasScale.value\r\n const offsetHeight = (currentPageY - startPageY) / canvasScale.value\r\n\r\n const width = Math.abs(offsetWidth)\r\n const height = Math.abs(offsetHeight)\r\n\r\n if ( width < minSelectionRange || height < minSelectionRange ) return\r\n \r\n // 计算鼠标框选(移动)的方向\r\n // 按四个象限的位置区分,如右下角为第四象限\r\n let quadrant = 0\r\n if ( offsetWidth > 0 && offsetHeight > 0 ) quadrant = 4\r\n else if ( offsetWidth < 0 && offsetHeight < 0 ) quadrant = 1\r\n else if ( offsetWidth > 0 && offsetHeight < 0 ) quadrant = 2\r\n else if ( offsetWidth < 0 && offsetHeight > 0 ) quadrant = 3\r\n\r\n // 更新框选范围\r\n mouseSelectionState.isShow = true\r\n mouseSelectionState.quadrant = quadrant\r\n mouseSelectionState.width = width\r\n mouseSelectionState.height = height\r\n }\r\n\r\n document.onmouseup = () => {\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n isMouseDown = false\r\n\r\n // 计算画布中的元素是否处在鼠标选择范围中,处在范围中的元素设置为被选中状态\r\n let inRangeElementList: PPTElement[] = []\r\n for (let i = 0; i < elementList.value.length; i++) {\r\n const element = elementList.value[i]\r\n const mouseSelectionLeft = mouseSelectionState.left\r\n const mouseSelectionTop = mouseSelectionState.top\r\n const mouseSelectionWidth = mouseSelectionState.width\r\n const mouseSelectionHeight = mouseSelectionState.height\r\n\r\n const quadrant = mouseSelectionState.quadrant\r\n\r\n const { minX, maxX, minY, maxY } = getElementRange(element)\r\n\r\n // 计算元素是否处在框选范围内时,四个框选方向的计算方式有差异\r\n let isInclude = false\r\n if (quadrant === 4) {\r\n isInclude = minX > mouseSelectionLeft && \r\n maxX < mouseSelectionLeft + mouseSelectionWidth && \r\n minY > mouseSelectionTop && \r\n maxY < mouseSelectionTop + mouseSelectionHeight\r\n }\r\n else if (quadrant === 1) {\r\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \r\n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \r\n minY > (mouseSelectionTop - mouseSelectionHeight) && \r\n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\r\n }\r\n else if (quadrant === 2) {\r\n isInclude = minX > mouseSelectionLeft && \r\n maxX < mouseSelectionLeft + mouseSelectionWidth && \r\n minY > (mouseSelectionTop - mouseSelectionHeight) && \r\n maxY < (mouseSelectionTop - mouseSelectionHeight) + mouseSelectionHeight\r\n }\r\n else if (quadrant === 3) {\r\n isInclude = minX > (mouseSelectionLeft - mouseSelectionWidth) && \r\n maxX < (mouseSelectionLeft - mouseSelectionWidth) + mouseSelectionWidth && \r\n minY > mouseSelectionTop && \r\n maxY < mouseSelectionTop + mouseSelectionHeight\r\n }\r\n\r\n // 被锁定的元素即使在范围内,也不需要设置为选中状态\r\n if (isInclude && !element.lock) inRangeElementList.push(element)\r\n }\r\n\r\n // 如果范围内有组合元素的成员,需要该组全部成员都处在范围内,才会被设置为选中状态\r\n inRangeElementList = inRangeElementList.filter(inRangeElement => {\r\n if (inRangeElement.groupId) {\r\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\r\n const groupElementList = elementList.value.filter(element => element.groupId === inRangeElement.groupId)\r\n return groupElementList.every(groupElement => inRangeElementIdList.includes(groupElement.id))\r\n }\r\n return true\r\n })\r\n const inRangeElementIdList = inRangeElementList.map(inRangeElement => inRangeElement.id)\r\n if (inRangeElementIdList.length) store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, inRangeElementIdList)\r\n\r\n mouseSelectionState.isShow = false\r\n }\r\n }\r\n\r\n return {\r\n mouseSelectionState,\r\n updateMouseSelection,\r\n }\r\n}","import { computed, onMounted, onUnmounted, Ref } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nexport default (elementRef: Ref) => {\r\n const store = useStore()\r\n const disableHotkeys = computed(() => store.state.disableHotkeys)\r\n\r\n const { createImageElement, createTextElement } = useCreateElement()\r\n\r\n // 拖拽元素到画布中\r\n const handleDrop = (e: DragEvent) => {\r\n if (!e.dataTransfer) return\r\n const dataTransferItem = e.dataTransfer.items[0]\r\n\r\n // 检查事件对象中是否存在图片,存在则插入图片,否则继续检查是否存在文字,存在则插入文字\r\n if (dataTransferItem.kind === 'file' && dataTransferItem.type.indexOf('image') !== -1) {\r\n const imageFile = dataTransferItem.getAsFile()\r\n if (imageFile) {\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n }\r\n else if (dataTransferItem.kind === 'string' && dataTransferItem.type === 'text/plain') {\r\n dataTransferItem.getAsString(text => {\r\n if (disableHotkeys.value) return\r\n createTextElement({\r\n left: 0,\r\n top: 0,\r\n width: 600,\r\n height: 50,\r\n }, text)\r\n })\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n elementRef.value && elementRef.value.addEventListener('drop', handleDrop)\r\n\r\n document.ondragleave = e => e.preventDefault()\r\n document.ondrop = e => e.preventDefault()\r\n document.ondragenter = e => e.preventDefault()\r\n document.ondragover = e => e.preventDefault()\r\n })\r\n onUnmounted(() => {\r\n elementRef.value && elementRef.value.removeEventListener('drop', handleDrop)\r\n\r\n document.ondragleave = null\r\n document.ondrop = null\r\n document.ondragenter = null\r\n document.ondragover = null\r\n })\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTTextElement, PPTImageElement, PPTShapeElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\n/**\r\n * 计算给定坐标到原点连线的弧度\r\n * @param x 坐标x\r\n * @param y 坐标y\r\n */\r\nconst getAngleFromCoordinate = (x: number, y: number) => {\r\n const radian = Math.atan2(x, y)\r\n const angle = 180 / Math.PI * radian\r\n return angle\r\n}\r\n\r\nexport default (elementList: Ref, viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 旋转元素\r\n const rotateElement = (element: PPTTextElement | PPTImageElement | PPTShapeElement) => {\r\n let isMouseDown = true\r\n let angle = 0\r\n const elOriginRotate = element.rotate || 0\r\n\r\n const elLeft = element.left\r\n const elTop = element.top\r\n const elWidth = element.width\r\n const elHeight = element.height\r\n\r\n // 元素中心点(旋转中心点)\r\n const centerX = elLeft + elWidth / 2\r\n const centerY = elTop + elHeight / 2\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n // 计算当前鼠标位置相对元素中心点连线的角度(弧度)\r\n const mouseX = (e.pageX - viewportRect.left) / canvasScale.value\r\n const mouseY = (e.pageY - viewportRect.top) / canvasScale.value\r\n const x = mouseX - centerX\r\n const y = centerY - mouseY\r\n\r\n angle = getAngleFromCoordinate(x, y)\r\n\r\n // 靠近45倍数的角度时有吸附效果\r\n const sorptionRange = 5\r\n if ( Math.abs(angle) <= sorptionRange ) angle = 0\r\n else if ( angle > 0 && Math.abs(angle - 45) <= sorptionRange ) angle -= (angle - 45)\r\n else if ( angle < 0 && Math.abs(angle + 45) <= sorptionRange ) angle -= (angle + 45)\r\n else if ( angle > 0 && Math.abs(angle - 90) <= sorptionRange ) angle -= (angle - 90)\r\n else if ( angle < 0 && Math.abs(angle + 90) <= sorptionRange ) angle -= (angle + 90)\r\n else if ( angle > 0 && Math.abs(angle - 135) <= sorptionRange ) angle -= (angle - 135)\r\n else if ( angle < 0 && Math.abs(angle + 135) <= sorptionRange ) angle -= (angle + 135)\r\n else if ( angle > 0 && Math.abs(angle - 180) <= sorptionRange ) angle -= (angle - 180)\r\n else if ( angle < 0 && Math.abs(angle + 180) <= sorptionRange ) angle -= (angle + 180)\r\n\r\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, rotate: angle } : el)\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n if (elOriginRotate === angle) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n rotateElement,\r\n }\r\n}","export const ELEMENT_TYPE_ZH = {\r\n text: '文本',\r\n image: '图片',\r\n shape: '形状',\r\n line: '线条',\r\n chart: '图表',\r\n table: '表格',\r\n}\r\n\r\nexport const MIN_SIZE = {\r\n text: 20,\r\n image: 20,\r\n shape: 15,\r\n chart: 200,\r\n table: 20,\r\n}","import { computed, Ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTImageElement, PPTLineElement, PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandlers, AlignmentLineProps, MultiSelectRange } from '@/types/edit'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport { MIN_SIZE } from '@/configs/element'\r\nimport { AlignLine, uniqAlignLines } from '@/utils/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface RotateElementData {\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\n/**\r\n * 计算旋转后的元素八个缩放点的位置\r\n * @param element 元素原始位置大小信息\r\n * @param angle 旋转角度\r\n */\r\nconst getRotateElementPoints = (element: RotateElementData, angle: number) => {\r\n const { left, top, width, height } = element\r\n\r\n const radius = Math.sqrt( Math.pow(width, 2) + Math.pow(height, 2) ) / 2\r\n const auxiliaryAngle = Math.atan(height / width) * 180 / Math.PI\r\n\r\n const tlbraRadian = (180 - angle - auxiliaryAngle) * Math.PI / 180\r\n const trblaRadian = (auxiliaryAngle - angle) * Math.PI / 180\r\n const taRadian = (90 - angle) * Math.PI / 180\r\n const raRadian = angle * Math.PI / 180\r\n\r\n const halfWidth = width / 2\r\n const halfHeight = height / 2\r\n\r\n const middleLeft = left + halfWidth\r\n const middleTop = top + halfHeight\r\n\r\n const leftTopPoint = {\r\n left: middleLeft + radius * Math.cos(tlbraRadian),\r\n top: middleTop - radius * Math.sin(tlbraRadian),\r\n }\r\n const topPoint = {\r\n left: middleLeft + halfHeight * Math.cos(taRadian),\r\n top: middleTop - halfHeight * Math.sin(taRadian),\r\n }\r\n const rightTopPoint = {\r\n left: middleLeft + radius * Math.cos(trblaRadian),\r\n top: middleTop - radius * Math.sin(trblaRadian),\r\n }\r\n const rightPoint = {\r\n left: middleLeft + halfWidth * Math.cos(raRadian),\r\n top: middleTop + halfWidth * Math.sin(raRadian),\r\n }\r\n const rightBottomPoint = {\r\n left: middleLeft - radius * Math.cos(tlbraRadian),\r\n top: middleTop + radius * Math.sin(tlbraRadian),\r\n }\r\n const bottomPoint = {\r\n left: middleLeft - halfHeight * Math.sin(raRadian),\r\n top: middleTop + halfHeight * Math.cos(raRadian),\r\n }\r\n const leftBottomPoint = {\r\n left: middleLeft - radius * Math.cos(trblaRadian),\r\n top: middleTop + radius * Math.sin(trblaRadian),\r\n }\r\n const leftPoint = {\r\n left: middleLeft - halfWidth * Math.cos(raRadian),\r\n top: middleTop - halfWidth * Math.sin(raRadian),\r\n }\r\n\r\n return { leftTopPoint, topPoint, rightTopPoint, rightPoint, rightBottomPoint, bottomPoint, leftBottomPoint, leftPoint }\r\n}\r\n\r\n/**\r\n * 获取元素某缩放点相对的另一个点的位置,如:【上】对应【下】、【左上】对应【右下】\r\n * @param direction 当前操作的缩放点\r\n * @param points 旋转后的元素八个缩放点的位置\r\n */\r\nconst getOppositePoint = (direction: string, points: ReturnType): { left: number; top: number } => {\r\n const oppositeMap = {\r\n [OperateResizeHandlers.RIGHT_BOTTOM]: points.leftTopPoint,\r\n [OperateResizeHandlers.LEFT_BOTTOM]: points.rightTopPoint,\r\n [OperateResizeHandlers.LEFT_TOP]: points.rightBottomPoint,\r\n [OperateResizeHandlers.RIGHT_TOP]: points.leftBottomPoint,\r\n [OperateResizeHandlers.TOP]: points.bottomPoint,\r\n [OperateResizeHandlers.BOTTOM]: points.topPoint,\r\n [OperateResizeHandlers.LEFT]: points.rightPoint,\r\n [OperateResizeHandlers.RIGHT]: points.leftPoint,\r\n }\r\n return oppositeMap[direction]\r\n}\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n alignmentLines: Ref,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 缩放元素\r\n const scaleElement = (e: MouseEvent, element: Exclude, command: OperateResizeHandlers) => {\r\n let isMouseDown = true\r\n emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, true)\r\n\r\n const elOriginLeft = element.left\r\n const elOriginTop = element.top\r\n const elOriginWidth = element.width\r\n const elOriginHeight = element.height\r\n \r\n const elRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n const rotateRadian = Math.PI * elRotate / 180\r\n\r\n const fixedRatio = ctrlOrShiftKeyActive.value || ('fixedRatio' in element && element.fixedRatio)\r\n const aspectRatio = elOriginWidth / elOriginHeight\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n // 元素最小缩放限制\r\n const minSize = MIN_SIZE[element.type] || 20\r\n const getSizeWithinRange = (size: number) => size < minSize ? minSize : size\r\n\r\n let points: ReturnType\r\n let baseLeft = 0\r\n let baseTop = 0\r\n let horizontalLines: AlignLine[] = []\r\n let verticalLines: AlignLine[] = []\r\n\r\n // 旋转后的元素进行缩放时,引入基点的概念,以当前操作的缩放点相对的点为基点\r\n // 例如拖动右下角缩放时,左上角为基点,需要保持左上角不变然后修改其他的点的位置来达到所放的效果\r\n if ('rotate' in element && element.rotate) {\r\n const { left, top, width, height } = element\r\n points = getRotateElementPoints({ left, top, width, height }, elRotate)\r\n const oppositePoint = getOppositePoint(command, points)\r\n\r\n baseLeft = oppositePoint.left\r\n baseTop = oppositePoint.top\r\n }\r\n\r\n // 未旋转的元素具有缩放时的对齐吸附功能,在这处收集对齐对齐吸附线\r\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边\r\n // 其中线条和被旋转过的元素不参与吸附对齐\r\n else {\r\n const edgeWidth = VIEWPORT_SIZE\r\n const edgeHeight = VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO\r\n const isActiveGroupElement = element.id === activeGroupElementId.value\r\n \r\n for (const el of elementList.value) {\r\n if ('rotate' in el && el.rotate) continue\r\n if (el.type === 'line') continue\r\n if (isActiveGroupElement && el.id === element.id) continue\r\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\r\n\r\n const left = el.left\r\n const top = el.top\r\n const width = el.width\r\n const height = el.height\r\n const right = left + width\r\n const bottom = top + height\r\n\r\n const topLine: AlignLine = { value: top, range: [left, right] }\r\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\r\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\r\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\r\n\r\n horizontalLines.push(topLine, bottomLine)\r\n verticalLines.push(leftLine, rightLine)\r\n }\r\n\r\n // 画布可视区域的四个边界、水平中心、垂直中心\r\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\r\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\r\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\r\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\r\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\r\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\r\n\r\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\r\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\r\n \r\n horizontalLines = uniqAlignLines(horizontalLines)\r\n verticalLines = uniqAlignLines(verticalLines)\r\n }\r\n \r\n // 对齐吸附方法\r\n // 将收集到的对齐吸附线与计算的目标元素当前的位置大小相关数据做对比,差值小于设定的值时执行自动缩放校正\r\n // 水平和垂直两个方向需要分开计算\r\n const alignedAdsorption = (currentX: number | null, currentY: number | null) => {\r\n const sorptionRange = 5\r\n\r\n const _alignmentLines: AlignmentLineProps[] = []\r\n let isVerticalAdsorbed = false\r\n let isHorizontalAdsorbed = false\r\n const correctionVal = { offsetX: 0, offsetY: 0 }\r\n \r\n if (currentY || currentY === 0) {\r\n for (let i = 0; i < horizontalLines.length; i++) {\r\n const { value, range } = horizontalLines[i]\r\n const min = Math.min(...range, currentX || 0)\r\n const max = Math.max(...range, currentX || 0)\r\n \r\n if (Math.abs(currentY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n correctionVal.offsetY = currentY - value\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({ type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100 })\r\n }\r\n }\r\n }\r\n if (currentX || currentX === 0) {\r\n for (let i = 0; i < verticalLines.length; i++) {\r\n const { value, range } = verticalLines[i]\r\n const min = Math.min(...range, (currentY || 0))\r\n const max = Math.max(...range, (currentY || 0))\r\n\r\n if (Math.abs(currentX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n correctionVal.offsetX = currentX - value\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({ type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100 })\r\n }\r\n }\r\n }\r\n alignmentLines.value = _alignmentLines\r\n return correctionVal\r\n }\r\n\r\n // 开始缩放\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = currentPageX - startPageX\r\n const y = currentPageY - startPageY\r\n\r\n let width = elOriginWidth\r\n let height = elOriginHeight\r\n let left = elOriginLeft\r\n let top = elOriginTop\r\n \r\n // 元素被旋转的情况下,需要根据元素旋转的角度,重新计算需要缩放的距离(鼠标按下后移动的距离)\r\n if (elRotate) {\r\n const revisedX = (Math.cos(rotateRadian) * x + Math.sin(rotateRadian) * y) / canvasScale.value\r\n let revisedY = (Math.cos(rotateRadian) * y - Math.sin(rotateRadian) * x) / canvasScale.value\r\n\r\n // 锁定宽高比例(仅四个角可能触发,四条边不会触发)\r\n // 以水平方向上缩放的距离为基础,计算垂直方向上的缩放距离,保持二者具有相同的缩放比例\r\n if (fixedRatio) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) revisedY = revisedX / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) revisedY = -revisedX / aspectRatio\r\n }\r\n\r\n // 根据不同的操作点分别计算元素缩放后的大小和位置\r\n // 需要注意:\r\n // 此处计算的位置需要在后面重新进行校正,因为旋转后再缩放事实上会改变元素基点的位置(虽然视觉上基点保持不动,但这是【旋转】+【移动】共同作用的结果)\r\n // 但此处计算的大小不需要重新校正,因为前面已经重新计算需要缩放的距离,相当于大小已经经过了校正\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n height = getSizeWithinRange(elOriginHeight - revisedY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n height = getSizeWithinRange(elOriginHeight + revisedY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n width = getSizeWithinRange(elOriginWidth - revisedX)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n width = getSizeWithinRange(elOriginWidth + revisedX)\r\n }\r\n\r\n // 获取当前元素的基点坐标,与初始状态时的基点坐标进行对比,并计算差值进行元素位置的校正\r\n const currentPoints = getRotateElementPoints({ width, height, left, top }, elRotate)\r\n const currentOppositePoint = getOppositePoint(command, currentPoints)\r\n const currentBaseLeft = currentOppositePoint.left\r\n const currentBaseTop = currentOppositePoint.top\r\n\r\n const offsetX = currentBaseLeft - baseLeft\r\n const offsetY = currentBaseTop - baseTop\r\n\r\n left = left - offsetX\r\n top = top - offsetY\r\n }\r\n\r\n // 元素未被旋转的情况下,正常计算新的位置大小即可,无需复杂的校正等工作\r\n // 额外需要处理对齐吸附相关的操作\r\n // 锁定宽高比例相关的操作同上,不再赘述\r\n else {\r\n let moveX = x / canvasScale.value\r\n let moveY = y / canvasScale.value\r\n\r\n if (fixedRatio) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) moveY = moveX / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) moveY = -moveX / aspectRatio\r\n }\r\n\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + elOriginHeight + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = moveY * aspectRatio\r\n else moveY = moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + elOriginHeight + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = -moveY * aspectRatio\r\n else moveY = -moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + moveX, elOriginTop + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = moveY * aspectRatio\r\n else moveY = moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n const { offsetX, offsetY } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, elOriginTop + moveY)\r\n moveX = moveX - offsetX\r\n moveY = moveY - offsetY\r\n if (fixedRatio) {\r\n if (offsetY) moveX = -moveY * aspectRatio\r\n else moveY = -moveX / aspectRatio\r\n }\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n const { offsetX } = alignedAdsorption(elOriginLeft + moveX, null)\r\n moveX = moveX - offsetX\r\n width = getSizeWithinRange(elOriginWidth - moveX)\r\n left = elOriginLeft - (width - elOriginWidth)\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n const { offsetX } = alignedAdsorption(elOriginLeft + elOriginWidth + moveX, null)\r\n moveX = moveX - offsetX\r\n width = getSizeWithinRange(elOriginWidth + moveX)\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n const { offsetY } = alignedAdsorption(null, elOriginTop + moveY)\r\n moveY = moveY - offsetY\r\n height = getSizeWithinRange(elOriginHeight - moveY)\r\n top = elOriginTop - (height - elOriginHeight)\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n const { offsetY } = alignedAdsorption(null, elOriginTop + elOriginHeight + moveY)\r\n moveY = moveY - offsetY\r\n height = getSizeWithinRange(elOriginHeight + moveY)\r\n }\r\n }\r\n \r\n elementList.value = elementList.value.map(el => element.id === el.id ? { ...el, left, top, width, height } : el)\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n alignmentLines.value = []\r\n \r\n if (startPageX === e.pageX && startPageY === e.pageY) return\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n emitter.emit(EmitterEvents.SCALE_ELEMENT_STATE, false)\r\n \r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n // 多选元素缩放\r\n const scaleMultiElement = (e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandlers) => {\r\n let isMouseDown = true\r\n \r\n const { minX, maxX, minY, maxY } = range\r\n const operateWidth = maxX - minX\r\n const operateHeight = maxY - minY\r\n const aspectRatio = operateWidth / operateHeight\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = (currentPageX - startPageX) / canvasScale.value\r\n let y = (currentPageY - startPageY) / canvasScale.value\r\n\r\n // 锁定宽高比例,逻辑同上\r\n if (ctrlOrShiftKeyActive.value) {\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM || command === OperateResizeHandlers.LEFT_TOP) y = x / aspectRatio\r\n if (command === OperateResizeHandlers.LEFT_BOTTOM || command === OperateResizeHandlers.RIGHT_TOP) y = -x / aspectRatio\r\n }\r\n\r\n // 所有选中元素的整体范围\r\n let currentMinX = minX\r\n let currentMaxX = maxX\r\n let currentMinY = minY\r\n let currentMaxY = maxY\r\n\r\n if (command === OperateResizeHandlers.RIGHT_BOTTOM) {\r\n currentMaxX = maxX + x\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_BOTTOM) {\r\n currentMinX = minX + x\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT_TOP) {\r\n currentMinX = minX + x\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT_TOP) {\r\n currentMaxX = maxX + x\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.TOP) {\r\n currentMinY = minY + y\r\n }\r\n else if (command === OperateResizeHandlers.BOTTOM) {\r\n currentMaxY = maxY + y\r\n }\r\n else if (command === OperateResizeHandlers.LEFT) {\r\n currentMinX = minX + x\r\n }\r\n else if (command === OperateResizeHandlers.RIGHT) {\r\n currentMaxX = maxX + x\r\n }\r\n\r\n // 所有选中元素的整体宽高\r\n const currentOppositeWidth = currentMaxX - currentMinX\r\n const currentOppositeHeight = currentMaxY - currentMinY\r\n\r\n // 当前正在操作元素宽高占所有选中元素的整体宽高的比例\r\n let widthScale = currentOppositeWidth / operateWidth\r\n let heightScale = currentOppositeHeight / operateHeight\r\n\r\n if (widthScale <= 0) widthScale = 0\r\n if (heightScale <= 0) heightScale = 0\r\n \r\n // 根据前面计算的比例,计算并修改所有选中元素的位置大小\r\n elementList.value = elementList.value.map(el => {\r\n if ((el.type === 'image' || el.type === 'shape') && activeElementIdList.value.includes(el.id)) {\r\n const originElement = originElementList.find(originEl => originEl.id === el.id) as PPTImageElement | PPTShapeElement\r\n return {\r\n ...el,\r\n width: originElement.width * widthScale,\r\n height: originElement.height * heightScale,\r\n left: currentMinX + (originElement.left - minX) * widthScale,\r\n top: currentMinY + (originElement.top - minY) * heightScale,\r\n }\r\n }\r\n return el\r\n })\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n if (startPageX === e.pageX && startPageY === e.pageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n scaleElement,\r\n scaleMultiElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport uniq from 'lodash/uniq'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n moveElement: (e: MouseEvent, element: PPTElement) => void,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n // 选中元素\r\n const selectElement = (e: MouseEvent, element: PPTElement, canMove = true) => {\r\n if (!editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n\r\n // 如果目标元素当前未被选中,则将他设为选中状态\r\n // 此时如果按下Ctrl键或Shift键,则进入多选状态,将当前已选中的元素和目标元素一桶设置为选中状态,否则仅将目标元素设置为选中状态\r\n // 如果目标元素是分组成员,需要将该组合的其他元素一起设置为选中状态\r\n if (!activeElementIdList.value.includes(element.id)) {\r\n let newActiveIdList: string[] = []\r\n\r\n if (ctrlOrShiftKeyActive.value) {\r\n newActiveIdList = [...activeElementIdList.value, element.id]\r\n }\r\n else newActiveIdList = [element.id]\r\n \r\n if (element.groupId) {\r\n const groupMembersId: string[] = []\r\n elementList.value.forEach((el: PPTElement) => {\r\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\r\n })\r\n newActiveIdList = [...newActiveIdList, ...groupMembersId]\r\n }\r\n\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, uniq(newActiveIdList))\r\n store.commit(MutationTypes.SET_HANDLE_ELEMENT_ID, element.id)\r\n }\r\n\r\n // 如果目标元素已被选中,且按下了Ctrl键或Shift键,则取消其被选中状态\r\n // 除非目标元素是最后的一个被选中元素,或者目标元素所在的组合是最后一组选中组合\r\n // 如果目标元素是分组成员,需要将该组合的其他元素一起取消选中状态\r\n else if (ctrlOrShiftKeyActive.value) {\r\n let newActiveIdList: string[] = []\r\n\r\n if (element.groupId) {\r\n const groupMembersId: string[] = []\r\n elementList.value.forEach((el: PPTElement) => {\r\n if (el.groupId === element.groupId) groupMembersId.push(el.id)\r\n })\r\n newActiveIdList = activeElementIdList.value.filter(id => !groupMembersId.includes(id))\r\n }\r\n else {\r\n newActiveIdList = activeElementIdList.value.filter(id => id !== element.id)\r\n }\r\n\r\n if (newActiveIdList.length > 0) {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveIdList)\r\n }\r\n }\r\n\r\n // 如果目标元素已被选中,同时目标元素不是当前操作元素,则将其设置为当前操作元素\r\n else if (handleElementId.value !== element.id) {\r\n store.commit(MutationTypes.SET_HANDLE_ELEMENT_ID, element.id)\r\n }\r\n\r\n // 如果目标元素已被选中,同时也是当前操作元素,那么当目标元素在该状态下再次被点击时,将被设置为多选元素中的激活成员\r\n else if (activeGroupElementId.value !== element.id) {\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n ;(e.target as HTMLElement).onmouseup = (e: MouseEvent) => {\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) {\r\n activeGroupElementId.value = element.id\r\n ;(e.target as HTMLElement).onmouseup = null\r\n }\r\n }\r\n }\r\n\r\n if (canMove) moveElement(e, element)\r\n }\r\n\r\n // 选中页面内的全部元素\r\n const selectAllElement = () => {\r\n const unlockedElements = elementList.value.filter(el => !el.lock)\r\n const newActiveElementIdList = unlockedElements.map(el => el.id)\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, newActiveElementIdList)\r\n }\r\n\r\n return {\r\n selectElement,\r\n selectAllElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { AlignmentLineProps } from '@/types/edit'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport { getRectRotatedRange, AlignLine, uniqAlignLines } from '@/utils/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default (\r\n elementList: Ref,\r\n activeGroupElementId: Ref,\r\n alignmentLines: Ref,\r\n) => {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const dragElement = (e: MouseEvent, element: PPTElement) => {\r\n if (!activeElementIdList.value.includes(element.id)) return\r\n let isMouseDown = true\r\n\r\n const edgeWidth = VIEWPORT_SIZE\r\n const edgeHeight = VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO\r\n \r\n const sorptionRange = 5\r\n\r\n const originElementList: PPTElement[] = JSON.parse(JSON.stringify(elementList.value))\r\n const originActiveElementList = originElementList.filter(el => activeElementIdList.value.includes(el.id))\r\n \r\n const elOriginLeft = element.left\r\n const elOriginTop = element.top\r\n const elOriginWidth = element.width\r\n const elOriginHeight = ('height' in element && element.height) ? element.height : 0\r\n const elOriginRotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n let isMisoperation: boolean | null = null\r\n\r\n const isActiveGroupElement = element.id === activeGroupElementId.value\r\n\r\n // 收集对齐对齐吸附线\r\n // 包括页面内除目标元素外的其他元素在画布中的各个可吸附对齐位置:上下左右四边,水平中心、垂直中心\r\n // 其中线条和被旋转过的元素需要重新计算他们在画布中的中心点位置的范围\r\n let horizontalLines: AlignLine[] = []\r\n let verticalLines: AlignLine[] = []\r\n\r\n for (const el of elementList.value) {\r\n if (el.type === 'line') continue\r\n if (isActiveGroupElement && el.id === element.id) continue\r\n if (!isActiveGroupElement && activeElementIdList.value.includes(el.id)) continue\r\n\r\n let left, top, width, height\r\n if ('rotate' in el && el.rotate) {\r\n const { xRange, yRange } = getRectRotatedRange({\r\n left: el.left,\r\n top: el.top,\r\n width: el.width,\r\n height: el.height,\r\n rotate: el.rotate,\r\n })\r\n left = xRange[0]\r\n top = yRange[0]\r\n width = xRange[1] - xRange[0]\r\n height = yRange[1] - yRange[0]\r\n }\r\n else {\r\n left = el.left\r\n top = el.top\r\n width = el.width\r\n height = el.height\r\n }\r\n \r\n const right = left + width\r\n const bottom = top + height\r\n const centerX = top + height / 2\r\n const centerY = left + width / 2\r\n\r\n const topLine: AlignLine = { value: top, range: [left, right] }\r\n const bottomLine: AlignLine = { value: bottom, range: [left, right] }\r\n const horizontalCenterLine: AlignLine = { value: centerX, range: [left, right] }\r\n const leftLine: AlignLine = { value: left, range: [top, bottom] }\r\n const rightLine: AlignLine = { value: right, range: [top, bottom] }\r\n const verticalCenterLine: AlignLine = { value: centerY, range: [top, bottom] }\r\n\r\n horizontalLines.push(topLine, bottomLine, horizontalCenterLine)\r\n verticalLines.push(leftLine, rightLine, verticalCenterLine)\r\n }\r\n\r\n // 画布可视区域的四个边界、水平中心、垂直中心\r\n const edgeTopLine: AlignLine = { value: 0, range: [0, edgeWidth] }\r\n const edgeBottomLine: AlignLine = { value: edgeHeight, range: [0, edgeWidth] }\r\n const edgeHorizontalCenterLine: AlignLine = { value: edgeHeight / 2, range: [0, edgeWidth] }\r\n const edgeLeftLine: AlignLine = { value: 0, range: [0, edgeHeight] }\r\n const edgeRightLine: AlignLine = { value: edgeWidth, range: [0, edgeHeight] }\r\n const edgeVerticalCenterLine: AlignLine = { value: edgeWidth / 2, range: [0, edgeHeight] }\r\n\r\n horizontalLines.push(edgeTopLine, edgeBottomLine, edgeHorizontalCenterLine)\r\n verticalLines.push(edgeLeftLine, edgeRightLine, edgeVerticalCenterLine)\r\n \r\n // 对齐吸附线去重\r\n horizontalLines = uniqAlignLines(horizontalLines)\r\n verticalLines = uniqAlignLines(verticalLines)\r\n\r\n // 开始移动\r\n document.onmousemove = e => {\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n // 如果鼠标滑动距离过小,则将操作判定为误操作:\r\n // 如果误操作标记为null,表示是第一次触发移动,需要计算当前是否是误操作\r\n // 如果误操作标记为true,表示当前还处在误操作范围内,但仍然需要继续计算检查后续操作是否还处于误操作\r\n // 如果误操作标记为false,表示已经脱离了误操作范围,不需要再次计算\r\n if (isMisoperation !== false) {\r\n isMisoperation = Math.abs(startPageX - currentPageX) < sorptionRange && \r\n Math.abs(startPageY - currentPageY) < sorptionRange\r\n }\r\n if (!isMouseDown || isMisoperation) return\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value\r\n const moveY = (currentPageY - startPageY) / canvasScale.value\r\n\r\n // 基础目标位置\r\n let targetLeft = elOriginLeft + moveX\r\n let targetTop = elOriginTop + moveY\r\n\r\n // 计算目标元素在画布中的位置范围,用于吸附对齐\r\n // 需要区分单选和多选两种情况,其中多选状态下需要计算多选元素的整体范围;单选状态下需要继续区分线条、普通元素、旋转后的普通元素三种情况\r\n let targetMinX: number, targetMaxX: number, targetMinY: number, targetMaxY: number\r\n\r\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\r\n if (elOriginRotate) {\r\n const { xRange, yRange } = getRectRotatedRange({\r\n left: targetLeft,\r\n top: targetTop,\r\n width: elOriginWidth,\r\n height: elOriginHeight,\r\n rotate: elOriginRotate,\r\n })\r\n targetMinX = xRange[0]\r\n targetMaxX = xRange[1]\r\n targetMinY = yRange[0]\r\n targetMaxY = yRange[1]\r\n }\r\n else if (element.type === 'line') {\r\n targetMinX = targetLeft\r\n targetMaxX = targetLeft + Math.max(element.start[0], element.end[0])\r\n targetMinY = targetTop\r\n targetMaxY = targetTop + Math.max(element.start[1], element.end[1])\r\n }\r\n else {\r\n targetMinX = targetLeft\r\n targetMaxX = targetLeft + elOriginWidth\r\n targetMinY = targetTop\r\n targetMaxY = targetTop + elOriginHeight\r\n }\r\n }\r\n else {\r\n const leftValues = []\r\n const topValues = []\r\n const rightValues = []\r\n const bottomValues = []\r\n \r\n for (let i = 0; i < originActiveElementList.length; i++) {\r\n const element = originActiveElementList[i]\r\n const left = element.left + moveX\r\n const top = element.top + moveY\r\n const width = element.width\r\n const height = ('height' in element && element.height) ? element.height : 0\r\n const rotate = ('rotate' in element && element.rotate) ? element.rotate : 0\r\n\r\n if ('rotate' in element && element.rotate) {\r\n const { xRange, yRange } = getRectRotatedRange({ left, top, width, height, rotate })\r\n leftValues.push(xRange[0])\r\n topValues.push(yRange[0])\r\n rightValues.push(xRange[1])\r\n bottomValues.push(yRange[1])\r\n }\r\n else if (element.type === 'line') {\r\n leftValues.push(left)\r\n topValues.push(top)\r\n rightValues.push(left + Math.max(element.start[0], element.end[0]))\r\n bottomValues.push(top + Math.max(element.start[1], element.end[1]))\r\n }\r\n else {\r\n leftValues.push(left)\r\n topValues.push(top)\r\n rightValues.push(left + width)\r\n bottomValues.push(top + height)\r\n }\r\n }\r\n\r\n targetMinX = Math.min(...leftValues)\r\n targetMaxX = Math.max(...rightValues)\r\n targetMinY = Math.min(...topValues)\r\n targetMaxY = Math.max(...bottomValues)\r\n }\r\n \r\n const targetCenterX = targetMinX + (targetMaxX - targetMinX) / 2\r\n const targetCenterY = targetMinY + (targetMaxY - targetMinY) / 2\r\n\r\n // 将收集到的对齐吸附线与计算的目标元素位置范围做对比,二者的差小于设定的值时执行自动对齐校正\r\n // 水平和垂直两个方向需要分开计算\r\n const _alignmentLines: AlignmentLineProps[] = []\r\n let isVerticalAdsorbed = false\r\n let isHorizontalAdsorbed = false\r\n for (let i = 0; i < horizontalLines.length; i++) {\r\n const { value, range } = horizontalLines[i]\r\n const min = Math.min(...range, targetMinX, targetMaxX)\r\n const max = Math.max(...range, targetMinX, targetMaxX)\r\n \r\n if (Math.abs(targetMinY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetMinY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetMaxY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetMaxY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetCenterY - value) < sorptionRange && !isHorizontalAdsorbed) {\r\n targetTop = targetTop - (targetCenterY - value)\r\n isHorizontalAdsorbed = true\r\n _alignmentLines.push({type: 'horizontal', axis: {x: min - 50, y: value}, length: max - min + 100})\r\n }\r\n }\r\n for (let i = 0; i < verticalLines.length; i++) {\r\n const { value, range } = verticalLines[i]\r\n const min = Math.min(...range, targetMinY, targetMaxY)\r\n const max = Math.max(...range, targetMinY, targetMaxY)\r\n\r\n if (Math.abs(targetMinX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetMinX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetMaxX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetMaxX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n if (Math.abs(targetCenterX - value) < sorptionRange && !isVerticalAdsorbed) {\r\n targetLeft = targetLeft - (targetCenterX - value)\r\n isVerticalAdsorbed = true\r\n _alignmentLines.push({type: 'vertical', axis: {x: value, y: min - 50}, length: max - min + 100})\r\n }\r\n }\r\n alignmentLines.value = _alignmentLines\r\n \r\n // 单选状态下,或者当前选中的多个元素中存在正在操作的元素时,仅修改正在操作的元素的位置\r\n if (activeElementIdList.value.length === 1 || isActiveGroupElement) {\r\n elementList.value = elementList.value.map(el => {\r\n return el.id === element.id ? { ...el, left: targetLeft, top: targetTop } : el\r\n })\r\n }\r\n\r\n // 多选状态下,除了修改正在操作的元素的位置,其他被选中的元素也需要修改位置信息\r\n // 其他被选中的元素的位置信息通过正在操作的元素的移动偏移量来进行计算\r\n else {\r\n const handleElement = elementList.value.find(el => el.id === element.id)\r\n if (!handleElement) return\r\n\r\n elementList.value = elementList.value.map(el => {\r\n if (activeElementIdList.value.includes(el.id)) {\r\n if (el.id === element.id) {\r\n return {\r\n ...el,\r\n left: targetLeft,\r\n top: targetTop,\r\n }\r\n }\r\n return {\r\n ...el,\r\n left: el.left + (targetLeft - handleElement.left),\r\n top: el.top + (targetTop - handleElement.top),\r\n }\r\n }\r\n return el\r\n })\r\n }\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n alignmentLines.value = []\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n dragElement,\r\n }\r\n}","import { Ref, computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTLineElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\ninterface AdsorptionPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport default (elementList: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 拖拽线条端点\r\n const dragLineElement = (e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => {\r\n let isMouseDown = true\r\n\r\n const sorptionRange = 8\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const adsorptionPoints: AdsorptionPoint[] = []\r\n\r\n // 获取所有线条以外的未旋转的元素的8个缩放点作为吸附位置\r\n for (let i = 0; i < elementList.value.length; i++) {\r\n const _element = elementList.value[i]\r\n if (_element.type === 'line' || ('rotate' in _element && _element.rotate)) continue\r\n\r\n const left = _element.left\r\n const top = _element.top\r\n const width = _element.width\r\n const height = _element.height\r\n \r\n const right = left + width\r\n const bottom = top + height\r\n const centerX = top + height / 2\r\n const centerY = left + width / 2\r\n\r\n const topPoint = { x: centerY, y: top }\r\n const bottomPoint = { x: centerY, y: bottom }\r\n const leftPoint = { x: left, y: centerX }\r\n const rightPoint = { x: right, y: centerX }\r\n\r\n const leftTopPoint = { x: left, y: top }\r\n const rightTopPoint = { x: right, y: top }\r\n const leftBottomPoint = { x: left, y: bottom }\r\n const rightBottomPoint = { x: right, y: bottom }\r\n\r\n adsorptionPoints.push(\r\n topPoint,\r\n bottomPoint,\r\n leftPoint,\r\n rightPoint,\r\n leftTopPoint,\r\n rightTopPoint,\r\n leftBottomPoint,\r\n rightBottomPoint,\r\n )\r\n }\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value\r\n const moveY = (currentPageY - startPageY) / canvasScale.value\r\n \r\n // 线条起点和终点在编辑区域中的位置\r\n let startX = element.left + element.start[0]\r\n let startY = element.top + element.start[1]\r\n let endX = element.left + element.end[0]\r\n let endY = element.top + element.end[1]\r\n\r\n const mid = element.broken || element.curve || [0, 0]\r\n let midX = element.left + mid[0]\r\n let midY = element.top + mid[1]\r\n\r\n // 拖拽起点或终点的位置\r\n // 水平和垂直方向上有吸附\r\n if (command === OperateLineHandlers.START) {\r\n startX = startX + moveX\r\n startY = startY + moveY\r\n\r\n if (Math.abs(startX - endX) < sorptionRange) startX = endX\r\n if (Math.abs(startY - endY) < sorptionRange) startY = endY\r\n\r\n for (const adsorptionPoint of adsorptionPoints) {\r\n const { x, y } = adsorptionPoint\r\n if (Math.abs(x - startX) < sorptionRange && Math.abs(y - startY) < sorptionRange) {\r\n startX = x\r\n startY = y\r\n break\r\n }\r\n }\r\n }\r\n else if (command === OperateLineHandlers.END) {\r\n endX = endX + moveX\r\n endY = endY + moveY\r\n\r\n if (Math.abs(startX - endX) < sorptionRange) endX = startX\r\n if (Math.abs(startY - endY) < sorptionRange) endY = startY\r\n\r\n for (const adsorptionPoint of adsorptionPoints) {\r\n const { x, y } = adsorptionPoint\r\n if (Math.abs(x - endX) < sorptionRange && Math.abs(y - endY) < sorptionRange) {\r\n endX = x\r\n endY = y\r\n break\r\n }\r\n }\r\n }\r\n else {\r\n midX = midX + moveX\r\n midY = midY + moveY\r\n\r\n if (Math.abs(midX - startX) < sorptionRange) midX = startX\r\n if (Math.abs(midY - startY) < sorptionRange) midY = startY\r\n if (Math.abs(midX - endX) < sorptionRange) midX = endX\r\n if (Math.abs(midY - endY) < sorptionRange) midY = endY\r\n if (Math.abs(midX - (startX + endX) / 2) < sorptionRange && Math.abs(midY - (startY + endY) / 2) < sorptionRange) {\r\n midX = (startX + endX) / 2\r\n midY = (startY + endY) / 2\r\n }\r\n }\r\n\r\n // 计算更新起点和终点基于自身元素位置的坐标\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const start: [number, number] = [0, 0]\r\n const end: [number, number] = [maxX - minX, maxY - minY]\r\n if (startX > endX) {\r\n start[0] = maxX - minX\r\n end[0] = 0\r\n }\r\n if (startY > endY) {\r\n start[1] = maxY - minY\r\n end[1] = 0\r\n }\r\n\r\n elementList.value = elementList.value.map(el => {\r\n if (el.id === element.id) {\r\n const newEl: PPTLineElement = {\r\n ...(el as PPTLineElement),\r\n left: minX,\r\n top: minY,\r\n start: start,\r\n end: end,\r\n }\r\n if (command !== OperateLineHandlers.MID) {\r\n if (element.broken) newEl.broken = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n if (element.curve) newEl.curve = [(start[0] + end[0]) / 2, (start[1] + end[1]) / 2]\r\n }\r\n else {\r\n if (element.broken) newEl.broken = [midX - minX, midY - minY]\r\n if (element.curve) newEl.curve = [midX - minX, midY - minY]\r\n }\r\n return newEl\r\n }\r\n return el\r\n })\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n if (startPageX === currentPageX && startPageY === currentPageY) return\r\n\r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList.value })\r\n addHistorySnapshot()\r\n }\r\n }\r\n\r\n return {\r\n dragLineElement,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { CreateElementSelectionData, CreatingLineElement, CreatingShapeElement } from '@/types/edit'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nexport default (viewportRef: Ref) => {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n\r\n // 通过鼠标框选时的起点和终点,计算选区的位置大小\r\n const formatCreateSelection = (selectionData: CreateElementSelectionData) => {\r\n const { start, end } = selectionData\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const [startX, startY] = start\r\n const [endX, endY] = end\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const left = (minX - viewportRect.x) / canvasScale.value\r\n const top = (minY - viewportRect.y) / canvasScale.value\r\n const width = (maxX - minX) / canvasScale.value\r\n const height = (maxY - minY) / canvasScale.value\r\n\r\n return { left, top, width, height }\r\n }\r\n\r\n // 通过鼠标框选时的起点和终点,计算线条在画布中的位置和起点终点\r\n const formatCreateSelectionForLine = (selectionData: CreateElementSelectionData) => {\r\n const { start, end } = selectionData\r\n\r\n if (!viewportRef.value) return\r\n const viewportRect = viewportRef.value.getBoundingClientRect()\r\n\r\n const [startX, startY] = start\r\n const [endX, endY] = end\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const left = (minX - viewportRect.x) / canvasScale.value\r\n const top = (minY - viewportRect.y) / canvasScale.value\r\n const width = (maxX - minX) / canvasScale.value\r\n const height = (maxY - minY) / canvasScale.value\r\n\r\n const _start: [number, number] = [\r\n startX === minX ? 0 : width,\r\n startY === minY ? 0 : height,\r\n ]\r\n const _end: [number, number] = [\r\n endX === minX ? 0 : width,\r\n endY === minY ? 0 : height,\r\n ]\r\n\r\n return {\r\n left,\r\n top,\r\n start: _start,\r\n end: _end,\r\n }\r\n }\r\n\r\n const { createTextElement, createShapeElement, createLineElement } = useCreateElement()\r\n\r\n // 根据鼠标选区的位置大小插入元素\r\n const insertElementFromCreateSelection = (selectionData: CreateElementSelectionData) => {\r\n if (!creatingElement.value) return\r\n\r\n const type = creatingElement.value.type\r\n if (type === 'text') {\r\n const position = formatCreateSelection(selectionData)\r\n position && createTextElement(position)\r\n }\r\n else if (type === 'shape') {\r\n const position = formatCreateSelection(selectionData)\r\n position && createShapeElement(position, (creatingElement.value as CreatingShapeElement).data)\r\n }\r\n else if (type === 'line') {\r\n const position = formatCreateSelectionForLine(selectionData)\r\n position && createLineElement(position, (creatingElement.value as CreatingLineElement).data)\r\n }\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, null)\r\n }\r\n\r\n return {\r\n insertElementFromCreateSelection,\r\n }\r\n}","\r\n \r\n \r\n
\r\n\r\n\r\n","import { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\r\n\r\nexport interface PPTElementShadow {\r\n h: number;\r\n v: number;\r\n blur: number;\r\n color: string;\r\n}\r\n\r\nexport const enum ElementTypes {\r\n TEXT = 'text',\r\n IMAGE = 'image',\r\n SHAPE = 'shape',\r\n LINE = 'line',\r\n CHART = 'chart',\r\n TABLE = 'table',\r\n}\r\n\r\nexport interface PPTElementOutline {\r\n style?: 'dashed' | 'solid';\r\n width?: number;\r\n color?: string;\r\n}\r\n\r\nexport interface PPTTextElement {\r\n type: 'text';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n content: string;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n fill?: string;\r\n lineHeight?: number;\r\n wordSpace?: number;\r\n opacity?: number;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface ImageOrShapeFlip {\r\n x?: number;\r\n y?: number;\r\n}\r\nexport interface ImageElementFilters {\r\n 'blur'?: string;\r\n 'brightness'?: string;\r\n 'contrast'?: string;\r\n 'grayscale'?: string;\r\n 'saturate'?: string;\r\n 'hue-rotate'?: string;\r\n 'opacity'?: string;\r\n}\r\nexport interface ImageElementClip {\r\n range: [[number, number], [number, number]];\r\n shape: string;\r\n}\r\nexport interface PPTImageElement {\r\n type: 'image';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n fixedRatio: boolean;\r\n src: string;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n filters?: ImageElementFilters;\r\n clip?: ImageElementClip;\r\n flip?: ImageOrShapeFlip;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface ShapeGradient {\r\n type: 'linear' | 'radial';\r\n color: [string, string];\r\n rotate: number;\r\n}\r\nexport interface PPTShapeElement {\r\n type: 'shape';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n viewBox: number;\r\n path: string;\r\n fixedRatio: boolean;\r\n fill: string;\r\n gradient?: ShapeGradient;\r\n rotate?: number;\r\n outline?: PPTElementOutline;\r\n opacity?: number;\r\n flip?: ImageOrShapeFlip;\r\n shadow?: PPTElementShadow;\r\n}\r\n\r\nexport interface PPTLineElement {\r\n type: 'line';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n start: [number, number];\r\n end: [number, number];\r\n width: number;\r\n style: string;\r\n color: string;\r\n points: [string, string];\r\n shadow?: PPTElementShadow;\r\n broken?: [number, number];\r\n curve?: [number, number];\r\n}\r\n\r\nexport type ChartType = 'bar' | 'line' | 'pie'\r\nexport interface ChartData {\r\n labels: string[];\r\n series: number[][];\r\n}\r\nexport interface PPTChartElement {\r\n type: 'chart';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n fill?: string;\r\n chartType: ChartType;\r\n data: ChartData;\r\n options?: ILineChartOptions & IBarChartOptions & IPieChartOptions;\r\n outline?: PPTElementOutline;\r\n themeColor: string;\r\n gridColor?: string;\r\n}\r\n\r\nexport interface TableCellStyle {\r\n bold?: boolean;\r\n em?: boolean;\r\n underline?: boolean;\r\n strikethrough?: boolean;\r\n color?: string;\r\n backcolor?: string;\r\n fontsize?: string;\r\n fontname?: string;\r\n align?: string;\r\n}\r\nexport interface TableCell {\r\n id: string;\r\n colspan: number;\r\n rowspan: number;\r\n text: string;\r\n style?: TableCellStyle;\r\n}\r\nexport interface TableTheme {\r\n color: string;\r\n rowHeader: boolean;\r\n rowFooter: boolean;\r\n colHeader: boolean;\r\n colFooter: boolean;\r\n} \r\nexport interface PPTTableElement {\r\n type: 'table';\r\n id: string;\r\n left: number;\r\n top: number;\r\n lock?: boolean;\r\n groupId?: string;\r\n width: number;\r\n height: number;\r\n outline: PPTElementOutline;\r\n theme?: TableTheme;\r\n colWidths: number[];\r\n data: TableCell[][];\r\n}\r\n\r\nexport type PPTElement = PPTTextElement | PPTImageElement | PPTShapeElement | PPTLineElement | PPTChartElement | PPTTableElement\r\n\r\nexport interface PPTAnimation {\r\n elId: string;\r\n type: string;\r\n duration: number;\r\n}\r\n\r\nexport interface SlideBackground {\r\n type: 'solid' | 'image' | 'gradient';\r\n color?: string;\r\n image?: string;\r\n imageSize?: 'cover' | 'contain' | 'repeat' | 'initial';\r\n gradientType?: 'linear' | 'radial';\r\n gradientColor?: [string, string];\r\n gradientRotate?: number;\r\n}\r\n\r\nexport interface Slide {\r\n id: string;\r\n elements: PPTElement[];\r\n background?: SlideBackground;\r\n animations?: PPTAnimation[];\r\n turningMode?: 'no' | 'fade' | 'slideX' | 'slideY';\r\n}\r\n\r\nexport interface SlideTheme {\r\n backgroundColor: string;\r\n themeColor: string;\r\n fontColor: string;\r\n fontName: string;\r\n}","import { computed } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange } from '@/utils/element'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport useHistorySnapshot from './useHistorySnapshot'\r\n\r\nexport default () => {\r\n const store = useStore()\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n /**\r\n * 将所有选中的元素对齐到画布\r\n * @param command 对齐方向\r\n */\r\n const alignElementToCanvas = (command: ElementAlignCommand) => {\r\n const viewportWidth = VIEWPORT_SIZE\r\n const viewportHeight = VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n \r\n const newElementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n for (const element of newElementList) {\r\n if (!activeElementIdList.value.includes(element.id)) continue\r\n \r\n // 水平垂直居中\r\n if (command === ElementAlignCommands.CENTER) {\r\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\r\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\r\n element.top = element.top - offsetY \r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 顶部对齐\r\n if (command === ElementAlignCommands.TOP) {\r\n const offsetY = minY - 0\r\n element.top = element.top - offsetY \r\n }\r\n\r\n // 垂直居中\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const offsetY = minY + (maxY - minY) / 2 - viewportHeight / 2\r\n element.top = element.top - offsetY \r\n }\r\n\r\n // 底部对齐\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n const offsetY = maxY - viewportHeight\r\n element.top = element.top - offsetY \r\n }\r\n \r\n // 左侧对齐\r\n else if (command === ElementAlignCommands.LEFT) {\r\n const offsetX = minX - 0\r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 水平居中\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const offsetX = minX + (maxX - minX) / 2 - viewportWidth / 2\r\n element.left = element.left - offsetX \r\n }\r\n\r\n // 右侧对齐\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n const offsetX = maxX - viewportWidth\r\n element.left = element.left - offsetX \r\n }\r\n }\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n alignElementToCanvas,\r\n }\r\n}","export const enum ClipPathTypes {\r\n RECT = 'rect',\r\n ELLIPSE = 'ellipse',\r\n POLYGON = 'polygon',\r\n}\r\n\r\nexport const enum ClipPaths {\r\n RECT = 'rect',\r\n ROUNDRECT = 'roundRect',\r\n ELLIPSE = 'ellipse',\r\n TRIANGLE = 'triangle',\r\n PENTAGON = 'pentagon',\r\n RHOMBUS = 'rhombus',\r\n STAR = 'star',\r\n}\r\n\r\nexport const CLIPPATHS = {\r\n rect: {\r\n name: '矩形',\r\n type: ClipPathTypes.RECT,\r\n radius: '0',\r\n style: '',\r\n },\r\n rect2: {\r\n name: '矩形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n rect3: {\r\n name: '矩形3',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L ${width * 0.8} 0 L ${width} ${height * 0.2} L ${width} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.8} Z`\r\n },\r\n },\r\n roundRect: {\r\n name: '圆角矩形',\r\n type: ClipPathTypes.RECT,\r\n radius: '10%',\r\n style: 'inset(0 0 0 0 round 10% 10% 10% 10%)',\r\n },\r\n ellipse: {\r\n name: '圆形',\r\n type: ClipPathTypes.ELLIPSE,\r\n style: 'ellipse(50% 50% at 50% 50%)',\r\n },\r\n triangle: {\r\n name: '三角形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 0% 100%, 100% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} 0 L 0 ${height} L ${width} ${height} Z`\r\n },\r\n },\r\n triangle2: {\r\n name: '三角形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 100%, 0% 0%, 100% 0%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} ${height} L 0 0 L ${width} 0 Z`\r\n },\r\n },\r\n triangle3: {\r\n name: '三角形3',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 0% 100%, 100% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L 0 ${height} L ${width} ${height} Z`\r\n },\r\n },\r\n rhombus: {\r\n name: '菱形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} 0 L ${width} ${height * 0.5} L ${width * 0.5} ${height} L 0 ${height * 0.5} Z`\r\n },\r\n },\r\n hexagon: {\r\n name: '六边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.2} 0 L ${width * 0.8} 0 L ${width} ${height * 0.5} L ${width * 0.8} ${height} L ${width * 0.2} ${height} L 0 ${height * 0.5} Z`\r\n },\r\n },\r\n pentagon: {\r\n name: '五边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.5} 0 L ${width} ${0.38 * height} L ${0.82 * width} ${height} L ${0.18 * width} ${height} L 0 ${0.38 * height} Z`\r\n },\r\n },\r\n parallelogram: {\r\n name: '平行四边形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.3} 0 L ${width} 0 L ${width * 0.7} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n parallelogram2: {\r\n name: '平行四边形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.3} ${height} L ${width} ${height} L ${width * 0.7} 0 L 0 0 Z`\r\n },\r\n },\r\n trapezoid: {\r\n name: '梯形',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M ${width * 0.25} 0 L ${width * 0.75} 0 L ${width} ${height} L 0 ${height} Z`\r\n },\r\n },\r\n trapezoid2: {\r\n name: '梯形2',\r\n type: ClipPathTypes.POLYGON,\r\n style: 'polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)',\r\n createPath: (width: number, height: number) => {\r\n return `M 0 0 L ${width} 0 L ${width * 0.75} ${height} L ${width * 0.25} ${height} Z`\r\n },\r\n },\r\n}","\r\n handleSelectElement($event)\" \r\n >\r\n
handleClip(range)\"\r\n />\r\n \r\n
\r\n\r\n
\r\n
![\"\"\r\n]()
\r\n
\r\n
\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { PPTElementShadow } from '@/types/slides'\r\n\r\n// 计算元素的阴影样式\r\nexport default (shadow: Ref) => {\r\n const shadowStyle = computed(() => {\r\n if (shadow.value) {\r\n const { h, v, blur, color } = shadow.value\r\n return `${h}px ${v}px ${blur}px ${color}`\r\n }\r\n return ''\r\n })\r\n\r\n return {\r\n shadowStyle,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { ImageOrShapeFlip } from '@/types/slides'\r\n\r\n// 计算元素的翻转样式\r\nexport default (flip: Ref) => {\r\n const flipStyle = computed(() => {\r\n if (flip.value) {\r\n let style = ''\r\n \r\n const { x, y } = flip.value\r\n if (x && y) style = `rotateX(${x}deg) rotateY(${y}deg)`\r\n else if (x) style = `rotateX(${x}deg)`\r\n else if (y) style = `rotateY(${y}deg)`\r\n\r\n return style\r\n }\r\n return ''\r\n })\r\n\r\n return {\r\n flipStyle,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { CLIPPATHS, ClipPathTypes } from '@/configs/imageClip'\r\nimport { ImageElementClip } from '@/types/slides'\r\n\r\nexport default (clip: Ref) => {\r\n const clipShape = computed(() => {\r\n if (!clip.value) return CLIPPATHS.rect\r\n const shape = clip.value.shape || ClipPathTypes.RECT\r\n\r\n return CLIPPATHS[shape]\r\n })\r\n\r\n const imgPosition = computed(() => {\r\n if (!clip.value) {\r\n return {\r\n top: '0',\r\n left: '0',\r\n width: '100%',\r\n height: '100%',\r\n }\r\n }\r\n\r\n const [start, end] = clip.value.range\r\n\r\n const widthScale = (end[0] - start[0]) / 100\r\n const heightScale = (end[1] - start[1]) / 100\r\n const left = start[0] / widthScale\r\n const top = start[1] / heightScale\r\n\r\n return {\r\n left: -left + '%',\r\n top: -top + '%',\r\n width: 100 / widthScale + '%',\r\n height: 100 / heightScale + '%',\r\n }\r\n })\r\n\r\n return {\r\n clipShape,\r\n imgPosition,\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { ImageElementFilters } from '@/types/slides'\r\n\r\nexport default (filters: Ref) => {\r\n const filter = computed(() => {\r\n if (!filters.value) return ''\r\n let filter = ''\r\n for (const key of Object.keys(filters.value)) {\r\n filter += `${key}(${filters.value[key]}) `\r\n }\r\n return filter\r\n })\r\n\r\n return {\r\n filter,\r\n }\r\n}","\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\n\r\n// 计算边框相关属性值,主要是对默认值的处理\r\nexport default (outline: Ref) => {\r\n const outlineWidth = computed(() => outline.value?.width ?? 0)\r\n const outlineStyle = computed(() => outline.value?.style || 'solid')\r\n const outlineColor = computed(() => outline.value?.color || '#d14424')\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n}","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-rect-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n radius: {\r\n type: String,\r\n default: '0',\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageRectOutline.vue?vue&type=template&id=4126ab7f&scoped=true\"\nimport script from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageRectOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageRectOutline.vue?vue&type=style&index=0&id=4126ab7f&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4126ab7f\"\n\nexport default script","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-ellipse-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageEllipseOutline.vue?vue&type=template&id=6655f0f0&scoped=true\"\nimport script from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageEllipseOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageEllipseOutline.vue?vue&type=style&index=0&id=6655f0f0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6655f0f0\"\n\nexport default script","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'image-polygon-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n createPath: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImagePolygonOutline.vue?vue&type=template&id=8d85e878&scoped=true\"\nimport script from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ImagePolygonOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ImagePolygonOutline.vue?vue&type=style&index=0&id=8d85e878&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-8d85e878\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport useClipImage from '../useClipImage'\r\n\r\nimport ImageRectOutline from './ImageRectOutline.vue'\r\nimport ImageEllipseOutline from './ImageEllipseOutline.vue'\r\nimport ImagePolygonOutline from './ImagePolygonOutline.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-outline',\r\n components: {\r\n ImageRectOutline,\r\n ImageEllipseOutline,\r\n ImagePolygonOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape } = useClipImage(clip)\r\n\r\n return {\r\n clipShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6b56be7d\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n
![\"\"]()
\r\n\r\n
\r\n
![\"\"]()
\r\n
\r\n\r\n
moveClipRange($event)\"\r\n >\r\n
scaleClipRange($event, point)\"\r\n >\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, reactive, ref } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { ImageClipData, ImageClipDataRange, ImageClipedEmitData } from '@/types/edit'\r\n\r\ntype ScaleClipRangeType = 't-l' | 't-r' | 'b-l' | 'b-r'\r\n\r\nexport default defineComponent({\r\n name: 'image-clip-handler',\r\n props: {\r\n src: {\r\n type: String,\r\n required: true,\r\n },\r\n clipData: {\r\n type: Object as PropType,\r\n },\r\n clipPath: {\r\n type: String,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n top: {\r\n type: Number,\r\n required: true,\r\n },\r\n left: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n const clipWrapperPositionStyle = reactive({\r\n top: '0',\r\n left: '0',\r\n })\r\n const isSettingClipRange = ref(false)\r\n const currentRange = ref(null)\r\n\r\n // 获取裁剪区域信息(裁剪区域占原图的宽高比例,处在原图中的位置)\r\n const getClipDataTransformInfo = () => {\r\n const [start, end] = props.clipData ? props.clipData.range : [[0, 0], [100, 100]]\r\n\r\n const widthScale = (end[0] - start[0]) / 100\r\n const heightScale = (end[1] - start[1]) / 100\r\n const left = start[0] / widthScale\r\n const top = start[1] / heightScale\r\n\r\n return { widthScale, heightScale, left, top }\r\n }\r\n \r\n // 底层图片位置大小(遮罩区域图片)\r\n const imgPosition = computed(() => {\r\n const { widthScale, heightScale, left, top } = getClipDataTransformInfo()\r\n return {\r\n left: -left,\r\n top: -top,\r\n width: 100 / widthScale,\r\n height: 100 / heightScale,\r\n }\r\n })\r\n\r\n // 底层图片位置大小样式(遮罩区域图片)\r\n const bottomImgPositionStyle = computed(() => {\r\n return {\r\n top: imgPosition.value.top + '%',\r\n left: imgPosition.value.left + '%',\r\n width: imgPosition.value.width + '%',\r\n height: imgPosition.value.height + '%',\r\n }\r\n })\r\n\r\n // 顶层图片容器位置大小(裁剪高亮区域)\r\n const topImgWrapperPosition = reactive({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0,\r\n })\r\n\r\n // 顶层图片容器位置大小样式(裁剪高亮区域)\r\n const topImgWrapperPositionStyle = computed(() => {\r\n return {\r\n top: topImgWrapperPosition.top + '%',\r\n left: topImgWrapperPosition.left + '%',\r\n width: topImgWrapperPosition.width + '%',\r\n height: topImgWrapperPosition.height + '%',\r\n }\r\n })\r\n\r\n // 顶层图片位置大小样式(裁剪区域图片)\r\n const topImgPositionStyle = computed(() => {\r\n const bottomWidth = imgPosition.value.width\r\n const bottomHeight = imgPosition.value.height\r\n \r\n const topLeft = topImgWrapperPosition.left\r\n const topTop = topImgWrapperPosition.top\r\n const topWidth = topImgWrapperPosition.width\r\n const topHeight = topImgWrapperPosition.height\r\n \r\n return {\r\n left: -topLeft * (100 / topWidth) + '%',\r\n top: -topTop * (100 / topHeight) + '%',\r\n width: bottomWidth / topWidth * 100 + '%',\r\n height: bottomHeight / topHeight * 100 + '%',\r\n }\r\n })\r\n\r\n // 初始化裁剪位置信息\r\n const initClipPosition = () => {\r\n const { left, top } = getClipDataTransformInfo()\r\n topImgWrapperPosition.left = left\r\n topImgWrapperPosition.top = top\r\n topImgWrapperPosition.width = 100\r\n topImgWrapperPosition.height = 100\r\n \r\n clipWrapperPositionStyle.top = -top + '%'\r\n clipWrapperPositionStyle.left = -left + '%'\r\n }\r\n\r\n // 执行裁剪:计算裁剪后的图片位置大小和裁剪信息,并将数据同步出去\r\n const handleClip = () => {\r\n if (isSettingClipRange.value) return\r\n\r\n if (!currentRange.value) {\r\n emit('clip', null)\r\n return\r\n }\r\n\r\n const { left, top } = getClipDataTransformInfo()\r\n\r\n const position = {\r\n left: (topImgWrapperPosition.left - left) / 100 * props.width,\r\n top: (topImgWrapperPosition.top - top) / 100 * props.height,\r\n width: (topImgWrapperPosition.width - 100) / 100 * props.width,\r\n height: (topImgWrapperPosition.height - 100) / 100 * props.height,\r\n }\r\n\r\n const clipedEmitData: ImageClipedEmitData = {\r\n range: currentRange.value,\r\n position,\r\n }\r\n emit('clip', clipedEmitData)\r\n }\r\n\r\n // 快捷键监听:回车确认裁剪\r\n const keyboardListener = (e: KeyboardEvent) => {\r\n const key = e.key.toUpperCase()\r\n if (key === KEYS.ENTER) handleClip()\r\n }\r\n\r\n onMounted(() => {\r\n initClipPosition()\r\n document.addEventListener('keydown', keyboardListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keyboardListener)\r\n })\r\n\r\n // 计算并更新裁剪区域范围数据\r\n const updateRange = () => {\r\n const retPosition = {\r\n left: parseInt(topImgPositionStyle.value.left),\r\n top: parseInt(topImgPositionStyle.value.top),\r\n width: parseInt(topImgPositionStyle.value.width),\r\n height: parseInt(topImgPositionStyle.value.height),\r\n }\r\n\r\n const widthScale = 100 / retPosition.width\r\n const heightScale = 100 / retPosition.height\r\n\r\n const start: [number, number] = [\r\n -retPosition.left * widthScale,\r\n -retPosition.top * heightScale,\r\n ]\r\n const end: [number, number] = [\r\n widthScale * 100 + start[0],\r\n heightScale * 100 + start[1],\r\n ]\r\n\r\n currentRange.value = [start, end]\r\n }\r\n\r\n // 移动裁剪区域\r\n const moveClipRange = (e: MouseEvent) => {\r\n isSettingClipRange.value = true\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n const bottomPosition = imgPosition.value\r\n const originPositopn = {\r\n left: topImgWrapperPosition.left,\r\n top: topImgWrapperPosition.top,\r\n width: topImgWrapperPosition.width,\r\n height: topImgWrapperPosition.height,\r\n }\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\r\n const moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\r\n\r\n let targetLeft = originPositopn.left + moveX\r\n let targetTop = originPositopn.top + moveY\r\n\r\n if (targetLeft < 0) targetLeft = 0\r\n else if (targetLeft + originPositopn.width > bottomPosition.width) {\r\n targetLeft = bottomPosition.width - originPositopn.width\r\n }\r\n if (targetTop < 0) targetTop = 0\r\n else if (targetTop + originPositopn.height > bottomPosition.height) {\r\n targetTop = bottomPosition.height - originPositopn.height\r\n }\r\n \r\n topImgWrapperPosition.left = targetLeft\r\n topImgWrapperPosition.top = targetTop\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n updateRange()\r\n\r\n setTimeout(() => {\r\n isSettingClipRange.value = false\r\n }, 0)\r\n }\r\n }\r\n\r\n // 缩放裁剪区域\r\n const scaleClipRange = (e: MouseEvent, type: ScaleClipRangeType) => {\r\n isSettingClipRange.value = true\r\n let isMouseDown = true\r\n\r\n const minWidth = 50 / props.width * 100\r\n const minHeight = 50 / props.height * 100\r\n \r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n const bottomPosition = imgPosition.value\r\n const originPositopn = {\r\n left: topImgWrapperPosition.left,\r\n top: topImgWrapperPosition.top,\r\n width: topImgWrapperPosition.width,\r\n height: topImgWrapperPosition.height,\r\n }\r\n\r\n const aspectRatio = topImgWrapperPosition.width / topImgWrapperPosition.height\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n let moveX = (currentPageX - startPageX) / canvasScale.value / props.width * 100\r\n let moveY = (currentPageY - startPageY) / canvasScale.value / props.height * 100\r\n\r\n if (ctrlOrShiftKeyActive.value) {\r\n if (type === 'b-r' || type === 't-l') moveY = moveX / aspectRatio\r\n if (type === 'b-l' || type === 't-r') moveY = -moveX / aspectRatio\r\n }\r\n\r\n let targetLeft, targetTop, targetWidth, targetHeight\r\n\r\n if (type === 't-l') {\r\n if (originPositopn.left + moveX < 0) {\r\n moveX = -originPositopn.left\r\n }\r\n if (originPositopn.top + moveY < 0) {\r\n moveY = -originPositopn.top\r\n }\r\n if (originPositopn.width - moveX < minWidth) {\r\n moveX = originPositopn.width - minWidth\r\n }\r\n if (originPositopn.height - moveY < minHeight) {\r\n moveY = originPositopn.height - minHeight\r\n }\r\n targetWidth = originPositopn.width - moveX\r\n targetHeight = originPositopn.height - moveY\r\n targetLeft = originPositopn.left + moveX\r\n targetTop = originPositopn.top + moveY\r\n }\r\n else if (type === 't-r') {\r\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\r\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\r\n }\r\n if (originPositopn.top + moveY < 0) {\r\n moveY = -originPositopn.top\r\n }\r\n if (originPositopn.width + moveX < minWidth) {\r\n moveX = minWidth - originPositopn.width\r\n }\r\n if (originPositopn.height - moveY < minHeight) {\r\n moveY = originPositopn.height - minHeight\r\n }\r\n targetWidth = originPositopn.width + moveX\r\n targetHeight = originPositopn.height - moveY\r\n targetLeft = originPositopn.left\r\n targetTop = originPositopn.top + moveY\r\n }\r\n else if (type === 'b-l') {\r\n if (originPositopn.left + moveX < 0) {\r\n moveX = -originPositopn.left\r\n }\r\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\r\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\r\n }\r\n if (originPositopn.width - moveX < minWidth) {\r\n moveX = originPositopn.width - minWidth\r\n }\r\n if (originPositopn.height + moveY < minHeight) {\r\n moveY = minHeight - originPositopn.height\r\n }\r\n targetWidth = originPositopn.width - moveX\r\n targetHeight = originPositopn.height + moveY\r\n targetLeft = originPositopn.left + moveX\r\n targetTop = originPositopn.top\r\n }\r\n else {\r\n if (originPositopn.left + originPositopn.width + moveX > bottomPosition.width) {\r\n moveX = bottomPosition.width - (originPositopn.left + originPositopn.width)\r\n }\r\n if (originPositopn.top + originPositopn.height + moveY > bottomPosition.height) {\r\n moveY = bottomPosition.height - (originPositopn.top + originPositopn.height)\r\n }\r\n if (originPositopn.width + moveX < minWidth) {\r\n moveX = minWidth - originPositopn.width\r\n }\r\n if (originPositopn.height + moveY < minHeight) {\r\n moveY = minHeight - originPositopn.height\r\n }\r\n targetWidth = originPositopn.width + moveX\r\n targetHeight = originPositopn.height + moveY\r\n targetLeft = originPositopn.left\r\n targetTop = originPositopn.top\r\n }\r\n \r\n topImgWrapperPosition.left = targetLeft\r\n topImgWrapperPosition.top = targetTop\r\n topImgWrapperPosition.width = targetWidth\r\n topImgWrapperPosition.height = targetHeight\r\n }\r\n\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n updateRange()\r\n\r\n setTimeout(() => isSettingClipRange.value = false, 0)\r\n }\r\n }\r\n\r\n return {\r\n clipWrapperPositionStyle,\r\n bottomImgPositionStyle,\r\n topImgWrapperPositionStyle,\r\n topImgPositionStyle,\r\n handleClip,\r\n moveClipRange,\r\n scaleClipRange,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageClipHandler.vue?vue&type=template&id=1d9b5032&scoped=true\"\nimport script from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageClipHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageClipHandler.vue?vue&type=style&index=0&id=1d9b5032&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1d9b5032\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport { ImageClipedEmitData } from '@/types/edit'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\nimport useClipImage from './useClipImage'\r\nimport useFilter from './useFilter'\r\n\r\nimport ImageOutline from './ImageOutline/index.vue'\r\nimport ImageClipHandler from './ImageClipHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-image',\r\n components: {\r\n ImageOutline,\r\n ImageClipHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const clipingImageElementId = computed(() => store.state.clipingImageElementId)\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape, imgPosition } = useClipImage(clip)\r\n\r\n const filters = computed(() => props.elementInfo.filters)\r\n const { filter } = useFilter(filters)\r\n\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const handleClip = (data: ImageClipedEmitData) => {\r\n store.commit(MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID, '')\r\n \r\n if (!data) return\r\n\r\n const { range, position } = data\r\n const originClip = props.elementInfo.clip || {}\r\n \r\n const _props = {\r\n clip: { ...originClip, range },\r\n left: props.elementInfo.left + position.left,\r\n top: props.elementInfo.top + position.top,\r\n width: props.elementInfo.width + position.width,\r\n height: props.elementInfo.height + position.height,\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: props.elementInfo.id, props: _props })\r\n }\r\n\r\n return {\r\n isCliping,\r\n handleClip,\r\n clipingImageElementId,\r\n shadowStyle,\r\n handleSelectElement,\r\n clipShape,\r\n imgPosition,\r\n filter,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=5e75c7ca&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=5e75c7ca&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5e75c7ca\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n
\r\n
handleSelectElement($event, false)\"\r\n >
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { splitListItem, liftListItem, sinkListItem } from 'prosemirror-schema-list'\r\nimport { Schema } from 'prosemirror-model'\r\nimport { undo, redo } from 'prosemirror-history'\r\nimport { undoInputRule } from 'prosemirror-inputrules'\r\nimport {\r\n toggleMark,\r\n selectParentNode,\r\n joinUp,\r\n joinDown,\r\n Command,\r\n} from 'prosemirror-commands'\r\n\r\nexport const buildKeymap = (schema: Schema) => {\r\n const keys = {}\r\n const bind = (key: string, cmd: Command) => keys[key] = cmd\r\n\r\n bind('Alt-ArrowUp', joinUp)\r\n bind('Alt-ArrowDown', joinDown)\r\n bind('Ctrl-z', undo)\r\n bind('Ctrl-y', redo)\r\n bind('Backspace', undoInputRule)\r\n bind('Escape', selectParentNode)\r\n bind('Ctrl-b', toggleMark(schema.marks.strong))\r\n bind('Ctrl-i', toggleMark(schema.marks.em))\r\n bind('Ctrl-u', toggleMark(schema.marks.underline))\r\n bind('Ctrl-d', toggleMark(schema.marks.strikethrough))\r\n\r\n bind('Enter', splitListItem(schema.nodes.list_item))\r\n bind('Mod-[', liftListItem(schema.nodes.list_item))\r\n bind('Mod-]', sinkListItem(schema.nodes.list_item))\r\n\r\n return keys\r\n}","import { NodeType, Schema } from 'prosemirror-model'\r\nimport {\r\n inputRules,\r\n wrappingInputRule,\r\n textblockTypeInputRule,\r\n smartQuotes,\r\n emDash,\r\n ellipsis,\r\n} from 'prosemirror-inputrules'\r\n\r\nconst blockQuoteRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*>\\s$/, nodeType)\r\n\r\nconst orderedListRule = (nodeType: NodeType) => (\r\n wrappingInputRule(\r\n /^(\\d+)\\.\\s$/, \r\n nodeType, \r\n match => ({order: +match[1]}),\r\n (match, node) => node.childCount + node.attrs.order === +match[1],\r\n )\r\n)\r\n\r\nconst bulletListRule = (nodeType: NodeType) => wrappingInputRule(/^\\s*([-+*])\\s$/, nodeType)\r\n\r\nconst codeBlockRule = (nodeType: NodeType) => textblockTypeInputRule(/^```$/, nodeType)\r\n\r\nexport const buildInputRules = (schema: Schema) => {\r\n const rules = [\r\n ...smartQuotes,\r\n ellipsis,\r\n emDash,\r\n ]\r\n rules.push(blockQuoteRule(schema.nodes.blockquote))\r\n rules.push(orderedListRule(schema.nodes.ordered_list))\r\n rules.push(bulletListRule(schema.nodes.bullet_list))\r\n rules.push(codeBlockRule(schema.nodes.code_block))\r\n\r\n return inputRules({ rules })\r\n}","import { keymap } from 'prosemirror-keymap'\r\nimport { Schema } from 'prosemirror-model'\r\nimport { history } from 'prosemirror-history'\r\nimport { baseKeymap } from 'prosemirror-commands'\r\nimport { dropCursor } from 'prosemirror-dropcursor'\r\nimport { gapCursor } from 'prosemirror-gapcursor'\r\n\r\nimport { buildKeymap } from './keymap'\r\nimport { buildInputRules } from './inputrules'\r\n\r\nexport const buildPlugins = (schema: Schema) => {\r\n return [\r\n buildInputRules(schema),\r\n keymap(buildKeymap(schema)),\r\n keymap(baseKeymap),\r\n dropCursor(),\r\n gapCursor(),\r\n history(),\r\n ]\r\n}","import { nodes } from 'prosemirror-schema-basic'\r\nimport { Node, NodeSpec } from 'prosemirror-model'\r\nimport { orderedList, bulletList, listItem } from 'prosemirror-schema-list'\r\n\r\nconst _orderedList: NodeSpec = {\r\n ...orderedList,\r\n content: 'list_item+',\r\n group: 'block',\r\n}\r\n\r\nconst _bulletList: NodeSpec = {\r\n ...bulletList,\r\n content: 'list_item+',\r\n group: 'block',\r\n}\r\n\r\nconst _listItem: NodeSpec = {\r\n ...listItem,\r\n content: 'paragraph block*',\r\n group: 'block',\r\n}\r\n\r\nconst paragraph: NodeSpec = {\r\n attrs: {\r\n align: {\r\n default: '',\r\n },\r\n },\r\n content: 'inline*',\r\n group: 'block',\r\n parseDOM: [\r\n {\r\n tag: 'p',\r\n getAttrs: dom => {\r\n const { textAlign } = (dom as HTMLElement).style\r\n let align = (dom as HTMLElement).getAttribute('align') || textAlign || ''\r\n align = /(left|right|center|justify)/.test(align) ? align : ''\r\n \r\n return { align }\r\n }\r\n }\r\n ],\r\n toDOM: (node: Node) => {\r\n const { align } = node.attrs\r\n let style = ''\r\n if (align && align !== 'left') style += `text-align: ${align};`\r\n\r\n return ['p', { style }, 0]\r\n },\r\n}\r\n\r\nexport default {\r\n ...nodes,\r\n 'ordered_list': _orderedList,\r\n 'bullet_list': _bulletList,\r\n 'list_item': _listItem,\r\n paragraph,\r\n}\r\n","import { marks } from 'prosemirror-schema-basic'\r\nimport { MarkSpec } from 'prosemirror-model'\r\n\r\nconst subscript: MarkSpec = {\r\n excludes: 'subscript',\r\n parseDOM: [\r\n { tag: 'sub' },\r\n {\r\n style: 'vertical-align',\r\n getAttrs: value => value === 'sub' && null\r\n },\r\n ],\r\n toDOM: () => ['sub', 0],\r\n}\r\n\r\nconst superscript: MarkSpec = {\r\n excludes: 'superscript',\r\n parseDOM: [\r\n { tag: 'sup' },\r\n {\r\n style: 'vertical-align',\r\n getAttrs: value => value === 'super' && null\r\n },\r\n ],\r\n toDOM: () => ['sup', 0],\r\n}\r\n\r\nconst strikethrough: MarkSpec = {\r\n parseDOM: [\r\n { tag: 'strike' },\r\n {\r\n style: 'text-decoration',\r\n getAttrs: value => value === 'line-through' && null\r\n },\r\n {\r\n style: 'text-decoration-line',\r\n getAttrs: value => value === 'line-through' && null\r\n },\r\n ],\r\n toDOM: () => ['span', { style: 'text-decoration-line: line-through' }, 0],\r\n}\r\n\r\nconst underline: MarkSpec = {\r\n parseDOM: [\r\n { tag: 'u' },\r\n {\r\n style: 'text-decoration',\r\n getAttrs: value => value === 'underline' && null\r\n },\r\n {\r\n style: 'text-decoration-line',\r\n getAttrs: value => value === 'underline' && null\r\n },\r\n ],\r\n toDOM: () => ['span', { style: 'text-decoration: underline' }, 0],\r\n}\r\n\r\nconst forecolor: MarkSpec = {\r\n attrs: {\r\n color: {},\r\n },\r\n parseDOM: [\r\n {\r\n style: 'color',\r\n getAttrs: color => color ? { color } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { color } = mark.attrs\r\n let style = ''\r\n if (color) style += `color: ${color};`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst backcolor: MarkSpec = {\r\n attrs: {\r\n backcolor: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n tag: 'span[style*=background-color]',\r\n getAttrs: backcolor => backcolor ? { backcolor } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { backcolor } = mark.attrs\r\n let style = ''\r\n if (backcolor) style += `background-color: ${backcolor};`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst fontsize: MarkSpec = {\r\n attrs: {\r\n fontsize: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n style: 'font-size',\r\n getAttrs: fontsize => fontsize ? { fontsize } : {}\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { fontsize } = mark.attrs\r\n let style = ''\r\n if (fontsize) style += `font-size: ${fontsize}`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nconst fontname: MarkSpec = {\r\n attrs: {\r\n fontname: {},\r\n },\r\n inline: true,\r\n group: 'inline',\r\n parseDOM: [\r\n {\r\n style: 'font-family',\r\n getAttrs: fontname => {\r\n return { fontname: fontname && typeof fontname === 'string' ? fontname.replace(/[\\\"\\']/g, '') : '' }\r\n }\r\n },\r\n ],\r\n toDOM: mark => {\r\n const { fontname } = mark.attrs\r\n let style = ''\r\n if (fontname) style += `font-family: ${fontname}`\r\n return ['span', { style }, 0]\r\n },\r\n}\r\n\r\nexport default {\r\n ...marks,\r\n subscript,\r\n superscript,\r\n strikethrough,\r\n underline,\r\n forecolor,\r\n backcolor,\r\n fontsize,\r\n fontname,\r\n}","import nodes from './nodes'\r\nimport marks from './marks'\r\n\r\nexport const schemaNodes = nodes\r\nexport const schemaMarks = marks\r\n","import { EditorState } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\nimport { Schema, DOMParser } from 'prosemirror-model'\r\n\r\nimport { buildPlugins } from './plugins/index'\r\nimport { schemaNodes, schemaMarks } from './schema/index'\r\n\r\nconst schema = new Schema({\r\n nodes: schemaNodes,\r\n marks: schemaMarks,\r\n})\r\n\r\nconst createDocument = (content: string) => {\r\n const htmlString = `${content}
`\r\n const parser = new window.DOMParser()\r\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild\r\n return DOMParser.fromSchema(schema).parse(element as Element)\r\n}\r\n\r\nexport const initProsemirrorEditor = (dom: Element, content: string, props = {}) => {\r\n return new EditorView(dom, {\r\n state: EditorState.create({\r\n doc: createDocument(content),\r\n plugins: buildPlugins(schema),\r\n }),\r\n ...props,\r\n })\r\n}","import { Node, NodeType, ResolvedPos } from 'prosemirror-model'\r\nimport { EditorState, Selection } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\n\r\nconst equalNodeType = (nodeType: NodeType, node: Node) => {\r\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType\r\n}\r\n\r\nconst findParentNodeClosestToPos = ($pos: ResolvedPos, predicate: (node: Node) => boolean) => {\r\n for (let i = $pos.depth; i > 0; i--) {\r\n const node = $pos.node(i)\r\n if (predicate(node)) {\r\n return {\r\n pos: i > 0 ? $pos.before(i) : 0,\r\n start: $pos.start(i),\r\n depth: i,\r\n node,\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const findParentNode = (predicate: (node: Node) => boolean) => {\r\n return (_ref: Selection) => findParentNodeClosestToPos(_ref.$from, predicate)\r\n}\r\n\r\nexport const findParentNodeOfType = (nodeType: NodeType) => {\r\n return (selection: Selection) => {\r\n return findParentNode((node: Node) => {\r\n return equalNodeType(nodeType, node)\r\n })(selection)\r\n }\r\n}\r\n\r\nexport const isActiveOfParentNodeType = (nodeType: string, state: EditorState) => {\r\n const node = state.schema.nodes[nodeType]\r\n return !!findParentNodeOfType(node)(state.selection)\r\n}\r\n\r\nexport const getMarkAttrs = (view: EditorView) => {\r\n const { selection, doc } = view.state\r\n const { from } = selection\r\n const node = doc.nodeAt(from)\r\n return node?.marks || []\r\n}\r\n\r\nexport const getAttrValue = (view: EditorView, markType: string, attr: string) => {\r\n const marks = getMarkAttrs(view)\r\n for (const mark of marks) {\r\n if (mark.type.name === markType && mark.attrs[attr]) return mark.attrs[attr]\r\n }\r\n return null\r\n}\r\n\r\nexport const isActiveMark = (view: EditorView, markType: string) => {\r\n const marks = getMarkAttrs(view)\r\n for (const mark of marks) {\r\n if (mark.type.name === markType) return true\r\n }\r\n return false\r\n}\r\n\r\nexport const getAttrValueInSelection = (view: EditorView, attr: string) => {\r\n const { selection, doc } = view.state\r\n const { from, to } = selection\r\n\r\n let keepChecking = true\r\n let value = ''\r\n doc.nodesBetween(from, to, node => {\r\n if (keepChecking && node.attrs[attr]) {\r\n keepChecking = false\r\n value = node.attrs[attr]\r\n }\r\n return keepChecking\r\n })\r\n return value\r\n}\r\n\r\nexport const getTextAttrs = (view: EditorView) => {\r\n const isBold = isActiveMark(view, 'strong')\r\n const isEm = isActiveMark(view, 'em')\r\n const isUnderline = isActiveMark(view, 'underline')\r\n const isStrikethrough = isActiveMark(view, 'strikethrough')\r\n const isSuperscript = isActiveMark(view, 'superscript')\r\n const isSubscript = isActiveMark(view, 'subscript')\r\n const isCode = isActiveMark(view, 'code')\r\n const color = getAttrValue(view, 'forecolor', 'color') || '#000'\r\n const backcolor = getAttrValue(view, 'backcolor', 'backcolor') || '#000'\r\n const fontsize = getAttrValue(view, 'fontsize', 'fontsize') || '20px'\r\n const fontname = getAttrValue(view, 'fontname', 'fontname') || '微软雅黑'\r\n const align = getAttrValueInSelection(view, 'align') || 'left'\r\n const isBulletList = isActiveOfParentNodeType('bullet_list', view.state)\r\n const isOrderedList = isActiveOfParentNodeType('ordered_list', view.state)\r\n const isBlockquote = isActiveOfParentNodeType('blockquote', view.state)\r\n\r\n return {\r\n bold: isBold,\r\n em: isEm,\r\n underline: isUnderline,\r\n strikethrough: isStrikethrough,\r\n superscript: isSuperscript,\r\n subscript: isSubscript,\r\n code: isCode,\r\n color: color,\r\n backcolor: backcolor,\r\n fontsize: fontsize,\r\n fontname: fontname,\r\n align: align,\r\n bulletList: isBulletList,\r\n orderedList: isOrderedList,\r\n blockquote: isBlockquote,\r\n }\r\n}\r\n\r\nexport type TextAttrs = ReturnType","import { Schema, Node, NodeType } from 'prosemirror-model'\r\nimport { Transaction } from 'prosemirror-state'\r\nimport { EditorView } from 'prosemirror-view'\r\n\r\nexport const setTextAlign = (tr: Transaction, schema: Schema, alignment: string) => {\r\n const { selection, doc } = tr\r\n if (!selection || !doc) return tr\r\n\r\n const { from, to } = selection\r\n const { nodes } = schema\r\n\r\n const blockquote = nodes.blockquote\r\n const listItem = nodes.list_item\r\n const paragraph = nodes.paragraph\r\n\r\n interface Task {\r\n node: Node;\r\n pos: number;\r\n nodeType: NodeType;\r\n }\r\n\r\n const tasks: Task[] = []\r\n alignment = alignment || ''\r\n\r\n const allowedNodeTypes = new Set([blockquote, listItem, paragraph])\r\n\r\n doc.nodesBetween(from, to, (node, pos) => {\r\n const nodeType = node.type\r\n const align = node.attrs.align || ''\r\n if (align !== alignment && allowedNodeTypes.has(nodeType)) {\r\n tasks.push({\r\n node,\r\n pos,\r\n nodeType,\r\n })\r\n }\r\n return true\r\n })\r\n\r\n if (!tasks.length) return tr\r\n\r\n tasks.forEach(task => {\r\n const { node, pos, nodeType } = task\r\n let { attrs } = node\r\n if (alignment) attrs = { ...attrs, align: alignment }\r\n else attrs = { ...attrs, align: null }\r\n tr = tr.setNodeMarkup(pos, nodeType, attrs, node.marks)\r\n })\r\n\r\n return tr\r\n}\r\n\r\nexport const alignmentCommand = (view: EditorView, alignment: string) => {\r\n const { state } = view\r\n const { schema, selection } = state\r\n const tr = setTextAlign(\r\n state.tr.setSelection(selection),\r\n schema,\r\n alignment,\r\n )\r\n view.dispatch(tr)\r\n}","import { wrapInList, liftListItem } from 'prosemirror-schema-list'\r\nimport { Schema, Node, NodeType } from 'prosemirror-model'\r\nimport { Transaction, EditorState } from 'prosemirror-state'\r\nimport { findParentNode } from '../utils'\r\n\r\nconst isList = (node: Node, schema: Schema) => {\r\n return (\r\n node.type === schema.nodes.bullet_list ||\r\n node.type === schema.nodes.ordered_list\r\n )\r\n}\r\n\r\nexport const toggleList = (listType: NodeType, itemType: NodeType) => {\r\n return (state: EditorState, dispatch: (tr: Transaction) => void) => {\r\n const { schema, selection } = state\r\n const { $from, $to } = selection\r\n const range = $from.blockRange($to)\r\n\r\n if (!range) return false\r\n\r\n const parentList = findParentNode((node: Node) => isList(node, schema))(selection)\r\n\r\n if (range.depth >= 1 && parentList && range.depth - parentList.depth <= 1) {\r\n if (parentList.node.type === listType) {\r\n return liftListItem(itemType)(state, dispatch)\r\n }\r\n\r\n if (isList(parentList.node, schema) && listType.validContent(parentList.node.content)) {\r\n const { tr } = state\r\n tr.setNodeMarkup(parentList.pos, listType)\r\n\r\n if (dispatch) dispatch(tr)\r\n\r\n return false\r\n }\r\n }\r\n\r\n return wrapInList(listType)(state, dispatch)\r\n }\r\n}\r\n","\r\n \r\n \r\n\t\r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent, toRef } from 'vue'\r\nimport { PPTElementOutline } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\n\r\nexport default defineComponent({\r\n name: 'element-outline',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType\r\n },\r\n },\r\n setup(props) {\r\n const {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n } = useElementOutline(toRef(props, 'outline'))\r\n\r\n return {\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=2ddaa919&scoped=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=2ddaa919&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2ddaa919\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport debounce from 'lodash/debounce'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { EditorView } from 'prosemirror-view'\r\nimport { toggleMark, wrapIn, selectAll } from 'prosemirror-commands'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { initProsemirrorEditor } from '@/prosemirror/'\r\nimport { getTextAttrs } from '@/prosemirror/utils'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport { alignmentCommand } from '@/prosemirror/commands/setTextAlign'\r\nimport { toggleList } from '@/prosemirror/commands/toggleList'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\ninterface CommandPayload {\r\n command: string;\r\n value?: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-text',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const elementRef = ref()\r\n\r\n const isScaling = ref(false)\r\n const realHeightCache = ref(-1)\r\n\r\n const editorViewRef = ref()\r\n let editorView: EditorView\r\n\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n\r\n const handleSelectElement = (e: MouseEvent, canMove = true) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo, canMove)\r\n }\r\n\r\n // 监听文本元素的尺寸变化,当高度变化时,更新高度到vuex\r\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\r\n const scaleElementStateListener = (state: boolean) => {\r\n isScaling.value = state\r\n\r\n if (!state && realHeightCache.value !== -1) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeightCache.value },\r\n })\r\n realHeightCache.value = -1\r\n }\r\n }\r\n\r\n emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n })\r\n\r\n const updateTextElementHeight = (entries: ResizeObserverEntry[]) => {\r\n const contentRect = entries[0].contentRect\r\n if (!elementRef.value) return\r\n\r\n const realHeight = contentRect.height\r\n\r\n if (props.elementInfo.height !== realHeight) {\r\n if (!isScaling.value) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeight },\r\n })\r\n }\r\n else realHeightCache.value = realHeight\r\n }\r\n }\r\n const resizeObserver = new ResizeObserver(updateTextElementHeight)\r\n\r\n onMounted(() => {\r\n if (elementRef.value) resizeObserver.observe(elementRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\r\n })\r\n\r\n // 富文本的各种交互事件监听:\r\n // 聚焦时取消全局快捷键事件\r\n // 输入文字时同步数据到vuex\r\n // 点击鼠标和键盘时同步富文本状态到工具栏\r\n const handleInput = debounce(function() {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { content: editorView.dom.innerHTML },\r\n })\r\n addHistorySnapshot()\r\n }, 300, { trailing: true })\r\n\r\n const handleFocus = () => {\r\n if (props.elementInfo.content === '请输入内容') {\r\n editorView.dom.innerHTML = ''\r\n handleInput()\r\n }\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, true)\r\n }\r\n\r\n const handleBlur = () => {\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, false)\r\n }\r\n\r\n const handleClick = debounce(function() {\r\n const attr = getTextAttrs(editorView)\r\n emitter.emit(EmitterEvents.UPDATE_TEXT_STATE, attr)\r\n }, 30, { trailing: true })\r\n\r\n const handleKeydown = () => {\r\n handleInput()\r\n handleClick()\r\n }\r\n\r\n // 将富文本内容同步到DOM\r\n const textContent = computed(() => props.elementInfo.content)\r\n watch(textContent, () => {\r\n if (!editorView) return\r\n if (editorView.hasFocus()) return\r\n editorView.dom.innerHTML = textContent.value\r\n })\r\n\r\n // 打开/关闭编辑器的编辑模式\r\n const editable = computed(() => !props.elementInfo.lock)\r\n watch(editable, () => {\r\n editorView.setProps({ editable: () => editable.value })\r\n })\r\n\r\n // Prosemirror编辑器的初始化和卸载\r\n onMounted(() => {\r\n editorView = initProsemirrorEditor((editorViewRef.value as Element), textContent.value, {\r\n handleDOMEvents: {\r\n focus: handleFocus,\r\n blur: handleBlur,\r\n keydown: handleKeydown,\r\n click: handleClick,\r\n },\r\n editable: () => editable.value,\r\n })\r\n })\r\n onUnmounted(() => {\r\n editorView && editorView.destroy()\r\n })\r\n \r\n // 执行富文本命令(可以是一个或多个)\r\n // 部分命令在执行前先判断当前选区是否为空,如果选区为空先进行全选操作\r\n const execCommand = (payload: CommandPayload | CommandPayload[]) => {\r\n if (handleElementId.value !== props.elementInfo.id) return\r\n\r\n const commands = ('command' in payload) ? [payload] : payload\r\n\r\n for (const item of commands) {\r\n if (item.command === 'fontname' && item.value) {\r\n const mark = editorView.state.schema.marks.fontname.create({ fontname: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'fontsize' && item.value) {\r\n const mark = editorView.state.schema.marks.fontsize.create({ fontsize: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'color' && item.value) {\r\n const mark = editorView.state.schema.marks.forecolor.create({ color: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'backcolor' && item.value) {\r\n const mark = editorView.state.schema.marks.backcolor.create({ backcolor: item.value })\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.addMark($from.pos, $to.pos, mark))\r\n }\r\n else if (item.command === 'bold') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.strong)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'em') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.em)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'underline') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.underline)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'strikethrough') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n toggleMark(editorView.state.schema.marks.strikethrough)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'subscript') {\r\n toggleMark(editorView.state.schema.marks.subscript)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'superscript') {\r\n toggleMark(editorView.state.schema.marks.superscript)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'blockquote') {\r\n wrapIn(editorView.state.schema.nodes.blockquote)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'code') {\r\n toggleMark(editorView.state.schema.marks.code)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'align' && item.value) {\r\n alignmentCommand(editorView, item.value)\r\n }\r\n else if (item.command === 'bulletList') {\r\n const { bullet_list: bulletList, list_item: listItem } = editorView.state.schema.nodes\r\n toggleList(bulletList, listItem)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'orderedList') {\r\n const { ordered_list: orderedList, list_item: listItem } = editorView.state.schema.nodes\r\n toggleList(orderedList, listItem)(editorView.state, editorView.dispatch)\r\n }\r\n else if (item.command === 'clear') {\r\n const { empty } = editorView.state.selection\r\n if (empty) selectAll(editorView.state, editorView.dispatch)\r\n const { $from, $to } = editorView.state.selection\r\n editorView.dispatch(editorView.state.tr.removeMark($from.pos, $to.pos))\r\n }\r\n }\r\n\r\n editorView.focus()\r\n handleInput()\r\n handleClick()\r\n }\r\n\r\n emitter.on(EmitterEvents.EXEC_TEXT_COMMAND, payload => execCommand(payload))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.EXEC_TEXT_COMMAND, payload => execCommand(payload))\r\n })\r\n\r\n return {\r\n elementRef,\r\n editorViewRef,\r\n handleSelectElement,\r\n shadowStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6769a5f7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6769a5f7&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6769a5f7\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n","\r\nimport { defineComponent, PropType } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'gradient-defs',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'linear' | 'radial'>,\r\n },\r\n color1: {\r\n type: String,\r\n required: true,\r\n },\r\n color2: {\r\n type: String,\r\n required: true,\r\n },\r\n rotate: {\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n})\r\n","import { render } from \"./GradientDefs.vue?vue&type=template&id=b787d5ea\"\nimport script from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nexport * from \"./GradientDefs.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\n\r\nimport GradientDefs from './GradientDefs.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n GradientDefs,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n const outline = computed(() => props.elementInfo.outline)\r\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n return {\r\n handleSelectElement,\r\n shadowStyle,\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=a0860bd0&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=a0860bd0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a0860bd0\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\t handleSelectElement($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n >\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\t\t\r\n\t\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\n\r\nconst pathMap = {\r\n dot: 'm0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z',\r\n arrow: 'M0,0 L10,5 0,10 Z',\r\n}\r\nconst rotateMap = {\r\n 'arrow-start': 180,\r\n 'arrow-end': 0,\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'line-point-marker',\r\n props: {\r\n id: {\r\n type: String,\r\n required: true,\r\n },\r\n position: {\r\n type: String as PropType<'start' | 'end'>,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType<'dot' | 'arrow'>,\r\n required: true,\r\n },\r\n color: {\r\n type: String,\r\n },\r\n baseSize: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const path = computed(() => pathMap[props.type])\r\n const rotate = computed(() => rotateMap[`${props.type}-${props.position}`] || 0)\r\n const size = computed(() => props.baseSize < 2 ? 2 : props.baseSize)\r\n\r\n return {\r\n path,\r\n rotate,\r\n size,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LinePointMarker.vue?vue&type=template&id=62085f5a\"\nimport script from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePointMarker.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nimport LinePointMarker from './LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n LinePointMarker,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const svgWidth = computed(() => {\r\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\r\n return width < 24 ? 24 : width\r\n })\r\n const svgHeight = computed(() => {\r\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\r\n return height < 24 ? 24 : height\r\n })\r\n\r\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10 6' : '0 0')\r\n\r\n const path = computed(() => {\r\n const start = props.elementInfo.start.join(',')\r\n const end = props.elementInfo.end.join(',')\r\n if (props.elementInfo.broken) {\r\n const mid = props.elementInfo.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (props.elementInfo.curve) {\r\n const mid = props.elementInfo.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n })\r\n\r\n return {\r\n handleSelectElement,\r\n shadowStyle,\r\n svgWidth,\r\n svgHeight,\r\n lineDashArray,\r\n path,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=7d3d40d6&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7d3d40d6&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7d3d40d6\"\n\nexport default script","\r\n handleSelectElement($event)\"\r\n >\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, inject, onMounted, PropType, ref, Ref, watch } from 'vue'\r\nimport upperFirst from 'lodash/upperFirst'\r\nimport tinycolor from 'tinycolor2'\r\nimport Chartist, {\r\n IChartistLineChart,\r\n IChartistBarChart,\r\n IChartistPieChart,\r\n ILineChartOptions,\r\n IBarChartOptions,\r\n IPieChartOptions,\r\n} from 'chartist'\r\nimport { ChartData, ChartType } from '@/types/slides'\r\n\r\nimport 'chartist/dist/scss/chartist.scss'\r\n\r\nexport default defineComponent({\r\n name: 'chart',\r\n props: {\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n type: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n data: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n options: {\r\n type: Object as PropType,\r\n },\r\n themeColor: {\r\n type: String,\r\n required: true,\r\n },\r\n gridColor: {\r\n type: String,\r\n },\r\n },\r\n setup(props) {\r\n const chartRef = ref()\r\n const slideScale: Ref = inject('slideScale') || ref(1)\r\n\r\n let chart: IChartistLineChart | IChartistBarChart | IChartistPieChart | undefined\r\n\r\n const getDataAndOptions = () => {\r\n const propsOptopns = props.options || {}\r\n const options = {\r\n ...propsOptopns,\r\n width: props.width * slideScale.value,\r\n height: props.height * slideScale.value,\r\n }\r\n const data = props.type === 'pie' ? { ...props.data, series: props.data.series[0] } : props.data\r\n return { data, options }\r\n }\r\n\r\n const renderChart = () => {\r\n if (!chartRef.value) return\r\n\r\n const type = upperFirst(props.type)\r\n const { data, options } = getDataAndOptions()\r\n chart = new Chartist[type](chartRef.value, data, options)\r\n }\r\n\r\n const updateChart = () => {\r\n if (!chart) {\r\n renderChart()\r\n return\r\n }\r\n const { data, options } = getDataAndOptions()\r\n chart.update(data, options)\r\n }\r\n\r\n watch([\r\n () => props.width,\r\n () => props.height,\r\n () => props.data,\r\n slideScale,\r\n ], updateChart)\r\n\r\n onMounted(renderChart)\r\n\r\n // 更新主题配色:获取主题色的相近颜色作为主题配色\r\n const updateTheme = () => {\r\n if (!chartRef.value) return\r\n\r\n const colors = tinycolor(props.themeColor).analogous(10)\r\n for (let i = 0; i < 10; i++) {\r\n const color = colors[i].toRgbString()\r\n chartRef.value.style.setProperty(`--theme-color-${i + 1}`, color)\r\n }\r\n }\r\n\r\n watch(() => props.themeColor, updateTheme)\r\n onMounted(updateTheme)\r\n\r\n // 更新网格颜色,包括坐标的文字部分\r\n const updateGridColor = () => {\r\n if (!chartRef.value) return\r\n if (props.gridColor) chartRef.value.style.setProperty(`--grid-color`, props.gridColor)\r\n }\r\n\r\n watch(() => props.gridColor, updateGridColor)\r\n onMounted(updateGridColor)\r\n\r\n return {\r\n slideScale,\r\n chartRef,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Chart.vue?vue&type=template&id=233b1dc8&scoped=true\"\nimport script from \"./Chart.vue?vue&type=script&lang=ts\"\nexport * from \"./Chart.vue?vue&type=script&lang=ts\"\n\nimport \"./Chart.vue?vue&type=style&index=0&id=233b1dc8&lang=scss&scoped=true\"\nimport \"./Chart.vue?vue&type=style&index=1&id=233b1dc8&lang=scss\"\nscript.render = render\nscript.__scopeId = \"data-v-233b1dc8\"\n\nexport default script","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTChartElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n return {\r\n handleSelectElement,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=6277fc70&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6277fc70&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6277fc70\"\n\nexport default script","\r\n \r\n
\r\n
updateTableCells(data)\"\r\n @changeColWidths=\"widths => updateColWidths(widths)\"\r\n @changeSelectedCells=\"cells => updateSelectedCells(cells)\"\r\n />\r\n handleSelectElement($event)\"\r\n >\r\n
双击编辑
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
handleMousedownColHandler($event, index)\"\r\n >
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 1,\r\n 'active': activedCell === `${rowIndex}_${colIndex}`,\r\n }\"\r\n :style=\"{\r\n borderStyle: outline.style,\r\n borderColor: outline.color,\r\n borderWidth: outline.width + 'px',\r\n ...getTextStyle(cell.style),\r\n }\"\r\n v-for=\"(cell, colIndex) in rowCells\"\r\n :key=\"cell.id\"\r\n :rowspan=\"cell.rowspan\"\r\n :colspan=\"cell.colspan\"\r\n :data-cell-index=\"`${rowIndex}_${colIndex}`\"\r\n v-show=\"!hideCells.includes(`${rowIndex}_${colIndex}`)\"\r\n @mousedown=\"$event => handleCellMousedown($event, rowIndex, colIndex)\"\r\n @mouseenter=\"handleCellMouseenter(rowIndex, colIndex)\"\r\n v-contextmenu=\"el => contextmenus(el)\"\r\n >\r\n \r\n | \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","import { TableCellStyle } from '@/types/slides'\r\n\r\n/**\r\n * 计算单元格文本样式\r\n * @param style 单元格文本样式原数据\r\n */\r\nexport const getTextStyle = (style?: TableCellStyle) => {\r\n if (!style) return {}\r\n const {\r\n bold,\r\n em,\r\n underline,\r\n strikethrough,\r\n color,\r\n backcolor,\r\n fontsize,\r\n fontname,\r\n align,\r\n } = style\r\n \r\n return {\r\n fontWeight: bold ? 'bold' : 'normal',\r\n fontStyle: em ? 'italic' : 'normal',\r\n textDecoration: `${underline ? 'underline' : ''} ${strikethrough ? 'line-through' : ''}`,\r\n color: color || '#000',\r\n backgroundColor: backcolor || '',\r\n fontSize: fontsize || '14px',\r\n fontFamily: fontname || '微软雅黑',\r\n textAlign: align || 'left',\r\n }\r\n}","import { computed, Ref } from 'vue'\r\nimport { TableCell } from '@/types/slides'\r\n\r\n// 计算无效的单元格位置(被合并的单元格位置)集合\r\n\r\nexport default (cells: Ref) => {\r\n const hideCells = computed(() => {\r\n const hideCells = []\r\n \r\n for (let i = 0; i < cells.value.length; i++) {\r\n const rowCells = cells.value[i]\r\n\r\n for (let j = 0; j < rowCells.length; j++) {\r\n const cell = rowCells[j]\r\n \r\n if (cell.colspan > 1 || cell.rowspan > 1) {\r\n for (let row = i; row < i + cell.rowspan; row++) {\r\n for (let col = row === i ? j + 1 : j; col < j + cell.colspan; col++) {\r\n hideCells.push(`${row}_${col}`)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return hideCells\r\n })\r\n\r\n return {\r\n hideCells,\r\n }\r\n}","import { ref, Ref, watch } from 'vue'\r\nimport tinycolor from 'tinycolor2'\r\nimport { TableTheme } from '@/types/slides'\r\n\r\n// 通过表格的主题色计算辅助颜色\r\n\r\nexport default (theme: Ref) => {\r\n const subThemeColor = ref(['', ''])\r\n watch(() => theme.value, () => {\r\n if (theme.value) {\r\n const rgba = tinycolor(theme.value.color).toRgb()\r\n const subRgba1 = { r: rgba.r, g: rgba.g, b: rgba.b, a: rgba.a * 0.3 }\r\n const subRgba2 = { r: rgba.r, g: rgba.g, b: rgba.b, a: rgba.a * 0.1 }\r\n subThemeColor.value = [\r\n `rgba(${[subRgba1.r, subRgba1.g, subRgba1.b, subRgba1.a].join(',')})`,\r\n `rgba(${[subRgba2.r, subRgba2.g, subRgba2.b, subRgba2.a].join(',')})`,\r\n ]\r\n }\r\n }, { immediate: true })\r\n\r\n return {\r\n subThemeColor,\r\n }\r\n}","\r\n handleInput($event)\"\r\n v-html=\"text\"\r\n >
\r\n\r\n\r\n","\r\nimport { defineComponent, onUnmounted, ref, watch } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'custom-textarea',\r\n props: {\r\n modelValue: {\r\n type: String,\r\n default: '',\r\n },\r\n contenteditable: {\r\n type: [Boolean, String],\r\n default: false,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const textareaRef = ref()\r\n const text = ref('')\r\n const isFocus = ref(false)\r\n\r\n // 自定义v-modal,同步数据\r\n // 当文本框聚焦时,不执行数据同步\r\n watch(() => props.modelValue, () => {\r\n if (isFocus.value) return\r\n text.value = props.modelValue\r\n if (textareaRef.value) textareaRef.value.innerHTML = props.modelValue\r\n }, { immediate: true })\r\n\r\n const handleInput = () => {\r\n if (!textareaRef.value) return\r\n const text = textareaRef.value.innerHTML\r\n emit('update:modelValue', text)\r\n }\r\n\r\n // 聚焦时更新焦点标记,并监听粘贴事件\r\n const handleFocus = () => {\r\n isFocus.value = true\r\n\r\n if (!textareaRef.value) return\r\n textareaRef.value.onpaste = (e: ClipboardEvent) => {\r\n e.preventDefault()\r\n if (!e.clipboardData) return\r\n\r\n const clipboardDataFirstItem = e.clipboardData.items[0]\r\n\r\n if (clipboardDataFirstItem && clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') {\r\n clipboardDataFirstItem.getAsString(text => emit('update:modelValue', text))\r\n }\r\n }\r\n }\r\n\r\n // 失焦时更新焦点标记,清除粘贴事件监听\r\n const handleBlur = () => {\r\n isFocus.value = false\r\n if (textareaRef.value) textareaRef.value.onpaste = null\r\n }\r\n\r\n // 清除粘贴事件监听\r\n onUnmounted(() => {\r\n if (textareaRef.value) textareaRef.value.onpaste = null\r\n })\r\n\r\n return {\r\n textareaRef,\r\n handleFocus,\r\n handleInput,\r\n handleBlur,\r\n text,\r\n }\r\n },\r\n})\r\n","import { render } from \"./CustomTextarea.vue?vue&type=template&id=3b83d85b\"\nimport script from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextarea.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport debounce from 'lodash/debounce'\r\nimport { useStore } from '@/store'\r\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport { getTextStyle } from './utils'\r\nimport useHideCells from './useHideCells'\r\nimport useSubThemeColor from './useSubThemeColor'\r\n\r\nimport CustomTextarea from './CustomTextarea.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-table',\r\n components: {\r\n CustomTextarea,\r\n },\r\n props: {\r\n data: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n colWidths: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n theme: {\r\n type: Object as PropType,\r\n },\r\n editable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n \r\n const isStartSelect = ref(false)\r\n const startCell = ref([])\r\n const endCell = ref([])\r\n\r\n const tableCells = computed({\r\n get() {\r\n return props.data\r\n },\r\n set(newData) {\r\n emit('change', newData)\r\n },\r\n })\r\n\r\n // 主题辅助色\r\n const theme = computed(() => props.theme)\r\n const { subThemeColor } = useSubThemeColor(theme)\r\n\r\n // 计算表格每一列的列宽和总宽度\r\n const colSizeList = ref([])\r\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\r\n watch([\r\n () => props.colWidths,\r\n () => props.width,\r\n ], () => {\r\n colSizeList.value = props.colWidths.map(item => item * props.width)\r\n }, { immediate: true })\r\n \r\n // 清除全部单元格的选中状态\r\n // 表格处于不可编辑状态时也需要清除\r\n const removeSelectedCells = () => {\r\n startCell.value = []\r\n endCell.value = []\r\n }\r\n\r\n watch(() => props.editable, () => {\r\n if (!props.editable) removeSelectedCells()\r\n })\r\n\r\n // 用于拖拽列宽的操作节点位置\r\n const dragLinePosition = computed(() => {\r\n const dragLinePosition: number[] = []\r\n for (let i = 1; i < colSizeList.value.length + 1; i++) {\r\n const pos = colSizeList.value.slice(0, i).reduce((a, b) => (a + b))\r\n dragLinePosition.push(pos)\r\n }\r\n return dragLinePosition\r\n })\r\n\r\n // 无效的单元格位置(被合并的单元格位置)集合\r\n const cells = computed(() => props.data)\r\n const { hideCells } = useHideCells(cells)\r\n\r\n // 当前选中的单元格集合\r\n const selectedCells = computed(() => {\r\n if (!startCell.value.length) return []\r\n const [startX, startY] = startCell.value\r\n\r\n if (!endCell.value.length) return [`${startX}_${startY}`]\r\n const [endX, endY] = endCell.value\r\n\r\n if (startX === endX && startY === endY) return [`${startX}_${startY}`]\r\n\r\n const selectedCells = []\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n const rowCells = tableCells.value[i]\r\n for (let j = 0; j < rowCells.length; j++) {\r\n if (i >= minX && i <= maxX && j >= minY && j <= maxY) selectedCells.push(`${i}_${j}`)\r\n }\r\n }\r\n return selectedCells\r\n })\r\n\r\n watch(selectedCells, () => {\r\n emit('changeSelectedCells', selectedCells.value)\r\n })\r\n\r\n // 当前激活的单元格:当且仅当只有一个选中单元格时,该单元格为激活的单元格\r\n const activedCell = computed(() => {\r\n if (selectedCells.value.length > 1) return null\r\n return selectedCells.value[0]\r\n })\r\n\r\n // 当前选中的单元格位置范围\r\n const selectedRange = computed(() => {\r\n if (!startCell.value.length) return null\r\n const [startX, startY] = startCell.value\r\n\r\n if (!endCell.value.length) return { row: [startX, startX], col: [startY, startY] }\r\n const [endX, endY] = endCell.value\r\n\r\n if (startX === endX && startY === endY) return { row: [startX, startX], col: [startY, startY] }\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n return {\r\n row: [minX, maxX],\r\n col: [minY, maxY],\r\n }\r\n })\r\n\r\n // 设置选中单元格状态(鼠标点击或拖选)\r\n const handleMouseup = () => isStartSelect.value = false\r\n\r\n const handleCellMousedown = (e: MouseEvent, rowIndex: number, colIndex: number) => {\r\n if (e.button === 0) {\r\n endCell.value = []\r\n isStartSelect.value = true\r\n startCell.value = [rowIndex, colIndex]\r\n }\r\n }\r\n\r\n const handleCellMouseenter = (rowIndex: number, colIndex: number) => {\r\n if (!isStartSelect.value) return\r\n endCell.value = [rowIndex, colIndex]\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('mouseup', handleMouseup)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('mouseup', handleMouseup)\r\n })\r\n\r\n // 判断某位置是否为无效单元格(被合并掉的位置)\r\n const isHideCell = (rowIndex: number, colIndex: number) => hideCells.value.includes(`${rowIndex}_${colIndex}`)\r\n\r\n // 选中指定的列\r\n const selectCol = (index: number) => {\r\n const maxRow = tableCells.value.length - 1\r\n startCell.value = [0, index]\r\n endCell.value = [maxRow, index]\r\n }\r\n\r\n // 选中指定的行\r\n const selectRow = (index: number) => {\r\n const maxCol = tableCells.value[index].length - 1\r\n startCell.value = [index, 0]\r\n endCell.value = [index, maxCol]\r\n }\r\n\r\n // 选中全部单元格\r\n const selectAll = () => {\r\n const maxRow = tableCells.value.length - 1\r\n const maxCol = tableCells.value[maxRow].length - 1\r\n startCell.value = [0, 0]\r\n endCell.value = [maxRow, maxCol]\r\n }\r\n\r\n // 删除一行\r\n const deleteRow = (rowIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const targetCells = tableCells.value[rowIndex]\r\n const hideCellsPos = []\r\n for (let i = 0; i < targetCells.length; i++) {\r\n if (isHideCell(rowIndex, i)) hideCellsPos.push(i)\r\n }\r\n \r\n for (const pos of hideCellsPos) {\r\n for (let i = rowIndex; i >= 0; i--) {\r\n if (!isHideCell(i, pos)) {\r\n _tableCells[i][pos].rowspan = _tableCells[i][pos].rowspan - 1\r\n break\r\n }\r\n }\r\n }\r\n\r\n _tableCells.splice(rowIndex, 1)\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 删除一列\r\n const deleteCol = (colIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const hideCellsPos = []\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n if (isHideCell(i, colIndex)) hideCellsPos.push(i)\r\n }\r\n\r\n for (const pos of hideCellsPos) {\r\n for (let i = colIndex; i >= 0; i--) {\r\n if (!isHideCell(pos, i)) {\r\n _tableCells[pos][i].colspan = _tableCells[pos][i].colspan - 1\r\n break\r\n }\r\n }\r\n }\r\n\r\n tableCells.value = _tableCells.map(item => {\r\n item.splice(colIndex, 1)\r\n return item\r\n })\r\n colSizeList.value.splice(colIndex, 1)\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n \r\n // 插入一行\r\n const insertRow = (rowIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n const rowCells: TableCell[] = []\r\n for (let i = 0; i < _tableCells[0].length; i++) {\r\n rowCells.push({\r\n colspan: 1,\r\n rowspan: 1,\r\n text: '',\r\n id: createRandomCode(),\r\n })\r\n }\r\n\r\n _tableCells.splice(rowIndex, 0, rowCells)\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 插入一列\r\n const insertCol = (colIndex: number) => {\r\n tableCells.value = tableCells.value.map(item => {\r\n const cell = {\r\n colspan: 1,\r\n rowspan: 1,\r\n text: '',\r\n id: createRandomCode(),\r\n }\r\n item.splice(colIndex, 0, cell)\r\n return item\r\n })\r\n colSizeList.value.splice(colIndex, 0, 100)\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n \r\n // 合并单元格\r\n const mergeCells = () => {\r\n const [startX, startY] = startCell.value\r\n const [endX, endY] = endCell.value\r\n\r\n const minX = Math.min(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxX = Math.max(startX, endX)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n \r\n _tableCells[minX][minY].rowspan = maxX - minX + 1\r\n _tableCells[minX][minY].colspan = maxY - minY + 1\r\n\r\n tableCells.value = _tableCells\r\n removeSelectedCells()\r\n }\r\n\r\n // 拆分单元格\r\n const splitCells = (rowIndex: number, colIndex: number) => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n _tableCells[rowIndex][colIndex].rowspan = 1\r\n _tableCells[rowIndex][colIndex].colspan = 1\r\n\r\n tableCells.value = _tableCells\r\n removeSelectedCells()\r\n }\r\n\r\n // 鼠标拖拽调整列宽\r\n const handleMousedownColHandler = (e: MouseEvent, colIndex: number) => {\r\n removeSelectedCells()\r\n let isMouseDown = true\r\n\r\n const originWidth = colSizeList.value[colIndex]\r\n const startPageX = e.pageX\r\n\r\n const minWidth = 50\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n \r\n const moveX = (e.pageX - startPageX) / canvasScale.value\r\n const width = originWidth + moveX < minWidth ? minWidth : Math.round(originWidth + moveX)\r\n\r\n colSizeList.value[colIndex] = width\r\n }\r\n document.onmouseup = () => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n emit('changeColWidths', colSizeList.value)\r\n }\r\n }\r\n\r\n // 清空选中单元格内的文字\r\n const clearSelectedCellText = () => {\r\n const _tableCells: TableCell[][] = JSON.parse(JSON.stringify(tableCells.value))\r\n\r\n for (let i = 0; i < _tableCells.length; i++) {\r\n for (let j = 0; j < _tableCells[i].length; j++) {\r\n if (selectedCells.value.includes(`${i}_${j}`)) {\r\n _tableCells[i][j].text = ''\r\n }\r\n }\r\n }\r\n tableCells.value = _tableCells\r\n }\r\n\r\n // 将焦点移动到下一个单元格\r\n // 当前行右边有单元格时,焦点右移\r\n // 当前行右边无单元格(已处在行末),且存在下一行时,焦点移动下下一行行首\r\n // 当前行右边无单元格(已处在行末),且不存在下一行(已处在最后一行)时,新建一行并将焦点移动下下一行行首\r\n const tabActiveCell = () => {\r\n const getNextCell = (i: number, j: number): [number, number] | null => {\r\n if (!tableCells.value[i]) return null\r\n if (!tableCells.value[i][j]) return getNextCell(i + 1, 0)\r\n if (isHideCell(i, j)) return getNextCell(i, j + 1)\r\n return [i, j]\r\n }\r\n\r\n endCell.value = []\r\n\r\n const nextRow = startCell.value[0]\r\n const nextCol = startCell.value[1] + 1\r\n\r\n const nextCell = getNextCell(nextRow, nextCol)\r\n if (!nextCell) {\r\n insertRow(nextRow + 1)\r\n startCell.value = [nextRow + 1, 0]\r\n }\r\n else startCell.value = nextCell\r\n\r\n // 移动焦点后自动聚焦文本\r\n nextTick(() => {\r\n const textRef = document.querySelector('.cell-text.active') as HTMLInputElement\r\n if (textRef) textRef.focus()\r\n })\r\n }\r\n\r\n // 表格快捷键监听\r\n const keydownListener = (e: KeyboardEvent) => {\r\n if (!props.editable || !selectedCells.value.length) return\r\n\r\n const key = e.key.toUpperCase()\r\n if (selectedCells.value.length < 2) {\r\n if (key === KEYS.TAB) {\r\n e.preventDefault()\r\n tabActiveCell()\r\n }\r\n if (e.ctrlKey && key === KEYS.UP) {\r\n e.preventDefault()\r\n const rowIndex = +selectedCells.value[0].split('_')[0]\r\n insertRow(rowIndex)\r\n }\r\n if (e.ctrlKey && key === KEYS.DOWN) {\r\n e.preventDefault()\r\n const rowIndex = +selectedCells.value[0].split('_')[0]\r\n insertRow(rowIndex + 1)\r\n }\r\n if (e.ctrlKey && key === KEYS.LEFT) {\r\n e.preventDefault()\r\n const colIndex = +selectedCells.value[0].split('_')[1]\r\n insertCol(colIndex)\r\n }\r\n if (e.ctrlKey && key === KEYS.RIGHT) {\r\n e.preventDefault()\r\n const colIndex = +selectedCells.value[0].split('_')[1]\r\n insertCol(colIndex + 1)\r\n }\r\n }\r\n else if (key === KEYS.DELETE) {\r\n clearSelectedCellText()\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n })\r\n\r\n // 单元格文字输入时更新表格数据\r\n const handleInput = debounce(function() {\r\n emit('change', tableCells.value)\r\n }, 300, { trailing: true })\r\n\r\n // 获取有效的单元格(排除掉被合并的单元格)\r\n const getEffectiveTableCells = () => {\r\n const effectiveTableCells = []\r\n\r\n for (let i = 0; i < tableCells.value.length; i++) {\r\n const rowCells = tableCells.value[i]\r\n const _rowCells = []\r\n for (let j = 0; j < rowCells.length; j++) {\r\n if (!isHideCell(i, j)) _rowCells.push(rowCells[j])\r\n }\r\n if (_rowCells.length) effectiveTableCells.push(_rowCells)\r\n }\r\n\r\n return effectiveTableCells\r\n }\r\n\r\n // 检查是否可以删除行和列:有效的行/列数大于1\r\n const checkCanDeleteRowOrCol = () => {\r\n const effectiveTableCells = getEffectiveTableCells()\r\n const canDeleteRow = effectiveTableCells.length > 1\r\n const canDeleteCol = effectiveTableCells[0].length > 1\r\n\r\n return { canDeleteRow, canDeleteCol }\r\n }\r\n\r\n // 检查是否可以合并或拆分\r\n // 必须多选才可以合并\r\n // 必须单选且所选单元格为合并单元格才可以拆分\r\n const checkCanMergeOrSplit = (rowIndex: number, colIndex: number) => {\r\n const isMultiSelected = selectedCells.value.length > 1\r\n const targetCell = tableCells.value[rowIndex][colIndex]\r\n\r\n const canMerge = isMultiSelected\r\n const canSplit = !isMultiSelected && (targetCell.rowspan > 1 || targetCell.colspan > 1)\r\n\r\n return { canMerge, canSplit }\r\n }\r\n\r\n const contextmenus = (el: HTMLElement): ContextmenuItem[] => {\r\n const cellIndex = el.dataset.cellIndex as string\r\n const rowIndex = +cellIndex.split('_')[0]\r\n const colIndex = +cellIndex.split('_')[1]\r\n\r\n if (!selectedCells.value.includes(`${rowIndex}_${colIndex}`)) {\r\n startCell.value = [rowIndex, colIndex]\r\n endCell.value = []\r\n }\r\n\r\n const { canMerge, canSplit } = checkCanMergeOrSplit(rowIndex, colIndex)\r\n const { canDeleteRow, canDeleteCol } = checkCanDeleteRowOrCol()\r\n\r\n return [\r\n {\r\n text: '插入列',\r\n children: [\r\n { text: '到左侧', handler: () => insertCol(colIndex) },\r\n { text: '到右侧', handler: () => insertCol(colIndex + 1) },\r\n ],\r\n },\r\n {\r\n text: '插入行',\r\n children: [\r\n { text: '到上方', handler: () => insertRow(rowIndex) },\r\n { text: '到下方', handler: () => insertRow(rowIndex + 1) },\r\n ],\r\n },\r\n {\r\n text: '删除列',\r\n disable: !canDeleteCol,\r\n handler: () => deleteCol(colIndex),\r\n },\r\n {\r\n text: '删除行',\r\n disable: !canDeleteRow,\r\n handler: () => deleteRow(rowIndex),\r\n },\r\n { divider: true },\r\n {\r\n text: '合并单元格',\r\n disable: !canMerge,\r\n handler: mergeCells,\r\n },\r\n {\r\n text: '取消合并单元格',\r\n disable: !canSplit,\r\n handler: () => splitCells(rowIndex, colIndex),\r\n },\r\n { divider: true },\r\n {\r\n text: '选中当前列',\r\n handler: () => selectCol(colIndex),\r\n },\r\n {\r\n text: '选中当前行',\r\n handler: () => selectRow(rowIndex),\r\n },\r\n {\r\n text: '选中全部单元格',\r\n handler: selectAll,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n getTextStyle,\r\n dragLinePosition,\r\n tableCells,\r\n colSizeList,\r\n totalWidth,\r\n hideCells,\r\n selectedCells,\r\n activedCell,\r\n selectedRange,\r\n handleCellMousedown,\r\n handleCellMouseenter,\r\n selectCol,\r\n selectRow,\r\n handleMousedownColHandler,\r\n contextmenus,\r\n handleInput,\r\n subThemeColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableTable.vue?vue&type=template&id=ae1d6576&scoped=true\"\nimport script from \"./EditableTable.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableTable.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableTable.vue?vue&type=style&index=0&id=ae1d6576&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-ae1d6576\"\n\nexport default script","\r\nimport { computed, defineComponent, nextTick, onMounted, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTableElement, TableCell } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport EditableTable from './EditableTable.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-table',\r\n components: {\r\n EditableTable,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n contextmenus: {\r\n type: Function as PropType<() => ContextmenuItem[]>,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n \r\n const elementRef = ref()\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const handleSelectElement = (e: MouseEvent) => {\r\n if (props.elementInfo.lock) return\r\n e.stopPropagation()\r\n\r\n props.selectElement(e, props.elementInfo)\r\n }\r\n\r\n // 更新表格的可编辑状态,表格处于编辑状态时需要禁用全局快捷键\r\n const editable = ref(false)\r\n\r\n watch(handleElementId, () => {\r\n if (handleElementId.value !== props.elementInfo.id) editable.value = false\r\n })\r\n\r\n watch(editable, () => {\r\n store.commit(MutationTypes.SET_DISABLE_HOTKEYS_STATE, editable.value)\r\n })\r\n\r\n const startEdit = () => {\r\n if (!props.elementInfo.lock) editable.value = true\r\n }\r\n\r\n // 监听表格元素的尺寸变化,当高度变化时,更新高度到vuex\r\n // 如果高度变化时正处在缩放操作中,则等待缩放操作结束后再更新\r\n const isScaling = ref(false)\r\n const realHeightCache = ref(-1)\r\n\r\n const scaleElementStateListener = (state: boolean) => {\r\n isScaling.value = state\r\n\r\n if (state) editable.value = false\r\n\r\n if (!state && realHeightCache.value !== -1) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeightCache.value },\r\n })\r\n realHeightCache.value = -1\r\n }\r\n }\r\n\r\n emitter.on(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.SCALE_ELEMENT_STATE, state => scaleElementStateListener(state))\r\n })\r\n\r\n const updateTableElementHeight = (entries: ResizeObserverEntry[]) => {\r\n const contentRect = entries[0].contentRect\r\n if (!elementRef.value) return\r\n\r\n const realHeight = contentRect.height\r\n\r\n if (props.elementInfo.height !== realHeight) {\r\n if (!isScaling.value) {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id,\r\n props: { height: realHeight },\r\n })\r\n }\r\n else realHeightCache.value = realHeight\r\n }\r\n }\r\n\r\n const resizeObserver = new ResizeObserver(updateTableElementHeight)\r\n\r\n onMounted(() => {\r\n if (elementRef.value) resizeObserver.observe(elementRef.value)\r\n })\r\n onUnmounted(() => {\r\n if (elementRef.value) resizeObserver.unobserve(elementRef.value)\r\n })\r\n\r\n // 更新表格内容数据\r\n const updateTableCells = (data: TableCell[][]) => {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { data },\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 更新表格的列宽数据\r\n const updateColWidths = (widths: number[]) => {\r\n const width = widths.reduce((a, b) => a + b)\r\n const colWidths = widths.map(item => item / width)\r\n\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: props.elementInfo.id, \r\n props: { width, colWidths },\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 更新表格当前选中的单元格\r\n const updateSelectedCells = (cells: string[]) => {\r\n nextTick(() => emitter.emit(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells))\r\n }\r\n\r\n return {\r\n elementRef,\r\n canvasScale,\r\n handleSelectElement,\r\n updateTableCells,\r\n updateColWidths,\r\n editable,\r\n startEdit,\r\n updateSelectedCells,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=c0edfdac&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c0edfdac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-c0edfdac\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\n\r\nimport useLockElement from '@/hooks/useLockElement'\r\nimport useDeleteElement from '@/hooks/useDeleteElement'\r\nimport useCombineElement from '@/hooks/useCombineElement'\r\nimport useOrderElement from '@/hooks/useOrderElement'\r\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\r\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\r\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\r\n\r\nimport { ElementOrderCommands, ElementAlignCommands } from '@/types/edit'\r\n\r\nimport ImageElement from '@/views/components/element/ImageElement/index.vue'\r\nimport TextElement from '@/views/components/element/TextElement/index.vue'\r\nimport ShapeElement from '@/views/components/element/ShapeElement/index.vue'\r\nimport LineElement from '@/views/components/element/LineElement/index.vue'\r\nimport ChartElement from '@/views/components/element/ChartElement/index.vue'\r\nimport TableElement from '@/views/components/element/TableElement/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n selectElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, canMove?: boolean) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElement,\r\n [ElementTypes.TEXT]: TextElement,\r\n [ElementTypes.SHAPE]: ShapeElement,\r\n [ElementTypes.LINE]: LineElement,\r\n [ElementTypes.CHART]: ChartElement,\r\n [ElementTypes.TABLE]: TableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const { orderElement } = useOrderElement()\r\n const { alignElementToCanvas } = useAlignElementToCanvas()\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n const { deleteElement } = useDeleteElement()\r\n const { lockElement, unlockElement } = useLockElement()\r\n const { copyElement, pasteElement, cutElement } = useCopyAndPasteElement()\r\n const { selectAllElement } = useSelectAllElement()\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n if (props.elementInfo.lock) {\r\n return [{\r\n text: '解锁', \r\n handler: () => unlockElement(props.elementInfo),\r\n }]\r\n }\r\n\r\n return [\r\n {\r\n text: '剪切',\r\n subText: 'Ctrl + X',\r\n handler: cutElement,\r\n },\r\n {\r\n text: '复制',\r\n subText: 'Ctrl + C',\r\n handler: copyElement,\r\n },\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteElement,\r\n },\r\n { divider: true },\r\n {\r\n text: '对齐方式',\r\n children: [\r\n { text: '水平垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.CENTER) },\r\n { divider: true },\r\n { text: '水平居中', handler: () => alignElementToCanvas(ElementAlignCommands.HORIZONTAL) },\r\n { text: '左对齐', handler: () => alignElementToCanvas(ElementAlignCommands.LEFT) },\r\n { text: '右对齐', handler: () => alignElementToCanvas(ElementAlignCommands.RIGHT) },\r\n { divider: true },\r\n { text: '垂直居中', handler: () => alignElementToCanvas(ElementAlignCommands.VERTICAL) },\r\n { text: '顶部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.TOP) },\r\n { text: '底部对齐', handler: () => alignElementToCanvas(ElementAlignCommands.BOTTOM) },\r\n ],\r\n },\r\n {\r\n text: '层级排序',\r\n disable: props.isMultiSelect && !props.elementInfo.groupId,\r\n children: [\r\n { text: '置顶层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.TOP) },\r\n { text: '置底层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.BOTTOM) },\r\n { divider: true },\r\n { text: '上移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.UP) },\r\n { text: '下移一层', handler: () => orderElement(props.elementInfo, ElementOrderCommands.DOWN) },\r\n ],\r\n },\r\n { divider: true },\r\n {\r\n text: props.elementInfo.groupId ? '取消组合' : '组合',\r\n subText: 'Ctrl + G',\r\n handler: props.elementInfo.groupId ? uncombineElements : combineElements,\r\n hide: !props.isMultiSelect,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllElement,\r\n },\r\n {\r\n text: '锁定',\r\n subText: 'Ctrl + L',\r\n handler: lockElement,\r\n },\r\n {\r\n text: '删除',\r\n subText: 'Delete',\r\n handler: deleteElement,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n currentElementComponent,\r\n contextmenus,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableElement.vue?vue&type=template&id=66e6b935\"\nimport script from \"./EditableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'mouse-selection',\r\n props: {\r\n top: {\r\n type: Number,\r\n required: true,\r\n },\r\n left: {\r\n type: Number,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n height: {\r\n type: Number,\r\n required: true,\r\n },\r\n quadrant: {\r\n type: Number,\r\n required: true,\r\n validator(value: number) {\r\n return [1, 2, 3, 4].includes(value)\r\n },\r\n },\r\n }\r\n}\r\n","import { render } from \"./MouseSelection.vue?vue&type=template&id=1619c258&scoped=true\"\nimport script from \"./MouseSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./MouseSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./MouseSelection.vue?vue&type=style&index=0&id=1619c258&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1619c258\"\n\nexport default script","\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, computed } from 'vue'\r\nimport tinycolor from 'tinycolor2'\r\nimport { useStore } from '@/store'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport { SlideBackground } from '@/types/slides'\r\n\r\nexport default defineComponent({\r\n name: 'grid-lines',\r\n setup() {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const background = computed(() => store.getters.currentSlide?.background)\r\n\r\n // 计算网格线的颜色,避免与背景的颜色太接近\r\n const gridColor = computed(() => {\r\n if (!background.value || background.value.type === 'image') return 'rgba(100, 100, 100, 0.5)'\r\n const color = background.value.color\r\n const rgba = tinycolor(color).toRgb()\r\n const newRgba = {\r\n r: rgba.r > 128 ? rgba.r - 128 : rgba.r + 127,\r\n g: rgba.g > 128 ? rgba.g - 128 : rgba.g + 127,\r\n b: rgba.b > 128 ? rgba.b - 128 : rgba.b + 127,\r\n a: 0.5\r\n }\r\n return `rgba(${[newRgba.r, newRgba.g, newRgba.b, newRgba.a].join(',')})`\r\n })\r\n\r\n const gridSize = 50\r\n\r\n // 计算网格路径\r\n const getPath = () => {\r\n const maxX = VIEWPORT_SIZE\r\n const maxY = VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO\r\n\r\n let path = ''\r\n for (let i = 0; i <= Math.floor(maxY / gridSize); i++) {\r\n path += `M0 ${i * gridSize}, L${maxX} ${i * gridSize}`\r\n }\r\n for (let i = 0; i <= Math.floor(maxX / gridSize); i++) {\r\n path += `M${i * gridSize} 0, L${i * gridSize} ${maxY}`\r\n }\r\n return path\r\n }\r\n\r\n return {\r\n canvasScale,\r\n gridColor,\r\n width: VIEWPORT_SIZE,\r\n height: VIEWPORT_SIZE * VIEWPORT_ASPECT_RATIO,\r\n path: getPath(),\r\n }\r\n },\r\n})\r\n","import { render } from \"./GridLines.vue?vue&type=template&id=5664d2b2&scoped=true\"\nimport script from \"./GridLines.vue?vue&type=script&lang=ts\"\nexport * from \"./GridLines.vue?vue&type=script&lang=ts\"\n\nimport \"./GridLines.vue?vue&type=style&index=0&id=5664d2b2&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5664d2b2\"\n\nexport default script","import { Ref, computed } from 'vue'\r\nimport { SlideBackground } from '@/types/slides'\r\n\r\n// 将页面背景数据转换为css样式\r\nexport default (background: Ref) => {\r\n const backgroundStyle = computed(() => {\r\n if (!background.value) return { backgroundColor: '#fff' }\r\n\r\n const {\r\n type,\r\n color,\r\n image,\r\n imageSize,\r\n gradientColor,\r\n gradientRotate,\r\n gradientType,\r\n } = background.value\r\n\r\n // 纯色背景\r\n if (type === 'solid') return { backgroundColor: color }\r\n\r\n // 背景图模式\r\n // 包括:背景图、背景大小,是否重复\r\n else if (type === 'image') {\r\n if (!image) return { backgroundColor: '#fff' }\r\n if (imageSize === 'repeat') {\r\n return {\r\n backgroundImage: `url(${image}`,\r\n backgroundRepeat: 'repeat',\r\n backgroundSize: 'initial',\r\n }\r\n }\r\n return {\r\n backgroundImage: `url(${image}`,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: imageSize || 'cover',\r\n }\r\n }\r\n\r\n // 渐变色背景\r\n else if (type === 'gradient') {\r\n const rotate = gradientRotate || 0\r\n const color1 = gradientColor ? gradientColor[0] : '#fff'\r\n const color2 = gradientColor ? gradientColor[1] : '#fff'\r\n \r\n if (gradientType === 'radial') return { backgroundImage: `radial-gradient(${color1}, ${color2}` }\r\n return { backgroundImage: `linear-gradient(${rotate}deg, ${color1}, ${color2}` }\r\n }\r\n\r\n return { backgroundColor: '#fff' }\r\n })\r\n\r\n return {\r\n backgroundStyle,\r\n }\r\n}","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { SlideBackground } from '@/types/slides'\r\nimport GridLines from './GridLines.vue'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nexport default defineComponent({\r\n name: 'viewport-background',\r\n components: {\r\n GridLines,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const background = computed(() => store.getters.currentSlide?.background)\r\n\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n return {\r\n showGridLines,\r\n backgroundStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ViewportBackground.vue?vue&type=template&id=a9ca1b50&scoped=true\"\nimport script from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\nexport * from \"./ViewportBackground.vue?vue&type=script&lang=ts\"\n\nimport \"./ViewportBackground.vue?vue&type=style&index=0&id=a9ca1b50&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-a9ca1b50\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { AlignmentLineAxis } from '@/types/edit'\r\n\r\nexport default defineComponent({\r\n name: 'alignment-line',\r\n props: {\r\n type: {\r\n type: String as PropType<'vertical' | 'horizontal'>,\r\n required: true,\r\n },\r\n axis: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n length: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n // 吸附对齐线的位置\r\n const left = computed(() => props.axis.x * canvasScale.value + 'px')\r\n const top = computed(() => props.axis.y * canvasScale.value + 'px')\r\n\r\n // 吸附对齐线的长度\r\n const sizeStyle = computed(() => {\r\n if (props.type === 'vertical') return { height: props.length * canvasScale.value + 'px' }\r\n return { width: props.length * canvasScale.value + 'px' }\r\n })\r\n\r\n return {\r\n left,\r\n top,\r\n sizeStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./AlignmentLine.vue?vue&type=template&id=2d3eddf5&scoped=true\"\nimport script from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\nexport * from \"./AlignmentLine.vue?vue&type=script&lang=ts\"\n\nimport \"./AlignmentLine.vue?vue&type=style&index=0&id=2d3eddf5&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2d3eddf5\"\n\nexport default script","\r\n createSelection($event)\"\r\n >\r\n
\r\n\r\n \r\n
\r\n\t\t\t\t\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onMounted, reactive, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\n\r\nexport default defineComponent({\r\n name: 'element-create-selection',\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n\r\n const start = ref<[number, number] | null>(null)\r\n const end = ref<[number, number] | null>(null)\r\n\r\n const selectionRef = ref()\r\n const offset = reactive({\r\n x: 0,\r\n y: 0,\r\n })\r\n onMounted(() => {\r\n if (!selectionRef.value) return\r\n const { x, y } = selectionRef.value.getBoundingClientRect()\r\n offset.x = x\r\n offset.y = y\r\n })\r\n\r\n // 鼠标拖动创建元素生成位置大小\r\n // 获取范围的起始位置和终点位置\r\n const createSelection = (e: MouseEvent) => {\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n start.value = [startPageX, startPageY]\r\n\r\n document.onmousemove = e => {\r\n if (!creatingElement.value || !isMouseDown) return\r\n\r\n let currentPageX = e.pageX\r\n let currentPageY = e.pageY\r\n\r\n // 按住Ctrl键或者Shift键时:\r\n // 对于非线条元素需要锁定宽高比例,对于线条元素需要锁定水平或垂直方向\r\n if (ctrlOrShiftKeyActive.value) {\r\n const moveX = currentPageX - startPageX\r\n const moveY = currentPageY - startPageY\r\n\r\n // 水平和垂直方向的拖动距离,后面以拖动距离较大的方向为基础计算另一方向的数据\r\n const absX = Math.abs(moveX)\r\n const absY = Math.abs(moveY)\r\n\r\n if (creatingElement.value.type === 'shape') {\r\n\r\n // 判断是否为反向拖动:从左上到右下为正向操作,此外所有情况都是反向操作\r\n const isOpposite = (moveY > 0 && moveX < 0) || (moveY < 0 && moveX > 0)\r\n\r\n if (absX > absY) {\r\n currentPageY = isOpposite ? startPageY - moveX : startPageY + moveX\r\n }\r\n else {\r\n currentPageX = isOpposite ? startPageX - moveY : startPageX + moveY\r\n }\r\n }\r\n\r\n else if (creatingElement.value.type === 'line') {\r\n if (absX > absY) currentPageY = startPageY\r\n else currentPageX = startPageX\r\n }\r\n }\r\n\r\n end.value = [currentPageX, currentPageY]\r\n }\r\n\r\n document.onmouseup = e => {\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n isMouseDown = false\r\n\r\n const endPageX = e.pageX\r\n const endPageY = e.pageY\r\n\r\n const minSize = 30\r\n\r\n if (Math.abs(endPageX - startPageX) >= minSize || Math.abs(endPageY - startPageY) >= minSize) {\r\n emit('created', {\r\n start: start.value,\r\n end: end.value,\r\n })\r\n }\r\n else store.commit(MutationTypes.SET_CREATING_ELEMENT, null)\r\n }\r\n }\r\n\r\n // 绘制线条的路径相关数据(仅当绘制元素类型为线条时使用)\r\n const lineData = computed(() => {\r\n if (!start.value || !end.value) return null\r\n if (!creatingElement.value || creatingElement.value.type !== 'line') return null\r\n\r\n const [_startX, _startY] = start.value\r\n const [_endX, _endY] = end.value\r\n const minX = Math.min(_startX, _endX)\r\n const maxX = Math.max(_startX, _endX)\r\n const minY = Math.min(_startY, _endY)\r\n const maxY = Math.max(_startY, _endY)\r\n\r\n const svgWidth = maxX - minX >= 24 ? maxX - minX : 24\r\n const svgHeight = maxY - minY >= 24 ? maxY - minY : 24\r\n\r\n const startX = _startX === minX ? 0 : maxX - minX\r\n const startY = _startY === minY ? 0 : maxY - minY\r\n const endX = _endX === minX ? 0 : maxX - minX\r\n const endY = _endY === minY ? 0 : maxY - minY\r\n\r\n const path = `M${startX}, ${startY} L${endX}, ${endY}`\r\n\r\n return {\r\n svgWidth,\r\n svgHeight,\r\n startX,\r\n startY,\r\n endX,\r\n endY,\r\n path,\r\n }\r\n })\r\n\r\n // 根据生成范围的起始位置和终点位置,计算元素创建时的位置和大小\r\n const position = computed(() => {\r\n if (!start.value || !end.value) return {}\r\n\r\n const [startX, startY] = start.value\r\n const [endX, endY] = end.value\r\n const minX = Math.min(startX, endX)\r\n const maxX = Math.max(startX, endX)\r\n const minY = Math.min(startY, endY)\r\n const maxY = Math.max(startY, endY)\r\n\r\n const width = maxX - minX\r\n const height = maxY - minY\r\n\r\n return {\r\n left: minX - offset.x + 'px',\r\n top: minY - offset.y + 'px',\r\n width: width + 'px',\r\n height: height + 'px',\r\n }\r\n })\r\n\r\n return {\r\n selectionRef,\r\n start,\r\n end,\r\n creatingElement,\r\n createSelection,\r\n lineData,\r\n position,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementCreateSelection.vue?vue&type=template&id=6baf3897&scoped=true\"\nimport script from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementCreateSelection.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementCreateSelection.vue?vue&type=style&index=0&id=6baf3897&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6baf3897\"\n\nexport default script","\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","import { computed, Ref } from 'vue'\r\nimport { OperateResizeHandlers, OperateBorderLines } from '@/types/edit'\r\n\r\nexport default (width: Ref, height: Ref) => {\r\n // 元素缩放点\r\n const resizeHandlers = computed(() => {\r\n return [\r\n { direction: OperateResizeHandlers.LEFT_TOP, style: {} },\r\n { direction: OperateResizeHandlers.TOP, style: {left: width.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT_TOP, style: {left: width.value + 'px'} },\r\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.LEFT_BOTTOM, style: {top: height.value + 'px'} },\r\n { direction: OperateResizeHandlers.BOTTOM, style: {left: width.value / 2 + 'px', top: height.value + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT_BOTTOM, style: {left: width.value + 'px', top: height.value + 'px'} },\r\n ]\r\n })\r\n\r\n // 文本元素缩放点\r\n const textElementResizeHandlers = computed(() => {\r\n return [\r\n { direction: OperateResizeHandlers.LEFT, style: {top: height.value / 2 + 'px'} },\r\n { direction: OperateResizeHandlers.RIGHT, style: {left: width.value + 'px', top: height.value / 2 + 'px'} },\r\n ]\r\n })\r\n\r\n // 元素选中边框线\r\n const borderLines = computed(() => {\r\n return [\r\n { type: OperateBorderLines.T, style: {width: width.value + 'px'} },\r\n { type: OperateBorderLines.B, style: {top: height.value + 'px', width: width.value + 'px'} },\r\n { type: OperateBorderLines.L, style: {height: height.value + 'px'} },\r\n { type: OperateBorderLines.R, style: {left: width.value + 'px', height: height.value + 'px'} },\r\n ]\r\n })\r\n\r\n return {\r\n resizeHandlers,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n}","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType } from 'vue'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\n\r\nexport default {\r\n name: 'resize-handler',\r\n props: {\r\n type: {\r\n type: String as PropType,\r\n default: '',\r\n },\r\n },\r\n}\r\n","import { render } from \"./ResizeHandler.vue?vue&type=template&id=1c2a68d0&scoped=true\"\nimport script from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./ResizeHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./ResizeHandler.vue?vue&type=style&index=0&id=1c2a68d0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1c2a68d0\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType } from 'vue'\r\nimport { OperateBorderLine } from '@/types/edit'\r\n\r\nexport default {\r\n name: 'border-line',\r\n props: {\r\n type: {\r\n type: String as PropType,\r\n required: true,\r\n },\r\n isWide: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./BorderLine.vue?vue&type=template&id=630e246b&scoped=true\"\nimport script from \"./BorderLine.vue?vue&type=script&lang=ts\"\nexport * from \"./BorderLine.vue?vue&type=script&lang=ts\"\n\nimport \"./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-630e246b\"\n\nexport default script","\r\nimport { computed, defineComponent, reactive, PropType, watchEffect, toRefs } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { getElementListRange } from '@/utils/element'\r\nimport { OperateResizeHandler, MultiSelectRange } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'multi-select-operate',\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementList: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n scaleMultiElement: {\r\n type: Function as PropType<(e: MouseEvent, range: MultiSelectRange, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const localActiveElementList = computed(() => props.elementList.filter(el => activeElementIdList.value.includes(el.id)))\r\n\r\n const range = reactive({\r\n minX: 0,\r\n maxX: 0,\r\n minY: 0,\r\n maxY: 0,\r\n })\r\n\r\n // 根据多选元素整体在画布中的范围,计算边框线和缩放点的位置信息\r\n const width = computed(() => (range.maxX - range.minX) * canvasScale.value)\r\n const height = computed(() => (range.maxY - range.minY) * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(width, height)\r\n\r\n // 计算多选元素整体在画布中的范围\r\n const setRange = () => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(localActiveElementList.value)\r\n range.minX = minX\r\n range.maxX = maxX\r\n range.minY = minY\r\n range.maxY = maxY\r\n }\r\n watchEffect(setRange)\r\n\r\n // 禁用多选状态下缩放:仅未旋转的图片和形状可以在多选状态下缩放\r\n const disableResize = computed(() => {\r\n return localActiveElementList.value.some(item => {\r\n if (\r\n (item.type === 'image' || item.type === 'shape') && \r\n !item.rotate\r\n ) return false\r\n return true\r\n })\r\n })\r\n\r\n return {\r\n ...toRefs(range),\r\n canvasScale,\r\n borderLines,\r\n disableResize,\r\n resizeHandlers,\r\n }\r\n },\r\n})\r\n","import { render } from \"./MultiSelectOperate.vue?vue&type=template&id=4def6455&scoped=true\"\nimport script from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiSelectOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiSelectOperate.vue?vue&type=style&index=0&id=4def6455&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4def6455\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n {{elementIndexInAnimation + 1}}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'rotate-handler',\r\n}\r\n","import { render } from \"./RotateHandler.vue?vue&type=template&id=9a549510&scoped=true\"\nimport script from \"./RotateHandler.vue?vue&type=script&lang=ts\"\nexport * from \"./RotateHandler.vue?vue&type=script&lang=ts\"\n\nimport \"./RotateHandler.vue?vue&type=style&index=0&id=9a549510&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-9a549510\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'image-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTImageElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTImageElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const clipingImageElementId = computed(() => store.state.clipingImageElementId)\r\n const isCliping = computed(() => clipingImageElementId.value === props.elementInfo.id)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n isCliping,\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageElementOperate.vue?vue&type=template&id=5b0628aa&scoped=true\"\nimport script from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageElementOperate.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageElementOperate.vue?vue&type=style&index=0&id=5b0628aa&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5b0628aa\"\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTTextElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTextElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextElementOperate.vue?vue&type=template&id=1f730982\"\nimport script from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TextElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport RotateHandler from './RotateHandler.vue'\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'shape-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n RotateHandler,\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTShapeElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapeElementOperate.vue?vue&type=template&id=bfcf602e\"\nimport script from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n dragLineElement($event, elementInfo, point.handler)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport { OperateLineHandler, OperateLineHandlers } from '@/types/edit'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\n\r\nexport default defineComponent({\r\n name: 'text-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTLineElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const resizeHandlers = computed(() => {\r\n const handlers = [\r\n {\r\n handler: OperateLineHandlers.START,\r\n style: {\r\n left: props.elementInfo.start[0] * canvasScale.value + 'px',\r\n top: props.elementInfo.start[1] * canvasScale.value + 'px',\r\n }\r\n },\r\n {\r\n handler: OperateLineHandlers.END,\r\n style: {\r\n left: props.elementInfo.end[0] * canvasScale.value + 'px',\r\n top: props.elementInfo.end[1] * canvasScale.value + 'px',\r\n }\r\n },\r\n ]\r\n\r\n if (props.elementInfo.curve || props.elementInfo.broken) {\r\n const midHandler = (props.elementInfo.curve || props.elementInfo.broken) as [number, number]\r\n\r\n handlers.push({\r\n handler: OperateLineHandlers.MID,\r\n style: {\r\n left: midHandler[0] * canvasScale.value + 'px',\r\n top: midHandler[1] * canvasScale.value + 'px',\r\n }\r\n })\r\n }\r\n return handlers\r\n })\r\n\r\n return {\r\n resizeHandlers,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LineElementOperate.vue?vue&type=template&id=019938f6\"\nimport script from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./LineElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n resizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartElementOperate.vue?vue&type=template&id=4218643e\"\nimport script from \"./ChartElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n \r\n \r\n scaleElement($event, elementInfo, point.direction)\"\r\n />\r\n \r\n
\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport { PPTTableElement } from '@/types/slides'\r\nimport { OperateResizeHandler } from '@/types/edit'\r\nimport useCommonOperate from '../hooks/useCommonOperate'\r\n\r\nimport ResizeHandler from './ResizeHandler.vue'\r\nimport BorderLine from './BorderLine.vue'\r\n\r\nexport default defineComponent({\r\n name: 'table-element-operate',\r\n inheritAttrs: false,\r\n components: {\r\n ResizeHandler,\r\n BorderLine,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTTableElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n\r\n const outlineWidth = computed(() => props.elementInfo.outline.width || 1)\r\n\r\n const scaleWidth = computed(() => (props.elementInfo.width + outlineWidth.value) * canvasScale.value)\r\n const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)\r\n\r\n const { textElementResizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)\r\n\r\n return {\r\n scaleWidth,\r\n textElementResizeHandlers,\r\n borderLines,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableElementOperate.vue?vue&type=template&id=459ab724\"\nimport script from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nexport * from \"./TableElementOperate.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement, Slide } from '@/types/slides'\r\nimport { OperateLineHandler, OperateResizeHandler } from '@/types/edit'\r\n\r\nimport ImageElementOperate from './ImageElementOperate.vue'\r\nimport TextElementOperate from './TextElementOperate.vue'\r\nimport ShapeElementOperate from './ShapeElementOperate.vue'\r\nimport LineElementOperate from './LineElementOperate.vue'\r\nimport ChartElementOperate from './ChartElementOperate.vue'\r\nimport TableElementOperate from './TableElementOperate.vue'\r\n\r\nexport default defineComponent({\r\n name: 'operate',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n isSelected: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActive: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isActiveGroupElement: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n isMultiSelect: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n rotateElement: {\r\n type: Function as PropType<(element: PPTElement) => void>,\r\n required: true,\r\n },\r\n scaleElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateResizeHandler) => void>,\r\n required: true,\r\n },\r\n dragLineElement: {\r\n type: Function as PropType<(e: MouseEvent, element: PPTElement, command: OperateLineHandler) => void>,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const toolbarState = computed(() => store.state.toolbarState)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const currentOperateComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: ImageElementOperate,\r\n [ElementTypes.TEXT]: TextElementOperate,\r\n [ElementTypes.SHAPE]: ShapeElementOperate,\r\n [ElementTypes.LINE]: LineElementOperate,\r\n [ElementTypes.CHART]: ChartElementOperate,\r\n [ElementTypes.TABLE]: TableElementOperate,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const elementIndexInAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n return animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n })\r\n\r\n return {\r\n currentOperateComponent,\r\n canvasScale,\r\n toolbarState,\r\n elementIndexInAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=558a94fe&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=558a94fe&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-558a94fe\"\n\nexport default script","\r\nimport { computed, defineComponent, provide, ref, watch, watchEffect } from 'vue'\r\nimport throttle from 'lodash/throttle'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { AlignmentLineProps } from '@/types/edit'\r\nimport { removeAllRanges } from '@/utils/selection'\r\n\r\nimport useViewportSize from './hooks/useViewportSize'\r\nimport useMouseSelection from './hooks/useMouseSelection'\r\nimport useDropImageOrText from './hooks/useDropImageOrText'\r\nimport useRotateElement from './hooks/useRotateElement'\r\nimport useScaleElement from './hooks/useScaleElement'\r\nimport useSelectElement from './hooks/useSelectElement'\r\nimport useDragElement from './hooks/useDragElement'\r\nimport useDragLineElement from './hooks/useDragLineElement'\r\nimport useInsertFromCreateSelection from './hooks/useInsertFromCreateSelection'\r\n\r\nimport useDeleteElement from '@/hooks/useDeleteElement'\r\nimport useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement'\r\nimport useSelectAllElement from '@/hooks/useSelectAllElement'\r\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport EditableElement from './EditableElement.vue'\r\nimport MouseSelection from './MouseSelection.vue'\r\nimport ViewportBackground from './ViewportBackground.vue'\r\nimport AlignmentLine from './AlignmentLine.vue'\r\nimport ElementCreateSelection from './ElementCreateSelection.vue'\r\nimport MultiSelectOperate from './Operate/MultiSelectOperate.vue'\r\nimport Operate from './Operate/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor-canvas',\r\n components: {\r\n EditableElement,\r\n MouseSelection,\r\n ViewportBackground,\r\n AlignmentLine,\r\n ElementCreateSelection,\r\n MultiSelectOperate,\r\n Operate,\r\n },\r\n setup() {\r\n const store = useStore()\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const handleElementId = computed(() => store.state.handleElementId)\r\n const editorAreaFocus = computed(() => store.state.editorAreaFocus)\r\n const ctrlKeyState = computed(() => store.state.ctrlKeyState)\r\n const ctrlOrShiftKeyActive = computed(() => store.getters.ctrlOrShiftKeyActive)\r\n\r\n const viewportRef = ref()\r\n const alignmentLines = ref([])\r\n\r\n const activeGroupElementId = ref('')\r\n watch(handleElementId, () => activeGroupElementId.value = '')\r\n\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const elementList = ref([])\r\n const setLocalElementList = () => {\r\n elementList.value = currentSlide.value ? JSON.parse(JSON.stringify(currentSlide.value.elements)) : []\r\n }\r\n watchEffect(setLocalElementList)\r\n\r\n const canvasRef = ref()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const { viewportStyles } = useViewportSize(canvasRef)\r\n\r\n useDropImageOrText(canvasRef)\r\n\r\n const { mouseSelectionState, updateMouseSelection } = useMouseSelection(elementList, viewportRef)\r\n\r\n const { dragElement } = useDragElement(elementList, activeGroupElementId, alignmentLines)\r\n const { dragLineElement } = useDragLineElement(elementList)\r\n const { selectElement } = useSelectElement(elementList, activeGroupElementId, dragElement)\r\n const { scaleElement, scaleMultiElement } = useScaleElement(elementList, activeGroupElementId, alignmentLines)\r\n const { rotateElement } = useRotateElement(elementList, viewportRef)\r\n\r\n const { selectAllElement } = useSelectAllElement()\r\n const { deleteAllElements } = useDeleteElement()\r\n const { pasteElement } = useCopyAndPasteElement()\r\n const { enterScreening } = useScreening()\r\n\r\n // 点击画布的空白区域:清空焦点元素、设置画布焦点、清除文字选区\r\n const handleClickBlankArea = (e: MouseEvent) => {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n if (!ctrlOrShiftKeyActive.value) updateMouseSelection(e)\r\n if (!editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, true)\r\n removeAllRanges()\r\n }\r\n\r\n // 移除画布编辑区域焦点\r\n const removeEditorAreaFocus = () => {\r\n if (editorAreaFocus.value) store.commit(MutationTypes.SET_EDITORAREA_FOCUS, false)\r\n }\r\n\r\n // 按住Ctrl键滚动鼠标缩放画布\r\n const { scaleCanvas } = useScaleCanvas()\r\n const throttleScaleCanvas = throttle(scaleCanvas, 100, { leading: true, trailing: false })\r\n\r\n const mousewheelScaleCanvas = (e: WheelEvent) => {\r\n if (!ctrlKeyState.value) return\r\n\r\n e.preventDefault()\r\n if (e.deltaY > 0) throttleScaleCanvas('-')\r\n else if (e.deltaY < 0) throttleScaleCanvas('+')\r\n }\r\n\r\n // 开关网格线\r\n const showGridLines = computed(() => store.state.showGridLines)\r\n const toggleGridLines = () => {\r\n store.commit(MutationTypes.SET_GRID_LINES_STATE, !showGridLines.value)\r\n }\r\n\r\n // 在鼠标绘制的范围插入元素\r\n const creatingElement = computed(() => store.state.creatingElement)\r\n const { insertElementFromCreateSelection } = useInsertFromCreateSelection(viewportRef)\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteElement,\r\n },\r\n {\r\n text: '全选',\r\n subText: 'Ctrl + A',\r\n handler: selectAllElement,\r\n },\r\n {\r\n text: '网格线',\r\n subText: showGridLines.value ? '√' : '',\r\n handler: toggleGridLines,\r\n },\r\n {\r\n text: '重置当前页',\r\n handler: deleteAllElements,\r\n },\r\n { divider: true },\r\n {\r\n text: '从当前页演示',\r\n subText: 'Ctrl+F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n provide('slideScale', canvasScale)\r\n\r\n return {\r\n elementList,\r\n activeElementIdList,\r\n handleElementId,\r\n activeGroupElementId,\r\n canvasRef,\r\n viewportRef,\r\n viewportStyles,\r\n canvasScale,\r\n mouseSelectionState,\r\n handleClickBlankArea,\r\n removeEditorAreaFocus,\r\n currentSlide,\r\n creatingElement,\r\n insertElementFromCreateSelection,\r\n alignmentLines,\r\n selectElement,\r\n rotateElement,\r\n scaleElement,\r\n dragLineElement,\r\n scaleMultiElement,\r\n mousewheelScaleCanvas,\r\n contextmenus,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=17169d5c&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=17169d5c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-17169d5c\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
{{item.type}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export interface ShapePoolItem {\r\n viewBox: number;\r\n path: string;\r\n}\r\n\r\nexport const SHAPE_LIST = [\r\n {\r\n type: '矩形',\r\n children: [\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 L 200 200 L 0 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z'\r\n },\r\n ]\r\n },\r\n\r\n {\r\n type: '常用形状',\r\n children: [\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 200 L 200 200 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z'\r\n },\r\n ],\r\n },\r\n \r\n {\r\n type: '箭头',\r\n children: [\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z'\r\n },\r\n {\r\n viewBox: 200,\r\n path: 'M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z'\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z',\r\n },\r\n ],\r\n },\r\n\r\n {\r\n type: '其他形状',\r\n children: [\r\n {\r\n viewBox: 1024,\r\n path: 'M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z',\r\n },\r\n {\r\n viewBox: 1024,\r\n path: 'M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z',\r\n },\r\n ],\r\n },\r\n]","\r\nimport { defineComponent } from 'vue'\r\nimport { SHAPE_LIST, ShapePoolItem } from '@/configs/shapes'\r\n\r\nexport default defineComponent({\r\n name: 'shape-pool',\r\n setup(props, { emit }) {\r\n const shapeList = SHAPE_LIST\r\n\r\n const selectShape = (shape: ShapePoolItem) => {\r\n emit('select', shape)\r\n }\r\n\r\n return {\r\n shapeList,\r\n selectShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapePool.vue?vue&type=template&id=5aabd717&scoped=true\"\nimport script from \"./ShapePool.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapePool.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapePool.vue?vue&type=style&index=0&id=5aabd717&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5aabd717\"\n\nexport default script","\r\n \r\n
\r\n
{{item.type}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export interface LinePoolItem {\r\n path: string;\r\n style: string;\r\n points: [string, string];\r\n isBroken?: boolean;\r\n isCurve?: boolean;\r\n}\r\n\r\nexport const LINE_LIST = [\r\n {\r\n type: '直线',\r\n children: [\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', ''] },\r\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', ''] },\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'arrow'] },\r\n { path: 'M 0 0 L 20 20', style: 'dashed', points: ['', 'arrow'] },\r\n { path: 'M 0 0 L 20 20', style: 'solid', points: ['', 'dot'] },\r\n ],\r\n },\r\n {\r\n type: '折线、曲线',\r\n children: [\r\n { path: 'M 0 0 L 0 20 L 20 20', style: 'solid', points: ['', 'arrow'], isBroken: true },\r\n { path: 'M 0 0 Q 0 20 20 20', style: 'solid', points: ['', 'arrow'], isCurve: true },\r\n ],\r\n },\r\n]","\r\nimport { defineComponent } from 'vue'\r\nimport { LINE_LIST, LinePoolItem } from '@/configs/lines'\r\n\r\nimport LinePointMarker from '@/views/components/element/LineElement/LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'line-pool',\r\n components: {\r\n LinePointMarker,\r\n },\r\n setup(props, { emit }) {\r\n const lineList = LINE_LIST\r\n\r\n const selectLine = (line: LinePoolItem) => {\r\n emit('select', line)\r\n }\r\n\r\n return {\r\n lineList,\r\n selectLine,\r\n }\r\n },\r\n})\r\n","import { render } from \"./LinePool.vue?vue&type=template&id=5087394c&scoped=true\"\nimport script from \"./LinePool.vue?vue&type=script&lang=ts\"\nexport * from \"./LinePool.vue?vue&type=script&lang=ts\"\n\nimport \"./LinePool.vue?vue&type=style&index=0&id=5087394c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5087394c\"\n\nexport default script","\r\n \r\n - \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-pool',\r\n setup(props, { emit }) {\r\n const chartList = ['bar', 'line', 'pie']\r\n\r\n const selectChart = (chart: string) => {\r\n emit('select', chart)\r\n }\r\n\r\n return {\r\n chartList,\r\n selectChart,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartPool.vue?vue&type=template&id=58ced0dd&scoped=true\"\nimport script from \"./ChartPool.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartPool.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartPool.vue?vue&type=style&index=0&id=58ced0dd&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-58ced0dd\"\n\nexport default script","\r\n \r\n
\r\n
表格 {{endCell.length ? `${endCell[0]} x ${endCell[1]}` : ''}}
\r\n
{{ isCustom ? '返回' : '自定义'}}
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n | \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, ref } from 'vue'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nexport default defineComponent({\r\n name: 'table-generator',\r\n setup(props, { emit }) {\r\n const endCell = ref([])\r\n const customRow = ref(3)\r\n const customCol = ref(3)\r\n const isCustom = ref(false)\r\n\r\n const handleClickTable = () => {\r\n if (!endCell.value.length) return\r\n const [row, col] = endCell.value\r\n emit('insert', { row, col })\r\n }\r\n\r\n const insertCustomTable = () => {\r\n if (customRow.value < 1 || customRow.value > 20) return message.warning('行数/列数必须在0~20之间!')\r\n if (customCol.value < 1 || customCol.value > 20) return message.warning('行数/列数必须在0~20之间!')\r\n emit('insert', { row: customRow.value, col: customCol.value })\r\n isCustom.value = false\r\n }\r\n\r\n const close = () => {\r\n emit('close')\r\n isCustom.value = false\r\n }\r\n\r\n return {\r\n endCell,\r\n customRow,\r\n customCol,\r\n handleClickTable,\r\n insertCustomTable,\r\n isCustom,\r\n close,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableGenerator.vue?vue&type=template&id=576c614c&scoped=true\"\nimport script from \"./TableGenerator.vue?vue&type=script&lang=ts\"\nexport * from \"./TableGenerator.vue?vue&type=script&lang=ts\"\n\nimport \"./TableGenerator.vue?vue&type=style&index=0&id=576c614c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-576c614c\"\n\nexport default script","\r\nimport { defineComponent, computed, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport { ShapePoolItem } from '@/configs/shapes'\r\nimport { LinePoolItem } from '@/configs/lines'\r\nimport useScaleCanvas from '@/hooks/useScaleCanvas'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\nimport useCreateElement from '@/hooks/useCreateElement'\r\n\r\nimport ShapePool from './ShapePool.vue'\r\nimport LinePool from './LinePool.vue'\r\nimport ChartPool from './ChartPool.vue'\r\nimport TableGenerator from './TableGenerator.vue'\r\n\r\nexport default defineComponent({\r\n name: 'canvas-tool',\r\n components: {\r\n ShapePool,\r\n LinePool,\r\n ChartPool,\r\n TableGenerator,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const canvasScale = computed(() => store.state.canvasScale)\r\n const canUndo = computed(() => store.getters.canUndo)\r\n const canRedo = computed(() => store.getters.canRedo)\r\n\r\n const canvasScalePercentage = computed(() => parseInt(canvasScale.value * 100 + '') + '%')\r\n\r\n const { scaleCanvas, setCanvasPercentage } = useScaleCanvas()\r\n const { redo, undo } = useHistorySnapshot()\r\n\r\n const { createImageElement, createChartElement, createTableElement } = useCreateElement()\r\n\r\n const insertImageElement = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL))\r\n }\r\n\r\n const shapePoolVisible = ref(false)\r\n const linePoolVisible = ref(false)\r\n const chartPoolVisible = ref(false)\r\n const tableGeneratorVisible = ref(false)\r\n\r\n // 绘制文字范围\r\n const drawText = () => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'text',\r\n data: null,\r\n })\r\n }\r\n\r\n // 绘制形状范围\r\n const drawShape = (shape: ShapePoolItem) => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'shape',\r\n data: shape,\r\n })\r\n shapePoolVisible.value = false\r\n }\r\n\r\n // 绘制线条路径\r\n const drawLine = (line: LinePoolItem) => {\r\n store.commit(MutationTypes.SET_CREATING_ELEMENT, {\r\n type: 'line',\r\n data: line,\r\n })\r\n linePoolVisible.value = false\r\n }\r\n\r\n return {\r\n scaleCanvas,\r\n setCanvasPercentage,\r\n canvasScalePercentage,\r\n canUndo,\r\n canRedo,\r\n redo,\r\n undo,\r\n insertImageElement,\r\n shapePoolVisible,\r\n linePoolVisible,\r\n chartPoolVisible,\r\n tableGeneratorVisible,\r\n drawText,\r\n drawShape,\r\n drawLine,\r\n createChartElement,\r\n createTableElement,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=236c5f54&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=236c5f54&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-236c5f54\"\n\nexport default script","\r\n setThumbnailsFocus(true)\"\r\n v-click-outside=\"() => setThumbnailsFocus(false)\"\r\n v-contextmenu=\"contextmenusThumbnails\"\r\n >\r\n
添加幻灯片
\r\n
\r\n \r\n \r\n
{{ fillDigit(index + 1, 2) }}
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n
\r\n\r\n\r\n","\r\n \r\n
\r\n
\r\n\r\n
\r\n
![\"\"\r\n]()
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTImageElement } from '@/types/slides'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\nimport useClipImage from './useClipImage'\r\nimport useFilter from './useFilter'\r\n\r\nimport ImageOutline from './ImageOutline/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-image',\r\n components: {\r\n ImageOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n \r\n const clip = computed(() => props.elementInfo.clip)\r\n const { clipShape, imgPosition } = useClipImage(clip)\r\n\r\n const filters = computed(() => props.elementInfo.filters)\r\n const { filter } = useFilter(filters)\r\n\r\n return {\r\n imgPosition,\r\n filter,\r\n flipStyle,\r\n shadowStyle,\r\n clipShape,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseImageElement.vue?vue&type=template&id=1285108e&scoped=true\"\nimport script from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseImageElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseImageElement.vue?vue&type=style&index=0&id=1285108e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1285108e\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, PropType, computed } from 'vue'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-text',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n return {\r\n shadowStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseTextElement.vue?vue&type=template&id=fc2d45e0&scoped=true\"\nimport script from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTextElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTextElement.vue?vue&type=style&index=0&id=fc2d45e0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-fc2d45e0\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTShapeElement } from '@/types/slides'\r\nimport useElementOutline from '@/views/components/element/hooks/useElementOutline'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\nimport useElementFlip from '@/views/components/element/hooks/useElementFlip'\r\n\r\nimport GradientDefs from './GradientDefs.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-shape',\r\n components: {\r\n GradientDefs,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const outline = computed(() => props.elementInfo.outline)\r\n const { outlineWidth, outlineStyle, outlineColor } = useElementOutline(outline)\r\n \r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const flip = computed(() => props.elementInfo.flip)\r\n const { flipStyle } = useElementFlip(flip)\r\n\r\n return {\r\n shadowStyle,\r\n outlineWidth,\r\n outlineStyle,\r\n outlineColor,\r\n flipStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseShapeElement.vue?vue&type=template&id=d0a0fd1c&scoped=true\"\nimport script from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseShapeElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseShapeElement.vue?vue&type=style&index=0&id=d0a0fd1c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-d0a0fd1c\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport useElementShadow from '@/views/components/element/hooks/useElementShadow'\r\n\r\nimport LinePointMarker from './LinePointMarker.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editable-element-shape',\r\n components: {\r\n LinePointMarker,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const shadow = computed(() => props.elementInfo.shadow)\r\n const { shadowStyle } = useElementShadow(shadow)\r\n\r\n const svgWidth = computed(() => {\r\n const width = Math.abs(props.elementInfo.start[0] - props.elementInfo.end[0])\r\n return width < 24 ? 24 : width\r\n })\r\n const svgHeight = computed(() => {\r\n const height = Math.abs(props.elementInfo.start[1] - props.elementInfo.end[1])\r\n return height < 24 ? 24 : height\r\n })\r\n\r\n const lineDashArray = computed(() => props.elementInfo.style === 'dashed' ? '10, 5' : '0, 0')\r\n\r\n const path = computed(() => {\r\n const start = props.elementInfo.start.join(',')\r\n const end = props.elementInfo.end.join(',')\r\n if (props.elementInfo.broken) {\r\n const mid = props.elementInfo.broken.join(',')\r\n return `M${start} L${mid} L${end}`\r\n }\r\n if (props.elementInfo.curve) {\r\n const mid = props.elementInfo.curve.join(',')\r\n return `M${start} Q${mid} ${end}`\r\n }\r\n return `M${start} L${end}`\r\n })\r\n\r\n return {\r\n shadowStyle,\r\n svgWidth,\r\n svgHeight,\r\n lineDashArray,\r\n path,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseLineElement.vue?vue&type=template&id=56b0510c&scoped=true\"\nimport script from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseLineElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseLineElement.vue?vue&type=style&index=0&id=56b0510c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-56b0510c\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-chart',\r\n components: {\r\n ElementOutline,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const size = computed(() => Math.min(props.elementInfo.width, props.elementInfo.height))\r\n\r\n return {\r\n size,\r\n }\r\n },\r\n})\r\n","import { render } from \"./BaseChartElement.vue?vue&type=template&id=b4562eca&scoped=true\"\nimport script from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseChartElement.vue?vue&type=style&index=0&id=b4562eca&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-b4562eca\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType, ref, watch } from 'vue'\r\nimport { PPTElementOutline, TableCell, TableTheme } from '@/types/slides'\r\nimport { getTextStyle } from './utils'\r\nimport useHideCells from './useHideCells'\r\nimport useSubThemeColor from './useSubThemeColor'\r\n\r\nexport default defineComponent({\r\n name: 'static-table',\r\n props: {\r\n data: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n width: {\r\n type: Number,\r\n required: true,\r\n },\r\n colWidths: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n outline: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n theme: {\r\n type: Object as PropType,\r\n },\r\n editable: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n setup(props) {\r\n const colSizeList = ref([])\r\n const totalWidth = computed(() => colSizeList.value.reduce((a, b) => a + b))\r\n\r\n watch([\r\n () => props.colWidths,\r\n () => props.width,\r\n ], () => {\r\n colSizeList.value = props.colWidths.map(item => item * props.width)\r\n }, { immediate: true })\r\n\r\n const cells = computed(() => props.data)\r\n const { hideCells } = useHideCells(cells)\r\n\r\n const theme = computed(() => props.theme)\r\n const { subThemeColor } = useSubThemeColor(theme)\r\n\r\n return {\r\n colSizeList,\r\n totalWidth,\r\n hideCells,\r\n getTextStyle,\r\n subThemeColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./StaticTable.vue?vue&type=template&id=01f791ba&scoped=true\"\nimport script from \"./StaticTable.vue?vue&type=script&lang=ts\"\nexport * from \"./StaticTable.vue?vue&type=script&lang=ts\"\n\nimport \"./StaticTable.vue?vue&type=style&index=0&id=01f791ba&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-01f791ba\"\n\nexport default script","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTTableElement } from '@/types/slides'\r\n\r\nimport StaticTable from './StaticTable.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element-table',\r\n components: {\r\n StaticTable,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./BaseTableElement.vue?vue&type=template&id=dea016ac&scoped=true\"\nimport script from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\nexport * from \"./BaseTableElement.vue?vue&type=script&lang=ts\"\n\nimport \"./BaseTableElement.vue?vue&type=style&index=0&id=dea016ac&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-dea016ac\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\n\r\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\r\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\r\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\r\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\r\nimport BaseChartElement from '@/views/components/element/ChartElement/BaseChartElement.vue'\r\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'base-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: BaseImageElement,\r\n [ElementTypes.TEXT]: BaseTextElement,\r\n [ElementTypes.SHAPE]: BaseShapeElement,\r\n [ElementTypes.LINE]: BaseLineElement,\r\n [ElementTypes.CHART]: BaseChartElement,\r\n [ElementTypes.TABLE]: BaseTableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n return {\r\n currentElementComponent,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ThumbnailElement.vue?vue&type=template&id=43292aca\"\nimport script from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ThumbnailElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nimport ThumbnailElement from './ThumbnailElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'thumbnail-slide',\r\n components: {\r\n ThumbnailElement,\r\n },\r\n props: {\r\n slide: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n size: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const background = computed(() => props.slide.background)\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n const scale = computed(() => props.size / VIEWPORT_SIZE)\r\n\r\n return {\r\n scale,\r\n backgroundStyle,\r\n VIEWPORT_SIZE,\r\n VIEWPORT_ASPECT_RATIO,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=7c55aca2&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=7c55aca2&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7c55aca2\"\n\nexport default script","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { fillDigit } from '@/utils/common'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport useSlideHandler from '@/hooks/useSlideHandler'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport Draggable from 'vuedraggable'\r\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'thumbnails',\r\n components: {\r\n Draggable,\r\n ThumbnailSlide,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n\r\n const {\r\n copySlide,\r\n pasteSlide,\r\n createSlide,\r\n copyAndPasteSlide,\r\n deleteSlide,\r\n cutSlide,\r\n } = useSlideHandler()\r\n\r\n // 切换页面\r\n const changSlideIndex = (index: number) => {\r\n store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n\r\n if (slideIndex.value === index) return\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n }\r\n\r\n const thumbnailsFocus = computed(() => store.state.thumbnailsFocus)\r\n\r\n // 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效)\r\n const setThumbnailsFocus = (focus: boolean) => {\r\n if (thumbnailsFocus.value === focus) return\r\n store.commit(MutationTypes.SET_THUMBNAILS_FOCUS, focus)\r\n }\r\n\r\n // 拖拽调整顺序后进行数据的同步\r\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\r\n const { newIndex, oldIndex } = eventData\r\n if (oldIndex === newIndex) return\r\n\r\n const _slides = JSON.parse(JSON.stringify(slides.value))\r\n const _slide = _slides[oldIndex]\r\n _slides.splice(oldIndex, 1)\r\n _slides.splice(newIndex, 0, _slide)\r\n store.commit(MutationTypes.SET_SLIDES, _slides)\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, newIndex)\r\n }\r\n\r\n const { enterScreening } = useScreening()\r\n\r\n const contextmenusThumbnails = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteSlide,\r\n },\r\n {\r\n text: '新建页面',\r\n subText: 'Enter',\r\n handler: createSlide,\r\n },\r\n {\r\n text: '开始演示',\r\n subText: 'Ctrl + F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n const contextmenusThumbnailItem = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '剪切',\r\n subText: 'Ctrl + X',\r\n handler: cutSlide,\r\n },\r\n {\r\n text: '复制',\r\n subText: 'Ctrl + C',\r\n handler: copySlide,\r\n },\r\n {\r\n text: '粘贴',\r\n subText: 'Ctrl + V',\r\n handler: pasteSlide,\r\n },\r\n { divider: true },\r\n {\r\n text: '新建页面',\r\n subText: 'Enter',\r\n handler: createSlide,\r\n },\r\n {\r\n text: '复制页面',\r\n subText: 'Ctrl + D',\r\n handler: copyAndPasteSlide,\r\n },\r\n {\r\n text: '删除页面',\r\n subText: 'Delete',\r\n handler: deleteSlide,\r\n },\r\n { divider: true },\r\n {\r\n text: '从当前页演示',\r\n subText: 'Ctrl + F',\r\n handler: enterScreening,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n setThumbnailsFocus,\r\n slides,\r\n slideIndex,\r\n createSlide,\r\n changSlideIndex,\r\n contextmenusThumbnails,\r\n contextmenusThumbnailItem,\r\n fillDigit,\r\n handleDragEnd,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=2148e3da&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=2148e3da&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2148e3da\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","export type ToolbarState = 'elAnimation' | 'elStyle' | 'elPosition' | 'slideStyle' | 'slideAnimation' | 'multiPosition'\r\n\r\nexport const ToolbarStates = {\r\n EL_ANIMATION: 'elAnimation',\r\n EL_STYLE: 'elStyle',\r\n EL_POSITION: 'elPosition',\r\n SLIDE_STYLE: 'slideStyle',\r\n SLIDE_ANIMATION: 'slideAnimation',\r\n MULTI_POSITION: 'multiPosition',\r\n}","\r\n \r\n
\r\n 请先选中要编辑的元素\r\n
\r\n
\r\n
\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n emitRichTextCommand('color', value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n emitRichTextCommand('backcolor', value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
emitRichTextCommand('align', e.target.value)\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
行间距:
\r\n
\r\n
\r\n
\r\n
字间距:
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n
不透明度:
\r\n
updateOpacity(value)\" \r\n />\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-opacity',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const opacity = ref()\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n opacity.value = 'opacity' in handleElement.value && handleElement.value.opacity !== undefined ? handleElement.value.opacity : 1\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateOpacity = (value: number) => {\r\n const props = { opacity: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n opacity,\r\n updateOpacity,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOpacity.vue?vue&type=template&id=b884607e&scoped=true\"\nimport script from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOpacity.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOpacity.vue?vue&type=style&index=0&id=b884607e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-b884607e\"\n\nexport default script","\r\n \r\n
\r\n
启用边框:
\r\n
\r\n toggleOutline(checked)\" \r\n />\r\n
\r\n
\r\n
\r\n \r\n
边框样式:
\r\n
\r\n
\r\n \r\n
边框颜色:
\r\n
\r\n \r\n updateOutline({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
边框粗细:
\r\n
updateOutline({ width: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'color-button',\r\n props: {\r\n color: {\r\n type: String,\r\n required: true,\r\n },\r\n },\r\n}\r\n","import { render } from \"./ColorButton.vue?vue&type=template&id=39016b60&scoped=true\"\nimport script from \"./ColorButton.vue?vue&type=script&lang=ts\"\nexport * from \"./ColorButton.vue?vue&type=script&lang=ts\"\n\nimport \"./ColorButton.vue?vue&type=style&index=0&id=39016b60&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-39016b60\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTElementOutline } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-outline',\r\n components: {\r\n ColorButton,\r\n },\r\n props: {\r\n fixed: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const outline = ref()\r\n const hasOutline = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n outline.value = 'outline' in handleElement.value ? handleElement.value.outline : undefined\r\n hasOutline.value = !!outline.value\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateOutline = (outlineProps: Partial) => {\r\n const props = { outline: { ...outline.value, ...outlineProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n const toggleOutline = (checked: boolean) => {\r\n if (checked) {\r\n const props = { outline: { width: 2, color: '#000', style: 'solid' } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'outline' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n outline,\r\n hasOutline,\r\n toggleOutline,\r\n updateOutline,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementOutline.vue?vue&type=template&id=2d8ce9c0&scoped=true\"\nimport script from \"./ElementOutline.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementOutline.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementOutline.vue?vue&type=style&index=0&id=2d8ce9c0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-2d8ce9c0\"\n\nexport default script","\r\n \r\n
\r\n
启用阴影:
\r\n
\r\n toggleShadow(checked)\" />\r\n
\r\n
\r\n
\r\n \r\n
水平阴影:
\r\n
updateShadow({ h: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
垂直阴影:
\r\n
updateShadow({ v: value })\" \r\n style=\"flex: 3;\"\r\n />\r\n \r\n \r\n
模糊距离:
\r\n
updateShadow({ blur: value })\" \r\n style=\"flex: 3;\"\r\n />\r\n \r\n \r\n
阴影颜色:
\r\n
\r\n \r\n updateShadow({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, PPTElementShadow } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-shadow',\r\n components: {\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const shadow = ref()\r\n const hasShadow = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n shadow.value = 'shadow' in handleElement.value ? handleElement.value.shadow : undefined\r\n hasShadow.value = !!shadow.value\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateShadow = (shadowProps: Partial) => {\r\n const props = { shadow: { ...shadow.value, ...shadowProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n const toggleShadow = (checked: boolean) => {\r\n if (checked) {\r\n const props = { shadow: { h: 1, v: 1, blur: 2, color: '#000' } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'shadow' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n shadow,\r\n hasShadow,\r\n toggleShadow,\r\n updateShadow,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementShadow.vue?vue&type=template&id=5cca6474&scoped=true\"\nimport script from \"./ElementShadow.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementShadow.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementShadow.vue?vue&type=style&index=0&id=5cca6474&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5cca6474\"\n\nexport default script","\r\nimport { computed, defineComponent, onUnmounted, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTextElement } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { TextAttrs } from '@/prosemirror/utils'\r\nimport { WEB_FONTS } from '@/configs/font'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOpacity from '../common/ElementOpacity.vue'\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\n\r\nconst presetStyles = [\r\n {\r\n label: '大标题',\r\n style: {\r\n fontSize: '26px',\r\n fontWeight: 700,\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '48px' },\r\n { command: 'align', value: 'center' },\r\n { command: 'bold' },\r\n ],\r\n },\r\n {\r\n label: '小标题',\r\n style: {\r\n fontSize: '22px',\r\n fontWeight: 700,\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '36px' },\r\n { command: 'align', value: 'center' },\r\n { command: 'bold' },\r\n ],\r\n },\r\n {\r\n label: '正文',\r\n style: {\r\n fontSize: '20px',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '20px' },\r\n ],\r\n },\r\n {\r\n label: '正文[小]',\r\n style: {\r\n fontSize: '18px',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '18px' },\r\n ],\r\n },\r\n {\r\n label: '注释 1',\r\n style: {\r\n fontSize: '16px',\r\n fontStyle: 'italic',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '16px' },\r\n { command: 'em' },\r\n ],\r\n },\r\n {\r\n label: '注释 2',\r\n style: {\r\n fontSize: '16px',\r\n textDecoration: 'underline',\r\n },\r\n cmd: [\r\n { command: 'clear' },\r\n { command: 'fontsize', value: '16px' },\r\n { command: 'underline' },\r\n ],\r\n },\r\n]\r\n\r\nconst webFonts = WEB_FONTS\r\n\r\ninterface CommandPayload {\r\n command: string;\r\n value?: string;\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'text-style-panel',\r\n components: {\r\n ElementOpacity,\r\n ElementOutline,\r\n ElementShadow,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const fill = ref()\r\n const lineHeight = ref()\r\n const wordSpace = ref()\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'text') return\r\n\r\n fill.value = handleElement.value.fill || '#000'\r\n lineHeight.value = handleElement.value.lineHeight || 1.5\r\n wordSpace.value = handleElement.value.wordSpace || 0\r\n }, { deep: true, immediate: true })\r\n\r\n const richTextAttrs = ref({\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n superscript: false,\r\n subscript: false,\r\n code: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '20px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n bulletList: false,\r\n orderedList: false,\r\n blockquote: false,\r\n })\r\n\r\n const availableFonts = computed(() => store.state.availableFonts)\r\n const fontSizeOptions = [\r\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\r\n '36px', '40px', '44px', '48px', '54px', '60px', '66px', '72px', '76px',\r\n '80px', '88px', '96px', '104px', '112px', '120px',\r\n ]\r\n const lineHeightOptions = [0.9, 1.0, 1.15, 1.2, 1.4, 1.5, 1.8, 2.0, 2.5, 3.0]\r\n const wordSpaceOptions = [0, 1, 2, 3, 4, 5, 6, 8, 10]\r\n\r\n // 接收并更新当前光标所在位置的富文本状态\r\n const updateRichTextAttrs = (attr: TextAttrs) => richTextAttrs.value = attr\r\n\r\n emitter.on(EmitterEvents.UPDATE_TEXT_STATE, attr => updateRichTextAttrs(attr))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.UPDATE_TEXT_STATE, attr => updateRichTextAttrs(attr))\r\n })\r\n\r\n // 发射富文本设置命令\r\n const emitRichTextCommand = (command: string, value?: string) => {\r\n emitter.emit(EmitterEvents.EXEC_TEXT_COMMAND, { command, value })\r\n }\r\n\r\n // 发射富文本设置命令(批量)\r\n const emitBatchRichTextCommand = (payload: CommandPayload[]) => {\r\n emitter.emit(EmitterEvents.EXEC_TEXT_COMMAND, payload)\r\n }\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置行高\r\n const updateLineHeight = (value: number) => {\r\n const props = { lineHeight: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置字间距\r\n const updateWordSpace = (value: number) => {\r\n const props = { wordSpace: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置文本框填充\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n fill,\r\n lineHeight,\r\n wordSpace,\r\n richTextAttrs,\r\n availableFonts,\r\n webFonts,\r\n fontSizeOptions,\r\n lineHeightOptions,\r\n wordSpaceOptions,\r\n updateLineHeight,\r\n updateWordSpace,\r\n updateFill,\r\n emitRichTextCommand,\r\n emitBatchRichTextCommand,\r\n presetStyles,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TextStylePanel.vue?vue&type=template&id=43fccffc&scoped=true\"\nimport script from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TextStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TextStylePanel.vue?vue&type=style&index=0&id=43fccffc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-43fccffc\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
按形状裁剪:
\r\n
\r\n\r\n
\r\n {{type.label}}:
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
{{filter.label}}
\r\n
updateFilter(filter, value)\"\r\n />\r\n {{filter.value}}
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
replaceImage(files)\">\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n 垂直翻转\r\n 水平翻转\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTImageElement, PPTShapeElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-flip',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const flip = ref({\r\n x: 0,\r\n y: 0,\r\n })\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || !['image', 'shape'].includes(handleElement.value.type)) return\r\n\r\n if (handleElement.value.flip) {\r\n flip.value = {\r\n x: handleElement.value.flip.x || 0,\r\n y: handleElement.value.flip.y || 0,\r\n }\r\n }\r\n else flip.value = { x: 0, y: 0 }\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateFlip = (value: number) => {\r\n const props = { flip: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n flip,\r\n updateFlip,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementFlip.vue?vue&type=template&id=4a631c86&scoped=true\"\nimport script from \"./ElementFlip.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementFlip.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementFlip.vue?vue&type=style&index=0&id=4a631c86&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4a631c86\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTImageElement, Slide } from '@/types/slides'\r\nimport { CLIPPATHS } from '@/configs/imageClip'\r\nimport { getImageDataURL } from '@/utils/image'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ElementFlip from '../common/ElementFlip.vue'\r\n\r\ninterface FilterOption {\r\n label: string;\r\n key: string;\r\n default: number;\r\n value: number;\r\n unit: string;\r\n max: number;\r\n step: number;\r\n}\r\n\r\nconst defaultFilters: FilterOption[] = [\r\n { label: '模糊', key: 'blur', default: 0, value: 0, unit: 'px', max: 10, step: 1 },\r\n { label: '亮度', key: 'brightness', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '对比度', key: 'contrast', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '灰度', key: 'grayscale', default: 0, value: 0, unit: '%', max: 100, step: 5 },\r\n { label: '饱和度', key: 'saturate', default: 100, value: 100, unit: '%', max: 200, step: 5 },\r\n { label: '色相', key: 'hue-rotate', default: 0, value: 0, unit: 'deg', max: 360, step: 10 },\r\n { label: '不透明度', key: 'opacity', default: 100, value: 100, unit: '%', max: 100, step: 5 },\r\n]\r\n\r\nconst shapeClipPathOptions = CLIPPATHS\r\nconst ratioClipOptions = [\r\n {\r\n label: '纵横比(方形)',\r\n children: [\r\n { key: '1:1', ratio: 1 / 1 },\r\n ],\r\n },\r\n {\r\n label: '纵横比(纵向)',\r\n children: [\r\n { key: '2:3', ratio: 3 / 2 },\r\n { key: '3:4', ratio: 4 / 3 },\r\n { key: '3:5', ratio: 5 / 3 },\r\n { key: '4:5', ratio: 5 / 4 },\r\n ],\r\n },\r\n {\r\n label: '纵横比(横向)',\r\n children: [\r\n { key: '3:2', ratio: 2 / 3 },\r\n { key: '4:3', ratio: 3 / 4 },\r\n { key: '5:3', ratio: 3 / 5 },\r\n { key: '5:4', ratio: 4 / 5 },\r\n ],\r\n },\r\n {\r\n children: [\r\n { key: '16:9', ratio: 9 / 16 },\r\n { key: '16:10', ratio: 10 / 16 },\r\n ],\r\n },\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'image-style-panel',\r\n components: {\r\n ElementOutline,\r\n ElementShadow,\r\n ElementFlip,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const clipPanelVisible = ref(false)\r\n\r\n const filterOptions = ref(JSON.parse(JSON.stringify(defaultFilters)))\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'image') return\r\n \r\n const filters = handleElement.value.filters\r\n if (filters) {\r\n filterOptions.value = defaultFilters.map(item => {\r\n if (filters[item.key] !== undefined) return { ...item, value: parseInt(filters[item.key]) }\r\n return item\r\n })\r\n }\r\n else filterOptions.value = JSON.parse(JSON.stringify(defaultFilters))\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置滤镜\r\n const updateFilter = (filter: FilterOption, value: number) => {\r\n const originFilters = handleElement.value.filters || {}\r\n const filters = { ...originFilters, [filter.key]: `${value}${filter.unit}` }\r\n const props = { filters }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 打开自由裁剪\r\n const clipImage = () => {\r\n store.commit(MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID, handleElement.value.id)\r\n clipPanelVisible.value = false\r\n }\r\n\r\n // 获取原始图片的位置大小\r\n const getImageElementDataBeforeClip = () => {\r\n\r\n // 图片当前的位置大小和裁剪范围\r\n const imgWidth = handleElement.value.width\r\n const imgHeight = handleElement.value.height\r\n const imgLeft = handleElement.value.left\r\n const imgTop = handleElement.value.top\r\n const originClipRange = handleElement.value.clip ? handleElement.value.clip.range : [[0, 0], [100, 100]]\r\n\r\n const originWidth = imgWidth / ((originClipRange[1][0] - originClipRange[0][0]) / 100)\r\n const originHeight = imgHeight / ((originClipRange[1][1] - originClipRange[0][1]) / 100)\r\n const originLeft = imgLeft - originWidth * (originClipRange[0][0] / 100)\r\n const originTop = imgTop - originHeight * (originClipRange[0][1] / 100)\r\n\r\n return {\r\n originClipRange,\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n }\r\n }\r\n\r\n // 预设裁剪\r\n const presetImageClip = (shape: string, ratio = 0) => {\r\n const {\r\n originClipRange,\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n } = getImageElementDataBeforeClip()\r\n \r\n // 纵横比裁剪(形状固定为矩形)\r\n if (ratio) {\r\n const imageRatio = originHeight / originWidth\r\n\r\n const min = 0\r\n const max = 100\r\n let range\r\n\r\n if (imageRatio > ratio) {\r\n const distance = ((1 - ratio / imageRatio) / 2) * 100\r\n range = [[min, distance], [max, max - distance]]\r\n }\r\n else {\r\n const distance = ((1 - imageRatio / ratio) / 2) * 100\r\n range = [[distance, min], [max - distance, max]]\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n clip: { ...handleElement.value.clip, shape, range },\r\n left: originLeft + originWidth * (range[0][0] / 100),\r\n top: originTop + originHeight * (range[0][1] / 100),\r\n width: originWidth * (range[1][0] - range[0][0]) / 100,\r\n height: originHeight * (range[1][1] - range[0][1]) / 100,\r\n },\r\n })\r\n }\r\n // 形状裁剪(保持当前裁剪范围)\r\n else {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n clip: { ...handleElement.value.clip, shape, range: originClipRange }\r\n },\r\n })\r\n }\r\n clipImage()\r\n addHistorySnapshot()\r\n }\r\n\r\n // 替换图片(保持当前的样式)\r\n const replaceImage = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => {\r\n const props = { src: dataURL }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 重置图片:清除全部样式\r\n const resetImage = () => {\r\n if (handleElement.value.clip) {\r\n const {\r\n originWidth,\r\n originHeight,\r\n originLeft,\r\n originTop,\r\n } = getImageElementDataBeforeClip()\r\n\r\n store.commit(MutationTypes.UPDATE_ELEMENT, {\r\n id: handleElement.value.id,\r\n props: {\r\n left: originLeft,\r\n top: originTop,\r\n width: originWidth,\r\n height: originHeight,\r\n },\r\n })\r\n }\r\n\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, {\r\n id: handleElement.value.id,\r\n propName: ['clip', 'outline', 'flip', 'shadow', 'filters'],\r\n })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将图片设置为背景\r\n const setBackgroundImage = () => {\r\n const background = {\r\n ...currentSlide.value.background,\r\n type: 'image',\r\n image: handleElement.value.src,\r\n imageSize: 'cover',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n clipPanelVisible,\r\n shapeClipPathOptions,\r\n ratioClipOptions,\r\n filterOptions,\r\n handleElement,\r\n updateFilter,\r\n clipImage,\r\n presetImageClip,\r\n replaceImage,\r\n resetImage,\r\n setBackgroundImage,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ImageStylePanel.vue?vue&type=template&id=76aa2020&scoped=true\"\nimport script from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ImageStylePanel.vue?vue&type=style&index=0&id=76aa2020&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-76aa2020\"\n\nexport default script","\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
起点颜色:
\r\n
\r\n \r\n updateGradient({ color: [value, gradient.color[1]] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
终点颜色:
\r\n
\r\n \r\n updateGradient({ color: [gradient.color[0], value] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
渐变角度:
\r\n
updateGradient({ rotate: value })\" \r\n />\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTShapeElement, ShapeGradient } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOpacity from '../common/ElementOpacity.vue'\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ElementFlip from '../common/ElementFlip.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'shape-style-panel',\r\n components: {\r\n ElementOpacity,\r\n ElementOutline,\r\n ElementShadow,\r\n ElementFlip,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const fill = ref()\r\n const gradient = ref()\r\n const fillType = ref('fill')\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'shape') return\r\n fill.value = handleElement.value.fill || '#000'\r\n\r\n gradient.value = handleElement.value.gradient || { type: 'linear', rotate: 0, color: [fill.value, '#fff'] }\r\n\r\n fillType.value = handleElement.value.gradient ? 'gradient' : 'fill'\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置填充类型:渐变、纯色\r\n const updateFillType = (type: 'gradient' | 'fill') => {\r\n if (type === 'fill') {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, {\r\n id: handleElement.value.id,\r\n propName: 'gradient',\r\n })\r\n }\r\n else {\r\n const props = { gradient: gradient.value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置渐变填充\r\n const updateGradient = (gradientProps: Partial) => {\r\n const props = { gradient: { ...gradient.value, ...gradientProps } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置填充色\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n fill,\r\n gradient,\r\n fillType,\r\n updateFillType,\r\n updateFill,\r\n updateGradient,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ShapeStylePanel.vue?vue&type=template&id=998a7a02&scoped=true\"\nimport script from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ShapeStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ShapeStylePanel.vue?vue&type=style&index=0&id=998a7a02&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-998a7a02\"\n\nexport default script","\r\n \r\n
\r\n
线条样式:
\r\n
\r\n
\r\n
\r\n
线条颜色:
\r\n
\r\n \r\n updateLine({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
线条宽度:
\r\n
updateLine({ width: value })\" \r\n style=\"flex: 3;\" \r\n />\r\n \r\n \r\n
\r\n
起点样式:
\r\n
\r\n
\r\n
\r\n
终点样式:
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTLineElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementShadow from '../common/ElementShadow.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'line-style-panel',\r\n components: {\r\n ElementShadow,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const updateLine = (props: Partial) => {\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n updateLine,\r\n }\r\n }\r\n})\r\n","import { render } from \"./LineStylePanel.vue?vue&type=template&id=65b24fb3&scoped=true\"\nimport script from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./LineStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./LineStylePanel.vue?vue&type=style&index=0&id=65b24fb3&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-65b24fb3\"\n\nexport default script","\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n updateOptions({ showArea: e.target.checked })\"\r\n :checked=\"showArea\" \r\n style=\"flex: 1;\"\r\n >面积图样式\r\n updateOptions({ showLine: !e.target.checked })\"\r\n :checked=\"!showLine\" \r\n style=\"flex: 1;\"\r\n >散点图样式\r\n
\r\n \r\n updateOptions({ lineSmooth: e.target.checked })\" \r\n :checked=\"lineSmooth\"\r\n >使用平滑曲线\r\n
\r\n \r\n
\r\n updateOptions({ horizontalBars: e.target.checked })\" \r\n :checked=\"horizontalBars\"\r\n >条形图样式\r\n
\r\n
\r\n updateOptions({ donut: e.target.checked })\" \r\n :checked=\"donut\"\r\n >环形图样式\r\n
\r\n\r\n
\r\n\r\n
\r\n
背景填充:
\r\n
\r\n \r\n updateFill(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
主题配色:
\r\n
\r\n \r\n updateTheme(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
网格颜色:
\r\n
\r\n \r\n updateGridColor(value)\"\r\n />\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n updateData(value)\"\r\n />\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { ChartData } from '@/types/slides'\r\nimport { computed, defineComponent, onMounted, PropType, ref } from 'vue'\r\n\r\nconst CELL_WIDTH = 100\r\nconst CELL_HEIGHT = 32\r\n\r\nexport default defineComponent({\r\n name: 'chart-data-editor',\r\n props: {\r\n data: {\r\n type: Object as PropType,\r\n required: true,\r\n }\r\n },\r\n setup(props, { emit }) {\r\n const selectedRange = ref([0, 0])\r\n const tempRangeSize = ref({ width: 0, height: 0 })\r\n\r\n // 当前选区的边框线条位置\r\n const rangeLines = computed(() => {\r\n const width = selectedRange.value[0] * CELL_WIDTH\r\n const height = selectedRange.value[1] * CELL_HEIGHT\r\n return [\r\n { type: 't', style: {width: width + 'px'} },\r\n { type: 'b', style: {top: height + 'px', width: width + 'px'} },\r\n { type: 'l', style: {height: height + 'px'} },\r\n { type: 'r', style: {left: width + 'px', height: height + 'px'} },\r\n ]\r\n })\r\n\r\n // 当前选区的缩放点位置\r\n const resizablePointStyle = computed(() => {\r\n const width = selectedRange.value[0] * CELL_WIDTH\r\n const height = selectedRange.value[1] * CELL_HEIGHT\r\n return { left: width + 'px', top: height + 'px' }\r\n })\r\n\r\n // 初始化图表数据:将数据格式化并填充到DOM\r\n const initData = () => {\r\n const _data: string[][] = []\r\n\r\n const { labels, series } = props.data\r\n const rowCount = labels.length\r\n const colCount = series.length\r\n\r\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n const row = [labels[rowIndex]]\r\n for (let colIndex = 0; colIndex < colCount; colIndex++) {\r\n row.push(series[colIndex][rowIndex] + '')\r\n }\r\n _data.push(row)\r\n }\r\n\r\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n for (let colIndex = 0; colIndex < colCount + 1; colIndex++) {\r\n const inputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\r\n if (!inputRef) continue\r\n inputRef.value = _data[rowIndex][colIndex] + ''\r\n }\r\n }\r\n\r\n selectedRange.value = [colCount + 1, rowCount]\r\n }\r\n\r\n onMounted(initData)\r\n\r\n // 获取当前图表DOM中的数据,整理格式化后传递出去\r\n const getTableData = () => {\r\n const [col, row] = selectedRange.value\r\n\r\n const labels: string[] = []\r\n const series: number[][] = []\r\n\r\n // 第一列为系列名,实际数据从第二列开始\r\n for (let rowIndex = 0; rowIndex < row; rowIndex++) {\r\n let labelsItem = `类别${rowIndex + 1}`\r\n const labelInputRef = document.querySelector(`#cell-${rowIndex}-0`) as HTMLInputElement\r\n if (labelInputRef && labelInputRef.value) labelsItem = labelInputRef.value\r\n labels.push(labelsItem)\r\n }\r\n\r\n for (let colIndex = 1; colIndex < col; colIndex++) {\r\n const seriesItem = []\r\n for (let rowIndex = 0; rowIndex < row; rowIndex++) {\r\n const valueInputRef = document.querySelector(`#cell-${rowIndex}-${colIndex}`) as HTMLInputElement\r\n let value = 0\r\n if (valueInputRef && valueInputRef.value && !!(+valueInputRef.value)) {\r\n value = +valueInputRef.value\r\n }\r\n seriesItem.push(value)\r\n }\r\n series.push(seriesItem)\r\n }\r\n const data = { labels, series }\r\n emit('save', data)\r\n }\r\n\r\n // 关闭图表数据编辑器\r\n const closeEditor = () => emit('close')\r\n\r\n // 鼠标拖拽修改选中的数据范围\r\n const changeSelectRange = (e: MouseEvent) => {\r\n let isMouseDown = true\r\n\r\n const startPageX = e.pageX\r\n const startPageY = e.pageY\r\n\r\n const originWidth = selectedRange.value[0] * CELL_WIDTH\r\n const originHeight = selectedRange.value[1] * CELL_HEIGHT\r\n\r\n document.onmousemove = e => {\r\n if (!isMouseDown) return\r\n\r\n const currentPageX = e.pageX\r\n const currentPageY = e.pageY\r\n\r\n const x = currentPageX - startPageX\r\n const y = currentPageY - startPageY\r\n\r\n const width = originWidth + x\r\n const height = originHeight + y\r\n\r\n tempRangeSize.value = { width, height }\r\n }\r\n\r\n document.onmouseup = e => {\r\n isMouseDown = false\r\n document.onmousemove = null\r\n document.onmouseup = null\r\n\r\n const endPageX = e.pageX\r\n const endPageY = e.pageY\r\n\r\n if (startPageX === endPageX && startPageY === endPageY) return\r\n\r\n // 拖拽结束时,范围超过格子一半自动扩大到下一格(如拖动到一格半多的位置,会自动扩展到两格,横竖都同理)\r\n let width = tempRangeSize.value.width\r\n let height = tempRangeSize.value.height\r\n if (width % CELL_WIDTH > CELL_WIDTH * 0.5) width = width + (CELL_WIDTH - width % CELL_WIDTH)\r\n if (height % CELL_HEIGHT > CELL_HEIGHT * 0.5) height = height + (CELL_HEIGHT - height % CELL_HEIGHT)\r\n\r\n let row = Math.round(height / CELL_HEIGHT)\r\n let col = Math.round(width / CELL_WIDTH)\r\n\r\n if (row < 3) row = 3\r\n if (col < 2) col = 2\r\n\r\n selectedRange.value = [col, row]\r\n tempRangeSize.value = { width: 0, height: 0 }\r\n }\r\n }\r\n\r\n return {\r\n tempRangeSize,\r\n rangeLines,\r\n resizablePointStyle,\r\n changeSelectRange,\r\n selectedRange,\r\n getTableData,\r\n closeEditor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ChartDataEditor.vue?vue&type=template&id=08aba838&scoped=true\"\nimport script from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./ChartDataEditor.vue?vue&type=script&lang=ts\"\n\nimport \"./ChartDataEditor.vue?vue&type=style&index=0&id=08aba838&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-08aba838\"\n\nexport default script","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport { IBarChartOptions, ILineChartOptions, IPieChartOptions } from 'chartist'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ChartData, PPTChartElement } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ElementOutline from '../../common/ElementOutline.vue'\r\nimport ColorButton from '../../common/ColorButton.vue'\r\nimport ChartDataEditor from './ChartDataEditor.vue'\r\n\r\nexport default defineComponent({\r\n name: 'chart-style-panel',\r\n components: {\r\n ElementOutline,\r\n ChartDataEditor,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const chartDataEditorVisible = ref(false)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const fill = ref()\r\n\r\n const themeColor = ref('')\r\n const gridColor = ref('')\r\n\r\n const lineSmooth = ref(true)\r\n const showLine = ref(true)\r\n const showArea = ref(false)\r\n const horizontalBars = ref(false)\r\n const donut = ref(false)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'chart') return\r\n fill.value = handleElement.value.fill || '#000'\r\n\r\n if (handleElement.value.options) {\r\n const {\r\n lineSmooth: _lineSmooth,\r\n showLine: _showLine,\r\n showArea: _showArea,\r\n horizontalBars: _horizontalBars,\r\n donut: _donut,\r\n } = handleElement.value.options\r\n\r\n if (_lineSmooth !== undefined) lineSmooth.value = _lineSmooth\r\n if (_showLine !== undefined) showLine.value = _showLine\r\n if (_showArea !== undefined) showArea.value = _showArea\r\n if (_horizontalBars !== undefined) horizontalBars.value = _horizontalBars\r\n if (_donut !== undefined) donut.value = _donut\r\n }\r\n\r\n themeColor.value = handleElement.value.themeColor\r\n gridColor.value = handleElement.value.gridColor || 'rgba(0, 0, 0, 0.4)'\r\n }, { deep: true, immediate: true })\r\n\r\n // 设置图表数据\r\n const updateData = (data: ChartData) => {\r\n chartDataEditorVisible.value = false\r\n const props = { data }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置填充色\r\n const updateFill = (value: string) => {\r\n const props = { fill: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置其他选项:柱状图转条形图、折线图转面积图、折线图转散点图、饼图转环形图、折线图开关平滑曲线\r\n const updateOptions = (optionProps: ILineChartOptions & IBarChartOptions & IPieChartOptions) => {\r\n const options = handleElement.value.options || {}\r\n const newOptions = { ...options, ...optionProps }\r\n const props = { options: newOptions }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置主题色\r\n const updateTheme = (themeColor: string) => {\r\n const props = { themeColor }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置网格颜色\r\n const updateGridColor = (gridColor: string) => {\r\n const props = { gridColor }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n chartDataEditorVisible,\r\n handleElement,\r\n updateData,\r\n fill,\r\n updateFill,\r\n lineSmooth,\r\n showLine,\r\n showArea,\r\n horizontalBars,\r\n donut,\r\n updateOptions,\r\n themeColor,\r\n gridColor,\r\n updateTheme,\r\n updateGridColor,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=4dd87e36&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4dd87e36&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4dd87e36\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n updateTextAttrs({ color: value })\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateTextAttrs({ backcolor: value })\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
updateTextAttrs({ align: e.target.value })\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
行数:
\r\n
setTableRow(e)\"\r\n @blur=\"e => setTableRow(e)\"\r\n style=\"flex: 3;\" \r\n />\r\n \r\n
\r\n
列数:
\r\n
setTableCol(e)\"\r\n @blur=\"e => setTableCol(e)\"\r\n style=\"flex: 3;\" \r\n />\r\n \r\n\r\n
\r\n\r\n
\r\n
启用主题表格:
\r\n
\r\n toggleTheme(checked)\" \r\n />\r\n
\r\n
\r\n\r\n
\r\n \r\n updateTheme({ rowHeader: e.target.checked })\" \r\n :checked=\"theme.rowHeader\" \r\n style=\"flex: 1;\"\r\n >标题行\r\n updateTheme({ rowFooter: e.target.checked })\" \r\n :checked=\"theme.rowFooter\" \r\n style=\"flex: 1;\"\r\n >汇总行\r\n
\r\n \r\n updateTheme({ colHeader: e.target.checked })\" \r\n :checked=\"theme.colHeader\" \r\n style=\"flex: 1;\"\r\n >第一列\r\n updateTheme({ colFooter: e.target.checked })\" \r\n :checked=\"theme.colFooter\" \r\n style=\"flex: 1;\"\r\n >最后一列\r\n
\r\n \r\n
主题颜色:
\r\n
\r\n \r\n updateTheme({ color: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, ref, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTTableElement, TableCell, TableCellStyle, TableTheme } from '@/types/slides'\r\nimport emitter, { EmitterEvents } from '@/utils/emitter'\r\nimport { createRandomCode } from '@/utils/common'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport { message } from 'ant-design-vue'\r\n\r\nimport ElementOutline from '../common/ElementOutline.vue'\r\nimport ColorButton from '../common/ColorButton.vue'\r\n\r\nexport default defineComponent({\r\n name: 'table-style-panel',\r\n components: {\r\n ElementOutline,\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n \r\n const availableFonts = computed(() => store.state.availableFonts)\r\n const fontSizeOptions = [\r\n '12px', '14px', '16px', '18px', '20px', '22px', '24px', '28px', '32px',\r\n ]\r\n\r\n const textAttrs = ref({\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '12px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n })\r\n\r\n const theme = ref()\r\n const hasTheme = ref(false)\r\n const rowCount = ref(0)\r\n const colCount = ref(0)\r\n const minRowCount = ref(0)\r\n const minColCount = ref(0)\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value || handleElement.value.type !== 'table') return\r\n \r\n theme.value = handleElement.value.theme\r\n hasTheme.value = !!theme.value\r\n\r\n rowCount.value = handleElement.value.data.length\r\n colCount.value = handleElement.value.data[0].length\r\n\r\n minRowCount.value = handleElement.value.data.length\r\n minColCount.value = handleElement.value.data[0].length\r\n }, { deep: true, immediate: true })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const selectedCells = ref([])\r\n\r\n // 更新当前选中单元格的文本样式状态\r\n const updateTextAttrState = () => {\r\n if (!handleElement.value) return\r\n\r\n let rowIndex = 0\r\n let colIndex = 0\r\n if (selectedCells.value.length) {\r\n const selectedCell = selectedCells.value[0]\r\n rowIndex = +selectedCell.split('_')[0]\r\n colIndex = +selectedCell.split('_')[1]\r\n }\r\n const style = handleElement.value.data[rowIndex][colIndex].style\r\n\r\n if (!style) {\r\n textAttrs.value = {\r\n bold: false,\r\n em: false,\r\n underline: false,\r\n strikethrough: false,\r\n color: '#000',\r\n backcolor: '#000',\r\n fontsize: '12px',\r\n fontname: '微软雅黑',\r\n align: 'left',\r\n }\r\n }\r\n else {\r\n textAttrs.value = {\r\n bold: !!style.bold,\r\n em: !!style.em,\r\n underline: !!style.underline,\r\n strikethrough: !!style.strikethrough,\r\n color: style.color || '#000',\r\n backcolor: style.backcolor || '#000',\r\n fontsize: style.fontsize || '12px',\r\n fontname: style.fontname || '微软雅黑',\r\n align: style.align || 'left',\r\n }\r\n }\r\n }\r\n\r\n // 监听并更新当前选中的单元格\r\n const updateSelectedCells = (cells: string[]) => {\r\n selectedCells.value = cells\r\n updateTextAttrState()\r\n }\r\n\r\n emitter.on(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells => updateSelectedCells(cells))\r\n onUnmounted(() => {\r\n emitter.off(EmitterEvents.UPDATE_TABLE_SELECTED_CELL, cells => updateSelectedCells(cells))\r\n })\r\n\r\n // 设置单元格内容文本样式\r\n const updateTextAttrs = (textAttrProp: Partial) => {\r\n const data: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n for (let j = 0; j < data[i].length; j++) {\r\n if (!selectedCells.value.length || selectedCells.value.includes(`${i}_${j}`)) {\r\n const style = data[i][j].style || {}\r\n data[i][j].style = { ...style, ...textAttrProp }\r\n }\r\n }\r\n }\r\n const props = { data }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n\r\n addHistorySnapshot()\r\n updateTextAttrState()\r\n }\r\n\r\n // 更新表格主题:主题色、标题行、汇总行、第一列、最后一列\r\n const updateTheme = (themeProp: Partial) => {\r\n const currentTheme = theme.value || {}\r\n const props = { theme: { ...currentTheme, ...themeProp } }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 开启/关闭表格主题\r\n const toggleTheme = (checked: boolean) => {\r\n if (checked) {\r\n const props = {\r\n theme: {\r\n color: '#d14424',\r\n rowHeader: true,\r\n rowFooter: false,\r\n colHeader: false,\r\n colFooter: false,\r\n }\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n }\r\n else {\r\n store.commit(MutationTypes.REMOVE_ELEMENT_PROPS, { id: handleElement.value.id, propName: 'theme' })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置表格行数(只能增加)\r\n const setTableRow = (e: KeyboardEvent) => {\r\n const value = +(e.target as HTMLInputElement).value\r\n const rowCount = handleElement.value.data.length\r\n\r\n if (value === rowCount) return\r\n if (value < rowCount) return message.warning('设置行数不能少于当前值')\r\n\r\n const rowCells: TableCell[] = new Array(colCount.value).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n const newTableCells: TableCell[][] = new Array(value - rowCount).fill(rowCells)\r\n\r\n const tableCells: TableCell[][] = JSON.parse(JSON.stringify(handleElement.value.data))\r\n tableCells.push(...newTableCells)\r\n\r\n const props = { data: tableCells }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n\r\n // 设置表格列数(只能增加)\r\n const setTableCol = (e: KeyboardEvent) => {\r\n const value = +(e.target as HTMLInputElement).value\r\n const colCount = handleElement.value.data[0].length\r\n\r\n if (value === colCount) return\r\n if (value < colCount) return message.warning('设置列数不能少于当前值')\r\n\r\n const tableCells = handleElement.value.data.map(item => {\r\n const cells: TableCell[] = new Array(value - colCount).fill({ id: createRandomCode(), colspan: 1, rowspan: 1, text: '' })\r\n item.push(...cells)\r\n return item\r\n })\r\n\r\n const colSizeList = handleElement.value.colWidths.map(item => item * handleElement.value.width)\r\n const newColSizeList = new Array(value - colCount).fill(100)\r\n colSizeList.push(...newColSizeList)\r\n\r\n const width = handleElement.value.width + 100 * (value - colCount)\r\n const colWidths = colSizeList.map(item => item / width)\r\n\r\n const props = {\r\n width,\r\n data: tableCells,\r\n colWidths,\r\n }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n availableFonts,\r\n fontSizeOptions,\r\n textAttrs,\r\n updateTextAttrs,\r\n theme,\r\n rowCount,\r\n colCount,\r\n minRowCount,\r\n minColCount,\r\n hasTheme,\r\n toggleTheme,\r\n updateTheme,\r\n setTableRow,\r\n setTableCol,\r\n }\r\n },\r\n})\r\n","import { render } from \"./TableStylePanel.vue?vue&type=template&id=90d47588&scoped=true\"\nimport script from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./TableStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./TableStylePanel.vue?vue&type=style&index=0&id=90d47588&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-90d47588\"\n\nexport default script","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement } from '@/types/slides'\r\n\r\nimport TextStylePanel from './TextStylePanel.vue'\r\nimport ImageStylePanel from './ImageStylePanel.vue'\r\nimport ShapeStylePanel from './ShapeStylePanel.vue'\r\nimport LineStylePanel from './LineStylePanel.vue'\r\nimport ChartStylePanel from './ChartStylePanel/index.vue'\r\nimport TableStylePanel from './TableStylePanel.vue'\r\n\r\nexport default defineComponent({\r\n name: 'element-style-panel',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const currentPanelComponent = computed(() => {\r\n if (!handleElement.value) return null\r\n \r\n const panelMap = {\r\n [ElementTypes.TEXT]: TextStylePanel,\r\n [ElementTypes.IMAGE]: ImageStylePanel,\r\n [ElementTypes.SHAPE]: ShapeStylePanel,\r\n [ElementTypes.LINE]: LineStylePanel,\r\n [ElementTypes.CHART]: ChartStylePanel,\r\n [ElementTypes.TABLE]: TableStylePanel,\r\n }\r\n return panelMap[handleElement.value.type] || null\r\n })\r\n\r\n return {\r\n handleElement,\r\n currentPanelComponent,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=3eb3d748\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
位置:
\r\n
updateLeft(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n updateTop(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n
\r\n
\r\n
X
\r\n
\r\n
Y
\r\n
\r\n\r\n
\r\n \r\n
大小:
\r\n
updateWidth(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n updateHeight(value)\"\r\n style=\"flex: 4;\"\r\n />\r\n \r\n \r\n
\r\n
宽
\r\n
\r\n
高
\r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
旋转:
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
updateRotate(value)\" \r\n style=\"flex: 4;\" \r\n />\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, ref, watch } from 'vue'\r\nimport round from 'lodash/round'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement } from '@/types/slides'\r\nimport { MIN_SIZE } from '@/configs/element'\r\nimport useOrderElement from '@/hooks/useOrderElement'\r\nimport useAlignElementToCanvas from '@/hooks/useAlignElementToCanvas'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'element-positopn-panel',\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n\r\n const left = ref(0)\r\n const top = ref(0)\r\n const width = ref(0)\r\n const height = ref(0)\r\n const rotate = ref(0)\r\n const fixedRatio = ref(false)\r\n\r\n const minSize = computed(() => {\r\n if (!handleElement.value) return 20\r\n return MIN_SIZE[handleElement.value.type] || 20\r\n })\r\n\r\n watch(handleElement, () => {\r\n if (!handleElement.value) return\r\n\r\n left.value = round(handleElement.value.left, 1)\r\n top.value = round(handleElement.value.top, 1)\r\n\r\n fixedRatio.value = 'fixedRatio' in handleElement.value && !!handleElement.value.fixedRatio\r\n\r\n if (handleElement.value.type !== 'line') {\r\n width.value = round(handleElement.value.width, 1)\r\n height.value = round(handleElement.value.height, 1)\r\n rotate.value = 'rotate' in handleElement.value && handleElement.value.rotate !== undefined ? round(handleElement.value.rotate, 1) : 0\r\n }\r\n }, { deep: true, immediate: true })\r\n\r\n const { orderElement } = useOrderElement()\r\n const { alignElementToCanvas } = useAlignElementToCanvas()\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置元素位置\r\n const updateLeft = (value: number) => {\r\n const props = { left: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateTop = (value: number) => {\r\n const props = { top: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置元素宽度、高度、旋转角度\r\n const updateWidth = (value: number) => {\r\n const props = { width: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateHeight = (value: number) => {\r\n const props = { height: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n const updateRotate = (value: number) => {\r\n const props = { rotate: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 固定元素的宽高比\r\n const updateFixedRatio = (value: boolean) => {\r\n const props = { fixedRatio: value }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将元素旋转45度(顺时针或逆时针)\r\n const updateRotate45 = (command: '+' | '-') => {\r\n let _rotate = Math.floor(rotate.value / 45) * 45\r\n if (command === '+') _rotate = _rotate + 45\r\n else if (command === '-') _rotate = _rotate - 45\r\n\r\n if (_rotate < -180) _rotate = -180\r\n if (_rotate > 180) _rotate = 180\r\n\r\n const props = { rotate: _rotate }\r\n store.commit(MutationTypes.UPDATE_ELEMENT, { id: handleElement.value.id, props })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n handleElement,\r\n orderElement,\r\n alignElementToCanvas,\r\n left,\r\n top,\r\n width,\r\n height,\r\n rotate,\r\n fixedRatio,\r\n minSize,\r\n updateLeft,\r\n updateTop,\r\n updateWidth,\r\n updateHeight,\r\n updateRotate,\r\n updateFixedRatio,\r\n updateRotate45,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementPositionPanel.vue?vue&type=template&id=15c9ddcc&scoped=true\"\nimport script from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementPositionPanel.vue?vue&type=style&index=0&id=15c9ddcc&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-15c9ddcc\"\n\nexport default script","\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
{{type.name}}:
\r\n
\r\n
\r\n
\r\n {{item.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
选中画布中的元素添加动画
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
{{index + 1}}
\r\n
【{{element.elType}}】{{element.animationType}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","export const ANIMATIONS = [\r\n {\r\n type: 'bounce',\r\n name: '弹跳',\r\n children: [\r\n { name: '弹入', value: 'bounceIn' },\r\n { name: '向右弹入', value: 'bounceInLeft' },\r\n { name: '向左弹入', value: 'bounceInRight' },\r\n { name: '向上弹入', value: 'bounceInUp' },\r\n { name: '向下弹入', value: 'bounceInDown' },\r\n ],\r\n },\r\n {\r\n type: 'fade',\r\n name: '浮现',\r\n children: [\r\n { name: '浮入', value: 'fadeIn' },\r\n { name: '向下浮入', value: 'fadeInDown' },\r\n { name: '向下长距浮入', value: 'fadeInDownBig' },\r\n { name: '向右浮入', value: 'fadeInLeft' },\r\n { name: '向右长距浮入', value: 'fadeInLeftBig' },\r\n { name: '向左浮入', value: 'fadeInRight' },\r\n { name: '向左长距浮入', value: 'fadeInRightBig' },\r\n { name: '向上浮入', value: 'fadeInUp' },\r\n { name: '向上长距浮入', value: 'fadeInUpBig' },\r\n { name: '从左上浮入', value: 'fadeInTopLeft' },\r\n { name: '从右上浮入', value: 'fadeInTopRight' },\r\n { name: '从左下浮入', value: 'fadeInBottomLeft' },\r\n { name: '从右下浮入', value: 'fadeInBottomRight' },\r\n ],\r\n },\r\n {\r\n type: 'rotate',\r\n name: '旋转',\r\n children: [\r\n { name: '旋转进入', value: 'rotateIn' },\r\n { name: '绕左下旋转进入', value: 'rotateInDownLeft' },\r\n { name: '绕右下旋转进入', value: 'rotateInDownRight' },\r\n { name: '绕左上旋转进入', value: 'rotateInUpLeft' },\r\n { name: '绕右上旋转进入', value: 'rotateInUpRight' },\r\n ],\r\n },\r\n {\r\n type: 'zoom',\r\n name: '缩放',\r\n children: [\r\n { name: '放大进入', value: 'zoomIn' },\r\n { name: '向下放大进入', value: 'zoomInDown' },\r\n { name: '从左放大进入', value: 'zoomInLeft' },\r\n { name: '从右放大进入', value: 'zoomInRight' },\r\n { name: '向上放大进入', value: 'zoomInUp' },\r\n ],\r\n },\r\n {\r\n type: 'slide',\r\n name: '滑入',\r\n children: [\r\n { name: '向下滑入', value: 'slideInDown' },\r\n { name: '从右滑入', value: 'slideInLeft' },\r\n { name: '从左滑入', value: 'slideInRight' },\r\n { name: '向上滑入', value: 'slideInUp' },\r\n ],\r\n },\r\n {\r\n type: 'flip',\r\n name: '翻转',\r\n children: [\r\n { name: 'X轴翻转进入', value: 'flipInX' },\r\n { name: 'Y轴翻转进入', value: 'flipInY' },\r\n ],\r\n },\r\n {\r\n type: 'back',\r\n name: '放大滑入',\r\n children: [\r\n { name: '向下放大滑入', value: 'backInDown' },\r\n { name: '从左放大滑入', value: 'backInLeft' },\r\n { name: '从右放大滑入', value: 'backInRight' },\r\n { name: '向上放大滑入', value: 'backInUp' },\r\n ],\r\n },\r\n {\r\n type: 'lightSpeed',\r\n name: '飞入',\r\n children: [\r\n { name: '从右飞入', value: 'lightSpeedInRight' },\r\n { name: '从左飞入', value: 'lightSpeedInLeft' },\r\n ],\r\n },\r\n]","\r\nimport { computed, defineComponent, ref } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTAnimation, PPTElement, Slide } from '@/types/slides'\r\nimport { ANIMATIONS } from '@/configs/animation'\r\nimport { ELEMENT_TYPE_ZH } from '@/configs/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport Draggable from 'vuedraggable'\r\n\r\nconst animationTypes: { [key: string]: string } = {}\r\nfor (const type of ANIMATIONS) {\r\n for (const animation of type.children) {\r\n animationTypes[animation.value] = animation.name\r\n }\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'element-animation-panel',\r\n components: {\r\n Draggable,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const handleElement = computed(() => store.getters.handleElement)\r\n const currentSlideAnimations = computed(() => store.getters.currentSlideAnimations)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const hoverPreviewAnimation = ref('')\r\n const animationPoolVisible = ref(false)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n const animations = ANIMATIONS\r\n\r\n // 当前页面的动画列表\r\n const animationSequence = computed(() => {\r\n if (!currentSlideAnimations.value) return []\r\n const animationSequence = []\r\n for (const animation of currentSlideAnimations.value) {\r\n const el = currentSlide.value.elements.find(el => el.id === animation.elId)\r\n if (!el) continue\r\n const elType = ELEMENT_TYPE_ZH[el.type]\r\n const animationType = animationTypes[animation.type]\r\n\r\n animationSequence.push({\r\n ...animation,\r\n elType,\r\n animationType,\r\n })\r\n }\r\n return animationSequence\r\n })\r\n\r\n // 当前选中元素的入场动画信息\r\n const handleElementAnimation = computed(() => {\r\n if (!handleElement.value) return null\r\n const animations = currentSlideAnimations.value || []\r\n const animation = animations.find(item => item.elId === handleElement.value.id)\r\n if (!animation) return null\r\n return animationTypes[animation.type]\r\n })\r\n\r\n // 删除元素入场动画\r\n const deleteAnimation = (elId: string) => {\r\n const animations = (currentSlideAnimations.value as PPTAnimation[]).filter(item => item.elId !== elId)\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 拖拽修改入场动画顺序后同步数据\r\n const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => {\r\n const { newIndex, oldIndex } = eventData\r\n if (oldIndex === newIndex) return\r\n\r\n const animations: PPTAnimation[] = JSON.parse(JSON.stringify(currentSlideAnimations.value))\r\n const animation = animations[oldIndex]\r\n animations.splice(oldIndex, 1)\r\n animations.splice(newIndex, 0, animation)\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 执行入场动画预览\r\n const runAnimation = (elId: string, animationType: string) => {\r\n const prefix = 'animate__'\r\n const elRef = document.querySelector(`#editable-element-${elId} [class^=editable-element-]`)\r\n if (elRef) {\r\n const animationName = `${prefix}${animationType}`\r\n elRef.classList.add(`${prefix}animated`, animationName)\r\n\r\n const handleAnimationEnd = () => {\r\n elRef.classList.remove(`${prefix}animated`, animationName)\r\n }\r\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\r\n }\r\n }\r\n\r\n // 修改元素入场动画,并执行一次预览\r\n const updateElementAnimation = (type: string) => {\r\n const animations = (currentSlideAnimations.value as PPTAnimation[]).map(item => {\r\n if (item.elId === handleElement.value.id) return { ...item, type }\r\n return item\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n animationPoolVisible.value = false\r\n addHistorySnapshot()\r\n\r\n runAnimation(handleElement.value.id, type)\r\n }\r\n\r\n // 添加元素入场动画,并执行一次预览\r\n const addAnimation = (type: string) => {\r\n if (handleElementAnimation.value) {\r\n updateElementAnimation(type)\r\n return\r\n }\r\n const animations: PPTAnimation[] = currentSlideAnimations.value ? JSON.parse(JSON.stringify(currentSlideAnimations.value)) : []\r\n animations.push({\r\n elId: handleElement.value.id,\r\n type,\r\n duration: 1000,\r\n })\r\n store.commit(MutationTypes.UPDATE_SLIDE, { animations })\r\n animationPoolVisible.value = false\r\n addHistorySnapshot()\r\n\r\n runAnimation(handleElement.value.id, type)\r\n }\r\n\r\n return {\r\n handleElement,\r\n animationPoolVisible,\r\n animations,\r\n animationSequence,\r\n hoverPreviewAnimation,\r\n handleElementAnimation,\r\n addAnimation,\r\n deleteAnimation,\r\n handleDragEnd,\r\n runAnimation,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ElementAnimationPanel.vue?vue&type=template&id=79c3f50b&scoped=true\"\nimport script from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./ElementAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./ElementAnimationPanel.vue?vue&type=style&index=0&id=79c3f50b&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-79c3f50b\"\n\nexport default script","\r\n \r\n
背景填充
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n updateBackground({ color })\"\r\n />\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
uploadBackgroundImage(files)\">\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
起点颜色:
\r\n
\r\n \r\n updateBackground({ gradientColor: [value, background.gradientColor[1]] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
终点颜色:
\r\n
\r\n \r\n updateBackground({ gradientColor: [background.gradientColor[0], value] })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
渐变角度:
\r\n
updateBackground({ gradientRotate: value })\" \r\n />\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
全局主题
\r\n
\r\n
字体:
\r\n
\r\n
\r\n
\r\n
字体颜色:
\r\n
\r\n \r\n updateTheme({ fontColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
背景颜色:
\r\n
\r\n \r\n updateTheme({ backgroundColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n
主题色:
\r\n
\r\n \r\n updateTheme({ themeColor: value })\"\r\n />\r\n \r\n \r\n \r\n
\r\n\r\n
预置主题:
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","export const PRESET_THEMES = [\r\n { color: '#d14424', background: '#ffffff', text: '#333' },\r\n { color: '#42464b', background: '#ffffff', text: '#333' },\r\n { color: '#5d82ba', background: '#ffffff', text: '#333' },\r\n { color: '#005a6f', background: '#ffffff', text: '#333' },\r\n { color: '#d0614c', background: '#dfb044', text: '#333' },\r\n { color: '#86a1ad', background: '#dfdbd4', text: '#333' },\r\n { color: '#697586', background: '#d5c4a4', text: '#333' },\r\n { color: '#333333', background: '#7acfa6', text: '#333' },\r\n { color: '#42464b', background: '#415065', text: '#fff' },\r\n { color: '#0c5999', background: '#35a2cd', text: '#fff' },\r\n { color: '#c49a41', background: '#8c4357', text: '#fff' },\r\n { color: '#dfaa00', background: '#2e4e7d', text: '#fff' },\r\n { color: '#d1ad88', background: '#f99070', text: '#fff' },\r\n { color: '#464d52', background: '#657984', text: '#fff' },\r\n { color: '#ffcfb6', background: '#1e4c6f', text: '#fff' },\r\n { color: '#c3a043', background: '#43292a', text: '#fff' },\r\n { color: '#ffffff', background: '#171925', text: '#fff' },\r\n { color: '#df9636', background: '#5b89a0', text: '#fff' },\r\n { color: '#b898a4', background: '#93716b', text: '#fff' },\r\n { color: '#c47a11', background: '#187db1', text: '#fff' },\r\n { color: '#333333', background: '#759564', text: '#fff' },\r\n { color: '#355b5e', background: '#424b50', text: '#fff' },\r\n { color: '#d29090', background: '#942a32', text: '#fff' },\r\n { color: '#00cfdf', background: '#3b434d', text: '#fff' },\r\n { color: '#424246', background: '#c70042', text: '#fff' },\r\n { color: '#2e4155', background: '#b35d44', text: '#fff' },\r\n { color: '#11bfce', background: '#8f98aa', text: '#fff' },\r\n { color: '#333333', background: '#549688', text: '#fff' },\r\n]","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide, SlideBackground, SlideTheme } from '@/types/slides'\r\nimport { PRESET_THEMES } from '@/configs/theme'\r\nimport { WEB_FONTS } from '@/configs/font'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nimport ColorButton from './common/ColorButton.vue'\r\nimport { getImageDataURL } from '@/utils/image'\r\n\r\nconst themes = PRESET_THEMES\r\nconst webFonts = WEB_FONTS\r\n\r\nexport default defineComponent({\r\n name: 'slide-style-panel',\r\n components: {\r\n ColorButton,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const theme = computed(() => store.state.theme)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n const availableFonts = computed(() => store.state.availableFonts)\r\n\r\n const background = computed(() => {\r\n if (!currentSlide.value.background) {\r\n return {\r\n type: 'solid',\r\n value: '#fff',\r\n } as SlideBackground\r\n }\r\n return currentSlide.value.background\r\n })\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 设置背景模式:纯色、图片、渐变色\r\n const updateBackgroundType = (type: 'solid' | 'image' | 'gradient') => {\r\n if (type === 'solid') {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'solid',\r\n color: background.value.color || '#fff',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n else if (type === 'image') {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'image',\r\n image: background.value.image || '',\r\n imageSize: background.value.imageSize || 'cover',\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n else {\r\n const newBackground: SlideBackground = {\r\n ...background.value,\r\n type: 'gradient',\r\n gradientType: background.value.gradientType || 'linear',\r\n gradientColor: background.value.gradientColor || ['#fff', '#fff'],\r\n gradientRotate: background.value.gradientRotate || 0,\r\n }\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: newBackground })\r\n }\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置背景图片\r\n const updateBackground = (props: Partial) => {\r\n store.commit(MutationTypes.UPDATE_SLIDE, { background: { ...background.value, ...props } })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 上传背景图片\r\n const uploadBackgroundImage = (files: File[]) => {\r\n const imageFile = files[0]\r\n if (!imageFile) return\r\n getImageDataURL(imageFile).then(dataURL => updateBackground({ image: dataURL }))\r\n }\r\n\r\n // 应用当前页背景到全部页面\r\n const applyBackgroundAllSlide = () => {\r\n const newSlides = slides.value.map(slide => {\r\n return {\r\n ...slide,\r\n background: currentSlide.value.background,\r\n }\r\n })\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n // 设置主题\r\n const updateTheme = (themeProps: Partial) => {\r\n store.commit(MutationTypes.SET_THEME, themeProps)\r\n }\r\n\r\n // 将当前主题应用到全部页面\r\n const applyThemeAllSlide = () => {\r\n const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))\r\n const { themeColor, backgroundColor, fontColor } = theme.value\r\n\r\n for (const slide of newSlides) {\r\n if (!slide.background || slide.background.type !== 'image') {\r\n slide.background = {\r\n ...slide.background,\r\n type: 'solid',\r\n color: backgroundColor\r\n }\r\n }\r\n\r\n const elements = slide.elements\r\n for (const el of elements) {\r\n if (el.type === 'shape') el.fill = themeColor\r\n else if (el.type === 'line') el.color = themeColor\r\n else if (el.type === 'text') {\r\n if (el.fill) el.fill = themeColor\r\n }\r\n else if (el.type === 'table') {\r\n if (el.theme) el.theme.color = themeColor\r\n }\r\n else if (el.type === 'chart') {\r\n el.themeColor = themeColor\r\n el.gridColor = fontColor\r\n }\r\n }\r\n }\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n availableFonts,\r\n background,\r\n updateBackgroundType,\r\n updateBackground,\r\n uploadBackgroundImage,\r\n applyBackgroundAllSlide,\r\n themes,\r\n theme,\r\n webFonts,\r\n updateTheme,\r\n applyThemeAllSlide,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideStylePanel.vue?vue&type=template&id=5069f2f0&scoped=true\"\nimport script from \"./SlideStylePanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideStylePanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideStylePanel.vue?vue&type=style&index=0&id=5069f2f0&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5069f2f0\"\n\nexport default script","\r\n \r\n
\r\n
\r\n
\r\n
{{item.label}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\n\r\nexport default defineComponent({\r\n name: 'slide-animation-panel',\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const currentTurningMode = computed(() => currentSlide.value.turningMode || 'slideY')\r\n\r\n const animations = [\r\n { label: '无', value: 'no' },\r\n { label: '淡入淡出', value: 'fade' },\r\n { label: '左右推移', value: 'slideX' },\r\n { label: '上下推移', value: 'slideY' },\r\n ]\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n\r\n // 修改播放时的切换页面方式\r\n const updateTurningMode = (mode: string) => {\r\n if (mode === currentTurningMode.value) return\r\n store.commit(MutationTypes.UPDATE_SLIDE, { turningMode: mode })\r\n addHistorySnapshot()\r\n }\r\n\r\n // 将当前页的切换页面方式应用到全部页面\r\n const applyAllSlide = () => {\r\n const newSlides = slides.value.map(slide => {\r\n return {\r\n ...slide,\r\n turningMode: currentSlide.value.turningMode,\r\n }\r\n })\r\n store.commit(MutationTypes.SET_SLIDES, newSlides)\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n currentTurningMode,\r\n animations,\r\n updateTurningMode,\r\n applyAllSlide,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideAnimationPanel.vue?vue&type=template&id=6e3028f1&scoped=true\"\nimport script from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideAnimationPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideAnimationPanel.vue?vue&type=style&index=0&id=6e3028f1&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-6e3028f1\"\n\nexport default script","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { PPTElement, Slide } from '@/types/slides'\r\nimport { ElementAlignCommand, ElementAlignCommands } from '@/types/edit'\r\nimport { getElementListRange } from '@/utils/element'\r\nimport useHistorySnapshot from '@/hooks/useHistorySnapshot'\r\nimport useCombineElement from '@/hooks/useCombineElement'\r\n\r\nexport default defineComponent({\r\n name: 'multi-position-panel',\r\n setup() {\r\n const store = useStore()\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const activeElementList = computed(() => store.getters.activeElementList)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const { addHistorySnapshot } = useHistorySnapshot()\r\n const { combineElements, uncombineElements } = useCombineElement()\r\n\r\n // 判断当前多选的几个元素是否可以组合\r\n const canCombine = computed(() => {\r\n const firstGroupId = activeElementList.value[0].groupId\r\n if (!firstGroupId) return true\r\n\r\n const inSameGroup = activeElementList.value.every(el => (el.groupId && el.groupId) === firstGroupId)\r\n return !inSameGroup\r\n })\r\n\r\n // 对齐选中的元素\r\n const alignActiveElement = (command: ElementAlignCommand) => {\r\n const { minX, maxX, minY, maxY } = getElementListRange(activeElementList.value)\r\n const elementList: PPTElement[] = JSON.parse(JSON.stringify(currentSlide.value.elements))\r\n\r\n // 如果所选择的元素为组合元素的成员,需要计算该组合的整体范围\r\n const groupElementRangeMap = {}\r\n for (const activeElement of activeElementList.value) {\r\n if (activeElement.groupId && !groupElementRangeMap[activeElement.groupId]) {\r\n const groupElements = activeElementList.value.filter(item => item.groupId === activeElement.groupId)\r\n groupElementRangeMap[activeElement.groupId] = getElementListRange(groupElements)\r\n }\r\n }\r\n\r\n // 根据不同的命令,计算对齐的位置\r\n if (command === ElementAlignCommands.LEFT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) element.left = minX\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minX - minX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.RIGHT) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n element.left = maxX - elWidth\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxX - maxX\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.TOP) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) element.top = minY\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.minY - minY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.BOTTOM) {\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n element.top = maxY - elHeight\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const offset = range.maxY - maxY\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.HORIZONTAL) {\r\n const horizontalCenter = (minX + maxX) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elWidth = element.type === 'line' ? Math.max(element.start[0], element.end[0]) : element.width\r\n element.left = horizontalCenter - elWidth / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxX + range.minX) / 2\r\n const offset = center - horizontalCenter\r\n element.left = element.left - offset\r\n }\r\n }\r\n })\r\n }\r\n else if (command === ElementAlignCommands.VERTICAL) {\r\n const verticalCenter = (minY + maxY) / 2\r\n elementList.forEach(element => {\r\n if (activeElementIdList.value.includes(element.id)) {\r\n if (!element.groupId) {\r\n const elHeight = element.type === 'line' ? Math.max(element.start[1], element.end[1]) : element.height\r\n element.top = verticalCenter - elHeight / 2\r\n }\r\n else {\r\n const range = groupElementRangeMap[element.groupId]\r\n const center = (range.maxY + range.minY) / 2\r\n const offset = center - verticalCenter\r\n element.top = element.top - offset\r\n }\r\n }\r\n })\r\n }\r\n \r\n store.commit(MutationTypes.UPDATE_SLIDE, { elements: elementList })\r\n addHistorySnapshot()\r\n }\r\n\r\n return {\r\n canCombine,\r\n combineElements,\r\n uncombineElements,\r\n alignActiveElement,\r\n }\r\n },\r\n})\r\n","import { render } from \"./MultiPositionPanel.vue?vue&type=template&id=540e3d06&scoped=true\"\nimport script from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\nexport * from \"./MultiPositionPanel.vue?vue&type=script&lang=ts\"\n\nimport \"./MultiPositionPanel.vue?vue&type=style&index=0&id=540e3d06&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-540e3d06\"\n\nexport default script","\r\nimport { computed, defineComponent, watch } from 'vue'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { ToolbarState, ToolbarStates } from '@/types/toolbar'\r\n\r\nimport ElementStylePanel from './ElementStylePanel/index.vue'\r\nimport ElementPositionPanel from './ElementPositionPanel.vue'\r\nimport ElementAnimationPanel from './ElementAnimationPanel.vue'\r\nimport SlideStylePanel from './SlideStylePanel.vue'\r\nimport SlideAnimationPanel from './SlideAnimationPanel.vue'\r\nimport MultiPositionPanel from './MultiPositionPanel.vue'\r\n\r\nexport default defineComponent({\r\n name: 'toolbar',\r\n setup() {\r\n const store = useStore()\r\n const toolbarState = computed(() => store.state.toolbarState)\r\n\r\n const elementTabs = [\r\n { label: '样式', value: ToolbarStates.EL_STYLE },\r\n { label: '位置', value: ToolbarStates.EL_POSITION },\r\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\r\n ]\r\n const slideTabs = [\r\n { label: '页面样式', value: ToolbarStates.SLIDE_STYLE },\r\n { label: '切换', value: ToolbarStates.SLIDE_ANIMATION },\r\n { label: '动画', value: ToolbarStates.EL_ANIMATION },\r\n ]\r\n const multiSelectTabs = [\r\n { label: '位置', value: ToolbarStates.MULTI_POSITION },\r\n { label: '样式', value: ToolbarStates.EL_STYLE },\r\n ]\r\n\r\n const setToolbarState = (value: ToolbarState) => {\r\n store.commit(MutationTypes.SET_TOOLBAR_STATE, value)\r\n }\r\n\r\n const activeElementIdList = computed(() => store.state.activeElementIdList)\r\n const currentTabs = computed(() => {\r\n if (!activeElementIdList.value.length) return slideTabs\r\n else if (activeElementIdList.value.length > 1) return multiSelectTabs\r\n return elementTabs\r\n })\r\n\r\n watch(currentTabs, () => {\r\n const currentTabsValue = currentTabs.value.map(tab => tab.value)\r\n if (!currentTabsValue.includes(toolbarState.value)) {\r\n store.commit(MutationTypes.SET_TOOLBAR_STATE, currentTabsValue[0])\r\n }\r\n })\r\n\r\n const currentPanelComponent = computed(() => {\r\n const panelMap = {\r\n [ToolbarStates.EL_STYLE]: ElementStylePanel,\r\n [ToolbarStates.EL_POSITION]: ElementPositionPanel,\r\n [ToolbarStates.EL_ANIMATION]: ElementAnimationPanel,\r\n [ToolbarStates.SLIDE_STYLE]: SlideStylePanel,\r\n [ToolbarStates.SLIDE_ANIMATION]: SlideAnimationPanel,\r\n [ToolbarStates.MULTI_POSITION]: MultiPositionPanel,\r\n }\r\n return panelMap[toolbarState.value] || null\r\n })\r\n\r\n return {\r\n toolbarState,\r\n currentTabs,\r\n setToolbarState,\r\n currentPanelComponent,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=58d77c92&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=58d77c92&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-58d77c92\"\n\nexport default script","\r\nimport { defineComponent } from 'vue'\r\n\r\nimport useGlobalHotkey from '@/hooks/useGlobalHotkey'\r\nimport usePasteEvent from '@/hooks/usePasteEvent'\r\n\r\nimport EditorHeader from './EditorHeader/index.vue'\r\nimport Canvas from './Canvas/index.vue'\r\nimport CanvasTool from './CanvasTool/index.vue'\r\nimport Thumbnails from './Thumbnails/index.vue'\r\nimport Toolbar from './Toolbar/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'editor',\r\n components: {\r\n EditorHeader,\r\n Canvas,\r\n CanvasTool,\r\n Thumbnails,\r\n Toolbar,\r\n },\r\n setup() {\r\n useGlobalHotkey()\r\n usePasteEvent()\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=429c76fd&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=429c76fd&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-429c76fd\"\n\nexport default script","\r\n \r\n
mousewheelListener($event)\"\r\n v-contextmenu=\"contextmenus\"\r\n >\r\n
slideIndex,\r\n 'hide': (index === slideIndex - 1 || index === slideIndex + 1) && slide.turningMode !== currentSlide.turningMode,\r\n }\r\n ]\"\r\n v-for=\"(slide, index) in slides\" \r\n :key=\"slide.id\"\r\n >\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n
\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, PropType } from 'vue'\r\nimport { PPTChartElement } from '@/types/slides'\r\n\r\nimport ElementOutline from '@/views/components/element/ElementOutline.vue'\r\nimport Chart from './Chart.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-element-chart',\r\n components: {\r\n ElementOutline,\r\n Chart,\r\n },\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./ScreenChartElement.vue?vue&type=template&id=1423f8c2&scoped=true\"\nimport script from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenChartElement.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenChartElement.vue?vue&type=style&index=0&id=1423f8c2&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-1423f8c2\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\nimport { ElementTypes, PPTElement, Slide } from '@/types/slides'\r\n\r\nimport BaseImageElement from '@/views/components/element/ImageElement/BaseImageElement.vue'\r\nimport BaseTextElement from '@/views/components/element/TextElement/BaseTextElement.vue'\r\nimport BaseShapeElement from '@/views/components/element/ShapeElement/BaseShapeElement.vue'\r\nimport BaseLineElement from '@/views/components/element/LineElement/BaseLineElement.vue'\r\nimport ScreenChartElement from '@/views/components/element/ChartElement/ScreenChartElement.vue'\r\nimport BaseTableElement from '@/views/components/element/TableElement/BaseTableElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-element',\r\n props: {\r\n elementInfo: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n elementIndex: {\r\n type: Number,\r\n required: true,\r\n },\r\n animationIndex: {\r\n type: Number,\r\n default: -1,\r\n },\r\n },\r\n setup(props) {\r\n const currentElementComponent = computed(() => {\r\n const elementTypeMap = {\r\n [ElementTypes.IMAGE]: BaseImageElement,\r\n [ElementTypes.TEXT]: BaseTextElement,\r\n [ElementTypes.SHAPE]: BaseShapeElement,\r\n [ElementTypes.LINE]: BaseLineElement,\r\n [ElementTypes.CHART]: ScreenChartElement,\r\n [ElementTypes.TABLE]: BaseTableElement,\r\n }\r\n return elementTypeMap[props.elementInfo.type] || null\r\n })\r\n\r\n const store = useStore()\r\n const theme = computed(() => store.state.theme)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n // 判断元素是否需要等待执行入场动画:等待执行的元素需要先隐藏\r\n const needWaitAnimation = computed(() => {\r\n const animations = currentSlide.value.animations || []\r\n const elementIndexInAnimation = animations.findIndex(animation => animation.elId === props.elementInfo.id)\r\n if (elementIndexInAnimation !== -1 && elementIndexInAnimation >= props.animationIndex) return true\r\n return false \r\n })\r\n\r\n return {\r\n currentElementComponent,\r\n needWaitAnimation,\r\n theme,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ScreenElement.vue?vue&type=template&id=d0933d74\"\nimport script from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenElement.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\nimport { computed, PropType, defineComponent } from 'vue'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_SIZE, VIEWPORT_ASPECT_RATIO } from '@/configs/canvas'\r\nimport useSlideBackgroundStyle from '@/hooks/useSlideBackgroundStyle'\r\n\r\nimport ScreenElement from './ScreenElement.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen-slide',\r\n components: {\r\n ScreenElement,\r\n },\r\n props: {\r\n slide: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n scale: {\r\n type: Number,\r\n required: true,\r\n },\r\n animationIndex: {\r\n type: Number,\r\n default: -1,\r\n },\r\n },\r\n setup(props) {\r\n const background = computed(() => props.slide.background)\r\n const { backgroundStyle } = useSlideBackgroundStyle(background)\r\n\r\n return {\r\n backgroundStyle,\r\n VIEWPORT_SIZE,\r\n VIEWPORT_ASPECT_RATIO,\r\n }\r\n },\r\n})\r\n","import { render } from \"./ScreenSlide.vue?vue&type=template&id=5e193d56&scoped=true\"\nimport script from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\nexport * from \"./ScreenSlide.vue?vue&type=script&lang=ts\"\n\nimport \"./ScreenSlide.vue?vue&type=style&index=0&id=5e193d56&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5e193d56\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { useStore } from '@/store'\r\n\r\nimport ThumbnailSlide from '@/views/components/ThumbnailSlide/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'slide-thumbnails',\r\n components: {\r\n ThumbnailSlide,\r\n },\r\n props: {\r\n turnSlideToIndex: {\r\n type: Function as PropType<(index: number) => void>,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n\r\n const close = () => emit('close')\r\n\r\n return {\r\n slides,\r\n slideIndex,\r\n close,\r\n }\r\n },\r\n})\r\n","import { render } from \"./SlideThumbnails.vue?vue&type=template&id=49960bc8&scoped=true\"\nimport script from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\nexport * from \"./SlideThumbnails.vue?vue&type=script&lang=ts\"\n\nimport \"./SlideThumbnails.vue?vue&type=style&index=0&id=49960bc8&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-49960bc8\"\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, onMounted, PropType, reactive, ref } from 'vue'\r\n\r\nconst penSize = 6\r\nconst rubberSize = 80\r\n\r\nexport default defineComponent({\r\n name: 'writing-board',\r\n props: {\r\n color: {\r\n type: String,\r\n default: '#ffcc00',\r\n },\r\n model: {\r\n type: String as PropType<'pen' | 'eraser'>,\r\n default: 'pen',\r\n },\r\n },\r\n setup(props) {\r\n let ctx: CanvasRenderingContext2D | null = null\r\n const writingBoardRef = ref()\r\n const canvasRef = ref()\r\n\r\n let lastPos = {\r\n x: 0,\r\n y: 0,\r\n }\r\n let isMouseDown = false\r\n let lastTime = 0\r\n let lastLineWidth = -1\r\n\r\n // 鼠标位置坐标:用于画笔或橡皮位置跟随\r\n const mouse = reactive({\r\n x: 0,\r\n y: 0,\r\n })\r\n // 更新鼠标位置坐标\r\n const updateMousePosition = (e: MouseEvent) => {\r\n mouse.x = e.pageX\r\n mouse.y = e.pageY\r\n }\r\n \r\n // 鼠标是否处在画布范围内:处在范围内才会显示画笔或橡皮\r\n const mouseInCanvas = ref(false)\r\n\r\n\r\n // 初始化画布\r\n const initCanvas = () => {\r\n if (!canvasRef.value || !writingBoardRef.value) return\r\n\r\n ctx = canvasRef.value.getContext('2d')\r\n if (!ctx) return\r\n\r\n canvasRef.value.width = writingBoardRef.value.clientWidth\r\n canvasRef.value.height = writingBoardRef.value.clientHeight\r\n\r\n canvasRef.value.style.width = writingBoardRef.value.clientWidth + 'px'\r\n canvasRef.value.style.height = writingBoardRef.value.clientHeight + 'px'\r\n\r\n ctx.lineCap = 'round'\r\n ctx.lineJoin = 'round'\r\n }\r\n onMounted(initCanvas)\r\n\r\n // 绘制画笔墨迹方法\r\n const draw = (posX: number, posY: number, lineWidth: number) => {\r\n if (!ctx) return\r\n\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n\r\n ctx.lineWidth = lineWidth\r\n ctx.strokeStyle = props.color\r\n ctx.beginPath()\r\n ctx.moveTo(lastPosX, lastPosY)\r\n ctx.lineTo(posX, posY)\r\n ctx.stroke()\r\n ctx.closePath()\r\n }\r\n\r\n // 擦除墨迹方法\r\n const erase = (posX: number, posY: number) => {\r\n if (!ctx || !canvasRef.value) return\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n\r\n const radius = rubberSize / 2\r\n\r\n const sinRadius = radius * Math.sin(Math.atan((posY - lastPosY) / (posX - lastPosX)))\r\n const cosRadius = radius * Math.cos(Math.atan((posY - lastPosY) / (posX - lastPosX)))\r\n const rectPoint1: [number, number] = [lastPosX + sinRadius, lastPosY - cosRadius]\r\n const rectPoint2: [number, number] = [lastPosX - sinRadius, lastPosY + cosRadius]\r\n const rectPoint3: [number, number] = [posX + sinRadius, posY - cosRadius]\r\n const rectPoint4: [number, number] = [posX - sinRadius, posY + cosRadius]\r\n\r\n ctx.save()\r\n ctx.beginPath()\r\n ctx.arc(posX, posY, radius, 0, Math.PI * 2)\r\n ctx.clip()\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n ctx.restore()\r\n\r\n ctx.save()\r\n ctx.beginPath()\r\n ctx.moveTo(...rectPoint1)\r\n ctx.lineTo(...rectPoint3)\r\n ctx.lineTo(...rectPoint4)\r\n ctx.lineTo(...rectPoint2)\r\n ctx.closePath()\r\n ctx.clip()\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n ctx.restore()\r\n }\r\n\r\n // 准备开始绘制/擦除墨迹(落笔)\r\n const handleMousedown = (e: MouseEvent) => {\r\n isMouseDown = true\r\n lastPos = { x: e.offsetX, y: e.offsetY }\r\n lastTime = new Date().getTime()\r\n }\r\n\r\n // 计算鼠标两次移动之间的距离\r\n const getDistance = (posX: number, posY: number) => {\r\n const lastPosX = lastPos.x\r\n const lastPosY = lastPos.y\r\n return Math.sqrt((posX - lastPosX) * (posX - lastPosX) + (posY - lastPosY) * (posY - lastPosY))\r\n }\r\n\r\n // 根据鼠标两次移动之间的距离s和时间t计算绘制速度,速度越快,墨迹越细\r\n const getLineWidth = (s: number, t: number) => {\r\n const maxV = 10\r\n const minV = 0.1\r\n const maxWidth = penSize\r\n const minWidth = 3\r\n const v = s / t\r\n let lineWidth\r\n\r\n if (v <= minV) lineWidth = maxWidth\r\n else if (v >= maxV) lineWidth = minWidth\r\n else lineWidth = maxWidth - v / maxV * maxWidth\r\n\r\n if (lastLineWidth === -1) return lineWidth\r\n return lineWidth * 1 / 3 + lastLineWidth * 2 / 3\r\n }\r\n\r\n // 开始绘制/擦除墨迹(移动)\r\n const handleMousemove = (e: MouseEvent) => {\r\n updateMousePosition(e)\r\n\r\n if (!isMouseDown) return\r\n \r\n const time = new Date().getTime()\r\n\r\n if (props.model === 'pen') {\r\n const s = getDistance(e.offsetX, e.offsetY)\r\n const t = time - lastTime\r\n const lineWidth = getLineWidth(s, t)\r\n \r\n draw(e.offsetX, e.offsetY, lineWidth)\r\n lastLineWidth = lineWidth\r\n }\r\n else erase(e.offsetX, e.offsetY)\r\n\r\n lastPos = { x: e.offsetX, y: e.offsetY }\r\n lastTime = new Date().getTime()\r\n }\r\n\r\n // 结束绘制/擦除墨迹(停笔)\r\n const handleMouseup = () => {\r\n if (!isMouseDown) return\r\n isMouseDown = false\r\n }\r\n\r\n // 清空画布\r\n const clearCanvas = () => {\r\n if (!ctx || !canvasRef.value) return\r\n ctx.clearRect(0, 0, canvasRef.value.width, canvasRef.value.height)\r\n }\r\n\r\n return {\r\n mouse,\r\n mouseInCanvas,\r\n penSize,\r\n rubberSize,\r\n writingBoardRef,\r\n canvasRef,\r\n handleMousedown,\r\n handleMousemove,\r\n handleMouseup,\r\n clearCanvas,\r\n }\r\n },\r\n})\r\n","import { render } from \"./WritingBoard.vue?vue&type=template&id=4ddc4b2c&scoped=true\"\nimport script from \"./WritingBoard.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoard.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoard.vue?vue&type=style&index=0&id=4ddc4b2c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4ddc4b2c\"\n\nexport default script","\r\nimport { defineComponent, ref } from 'vue'\r\nimport WritingBoard from '@/components/WritingBoard.vue'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\n\r\nconst writingBoardColors = ['#000000', '#ffffff', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\r\n\r\nexport default defineComponent({\r\n name: 'writing-board-tool',\r\n components: {\r\n WritingBoard,\r\n },\r\n setup(props, { emit }) {\r\n const writingBoardRef = ref()\r\n const writingBoardVisible = ref(false)\r\n const writingBoardColor = ref('#e2534d')\r\n const writingBoardModel = ref('pen')\r\n\r\n // 切换到画笔状态\r\n const changePen = () => {\r\n if (!writingBoardVisible.value) writingBoardVisible.value = true\r\n writingBoardModel.value = 'pen'\r\n emit('close')\r\n }\r\n\r\n // 切换到橡皮状态\r\n const changeEraser = () => {\r\n writingBoardModel.value = 'eraser'\r\n emit('close')\r\n }\r\n\r\n // 清除画布上的墨迹\r\n const clearCanvas = () => {\r\n writingBoardRef.value.clearCanvas()\r\n emit('close')\r\n }\r\n\r\n // 修改画笔颜色,如果当前不处于画笔状态则先切换到画笔状态\r\n const changeColor = (color: string) => {\r\n if (writingBoardModel.value !== 'pen') writingBoardModel.value = 'pen'\r\n writingBoardColor.value = color\r\n emit('close')\r\n }\r\n \r\n // 关闭写字板\r\n const closeWritingBoard = () => {\r\n writingBoardVisible.value = false\r\n emit('close')\r\n }\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '画笔',\r\n handler: changePen,\r\n disable: writingBoardModel.value === 'pen',\r\n },\r\n {\r\n text: '橡皮擦',\r\n handler: changeEraser,\r\n disable: writingBoardModel.value === 'eraser',\r\n },\r\n {\r\n text: '擦除所有墨迹',\r\n handler: clearCanvas,\r\n },\r\n {\r\n text: '退出画笔',\r\n handler: closeWritingBoard,\r\n },\r\n ]\r\n }\r\n\r\n return {\r\n writingBoardRef,\r\n writingBoardVisible,\r\n writingBoardColors,\r\n writingBoardColor,\r\n writingBoardModel,\r\n changePen,\r\n changeEraser,\r\n clearCanvas,\r\n changeColor,\r\n closeWritingBoard,\r\n contextmenus,\r\n }\r\n },\r\n})\r\n","import { render } from \"./WritingBoardTool.vue?vue&type=template&id=0bfb345d&scoped=true\"\nimport script from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\nexport * from \"./WritingBoardTool.vue?vue&type=script&lang=ts\"\n\nimport \"./WritingBoardTool.vue?vue&type=style&index=0&id=0bfb345d&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-0bfb345d\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted, onUnmounted, provide, ref } from 'vue'\r\nimport throttle from 'lodash/throttle'\r\nimport { MutationTypes, useStore } from '@/store'\r\nimport { Slide } from '@/types/slides'\r\nimport { VIEWPORT_ASPECT_RATIO, VIEWPORT_SIZE } from '@/configs/canvas'\r\nimport { KEYS } from '@/configs/hotkey'\r\nimport { ContextmenuItem } from '@/components/Contextmenu/types'\r\nimport { isFullscreen } from '@/utils/fullscreen'\r\nimport useScreening from '@/hooks/useScreening'\r\n\r\nimport ScreenSlide from './ScreenSlide.vue'\r\nimport SlideThumbnails from './SlideThumbnails.vue'\r\nimport WritingBoardTool from './WritingBoardTool.vue'\r\n\r\nexport default defineComponent({\r\n name: 'screen',\r\n components: {\r\n ScreenSlide,\r\n SlideThumbnails,\r\n WritingBoardTool,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const slides = computed(() => store.state.slides)\r\n const slideIndex = computed(() => store.state.slideIndex)\r\n const currentSlide = computed(() => store.getters.currentSlide)\r\n\r\n const slideWidth = ref(0)\r\n const slideHeight = ref(0)\r\n\r\n const scale = computed(() => slideWidth.value / VIEWPORT_SIZE)\r\n\r\n const slideThumbnailModelVisible = ref(false)\r\n\r\n const writingBoardToolVisible = ref(false)\r\n\r\n // 计算和更新幻灯片内容的尺寸(按比例自适应屏幕)\r\n const setSlideContentSize = () => {\r\n const winWidth = document.body.clientWidth\r\n const winHeight = document.body.clientHeight\r\n let width, height\r\n\r\n if (winHeight / winWidth === VIEWPORT_ASPECT_RATIO) {\r\n width = winWidth\r\n height = winHeight\r\n }\r\n else if (winHeight / winWidth > VIEWPORT_ASPECT_RATIO) {\r\n width = winWidth\r\n height = winWidth * VIEWPORT_ASPECT_RATIO\r\n }\r\n else {\r\n width = winHeight / VIEWPORT_ASPECT_RATIO\r\n height = winHeight\r\n }\r\n slideWidth.value = width\r\n slideHeight.value = height\r\n }\r\n\r\n // 窗口尺寸变化监听:窗口发生变化时更新幻灯片的大小\r\n // 如果退出了全屏,需要返回到编辑模式\r\n const { exitScreening } = useScreening()\r\n\r\n const windowResizeListener = () => {\r\n setSlideContentSize()\r\n if (!isFullscreen()) exitScreening()\r\n }\r\n\r\n onMounted(() => {\r\n window.addEventListener('resize', windowResizeListener)\r\n })\r\n onUnmounted(() => {\r\n window.removeEventListener('resize', windowResizeListener)\r\n })\r\n\r\n // 当前页的元素动画列表和当前执行到的位置\r\n const animations = computed(() => currentSlide.value.animations || [])\r\n const animationIndex = ref(0)\r\n\r\n // 执行元素的入场动画\r\n const runAnimation = () => {\r\n const prefix = 'animate__'\r\n const animation = animations.value[animationIndex.value]\r\n animationIndex.value += 1\r\n\r\n const elRef = document.querySelector(`#screen-element-${animation.elId} [class^=base-element-]`)\r\n if (elRef) {\r\n const animationName = `${prefix}${animation.type}`\r\n elRef.classList.add(`${prefix}animated`, animationName)\r\n\r\n const handleAnimationEnd = () => {\r\n elRef.classList.remove(`${prefix}animated`, animationName)\r\n }\r\n elRef.addEventListener('animationend', handleAnimationEnd, { once: true })\r\n }\r\n }\r\n\r\n // 向上/向下播放\r\n // 遇到元素动画时,优先执行动画播放,无动画则执行翻页\r\n // 向上播放遇到动画时,仅撤销到动画执行前的状态,不需要反向播放动画\r\n const execPrev = () => {\r\n if (animations.value.length && animationIndex.value > 0) {\r\n animationIndex.value -= 1\r\n }\r\n else if (slideIndex.value > 0) {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value - 1)\r\n const lastIndex = animations.value ? animations.value.length : 0\r\n animationIndex.value = lastIndex\r\n }\r\n }\r\n const execNext = () => {\r\n if (animations.value.length && animationIndex.value < animations.value.length) {\r\n runAnimation()\r\n }\r\n else if (slideIndex.value < slides.value.length - 1) {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value + 1)\r\n animationIndex.value = 0\r\n }\r\n }\r\n\r\n // 鼠标滚动翻页\r\n const mousewheelListener = throttle(function(e: WheelEvent) {\r\n if (e.deltaY < 0) execPrev()\r\n else if (e.deltaY > 0) execNext()\r\n }, 500, { leading: true, trailing: false })\r\n\r\n // 快捷键翻页\r\n const keydownListener = (e: KeyboardEvent) => {\r\n const key = e.key.toUpperCase()\r\n if (key === KEYS.UP || key === KEYS.LEFT) execPrev()\r\n else if (\r\n key === KEYS.DOWN || \r\n key === KEYS.RIGHT ||\r\n key === KEYS.SPACE || \r\n key === KEYS.ENTER\r\n ) execNext()\r\n }\r\n\r\n onMounted(() => {\r\n document.addEventListener('keydown', keydownListener)\r\n })\r\n onUnmounted(() => {\r\n document.removeEventListener('keydown', keydownListener)\r\n })\r\n\r\n // 切换到上一张/上一张幻灯片(无视元素的入场动画)\r\n const turnPrevSlide = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value - 1)\r\n animationIndex.value = 0\r\n }\r\n const turnNextSlide = () => {\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, slideIndex.value + 1)\r\n animationIndex.value = 0\r\n }\r\n\r\n // 切换幻灯片到指定的页面\r\n const turnSlideToIndex = (index: number) => {\r\n slideThumbnailModelVisible.value = false\r\n store.commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n animationIndex.value = 0\r\n }\r\n\r\n const contextmenus = (): ContextmenuItem[] => {\r\n return [\r\n {\r\n text: '上一张',\r\n subText: '↑、←',\r\n disable: slideIndex.value <= 0,\r\n handler: () => turnPrevSlide(),\r\n },\r\n {\r\n text: '下一张',\r\n subText: '↓、→',\r\n disable: slideIndex.value >= slides.value.length - 1,\r\n handler: () => turnNextSlide(),\r\n },\r\n { divider: true },\r\n {\r\n text: '查看所有幻灯片',\r\n handler: () => slideThumbnailModelVisible.value = true,\r\n },\r\n { divider: true },\r\n {\r\n text: '结束放映',\r\n subText: 'ESC',\r\n handler: exitScreening,\r\n },\r\n ]\r\n }\r\n \r\n provide('slideScale', scale)\r\n\r\n return {\r\n slides,\r\n slideIndex,\r\n currentSlide,\r\n slideWidth,\r\n slideHeight,\r\n scale,\r\n mousewheelListener,\r\n animationIndex,\r\n contextmenus,\r\n execPrev,\r\n execNext,\r\n slideThumbnailModelVisible,\r\n turnSlideToIndex,\r\n writingBoardToolVisible,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=661c33b7&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=661c33b7&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-661c33b7\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted } from 'vue'\r\nimport { MutationTypes, ActionTypes, useStore } from '@/store'\r\n\r\nimport Editor from './views/Editor/index.vue'\r\nimport Screen from './views/Screen/index.vue'\r\n\r\nexport default defineComponent({\r\n name: 'app',\r\n components: {\r\n Editor,\r\n Screen,\r\n },\r\n setup() {\r\n const store = useStore()\r\n const screening = computed(() => store.state.screening)\r\n\r\n onMounted(() => {\r\n store.commit(MutationTypes.SET_AVAILABLE_FONTS)\r\n store.dispatch(ActionTypes.INIT_SNAPSHOT_DATABASE)\r\n })\r\n\r\n return {\r\n screening,\r\n }\r\n },\r\n})\r\n","import { render } from \"./App.vue?vue&type=template&id=7fa1c35b\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=7fa1c35b&lang=scss\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n \r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { PropType, defineComponent } from 'vue'\r\nimport { ContextmenuItem } from './types'\r\n\r\nexport default defineComponent({\r\n name: 'menu-content',\r\n props: {\r\n menus: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n handleClickMenuItem: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n})\r\n","import { render } from \"./MenuContent.vue?vue&type=template&id=d08042ec&scoped=true\"\nimport script from \"./MenuContent.vue?vue&type=script&lang=ts\"\nexport * from \"./MenuContent.vue?vue&type=script&lang=ts\"\n\nimport \"./MenuContent.vue?vue&type=style&index=0&id=d08042ec&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-d08042ec\"\n\nexport default script","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport { ContextmenuItem, Axis } from './types'\r\n\r\nimport MenuContent from './MenuContent.vue'\r\n\r\nexport default defineComponent({\r\n name: 'contextmenu',\r\n components: {\r\n MenuContent,\r\n },\r\n props: {\r\n axis: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n el: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n menus: {\r\n type: Array as PropType,\r\n required: true,\r\n },\r\n removeContextmenu: {\r\n type: Function,\r\n required: true,\r\n },\r\n },\r\n setup(props) {\r\n const style = computed(() => {\r\n const MENU_WIDTH = 170\r\n const MENU_HEIGHT = 30\r\n const DIVIDER_HEIGHT = 11\r\n const PADDING = 5\r\n\r\n const { x, y } = props.axis\r\n const menuCount = props.menus.filter(menu => !(menu.divider || menu.hide)).length\r\n const dividerCount = props.menus.filter(menu => menu.divider).length\r\n\r\n const menuWidth = MENU_WIDTH\r\n const menuHeight = menuCount * MENU_HEIGHT + dividerCount * DIVIDER_HEIGHT + PADDING * 2\r\n\r\n const screenWidth = document.body.clientWidth\r\n const screenHeight = document.body.clientHeight\r\n\r\n return {\r\n left: screenWidth <= x + menuWidth ? x - menuWidth : x,\r\n top: screenHeight <= y + menuHeight ? y - menuHeight : y,\r\n }\r\n })\r\n\r\n const handleClickMenuItem = (item: ContextmenuItem) => {\r\n if (item.disable || item.children) return\r\n if (item.handler) item.handler(props.el)\r\n props.removeContextmenu()\r\n }\r\n\r\n return {\r\n style,\r\n handleClickMenuItem,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=71468c62\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=71468c62&lang=scss\"\nscript.render = render\n\nexport default script","import { Directive, createVNode, render, DirectiveBinding } from 'vue'\r\nimport ContextmenuComponent from '@/components/Contextmenu/index.vue'\r\n\r\nconst CTX_CONTEXTMENU_HANDLER = 'CTX_CONTEXTMENU_HANDLER'\r\n\r\nconst contextmenuListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n const menus = binding.value(el)\r\n if (!menus) return\r\n\r\n let container: HTMLDivElement | null = null\r\n\r\n // 移除右键菜单并取消相关的事件监听\r\n const removeContextmenu = () => {\r\n if (container) {\r\n document.body.removeChild(container)\r\n container = null\r\n }\r\n el.classList.remove('contextmenu-active')\r\n document.body.removeEventListener('scroll', removeContextmenu) \r\n window.removeEventListener('resize', removeContextmenu)\r\n }\r\n\r\n // 创建自定义菜单\r\n const options = {\r\n axis: { x: event.x, y: event.y },\r\n el,\r\n menus,\r\n removeContextmenu,\r\n }\r\n container = document.createElement('div')\r\n const vm = createVNode(ContextmenuComponent, options, null)\r\n render(vm, container)\r\n document.body.appendChild(container)\r\n\r\n // 为目标节点添加菜单激活状态的className\r\n el.classList.add('contextmenu-active')\r\n\r\n // 页面变化时移除菜单\r\n document.body.addEventListener('scroll', removeContextmenu)\r\n window.addEventListener('resize', removeContextmenu)\r\n}\r\n\r\nconst ContextmenuDirective: Directive = {\r\n mounted(el: HTMLElement, binding) {\r\n el[CTX_CONTEXTMENU_HANDLER] = (event: MouseEvent) => contextmenuListener(el, event, binding)\r\n el.addEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\r\n },\r\n\r\n unmounted(el: HTMLElement) {\r\n if (el && el[CTX_CONTEXTMENU_HANDLER]) {\r\n el.removeEventListener('contextmenu', el[CTX_CONTEXTMENU_HANDLER])\r\n delete el[CTX_CONTEXTMENU_HANDLER]\r\n }\r\n },\r\n}\r\n\r\nexport default ContextmenuDirective","import { Directive, DirectiveBinding } from 'vue'\r\n\r\nconst CTX_CLICK_OUTSIDE_HANDLER = 'CTX_CLICK_OUTSIDE_HANDLER'\r\n\r\nconst clickListener = (el: HTMLElement, event: MouseEvent, binding: DirectiveBinding) => {\r\n const handler = binding.value\r\n\r\n const path = event.composedPath()\r\n const isClickOutside = path ? path.indexOf(el) < 0 : !el.contains(event.target as HTMLElement)\r\n\r\n if (!isClickOutside) return\r\n handler(event)\r\n}\r\n\r\nconst ClickOutsideDirective: Directive = {\r\n mounted(el: HTMLElement, binding) {\r\n el[CTX_CLICK_OUTSIDE_HANDLER] = (event: MouseEvent) => clickListener(el, event, binding)\r\n setTimeout(() => {\r\n document.addEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\r\n }, 0)\r\n },\r\n \r\n unmounted(el: HTMLElement) {\r\n if (el[CTX_CLICK_OUTSIDE_HANDLER]) {\r\n document.removeEventListener('click', el[CTX_CLICK_OUTSIDE_HANDLER])\r\n delete el[CTX_CLICK_OUTSIDE_HANDLER]\r\n }\r\n },\r\n}\r\n\r\nexport default ClickOutsideDirective","// https://iconpark.bytedance.com/official\r\n\r\nimport { App } from 'vue'\r\nimport {\r\n PlayOne,\r\n Lock,\r\n Unlock,\r\n Search,\r\n Ppt,\r\n Format,\r\n Picture,\r\n FullScreen,\r\n List,\r\n OrderedList,\r\n Helpcenter,\r\n FlipVertically,\r\n FlipHorizontally,\r\n FontSize,\r\n Code,\r\n TextBold,\r\n TextItalic,\r\n TextUnderline,\r\n Strikethrough,\r\n Edit,\r\n Quote,\r\n BackgroundColor,\r\n Group,\r\n Ungroup,\r\n Back,\r\n Next,\r\n Fullwidth,\r\n AlignTop,\r\n AlignLeft,\r\n AlignRight,\r\n AlignBottom,\r\n AlignVertically,\r\n AlignHorizontally,\r\n BringToFront,\r\n SendToBack,\r\n AlignTextLeft,\r\n AlignTextRight,\r\n AlignTextCenter,\r\n RowHeight,\r\n Write,\r\n InsertTable,\r\n AddText,\r\n Fill,\r\n Tailoring,\r\n Effects,\r\n ColorFilter,\r\n Down,\r\n Plus,\r\n Minus,\r\n Connection,\r\n BringToFrontOne,\r\n SentToBack,\r\n Github,\r\n ChartLine,\r\n ChartHistogram,\r\n ChartProportion,\r\n PentagonOne,\r\n Text,\r\n Rotate,\r\n LeftC,\r\n RightC,\r\n Platte,\r\n UpOne,\r\n DownOne,\r\n CloseSmall,\r\n Undo,\r\n Transform,\r\n Click,\r\n Theme,\r\n ArrowCircleLeft,\r\n} from '@icon-park/vue-next'\r\n\r\nexport default {\r\n install(app: App) {\r\n // 插入元素\r\n app.component('IconFontSize', FontSize)\r\n app.component('IconPicture', Picture)\r\n app.component('IconPentagonOne', PentagonOne)\r\n app.component('IconConnection', Connection)\r\n app.component('IconInsertTable', InsertTable)\r\n\r\n // 锁定与解锁\r\n app.component('IconLock', Lock)\r\n app.component('IconUnlock', Unlock)\r\n\r\n // 全屏\r\n app.component('IconFullScreen', FullScreen)\r\n\r\n // 撤销重做\r\n app.component('IconBack', Back)\r\n app.component('IconNext', Next) \r\n \r\n // 对齐\r\n app.component('IconAlignTop', AlignTop)\r\n app.component('IconAlignLeft', AlignLeft)\r\n app.component('IconAlignRight', AlignRight)\r\n app.component('IconAlignBottom', AlignBottom)\r\n app.component('IconAlignVertically', AlignVertically)\r\n app.component('IconAlignHorizontally', AlignHorizontally)\r\n\r\n // 层级\r\n app.component('IconBringToFront', BringToFront)\r\n app.component('IconSentToBack', SentToBack)\r\n app.component('IconBringToFrontOne', BringToFrontOne)\r\n app.component('IconSendToBack', SendToBack)\r\n\r\n // 组合\r\n app.component('IconGroup', Group)\r\n app.component('IconUngroup', Ungroup)\r\n\r\n // 通用元素编辑\r\n app.component('IconFill', Fill)\r\n app.component('IconBackgroundColor', BackgroundColor)\r\n app.component('IconPlatte', Platte)\r\n \r\n // 图片编辑\r\n app.component('IconTailoring', Tailoring)\r\n app.component('IconColorFilter', ColorFilter)\r\n app.component('IconFlipVertically', FlipVertically)\r\n app.component('IconFlipHorizontally', FlipHorizontally)\r\n\r\n // 文字编辑\r\n app.component('IconText', Text)\r\n app.component('IconAddText', AddText)\r\n app.component('IconAlignTextLeft', AlignTextLeft)\r\n app.component('IconAlignTextRight', AlignTextRight)\r\n app.component('IconAlignTextCenter', AlignTextCenter)\r\n app.component('IconRowHeight', RowHeight)\r\n app.component('IconFullwidth', Fullwidth)\r\n app.component('IconCode', Code)\r\n app.component('IconTextBold', TextBold)\r\n app.component('IconTextItalic', TextItalic)\r\n app.component('IconTextUnderline', TextUnderline)\r\n app.component('IconStrikethrough', Strikethrough)\r\n app.component('IconQuote', Quote)\r\n app.component('IconList', List)\r\n app.component('IconOrderedList', OrderedList)\r\n app.component('IconUpOne', UpOne)\r\n app.component('IconDownOne', DownOne)\r\n app.component('IconFormat', Format)\r\n\r\n // 箭头与符号\r\n app.component('IconDown', Down)\r\n app.component('IconLeftC', LeftC)\r\n app.component('IconRightC', RightC)\r\n app.component('IconPlus', Plus)\r\n app.component('IconMinus', Minus)\r\n app.component('IconCloseSmall', CloseSmall)\r\n \r\n // 图表\r\n app.component('IconChartLine', ChartLine)\r\n app.component('IconChartHistogram', ChartHistogram)\r\n app.component('IconChartProportion', ChartProportion)\r\n\r\n // 其他\r\n app.component('IconPlayOne', PlayOne)\r\n app.component('IconSearch', Search)\r\n app.component('IconPpt', Ppt)\r\n app.component('IconHelpcenter', Helpcenter)\r\n app.component('IconGithub', Github)\r\n app.component('IconWrite', Write)\r\n app.component('IconEffects', Effects)\r\n app.component('IconRotate', Rotate)\r\n app.component('IconEdit', Edit)\r\n app.component('IconUndo', Undo)\r\n app.component('IconTransform', Transform)\r\n app.component('IconClick', Click)\r\n app.component('IconTheme', Theme)\r\n app.component('IconArrowCircleLeft', ArrowCircleLeft)\r\n }\r\n}","\r\n \r\n \r\n handleChange($event)\"\r\n >\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { defineComponent, ref } from 'vue'\r\n\r\nexport default defineComponent({\r\n name: 'file-input',\r\n props: {\r\n accept: {\r\n type: String,\r\n default: 'image/*',\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const inputRef = ref()\r\n\r\n const handleClick = () => {\r\n if (!inputRef.value) return\r\n inputRef.value.value = ''\r\n inputRef.value.click()\r\n }\r\n const handleChange = (e: InputEvent) => {\r\n const files = (e.target as HTMLInputElement).files\r\n if (files) emit('change', files)\r\n }\r\n\r\n return {\r\n handleClick,\r\n handleChange,\r\n inputRef,\r\n }\r\n },\r\n})\r\n","import { render } from \"./FileInput.vue?vue&type=template&id=bf80565c&scoped=true\"\nimport script from \"./FileInput.vue?vue&type=script&lang=ts\"\nexport * from \"./FileInput.vue?vue&type=script&lang=ts\"\n\nimport \"./FileInput.vue?vue&type=style&index=0&id=bf80565c&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-bf80565c\"\n\nexport default script","\r\n \r\n\r\n\r\n","\r\nexport default {\r\n name: 'svg-wrapper',\r\n}\r\n","import { render } from \"./SvgWrapper.vue?vue&type=template&id=07215504\"\nimport script from \"./SvgWrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./SvgWrapper.vue?vue&type=script&lang=ts\"\nscript.render = render\n\nexport default script","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'checkbox-button',\r\n props: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n}\r\n","import { render } from \"./CheckboxButton.vue?vue&type=template&id=7cae2b90&scoped=true\"\nimport script from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButton.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButton.vue?vue&type=style&index=0&id=7cae2b90&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7cae2b90\"\n\nexport default script","\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n","\r\nexport default {\r\n name: 'checkbox-button-group',\r\n}\r\n","import { render } from \"./CheckboxButtonGroup.vue?vue&type=template&id=7dafd0a9&scoped=true\"\nimport script from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxButtonGroup.vue?vue&type=script&lang=ts\"\n\nimport \"./CheckboxButtonGroup.vue?vue&type=style&index=0&id=7dafd0a9&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7dafd0a9\"\n\nexport default script","\r\n \r\n
\r\n changeColor(value)\" />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n changeColor(value)\" />\r\n
\r\n
\r\n
changeColor(value)\" />\r\n \r\n
\r\n
\r\n\r\n
\r\n changeColor(value)\" />\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
最近使用:
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n
\r\n \r\n
\r\n
\r\n
handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\n \r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent } from 'vue'\r\n\r\nconst checkboardCache = {}\r\n\r\nconst renderCheckboard = (white: string, grey: string, size: number) => {\r\n const canvas = document.createElement('canvas')\r\n canvas.width = canvas.height = size * 2\r\n const ctx = canvas.getContext('2d')\r\n \r\n if (!ctx) return null\r\n\r\n ctx.fillStyle = white\r\n ctx.fillRect(0, 0, canvas.width, canvas.height)\r\n ctx.fillStyle = grey\r\n ctx.fillRect(0, 0, size, size)\r\n ctx.translate(size, size)\r\n ctx.fillRect(0, 0, size, size)\r\n return canvas.toDataURL()\r\n}\r\n\r\nconst getCheckboard = (white: string, grey: string, size: number) => {\r\n const key = white + ',' + grey + ',' + size\r\n if (checkboardCache[key]) return checkboardCache[key]\r\n \r\n const checkboard = renderCheckboard(white, grey, size)\r\n checkboardCache[key] = checkboard\r\n return checkboard\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'checkboard',\r\n props: {\r\n size: {\r\n type: Number,\r\n default: 8,\r\n },\r\n white: {\r\n type: String,\r\n default: '#fff',\r\n },\r\n grey: {\r\n type: String,\r\n default: '#e6e6e6',\r\n },\r\n },\r\n setup(props) {\r\n const bgStyle = computed(() => {\r\n const checkboard = getCheckboard(props.white, props.grey, props.size)\r\n return { backgroundImage: `url(${checkboard})` }\r\n })\r\n\r\n return {\r\n bgStyle,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Checkboard.vue?vue&type=template&id=e9a0ac98&scoped=true\"\nimport script from \"./Checkboard.vue?vue&type=script&lang=ts\"\nexport * from \"./Checkboard.vue?vue&type=script&lang=ts\"\n\nimport \"./Checkboard.vue?vue&type=style&index=0&id=e9a0ac98&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-e9a0ac98\"\n\nexport default script","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\r\n\r\nimport Checkboard from './Checkboard.vue'\r\nimport { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'alpha',\r\n components: {\r\n Checkboard,\r\n },\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const color = computed(() => props.value)\r\n \r\n const gradientColor = computed(() => {\r\n const rgbaStr = [color.value.r, color.value.g, color.value.b].join(',')\r\n return `linear-gradient(to right, rgba(${rgbaStr}, 0) 0%, rgba(${rgbaStr}, 1) 100%)`\r\n })\r\n\r\n const alphaRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!alphaRef.value) return\r\n const containerWidth = alphaRef.value.clientWidth\r\n const xOffset = alphaRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const left = e.pageX - xOffset\r\n let a\r\n\r\n if (left < 0) a = 0\r\n else if (left > containerWidth) a = 1\r\n else a = Math.round(left * 100 / containerWidth) / 100\r\n\r\n if (color.value.a !== a) {\r\n emit('colorChange', {\r\n r: color.value.r,\r\n g: color.value.g,\r\n b: color.value.b,\r\n a: a,\r\n })\r\n }\r\n }\r\n\r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n alphaRef,\r\n gradientColor,\r\n handleMouseDown,\r\n color,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Alpha.vue?vue&type=template&id=ecf7d10e&scoped=true\"\nimport script from \"./Alpha.vue?vue&type=script&lang=ts\"\nexport * from \"./Alpha.vue?vue&type=script&lang=ts\"\n\nimport \"./Alpha.vue?vue&type=style&index=0&id=ecf7d10e&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-ecf7d10e\"\n\nexport default script","\r\n \r\n
handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref, watch } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'hue',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n hue: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const oldHue = ref(0)\r\n const pullDirection = ref('')\r\n \r\n const color = computed(() => {\r\n const hsla = tinycolor(props.value).toHsl()\r\n if (hsla.s === 0) hsla.h = props.hue\r\n return hsla\r\n })\r\n\r\n const pointerLeft = computed(() => {\r\n if (color.value.h === 0 && pullDirection.value === 'right') return '100%'\r\n return color.value.h * 100 / 360 + '%'\r\n })\r\n\r\n watch(() => props.value, () => {\r\n const hsla = tinycolor(props.value).toHsl()\r\n const h = hsla.s === 0 ? props.hue : hsla.h\r\n if (h !== 0 && h - oldHue.value > 0) pullDirection.value = 'right'\r\n if (h !== 0 && h - oldHue.value < 0) pullDirection.value = 'left'\r\n oldHue.value = h\r\n })\r\n\r\n const hueRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!hueRef.value) return\r\n\r\n const containerWidth = hueRef.value.clientWidth\r\n const xOffset = hueRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const left = e.pageX - xOffset\r\n let h, percent\r\n \r\n if (left < 0) h = 0\r\n else if (left > containerWidth) h = 360\r\n else {\r\n percent = left * 100 / containerWidth\r\n h = (360 * percent / 100)\r\n }\r\n if (color.value.h !== h) {\r\n emit('colorChange', {\r\n h,\r\n l: color.value.l,\r\n s: color.value.s,\r\n a: color.value.a,\r\n })\r\n }\r\n }\r\n\r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n hueRef,\r\n handleMouseDown,\r\n pointerLeft,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Hue.vue?vue&type=template&id=7b983451&scoped=true\"\nimport script from \"./Hue.vue?vue&type=script&lang=ts\"\nexport * from \"./Hue.vue?vue&type=script&lang=ts\"\n\nimport \"./Hue.vue?vue&type=style&index=0&id=7b983451&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-7b983451\"\n\nexport default script","\r\n handleMouseDown($event)\"\r\n >\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, onUnmounted, PropType, ref } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\nimport throttle from 'lodash/throttle'\r\nimport clamp from 'lodash/clamp'\r\n\r\nexport default defineComponent({\r\n name: 'saturation',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n hue: {\r\n type: Number,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const color = computed(() => {\r\n const hsva = tinycolor(props.value).toHsv()\r\n if (hsva.s === 0) hsva.h = props.hue\r\n return hsva\r\n })\r\n\r\n const bgColor = computed(() => `hsl(${color.value.h}, 100%, 50%)`)\r\n const pointerTop = computed(() => (-(color.value.v * 100) + 1) + 100 + '%')\r\n const pointerLeft = computed(() => color.value.s * 100 + '%')\r\n\r\n const emitChangeEvent = throttle(function(param) {\r\n emit('colorChange', param)\r\n }, 20, { leading: true, trailing: false })\r\n\r\n const saturationRef = ref()\r\n const handleChange = (e: MouseEvent) => {\r\n e.preventDefault()\r\n if (!saturationRef.value) return\r\n \r\n const containerWidth = saturationRef.value.clientWidth\r\n const containerHeight = saturationRef.value.clientHeight\r\n const xOffset = saturationRef.value.getBoundingClientRect().left + window.pageXOffset\r\n const yOffset = saturationRef.value.getBoundingClientRect().top + window.pageYOffset\r\n const left = clamp(e.pageX - xOffset, 0, containerWidth)\r\n const top = clamp(e.pageY - yOffset, 0, containerHeight)\r\n const saturation = left / containerWidth\r\n const bright = clamp(-(top / containerHeight) + 1, 0, 1)\r\n\r\n emitChangeEvent({\r\n h: color.value.h,\r\n s: saturation,\r\n v: bright,\r\n a: color.value.a,\r\n })\r\n }\r\n\r\n \r\n const unbindEventListeners = () => {\r\n window.removeEventListener('mousemove', handleChange)\r\n window.removeEventListener('mouseup', unbindEventListeners)\r\n }\r\n const handleMouseDown = (e: MouseEvent) => {\r\n handleChange(e)\r\n window.addEventListener('mousemove', handleChange)\r\n window.addEventListener('mouseup', unbindEventListeners)\r\n }\r\n\r\n onUnmounted(unbindEventListeners)\r\n\r\n return {\r\n saturationRef,\r\n bgColor,\r\n handleMouseDown,\r\n pointerTop,\r\n pointerLeft,\r\n }\r\n },\r\n})\r\n","import { render } from \"./Saturation.vue?vue&type=template&id=5310dbb4&scoped=true\"\nimport script from \"./Saturation.vue?vue&type=script&lang=ts\"\nexport * from \"./Saturation.vue?vue&type=script&lang=ts\"\n\nimport \"./Saturation.vue?vue&type=style&index=0&id=5310dbb4&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-5310dbb4\"\n\nexport default script","\r\n \r\n handleInput($event)\"\r\n >\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { computed, defineComponent, PropType } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\n\r\nexport default defineComponent({\r\n name: 'editable-input',\r\n props: {\r\n value: {\r\n type: Object as PropType,\r\n required: true,\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const val = computed(() => {\r\n let _hex = ''\r\n if (props.value.a < 1) _hex = tinycolor(props.value).toHex8String().toUpperCase()\r\n else _hex = tinycolor(props.value).toHexString().toUpperCase()\r\n return _hex.replace('#', '')\r\n })\r\n\r\n const handleInput = (e: InputEvent) => {\r\n const value = (e.target as HTMLInputElement).value\r\n if (value.length >= 6) emit('colorChange', tinycolor(value).toRgb())\r\n }\r\n\r\n return {\r\n val,\r\n handleInput,\r\n }\r\n },\r\n})\r\n","import { render } from \"./EditableInput.vue?vue&type=template&id=0311fdee&scoped=true\"\nimport script from \"./EditableInput.vue?vue&type=script&lang=ts\"\nexport * from \"./EditableInput.vue?vue&type=script&lang=ts\"\n\nimport \"./EditableInput.vue?vue&type=style&index=0&id=0311fdee&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-0311fdee\"\n\nexport default script","\r\nimport { computed, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport tinycolor, { ColorFormats } from 'tinycolor2'\r\nimport debounce from 'lodash/debounce'\r\n\r\nimport Alpha from './Alpha.vue'\r\nimport Checkboard from './Checkboard.vue'\r\nimport Hue from './Hue.vue'\r\nimport Saturation from './Saturation.vue'\r\nimport EditableInput from './EditableInput.vue'\r\n\r\nconst RECENT_COLORS = 'RECENT_COLORS'\r\n\r\nconst presetColorConfig = [\r\n ['#7f7f7f', '#f2f2f2'],\r\n ['#0d0d0d', '#808080'],\r\n ['#1c1a10', '#ddd8c3'],\r\n ['#0e243d', '#c6d9f0'],\r\n ['#233f5e', '#dae5f0'],\r\n ['#632623', '#f2dbdb'],\r\n ['#4d602c', '#eaf1de'],\r\n ['#3f3150', '#e6e0ec'],\r\n ['#1e5867', '#d9eef3'],\r\n ['#99490f', '#fee9da'],\r\n]\r\n\r\nconst gradient = (startColor: string, endColor: string, step: number) => {\r\n const _startColor = tinycolor(startColor).toRgb()\r\n const _endColor = tinycolor(endColor).toRgb()\r\n\r\n const rStep = (_endColor.r - _startColor.r) / step\r\n const gStep = (_endColor.g - _startColor.g) / step\r\n const bStep = (_endColor.b - _startColor.b) / step\r\n const gradientColorArr = []\r\n\r\n for (let i = 0; i < step; i++) {\r\n const gradientColor = tinycolor({\r\n r: _startColor.r + rStep * i,\r\n g: _startColor.g + gStep * i,\r\n b: _startColor.b + bStep * i,\r\n }).toRgbString()\r\n gradientColorArr.push(gradientColor)\r\n }\r\n return gradientColorArr\r\n}\r\n\r\nconst getPresetColors = () => {\r\n const presetColors = []\r\n for (const color of presetColorConfig) {\r\n presetColors.push(gradient(color[1], color[0], 5))\r\n }\r\n return presetColors\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'color-picker',\r\n components: {\r\n Alpha,\r\n Checkboard,\r\n Hue,\r\n Saturation,\r\n EditableInput,\r\n },\r\n props: {\r\n modelValue: {\r\n type: String,\r\n default: '#e86b99',\r\n },\r\n },\r\n setup(props, { emit }) {\r\n const hue = ref(0)\r\n const recentColors = ref([])\r\n\r\n const color = computed({\r\n get() {\r\n return tinycolor(props.modelValue).toRgb()\r\n },\r\n set(rgba: ColorFormats.RGBA) {\r\n const rgbaString = `rgba(${[rgba.r, rgba.g, rgba.b, rgba.a].join(',')})`\r\n emit('update:modelValue', rgbaString)\r\n },\r\n })\r\n\r\n const themeColors = ['#000000', '#ffffff', '#eeece1', '#1e497b', '#4e81bb', '#e2534d', '#9aba60', '#8165a0', '#47acc5', '#f9974c']\r\n const standardColors = ['#c21401', '#ff1e02', '#ffc12a', '#ffff3a', '#90cf5b', '#00af57', '#00afee', '#0071be', '#00215f', '#72349d']\r\n const presetColors = getPresetColors()\r\n\r\n const currentColor = computed(() => {\r\n return `rgba(${[color.value.r, color.value.g, color.value.b, color.value.a].join(',')})`\r\n })\r\n\r\n const selectPresetColor = (colorString: string) => {\r\n emit('update:modelValue', colorString)\r\n }\r\n\r\n // 每次选择非预设颜色时,需要将该颜色加入到最近使用列表中\r\n const updateRecentColorsCache = debounce(function() {\r\n const _color = tinycolor(color.value).toRgbString()\r\n if (!recentColors.value.includes(_color)) {\r\n recentColors.value = [_color, ...recentColors.value]\r\n\r\n const maxLength = 10\r\n if (recentColors.value.length > maxLength) {\r\n recentColors.value = recentColors.value.slice(-maxLength)\r\n }\r\n }\r\n }, 300, { trailing: true })\r\n\r\n onMounted(() => {\r\n const recentColorsCache = localStorage.getItem(RECENT_COLORS)\r\n if (recentColorsCache) recentColors.value = JSON.parse(recentColorsCache)\r\n })\r\n\r\n watch(recentColors, () => {\r\n const recentColorsCache = JSON.stringify(recentColors.value)\r\n localStorage.setItem(RECENT_COLORS, recentColorsCache)\r\n })\r\n\r\n const changeColor = (value: ColorFormats.RGBA | ColorFormats.HSLA | ColorFormats.HSVA) => {\r\n if ('h' in value) {\r\n hue.value = value.h\r\n color.value = tinycolor(value).toRgb()\r\n }\r\n else color.value = value\r\n\r\n updateRecentColorsCache()\r\n }\r\n\r\n return {\r\n themeColors,\r\n standardColors,\r\n presetColors,\r\n color,\r\n hue,\r\n currentColor,\r\n changeColor,\r\n selectPresetColor,\r\n recentColors,\r\n }\r\n },\r\n})\r\n","import { render } from \"./index.vue?vue&type=template&id=067119ff&scoped=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=067119ff&lang=scss&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-067119ff\"\n\nexport default script","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport { store, key } from './store'\r\n\r\nimport '@icon-park/vue-next/styles/index.css'\r\nimport 'prosemirror-view/style/prosemirror.css'\r\nimport '@/assets/styles/prosemirror.scss'\r\nimport '@/assets/styles/global.scss'\r\nimport '@/assets/styles/antd.scss'\r\nimport '@/assets/styles/font.scss'\r\nimport 'animate.css'\r\n\r\n// 自定义插件\r\nimport Contextmenu from './plugins/contextmenu'\r\nimport ClickOutside from './plugins/clickOutside'\r\nimport IconPark from './plugins/iconPark'\r\n\r\n// 自定义组件\r\nimport FileInput from '@/components/FileInput.vue'\r\nimport SvgWrapper from '@/components/SvgWrapper.vue'\r\nimport CheckboxButton from '@/components/CheckboxButton.vue'\r\nimport CheckboxButtonGroup from '@/components/CheckboxButtonGroup.vue'\r\nimport ColorPicker from '@/components/ColorPicker/index.vue'\r\n\r\n// antd 组件\r\nimport {\r\n InputNumber,\r\n Divider,\r\n Button,\r\n Tooltip,\r\n Popover,\r\n Slider,\r\n Select,\r\n Switch,\r\n Radio,\r\n Input,\r\n Modal,\r\n Dropdown,\r\n Menu,\r\n Checkbox,\r\n Drawer,\r\n} from 'ant-design-vue'\r\n\r\nconst app = createApp(App)\r\n\r\napp.directive('contextmenu', Contextmenu)\r\napp.directive('click-outside', ClickOutside)\r\napp.use(IconPark)\r\n\r\napp.component('FileInput', FileInput)\r\napp.component('SvgWrapper', SvgWrapper)\r\napp.component('CheckboxButton', CheckboxButton)\r\napp.component('CheckboxButtonGroup', CheckboxButtonGroup)\r\napp.component('ColorPicker', ColorPicker)\r\n\r\napp.component('InputNumber', InputNumber)\r\napp.component('Divider', Divider)\r\napp.component('Button', Button)\r\napp.component('ButtonGroup', Button.Group)\r\napp.component('Tooltip', Tooltip)\r\napp.component('Popover', Popover)\r\napp.component('Slider', Slider)\r\napp.component('Select', Select)\r\napp.component('SelectOption', Select.Option)\r\napp.component('SelectOptGroup', Select.OptGroup)\r\napp.component('Switch', Switch)\r\napp.component('Radio', Radio)\r\napp.component('RadioGroup', Radio.Group)\r\napp.component('RadioButton', Radio.Button)\r\napp.component('Input', Input)\r\napp.component('InputGroup', Input.Group)\r\napp.component('Modal', Modal)\r\napp.component('Dropdown', Dropdown)\r\napp.component('Menu', Menu)\r\napp.component('MenuItem', Menu.Item)\r\napp.component('Checkbox', Checkbox)\r\napp.component('Drawer', Drawer)\r\n\r\napp.use(store, key)\r\napp.mount('#app')\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ChartPool.vue?vue&type=style&index=0&id=58ced0dd&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=6769a5f7&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementOutline.vue?vue&type=style&index=0&id=2ddaa919&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./MultiSelectOperate.vue?vue&type=style&index=0&id=4def6455&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=5aa0ae1e&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./FileInput.vue?vue&type=style&index=0&id=bf80565c&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./index.vue?vue&type=style&index=0&id=6277fc70&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./EditableTable.vue?vue&type=style&index=0&id=ae1d6576&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ImageStylePanel.vue?vue&type=style&index=0&id=76aa2020&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./HotkeyDoc.vue?vue&type=style&index=0&id=47d0351b&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ViewportBackground.vue?vue&type=style&index=0&id=a9ca1b50&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./ElementAnimationPanel.vue?vue&type=style&index=0&id=79c3f50b&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--0-1!./BorderLine.vue?vue&type=style&index=0&id=630e246b&lang=scss&scoped=true\""],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/js/app.d718d7f2.js b/dist/js/app.d718d7f2.js
deleted file mode 100644
index 57f4d42a..00000000
--- a/dist/js/app.d718d7f2.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(e){function t(t){for(var o,r,l=t[0],i=t[1],u=t[2],s=0,f=[];s0},canRedo:function(e){return e.snapshotCursor=0&&n.snapshotCursor20&&(a.push(c[0]),l--),l>=2&&M.snapshots.update(c[l-2],{index:n.slideIndex}),t.next=14,M.snapshots.bulkDelete(a);case 14:o(g.SET_SNAPSHOT_CURSOR,l-1),o(g.SET_SNAPSHOT_LENGTH,l);case 16:case"end":return t.stop()}}),t)})))()})),Object(C["a"])(x,y.UN_DO,(function(e){return Object(N["a"])(regeneratorRuntime.mark((function t(){var n,o,c,a,r,l,i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=e.state,o=e.commit,!(n.snapshotCursor<=0)){t.next=3;break}return t.abrupt("return");case 3:return c=n.snapshotCursor-1,t.next=6,M.snapshots.orderBy("id").toArray();case 6:a=t.sent,r=a[c],l=r.index,i=r.slides,o(g.SET_SLIDES,i),o(g.UPDATE_SLIDE_INDEX,l),o(g.SET_SNAPSHOT_CURSOR,c),o(g.SET_ACTIVE_ELEMENT_ID_LIST,[]);case 13:case"end":return t.stop()}}),t)})))()})),Object(C["a"])(x,y.RE_DO,(function(e){return Object(N["a"])(regeneratorRuntime.mark((function t(){var n,o,c,a,r,l,i;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(n=e.state,o=e.commit,!(n.snapshotCursor>=n.snapshotLength-1)){t.next=3;break}return t.abrupt("return");case 3:return c=n.snapshotCursor+1,t.next=6,M.snapshots.orderBy("id").toArray();case 6:a=t.sent,r=a[c],l=r.index,i=r.slides,o(g.SET_SLIDES,i),o(g.UPDATE_SLIDE_INDEX,l),o(g.SET_SNAPSHOT_CURSOR,c),o(g.SET_ACTIVE_ELEMENT_ID_LIST,[]);case 13:case"end":return t.stop()}}),t)})))()})),x),A=(n("99af"),n("c740"),n("a434"),n("2909")),P=n("5530"),R=n("3eea"),F=n.n(R),H=[{label:"Arial",value:"Arial"},{label:"微软雅黑",value:"Microsoft Yahei"},{label:"宋体",value:"SimSun"},{label:"黑体",value:"SimHei"},{label:"楷体",value:"KaiTi"},{label:"新宋体",value:"NSimSun"},{label:"仿宋",value:"FangSong"},{label:"苹方",value:"PingFang SC"},{label:"华文黑体",value:"STHeiti"},{label:"华文楷体",value:"STKaiti"},{label:"华文宋体",value:"STSong"},{label:"华文仿宋",value:"STFangSong"},{label:"华文中宋",value:"STZhongSong"},{label:"华文琥珀",value:"STHupo"},{label:"华文新魏",value:"STXinwei"},{label:"华文隶书",value:"STLiti"},{label:"华文行楷",value:"STXingkai"},{label:"冬青黑体",value:"Hiragino Sans GB"},{label:"兰亭黑",value:"Lantinghei SC"},{label:"偏偏体",value:"Hanzipen SC"},{label:"手札体",value:"Hannotate SC"},{label:"宋体",value:"Songti SC"},{label:"娃娃体",value:"Wawati SC"},{label:"行楷",value:"Xingkai SC"},{label:"圆体",value:"Yuanti SC"},{label:"华文细黑",value:"STXihei"},{label:"幼圆",value:"YouYuan"},{label:"隶书",value:"LiSu"}],z=[{label:"仓耳小丸子",value:"仓耳小丸子"},{label:"优设标题黑",value:"优设标题黑"},{label:"峰广明锐体",value:"峰广明锐体"},{label:"摄图摩登小方体",value:"摄图摩登小方体"},{label:"站酷快乐体",value:"站酷快乐体"},{label:"站酷酷黑体",value:"站酷酷黑体"},{label:"素材集市康康体",value:"素材集市康康体"},{label:"联盟起艺卢帅正锐黑体",value:"联盟起艺卢帅正锐黑体"},{label:"谦度手写楷体",value:"谦度手写楷体"},{label:"途牛类圆体",value:"途牛类圆体"},{label:"锐字真言体",value:"锐字真言体"},{label:"问藏书房",value:"问藏书房"}],U=(n("a15b"),function(e){if("string"!==typeof e)return!1;var t="Arial";if(e.toLowerCase()===t.toLowerCase())return!0;var n=100,o=100,c=100,a="a",r=document.createElement("canvas"),l=r.getContext("2d");if(!l)return!1;r.width=o,r.height=c,l.textAlign="center",l.fillStyle="black",l.textBaseline="middle";var i=function(e){l.clearRect(0,0,o,c),l.font="".concat(n,"px ").concat(e,", ").concat(t),l.fillText(a,o/2,c/2);var r=l.getImageData(0,0,o,c).data;return[].slice.call(r).filter((function(e){return 0!==e}))};return i(t).join("")!==i(e).join("")}),G=(L={},Object(C["a"])(L,g.SET_ACTIVE_ELEMENT_ID_LIST,(function(e,t){1===t.length?e.handleElementId=t[0]:e.handleElementId="",e.activeElementIdList=t})),Object(C["a"])(L,g.SET_HANDLE_ELEMENT_ID,(function(e,t){e.handleElementId=t})),Object(C["a"])(L,g.SET_CANVAS_PERCENTAGE,(function(e,t){e.canvasPercentage=t})),Object(C["a"])(L,g.SET_CANVAS_SCALE,(function(e,t){e.canvasScale=t})),Object(C["a"])(L,g.SET_THUMBNAILS_FOCUS,(function(e,t){e.thumbnailsFocus=t})),Object(C["a"])(L,g.SET_EDITORAREA_FOCUS,(function(e,t){e.editorAreaFocus=t})),Object(C["a"])(L,g.SET_DISABLE_HOTKEYS_STATE,(function(e,t){e.disableHotkeys=t})),Object(C["a"])(L,g.SET_GRID_LINES_STATE,(function(e,t){e.showGridLines=t})),Object(C["a"])(L,g.SET_CREATING_ELEMENT,(function(e,t){e.creatingElement=t})),Object(C["a"])(L,g.SET_AVAILABLE_FONTS,(function(e){e.availableFonts=H.filter((function(e){return U(e.value)}))})),Object(C["a"])(L,g.SET_TOOLBAR_STATE,(function(e,t){e.toolbarState=t})),Object(C["a"])(L,g.SET_CLIPING_IMAGE_ELEMENT_ID,(function(e,t){e.clipingImageElementId=t})),Object(C["a"])(L,g.SET_THEME,(function(e,t){e.theme=Object(P["a"])(Object(P["a"])({},e.theme),t)})),Object(C["a"])(L,g.SET_SLIDES,(function(e,t){e.slides=t})),Object(C["a"])(L,g.ADD_SLIDE,(function(e,t){var n=e.slideIndex+1;e.slides.splice(n,0,t),e.slideIndex=n})),Object(C["a"])(L,g.UPDATE_SLIDE,(function(e,t){var n=e.slideIndex;e.slides[n]=Object(P["a"])(Object(P["a"])({},e.slides[n]),t)})),Object(C["a"])(L,g.DELETE_SLIDE,(function(e,t){var n=e.slides.findIndex((function(e){return e.id===t}));n===e.slides.length-1&&(e.slideIndex=n-1),e.slides.splice(n,1)})),Object(C["a"])(L,g.UPDATE_SLIDE_INDEX,(function(e,t){e.slideIndex=t})),Object(C["a"])(L,g.ADD_ELEMENT,(function(e,t){var n=Array.isArray(t)?t:[t],o=e.slides[e.slideIndex].elements,c=[].concat(Object(A["a"])(o),Object(A["a"])(n));e.slides[e.slideIndex].elements=c})),Object(C["a"])(L,g.UPDATE_ELEMENT,(function(e,t){var n=t.id,o=t.props,c="string"===typeof n?[n]:n,a=e.slideIndex,r=e.slides[a],l=r.elements.map((function(e){return c.includes(e.id)?Object(P["a"])(Object(P["a"])({},e),o):e}));e.slides[a].elements=l})),Object(C["a"])(L,g.REMOVE_ELEMENT_PROPS,(function(e,t){var n=t.id,o=t.propName,c="string"===typeof o?[o]:o,a=e.slideIndex,r=e.slides[a],l=r.elements.map((function(e){return e.id===n?F()(e,c):e}));e.slides[a].elements=l})),Object(C["a"])(L,g.SET_SNAPSHOT_CURSOR,(function(e,t){e.snapshotCursor=t})),Object(C["a"])(L,g.SET_SNAPSHOT_LENGTH,(function(e,t){e.snapshotLength=t})),Object(C["a"])(L,g.SET_CTRL_KEY_STATE,(function(e,t){e.ctrlKeyState=t})),Object(C["a"])(L,g.SET_SHIFT_KEY_STATE,(function(e,t){e.shiftKeyState=t})),Object(C["a"])(L,g.SET_SCREENING,(function(e,t){e.screening=t})),L),q=Symbol(),W=Object(k["a"])({state:I,getters:S,mutations:G,actions:D}),X=function(){return Object(k["b"])(q)},Y=Object(j["withScopeId"])("data-v-5186b40b");Object(j["pushScopeId"])("data-v-5186b40b");var Z={class:"hamster-ppt-editor"},J={class:"layout-content"},K={class:"layout-content-center"};Object(j["popScopeId"])();var $,Q,ee,te,ne,oe,ce=Y((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("EditorHeader"),l=Object(j["resolveComponent"])("Thumbnails"),i=Object(j["resolveComponent"])("CanvasTool"),u=Object(j["resolveComponent"])("Canvas"),d=Object(j["resolveComponent"])("Toolbar");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Z,[Object(j["createVNode"])(r,{class:"layout-header"}),Object(j["createVNode"])("div",J,[Object(j["createVNode"])(l,{class:"layout-content-left"}),Object(j["createVNode"])("div",K,[Object(j["createVNode"])(i,{class:"center-top"}),Object(j["createVNode"])(u,{class:"center-body"})]),Object(j["createVNode"])(d,{class:"layout-content-right"})])])}));(function(e){e["UP"]="up",e["DOWN"]="down",e["TOP"]="top",e["BOTTOM"]="bottom"})($||($={})),function(e){e["TOP"]="top",e["BOTTOM"]="bottom",e["LEFT"]="left",e["RIGHT"]="right",e["VERTICAL"]="vertical",e["HORIZONTAL"]="horizontal",e["CENTER"]="center"}(Q||(Q={})),function(e){e["T"]="top",e["B"]="bottom",e["L"]="left",e["R"]="right"}(ee||(ee={})),function(e){e["LEFT_TOP"]="left-top",e["TOP"]="top",e["RIGHT_TOP"]="right-top",e["LEFT"]="left",e["RIGHT"]="right",e["LEFT_BOTTOM"]="left-bottom",e["BOTTOM"]="bottom",e["RIGHT_BOTTOM"]="right-bottom"}(te||(te={})),function(e){e["START"]="start",e["END"]="end,"}(ne||(ne={})),function(e){e["C"]="C",e["X"]="X",e["Z"]="Z",e["Y"]="Y",e["A"]="A",e["G"]="G",e["L"]="L",e["F"]="F",e["D"]="D",e["B"]="B",e["MINUS"]="-",e["EQUAL"]="=",e["DIGIT_0"]="0",e["DELETE"]="DELETE",e["UP"]="ARROWUP",e["DOWN"]="ARROWDOWN",e["LEFT"]="ARROWLEFT",e["RIGHT"]="ARROWRIGHT",e["ENTER"]="ENTER",e["SPACE"]=" ",e["TAB"]="TAB",e["BACKSPACE"]="BACKSPACE"}(oe||(oe={}));var ae=[{type:"通用",children:[{label:"剪切",value:"Ctrl + X"},{label:"复制",value:"Ctrl + C"},{label:"粘贴",value:"Ctrl + V"},{label:"快速复制粘贴",value:"Ctrl + D"},{label:"全选",value:"Ctrl + A"},{label:"撤销",value:"Ctrl + Z"},{label:"恢复",value:"Ctrl + Y"},{label:"删除",value:"Delete / Backspace"}]},{type:"幻灯片放映",children:[{label:"开始放映幻灯片",value:"Ctrl + F"},{label:"切换上一页",value:"↑ / ←"},{label:"切换下一页",value:"↓ / → / Enter / Space"},{label:"退出放映",value:"ESC"}]},{type:"幻灯片编辑",children:[{label:"新建幻灯片",value:"Enter"},{label:"缩放画布",value:"Ctrl + 鼠标滚动"},{label:"放大画布",value:"Ctrl + ="},{label:"缩小画布",value:"Ctrl + -"},{label:"缩放画布到合适大小",value:"Ctrl + 0"},{label:"编辑上一页",value:"↑ / ←"},{label:"编辑下一页",value:"↓ / →"}]},{type:"元素操作",children:[{label:"移动",value:"↑ / ← / ↓ / →"},{label:"锁定",value:"Ctrl + L"},{label:"组合",value:"Ctrl + G"},{label:"取消组合",value:"Ctrl + Shift + G"},{label:"置顶层",value:"Alt + F"},{label:"置底层",value:"Alt + B"},{label:"多选",value:"按住 Ctrl 或 Shift"},{label:"锁定宽高比例",value:"按住 Ctrl 或 Shift"},{label:"创建水平 / 垂直线条",value:"按住 Ctrl 或 Shift"},{label:"确认图片裁剪",value:"Enter"}]},{type:"表格编辑",children:[{label:"聚焦到下一个单元格",value:"Tab"},{label:"在上方插入一行",value:"Ctrl + ↑"},{label:"在下方插入一行",value:"Ctrl + ↓"},{label:"在左侧插入一列",value:"Ctrl + ←"},{label:"在右侧插入一列",value:"Ctrl + →"}]},{type:"文本编辑",children:[{label:"加粗",value:"Ctrl + B"},{label:"斜体",value:"Ctrl + I"},{label:"下划线",value:"Ctrl + U"},{label:"删除线",value:"Ctrl + D"}]}],re=(n("3b18"),n("f64c")),le=n("4106"),ie=n.n(le),ue=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:6,t="_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",n=t.length,o="",c=0;cLe?(n=Le,o=n*c):o>Le*Te&&(o=Le*Te,n=o/c),a({type:"image",id:ue(),src:e,width:n,height:o,left:(Le-n)/2,top:(Le*Te-o)/2,fixedRatio:!0})}))},l=function(e){a({type:"chart",id:ue(),chartType:e,left:300,top:81.25,width:400,height:400,themeColor:t.value,gridColor:n.value,data:{labels:["类别1","类别2","类别3","类别4","类别5"],series:[[12,19,5,2,18]]}})},i=function(e,n){var o=new Array(n).fill({id:ue(),colspan:1,rowspan:1,text:""}),c=new Array(e).fill(o),r=100,l=36,i=new Array(n).fill(1/n),u=n*r,d=e*l;a({type:"table",id:ue(),width:u,height:d,colWidths:i,data:c,left:(Le-u)/2,top:(Le*Te-d)/2,outline:{width:2,style:"solid",color:"#eeece1"},theme:{color:t.value,rowHeader:!0,rowFooter:!1,colHeader:!1,colFooter:!1}})},u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"请输入内容",n=e.left,o=e.top,c=e.width,r=e.height;a({type:"text",id:ue(),left:n,top:o,width:c,height:r,content:t})},d=function(e,n){var o=e.left,c=e.top,r=e.width,l=e.height;a({type:"shape",id:ue(),left:o,top:c,width:r,height:l,viewBox:n.viewBox,path:n.path,fill:t.value,fixedRatio:!1})},s=function(e,n){var o=e.left,c=e.top,r=e.start,l=e.end;a({type:"line",id:ue(),left:o,top:c,start:r,end:l,points:n.points,color:t.value,style:n.style,width:2})};return{createImageElement:r,createChartElement:l,createTableElement:i,createTextElement:u,createShapeElement:d,createLineElement:s}},Ve=function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.currentSlide})),n=Ce(),o=n.addHistorySnapshot,c=we(),a=c.createTextElement,r=function(n){var c,a={},r={},l=Object(ye["a"])(n);try{for(l.s();!(c=l.n()).done;){var i=c.value,u=i.groupId;u&&!a[u]&&(a[u]=ue()),r[i.id]=ue()}}catch(m){l.e(m)}finally{l.f()}var d,s=t.value.elements.map((function(e){return e.id})),f=Object(ye["a"])(n);try{for(f.s();!(d=f.n()).done;){var p=d.value,b=s.includes(p.id);p.id=r[p.id],b&&(p.left=p.left+10,p.top=p.top+10),p.groupId&&(p.groupId=a[p.groupId])}}catch(m){f.e(m)}finally{f.f()}e.commit(g.ADD_ELEMENT,n),e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,Object.values(r)),o()},l=function(t){e.commit(g.ADD_SLIDE,Object(P["a"])(Object(P["a"])({},t),{},{id:ue(8)})),o()},i=function(e){a({left:0,top:0,width:600,height:50},e)},u=function(e,t){var n,o=(null===t||void 0===t?void 0:t.onlySlide)||!1,c=(null===t||void 0===t?void 0:t.onlyElements)||!1;try{n=JSON.parse(he(e))}catch(s){n=e}if("object"===Object(ge["a"])(n)){var a=n,u=a.type,d=a.data;"elements"!==u||o?"slide"!==u||c||l(d):r(d)}else c||o||i(n)};return{pasteTextClipboardData:u}},_e=function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slideIndex})),n=Object(j["computed"])((function(){return e.state.theme})),o=Object(j["computed"])((function(){return e.state.slides.length})),c=Object(j["computed"])((function(){return e.getters.currentSlide})),a=Ve(),r=a.pasteTextClipboardData,l=Ce(),i=l.addHistorySnapshot,u=function(n){var c=0;n===oe.UP&&t.value>0?c=t.value-1:n===oe.DOWN&&t.value1&&void 0!==arguments[1]?arguments[1]:1,r=n.value.elements.map((function(e){if(t.value.includes(e.id)){var n=e.left,c=e.top;switch(o){case oe.LEFT:n-=a;break;case oe.RIGHT:n+=a;break;case oe.UP:c-=a;break;case oe.DOWN:c+=a;break;default:break}return Object(P["a"])(Object(P["a"])({},e),{},{left:n,top:c})}return e}));e.commit(g.UPDATE_SLIDE,{elements:r}),c()};return{moveElement:a}},Fe=function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.currentSlide})),n=Ce(),o=n.addHistorySnapshot,c=function(e,t){return{minLevel:e.findIndex((function(e){return e.id===t[0].id})),maxLevel:e.findIndex((function(e){return e.id===t[t.length-1].id}))}},a=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel,l=a.maxLevel;if(l===e.length-1)return;var i=n[l+1],u=n.splice(r,o.length);if(i.groupId){var d=n.filter((function(e){return e.groupId===i.groupId}));n.splice.apply(n,[r+d.length,0].concat(Object(A["a"])(u)))}else n.splice.apply(n,[r+1,0].concat(Object(A["a"])(u)))}else{var s=e.findIndex((function(e){return e.id===t.id}));if(s===e.length-1)return;var f=n[s+1],p=n.splice(s,1)[0];if(f.groupId){var b=n.filter((function(e){return e.groupId===f.groupId}));n.splice(s+b.length,0,p)}else n.splice(s+1,0,p)}return n},r=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel;if(0===r)return;var l=n[r-1],i=n.splice(r,o.length);if(l.groupId){var u=n.filter((function(e){return e.groupId===l.groupId}));n.splice.apply(n,[r-u.length,0].concat(Object(A["a"])(i)))}else n.splice.apply(n,[r-1,0].concat(Object(A["a"])(i)))}else{var d=e.findIndex((function(e){return e.id===t.id}));if(0===d)return;var s=n[d-1],f=n.splice(d,1)[0];if(s.groupId){var p=n.filter((function(e){return e.groupId===s.groupId}));n.splice(d-p.length,0,f)}else n.splice(d-1,0,f)}return n},l=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel,l=a.maxLevel;if(l===e.length-1)return null;var i=n.splice(r,o.length);n.push.apply(n,Object(A["a"])(i))}else{var u=e.findIndex((function(e){return e.id===t.id}));if(u===e.length-1)return null;n.splice(u,1),n.push(t)}return n},i=function(e,t){var n=JSON.parse(JSON.stringify(e));if(t.groupId){var o=n.filter((function(e){return e.groupId===t.groupId})),a=c(e,o),r=a.minLevel;if(0===r)return;var l=n.splice(r,o.length);n.unshift.apply(n,Object(A["a"])(l))}else{var i=e.findIndex((function(e){return e.id===t.id}));if(0===i)return;n.splice(i,1),n.unshift(t)}return n},u=function(n,c){var u;c===$.UP?u=a(t.value.elements,n):c===$.DOWN?u=r(t.value.elements,n):c===$.TOP?u=l(t.value.elements,n):c===$.BOTTOM&&(u=i(t.value.elements,n)),u&&(e.commit(g.UPDATE_SLIDE,{elements:u}),o())};return{orderElement:u}},He=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullScreen&&e.webkitRequestFullScreen()},ze=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitCancelFullScreen&&document.webkitCancelFullScreen()},Ue=function(){return document.mozFullScreen||document.webkitIsFullScreen||document.webkitFullScreen},Ge=function(){var e=X(),t=function(){He(),e.commit(g.SET_SCREENING,!0)},n=function(){e.commit(g.UPDATE_SLIDE_INDEX,0),t()},o=function(){e.commit(g.SET_SCREENING,!1),Ue()&&ze()};return{enterScreening:t,enterScreeningFromStart:n,exitScreening:o}},qe=function(){var e=X(),t=Object(j["computed"])((function(){return e.state.canvasPercentage})),n=function(n){var o=t.value,c=5,a=120,r=60;"+"===n&&o<=a&&(o+=c),"-"===n&&o>=r&&(o-=c),e.commit(g.SET_CANVAS_PERCENTAGE,o)},o=function(t){e.commit(g.SET_CANVAS_PERCENTAGE,t)};return{scaleCanvas:n,setCanvasPercentage:o}},We=function(){var e=X(),t=Object(j["computed"])((function(){return e.state.ctrlKeyState})),n=Object(j["computed"])((function(){return e.state.shiftKeyState})),o=Object(j["computed"])((function(){return e.state.disableHotkeys})),c=Object(j["computed"])((function(){return e.state.activeElementIdList})),a=Object(j["computed"])((function(){return e.getters.handleElement})),r=Object(j["computed"])((function(){return e.state.editorAreaFocus})),l=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),i=_e(),u=i.updateSlideIndex,d=i.copySlide,s=i.createSlide,f=i.deleteSlide,p=i.cutSlide,b=i.copyAndPasteSlide,m=De(),v=m.combineElements,O=m.uncombineElements,h=Me(),y=h.deleteElement,k=Be(),E=k.lockElement,I=Ae(),S=I.copyElement,C=I.cutElement,N=I.quickCopyElement,x=Pe(),L=x.selectAllElement,T=Re(),w=T.moveElement,V=Fe(),_=V.orderElement,B=Ce(),M=B.redo,D=B.undo,A=Ge(),P=A.enterScreening,R=qe(),F=R.scaleCanvas,H=R.setCanvasPercentage,z=function(){c.value.length?S():l.value&&d()},U=function(){c.value.length?C():l.value&&p()},G=function(){c.value.length?N():l.value&&b()},q=function(){r.value&&L()},W=function(){r.value&&E()},Y=function(){r.value&&v()},Z=function(){r.value&&O()},J=function(){c.value.length?y():l.value&&f()},K=function(e){c.value.length?w(e):e!==oe.UP&&e!==oe.DOWN||u(e)},Q=function(e){a.value&&_(a.value,e)},ee=function(){l.value&&s()},te=function(c){var a=c.ctrlKey,i=c.shiftKey,u=c.altKey,d=c.metaKey,s=c.key.toUpperCase();if(a&&!t.value&&e.commit(g.SET_CTRL_KEY_STATE,!0),i&&!n.value&&e.commit(g.SET_SHIFT_KEY_STATE,!0),a&&s===oe.F&&(c.preventDefault(),P(),e.commit(g.SET_CTRL_KEY_STATE,!1)),r.value||l.value){if((a||d)&&s===oe.C){if(o.value)return;c.preventDefault(),z()}if(a&&s===oe.X){if(o.value)return;c.preventDefault(),U()}if(a&&s===oe.D){if(o.value)return;c.preventDefault(),G()}if(a&&s===oe.Z){if(o.value)return;c.preventDefault(),D()}if(a&&s===oe.Y){if(o.value)return;c.preventDefault(),M()}if(a&&s===oe.A){if(o.value)return;c.preventDefault(),q()}if(a&&s===oe.L){if(o.value)return;c.preventDefault(),W()}if(!i&&a&&s===oe.G){if(o.value)return;c.preventDefault(),Y()}if(i&&a&&s===oe.G){if(o.value)return;c.preventDefault(),Z()}if(u&&s===oe.F){if(o.value)return;c.preventDefault(),Q($.TOP)}if(u&&s===oe.B){if(o.value)return;c.preventDefault(),Q($.BOTTOM)}if(s===oe.DELETE||s===oe.BACKSPACE){if(o.value)return;c.preventDefault(),J()}if(s===oe.UP){if(o.value)return;c.preventDefault(),K(oe.UP)}if(s===oe.DOWN){if(o.value)return;c.preventDefault(),K(oe.DOWN)}if(s===oe.LEFT){if(o.value)return;c.preventDefault(),K(oe.LEFT)}if(s===oe.RIGHT){if(o.value)return;c.preventDefault(),K(oe.RIGHT)}if(s===oe.ENTER){if(o.value)return;c.preventDefault(),ee()}if(s===oe.MINUS){if(o.value)return;c.preventDefault(),F("-")}if(s===oe.EQUAL){if(o.value)return;c.preventDefault(),F("+")}if(s===oe.DIGIT_0){if(o.value)return;c.preventDefault(),H(90)}}},ne=function(){t.value&&e.commit(g.SET_CTRL_KEY_STATE,!1),n.value&&e.commit(g.SET_SHIFT_KEY_STATE,!1)};Object(j["onMounted"])((function(){document.addEventListener("keydown",te),document.addEventListener("keyup",ne),window.addEventListener("blur",ne)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",te),document.removeEventListener("keyup",ne),window.removeEventListener("blur",ne)}))},Xe=(n("c975"),function(){var e=X(),t=Object(j["computed"])((function(){return e.state.editorAreaFocus})),n=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),o=Object(j["computed"])((function(){return e.state.disableHotkeys})),c=Ve(),a=c.pasteTextClipboardData,r=we(),l=r.createImageElement,i=function(e){xe(e).then((function(e){return l(e)}))},u=function(e){if((t.value||n.value)&&!o.value&&e.clipboardData){var c=e.clipboardData.items,r=c[0];if(r){var l,u=Object(ye["a"])(c);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("file"===d.kind&&-1!==d.type.indexOf("image")){var s=d.getAsFile();return void(s&&i(s))}}}catch(f){u.e(f)}finally{u.f()}"string"===r.kind&&"text/plain"===r.type&&r.getAsString((function(e){return a(e)}))}}};Object(j["onMounted"])((function(){document.addEventListener("paste",u)})),Object(j["onUnmounted"])((function(){document.removeEventListener("paste",u)}))}),Ye=Object(j["withScopeId"])("data-v-23ee4d75");Object(j["pushScopeId"])("data-v-23ee4d75");var Ze={class:"editor-header"},Je={class:"left"},Ke={class:"menu-item"},$e=Object(j["createTextVNode"])(),Qe=Object(j["createVNode"])("span",{class:"text"},"编辑",-1),et=Object(j["createTextVNode"])("撤销"),tt=Object(j["createTextVNode"])("重做"),nt=Object(j["createTextVNode"])("添加页面"),ot=Object(j["createTextVNode"])("删除页面"),ct=Object(j["createTextVNode"])("重置幻灯片"),at={class:"menu-item"},rt=Object(j["createTextVNode"])(),lt=Object(j["createVNode"])("span",{class:"text"},"演示",-1),it=Object(j["createTextVNode"])("从头开始"),ut=Object(j["createTextVNode"])("从当前页开始"),dt={class:"menu-item"},st=Object(j["createTextVNode"])(),ft=Object(j["createVNode"])("span",{class:"text"},"帮助",-1),pt=Object(j["createTextVNode"])("开发文档"),bt=Object(j["createTextVNode"])("快捷键"),mt={class:"right"},vt={href:"https://github.com/pipipi-pikachu/PPTist",target:"_blank"},Ot={class:"menu-item"};Object(j["popScopeId"])();var jt=Ye((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEdit"),l=Object(j["resolveComponent"])("MenuItem"),i=Object(j["resolveComponent"])("Menu"),u=Object(j["resolveComponent"])("Dropdown"),d=Object(j["resolveComponent"])("IconPpt"),s=Object(j["resolveComponent"])("IconHelpcenter"),f=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconGithub"),b=Object(j["resolveComponent"])("HotkeyDoc"),m=Object(j["resolveComponent"])("Drawer");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ze,[Object(j["createVNode"])("div",Je,[Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[1]||(t[1]=function(t){return e.undo()})},{default:Ye((function(){return[et]})),_:1}),Object(j["createVNode"])(l,{onClick:t[2]||(t[2]=function(t){return e.redo()})},{default:Ye((function(){return[tt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[3]||(t[3]=function(t){return e.createSlide()})},{default:Ye((function(){return[nt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[4]||(t[4]=function(t){return e.deleteSlide()})},{default:Ye((function(){return[ot]})),_:1}),Object(j["createVNode"])(l,{onClick:t[5]||(t[5]=function(t){return e.toggleGridLines()})},{default:Ye((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e.showGridLines?"关闭网格线":"打开网格线"),1)]})),_:1}),Object(j["createVNode"])(l,{onClick:t[6]||(t[6]=function(t){return e.resetSlides()})},{default:Ye((function(){return[ct]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",Ke,[Object(j["createVNode"])(r),$e,Qe])]})),_:1}),Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[7]||(t[7]=function(t){return e.enterScreeningFromStart()})},{default:Ye((function(){return[it]})),_:1}),Object(j["createVNode"])(l,{onClick:t[8]||(t[8]=function(t){return e.enterScreening()})},{default:Ye((function(){return[ut]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",at,[Object(j["createVNode"])(d),rt,lt])]})),_:1}),Object(j["createVNode"])(u,{trigger:["click"]},{overlay:Ye((function(){return[Object(j["createVNode"])(i,null,{default:Ye((function(){return[Object(j["createVNode"])(l,{onClick:t[9]||(t[9]=function(t){return e.openDoc()})},{default:Ye((function(){return[pt]})),_:1}),Object(j["createVNode"])(l,{onClick:t[10]||(t[10]=function(t){return e.hotkeyDrawerVisible=!0})},{default:Ye((function(){return[bt]})),_:1})]})),_:1})]})),default:Ye((function(){return[Object(j["createVNode"])("div",dt,[Object(j["createVNode"])(s),st,ft])]})),_:1})]),Object(j["createVNode"])("div",mt,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,title:"幻灯片放映"},{default:Ye((function(){return[Object(j["createVNode"])("div",{class:"menu-item",onClick:t[11]||(t[11]=function(t){return e.enterScreening()})},[Object(j["createVNode"])(d,{size:"18",fill:"#666",style:{"margin-top":"2px"}})])]})),_:1}),Object(j["createVNode"])(f,{mouseLeaveDelay:0,title:"Github 仓库"},{default:Ye((function(){return[Object(j["createVNode"])("a",vt,[Object(j["createVNode"])("div",Ot,[Object(j["createVNode"])(p,{size:"18",fill:"#666"})])])]})),_:1})]),Object(j["createVNode"])(m,{width:"320",placement:"right",visible:e.hotkeyDrawerVisible,onClose:t[12]||(t[12]=function(t){return e.hotkeyDrawerVisible=!1})},{default:Ye((function(){return[Object(j["createVNode"])(b)]})),_:1},8,["visible"])])})),ht=Object(j["withScopeId"])("data-v-47d0351b");Object(j["pushScopeId"])("data-v-47d0351b");var gt={class:"hotkey-doc"},yt={class:"title"},kt={class:"label"},Et={class:"value"};Object(j["popScopeId"])();var It=ht((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",gt,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.hotkeys,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:e.type},[Object(j["createVNode"])("div",yt,Object(j["toDisplayString"])(e.type),1),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.children,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"hotkey-item",key:e.label},[Object(j["createVNode"])("div",kt,Object(j["toDisplayString"])(e.label),1),Object(j["createVNode"])("div",Et,Object(j["toDisplayString"])(e.value),1)])})),128))],64)})),128))])})),St=ae,Ct=Object(j["defineComponent"])({name:"hotkey-doc",setup:function(){return{hotkeys:St}}});n("ef0f");Ct.render=It,Ct.__scopeId="data-v-47d0351b";var Nt=Ct,xt=Object(j["defineComponent"])({name:"editor-header",components:{HotkeyDoc:Nt},setup:function(){var e=X(),t=Ge(),n=t.enterScreening,o=t.enterScreeningFromStart,c=_e(),a=c.createSlide,r=c.deleteSlide,l=Ce(),i=l.redo,u=l.undo,d=Object(j["computed"])((function(){return e.state.showGridLines})),s=function(){e.commit(g.SET_GRID_LINES_STATE,!d.value)},f=function(){e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,[]),e.commit(g.SET_SLIDES,[{id:ue(),elements:[]}])},p=function(){re["a"].warning("作者努力编写中...")},b=Object(j["ref"])(!1);return{enterScreening:n,enterScreeningFromStart:o,createSlide:a,deleteSlide:r,redo:i,undo:u,toggleGridLines:s,showGridLines:d,resetSlides:f,openDoc:p,hotkeyDrawerVisible:b}}});n("52be");xt.render=jt,xt.__scopeId="data-v-23ee4d75";var Lt=xt,Tt=Object(j["withScopeId"])("data-v-0214a634");Object(j["pushScopeId"])("data-v-0214a634");var wt={class:"operates"};Object(j["popScopeId"])();var Vt,_t=Tt((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementCreateSelection"),l=Object(j["resolveComponent"])("AlignmentLine"),i=Object(j["resolveComponent"])("MultiSelectOperate"),u=Object(j["resolveComponent"])("Operate"),d=Object(j["resolveComponent"])("SlideBackground"),s=Object(j["resolveComponent"])("MouseSelection"),f=Object(j["resolveComponent"])("EditableElement"),p=Object(j["resolveDirective"])("contextmenu"),b=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"canvas",ref:"canvasRef",onMousewheel:t[2]||(t[2]=function(t){return e.mousewheelScaleCanvas(t)}),onMousedown:t[3]||(t[3]=function(t){return e.handleClickBlankArea(t)})},[e.creatingElement?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,onCreated:t[1]||(t[1]=function(t){return e.insertElementFromCreateSelection(t)})})):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",{class:"viewport-wrapper",style:{width:e.viewportStyles.width*e.canvasScale+"px",height:e.viewportStyles.height*e.canvasScale+"px",left:e.viewportStyles.left+"px",top:e.viewportStyles.top+"px"}},[Object(j["createVNode"])("div",wt,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.alignmentLines,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:t,type:e.type,axis:e.axis,length:e.length},null,8,["type","axis","length"])})),128)),e.activeElementIdList.length>1?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,elementList:e.elementList,scaleMultiElement:e.scaleMultiElement},null,8,["elementList","scaleMultiElement"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:t.id,elementInfo:t,isSelected:e.activeElementIdList.includes(t.id),isActive:e.handleElementId===t.id,isActiveGroupElement:e.activeGroupElementId===t.id,isMultiSelect:e.activeElementIdList.length>1,rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","isSelected","isActive","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])})),128)),Object(j["createVNode"])(d)]),Object(j["createVNode"])("div",{class:"viewport",ref:"viewportRef",style:{transform:"scale(".concat(e.canvasScale,")")}},[e.mouseSelectionState.isShow?(Object(j["openBlock"])(),Object(j["createBlock"])(s,{key:0,top:e.mouseSelectionState.top,left:e.mouseSelectionState.left,width:e.mouseSelectionState.width,height:e.mouseSelectionState.height,quadrant:e.mouseSelectionState.quadrant},null,8,["top","left","width","height","quadrant"])):Object(j["createCommentVNode"])("",!0),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.elementList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(f,{key:t.id,elementInfo:t,elementIndex:n+1,isMultiSelect:e.activeElementIdList.length>1,selectElement:e.selectElement},null,8,["elementInfo","elementIndex","isMultiSelect","selectElement"])})),128))],4)],4)],544)),[[p,e.contextmenus],[b,e.removeEditorAreaFocus]])})),Bt=function(){var e=window.getSelection();e&&e.removeAllRanges()},Mt=function(e){var t=Object(j["ref"])(0),n=Object(j["ref"])(0),o=X(),c=Object(j["computed"])((function(){return o.state.canvasPercentage})),a=function(){if(e.value){var a=e.value.clientWidth,r=e.value.clientHeight;if(r/a>Te){var l=a*(c.value/100);o.commit(g.SET_CANVAS_SCALE,l/Le),t.value=(a-l)/2,n.value=(r-l*Te)/2}else{var i=r*(c.value/100);o.commit(g.SET_CANVAS_SCALE,i/(Le*Te)),t.value=(a-i/Te)/2,n.value=(r-i)/2}}};Object(j["watch"])(c,a);var r=Object(j["computed"])((function(){return{width:Le,height:Le*Te,left:t.value,top:n.value}})),l=new ResizeObserver(a);return Object(j["onMounted"])((function(){e.value&&l.observe(e.value)})),Object(j["onUnmounted"])((function(){e.value&&l.unobserve(e.value)})),{viewportStyles:r}},Dt=(n("a623"),n("4160"),n("159b"),function(e){var t=e.left,n=e.top,o=e.width,c=e.height,a=e.rotate,r=void 0===a?0:a,l=Math.sqrt(Math.pow(o,2)+Math.pow(c,2))/2,i=180*Math.atan(c/o)/Math.PI,u=(180-r-i)*Math.PI/180,d=(i-r)*Math.PI/180,s=t+o/2,f=n+c/2,p=[s+l*Math.cos(u),s+l*Math.cos(d),s-l*Math.cos(u),s-l*Math.cos(d)],b=[f-l*Math.sin(u),f-l*Math.sin(d),f+l*Math.sin(u),f+l*Math.sin(d)];return{xRange:[Math.min.apply(Math,p),Math.max.apply(Math,p)],yRange:[Math.min.apply(Math,b),Math.max.apply(Math,b)]}}),At=function(e){var t,n,o,c;if("line"===e.type)t=e.left,n=e.left+Math.max(e.start[0],e.end[0]),o=e.top,c=e.top+Math.max(e.start[1],e.end[1]);else if("rotate"in e&&e.rotate){var a=e.left,r=e.top,l=e.width,i=e.height,u=e.rotate,d=Dt({left:a,top:r,width:l,height:i,rotate:u}),s=d.xRange,f=d.yRange;t=s[0],n=s[1],o=f[0],c=f[1]}else t=e.left,n=e.left+e.width,o=e.top,c=e.top+e.height;return{minX:t,maxX:n,minY:o,maxY:c}},Pt=function(e){var t=[],n=[],o=[],c=[];e.forEach((function(e){var a=At(e),r=a.minX,l=a.maxX,i=a.minY,u=a.maxY;t.push(r),n.push(i),o.push(l),c.push(u)}));var a=Math.min.apply(Math,t),r=Math.max.apply(Math,o),l=Math.min.apply(Math,n),i=Math.max.apply(Math,c);return{minX:a,maxX:r,minY:l,maxY:i}},Rt=function(e){var t=[];return e.forEach((function(e){var n=t.findIndex((function(t){return t.value===e.value}));if(-1===n)t.push(e);else{var o=t[n],c=Math.min(o.range[0],e.range[0]),a=Math.max(o.range[1],e.range[1]),r=[c,a],l={value:e.value,range:r};t[n]=l}})),t},Ft=function(e,t){var n=X(),o=Object(j["computed"])((function(){return n.state.canvasScale})),c=Object(j["reactive"])({isShow:!1,top:0,left:0,width:0,height:0,quadrant:1}),a=function(a){if(t.value){var r=!0,l=t.value.getBoundingClientRect(),i=5,u=a.pageX,d=a.pageY,s=(u-l.x)/o.value,f=(d-l.y)/o.value;c.isShow=!1,c.quadrant=4,c.top=f,c.left=s,c.width=0,c.height=0,document.onmousemove=function(e){if(r){var t=e.pageX,n=e.pageY,a=(t-u)/o.value,l=(n-d)/o.value,s=Math.abs(a),f=Math.abs(l);if(!(s0&&l>0?p=4:a<0&&l<0?p=1:a>0&&l<0?p=2:a<0&&l>0&&(p=3),c.isShow=!0,c.quadrant=p,c.width=s,c.height=f}}},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null,r=!1;for(var t=[],o=0;ol&&bi&&vl-u&&bi-d&&vl&&bi-d&&vl-u&&bi&&v0&&Math.abs(l-45)<=d?l-=l-45:l<0&&Math.abs(l+45)<=d?l-=l+45:l>0&&Math.abs(l-90)<=d?l-=l-90:l<0&&Math.abs(l+90)<=d?l-=l+90:l>0&&Math.abs(l-135)<=d?l-=l-135:l<0&&Math.abs(l+135)<=d?l-=l+135:l>0&&Math.abs(l-180)<=d?l-=l-180:l<0&&Math.abs(l+180)<=d&&(l-=l+180),e.value=e.value.map((function(e){return c.id===e.id?Object(P["a"])(Object(P["a"])({},e),{},{rotate:l}):e}))}},document.onmouseup=function(){r=!1,document.onmousemove=null,document.onmouseup=null,i!==l&&(n.commit(g.UPDATE_SLIDE,{elements:e.value}),a())}}};return{rotateElement:r}},Gt=n("14b7");(function(e){e["UPDATE_TEXT_STATE"]="UPDATE_TEXT_STATE",e["EXEC_TEXT_COMMAND"]="EXEC_TEXT_COMMAND",e["UPDATE_TABLE_SELECTED_CELL"]="UPDATE_TABLE_SELECTED_CELL",e["SCALE_ELEMENT_STATE"]="SCALE_ELEMENT_STATE"})(Vt||(Vt={}));var qt=Object(Gt["a"])(),Wt=qt,Xt={text:"文本",image:"图片",shape:"形状",line:"线条",chart:"图表",table:"表格"},Yt={text:20,image:20,shape:15,chart:200,table:20},Zt=function(e,t){var n=e.left,o=e.top,c=e.width,a=e.height,r=Math.sqrt(Math.pow(c,2)+Math.pow(a,2))/2,l=180*Math.atan(a/c)/Math.PI,i=(180-t-l)*Math.PI/180,u=(l-t)*Math.PI/180,d=(90-t)*Math.PI/180,s=t*Math.PI/180,f=c/2,p=a/2,b=n+f,m=o+p,v={left:b+r*Math.cos(i),top:m-r*Math.sin(i)},O={left:b+p*Math.cos(d),top:m-p*Math.sin(d)},j={left:b+r*Math.cos(u),top:m-r*Math.sin(u)},h={left:b+f*Math.cos(s),top:m+f*Math.sin(s)},g={left:b-r*Math.cos(i),top:m+r*Math.sin(i)},y={left:b-p*Math.sin(s),top:m+p*Math.cos(s)},k={left:b-r*Math.cos(u),top:m+r*Math.sin(u)},E={left:b-f*Math.cos(s),top:m-f*Math.sin(s)};return{leftTopPoint:v,topPoint:O,rightTopPoint:j,rightPoint:h,rightBottomPoint:g,bottomPoint:y,leftBottomPoint:k,leftPoint:E}},Jt=function(e,t){var n,o=(n={},Object(C["a"])(n,te.RIGHT_BOTTOM,t.leftTopPoint),Object(C["a"])(n,te.LEFT_BOTTOM,t.rightTopPoint),Object(C["a"])(n,te.LEFT_TOP,t.rightBottomPoint),Object(C["a"])(n,te.RIGHT_TOP,t.leftBottomPoint),Object(C["a"])(n,te.TOP,t.bottomPoint),Object(C["a"])(n,te.BOTTOM,t.topPoint),Object(C["a"])(n,te.LEFT,t.rightPoint),Object(C["a"])(n,te.RIGHT,t.leftPoint),n);return o[e]},Kt=function(e,t,n){var o=X(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),r=Object(j["computed"])((function(){return o.state.canvasScale})),l=Ce(),i=l.addHistorySnapshot,u=function(l,u,d){var s=!0;Wt.emit(Vt.SCALE_ELEMENT_STATE,!0);var f,p=u.left,b=u.top,m=u.width,v=u.height,O="rotate"in u&&u.rotate?u.rotate:0,j=Math.PI*O/180,h=a.value||"fixedRatio"in u&&u.fixedRatio,y=m/v,k=l.pageX,E=l.pageY,I=Yt[u.type]||20,S=function(e){return e2&&void 0!==arguments[2])||arguments[2];if(r.value||o.commit(g.SET_EDITORAREA_FOCUS,!0),c.value.includes(u.id)){if(l.value){var s=[];if(u.groupId){var f=[];e.value.forEach((function(e){e.groupId===u.groupId&&f.push(e.id)})),s=c.value.filter((function(e){return!f.includes(e)}))}else s=c.value.filter((function(e){return e!==u.id}));s.length>0&&o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,s)}else if(a.value!==u.id)o.commit(g.SET_HANDLE_ELEMENT_ID,u.id);else if(t.value!==u.id){var p=i.pageX,b=i.pageY;i.target.onmouseup=function(e){var n=e.pageX,o=e.pageY;p===n&&b===o&&(t.value=u.id,e.target.onmouseup=null)}}}else{var m=[];if(m=l.value?[].concat(Object(A["a"])(c.value),[u.id]):[u.id],u.groupId){var v=[];e.value.forEach((function(e){e.groupId===u.groupId&&v.push(e.id)})),m=[].concat(Object(A["a"])(m),v)}o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,Qt()(m)),o.commit(g.SET_HANDLE_ELEMENT_ID,u.id)}d&&n(i,u)},u=function(){var t=e.value.filter((function(e){return!e.lock})),n=t.map((function(e){return e.id}));o.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,n)};return{selectElement:i,selectAllElement:u}},tn=function(e,t,n){var o=X(),c=Object(j["computed"])((function(){return o.state.activeElementIdList})),a=Object(j["computed"])((function(){return o.state.canvasScale})),r=Ce(),l=r.addHistorySnapshot,i=function(r,i){if(c.value.includes(i.id)){var u,d=!0,s=Le,f=Le*Te,p=5,b=JSON.parse(JSON.stringify(e.value)),m=b.filter((function(e){return c.value.includes(e.id)})),v=i.left,O=i.top,j=i.width,h="height"in i&&i.height?i.height:0,y="rotate"in i&&i.rotate?i.rotate:0,k=r.pageX,E=r.pageY,I=null,S=i.id===t.value,C=[],N=[],x=Object(ye["a"])(e.value);try{for(x.s();!(u=x.n()).done;){var L=u.value;if("line"!==L.type&&((!S||L.id!==i.id)&&(S||!c.value.includes(L.id)))){var T=void 0,w=void 0,V=void 0,_=void 0;if("rotate"in L&&L.rotate){var B=Dt({left:L.left,top:L.top,width:L.width,height:L.height,rotate:L.rotate}),M=B.xRange,D=B.yRange;T=M[0],w=D[0],V=M[1]-M[0],_=D[1]-D[0]}else T=L.left,w=L.top,V=L.width,_=L.height;var R=T+V,F=w+_,H=w+_/2,z=T+V/2,U={value:w,range:[T,R]},G={value:F,range:[T,R]},q={value:H,range:[T,R]},W={value:T,range:[w,F]},X={value:R,range:[w,F]},Y={value:z,range:[w,F]};C.push(U,G,q),N.push(W,X,Y)}}}catch(te){x.e(te)}finally{x.f()}var Z={value:0,range:[0,s]},J={value:f,range:[0,s]},K={value:f/2,range:[0,s]},$={value:0,range:[0,f]},Q={value:s,range:[0,f]},ee={value:s/2,range:[0,f]};C.push(Z,J,K),N.push($,Q,ee),C=Rt(C),N=Rt(N),document.onmousemove=function(t){var o=t.pageX,r=t.pageY;if(!1!==I&&(I=Math.abs(k-o)v&&(V[0]=T-x,_[0]=0),m>O&&(V[1]=w-L,_[1]=0),e.value=e.value.map((function(e){return e.id===a.id?Object(P["a"])(Object(P["a"])({},e),{},{left:x,top:L,start:V,end:_}):e}))}},document.onmouseup=function(n){l=!1,document.onmousemove=null,document.onmouseup=null;var o=n.pageX,a=n.pageY;u===o&&d===a||(t.commit(g.UPDATE_SLIDE,{elements:e.value}),c())}};return{dragLineElement:a}},on=n("3835"),cn=function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.creatingElement})),c=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(on["a"])(o,2),l=r[0],i=r[1],u=Object(on["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,j=(p-f)/n.value,h=(m-b)/n.value;return{left:v,top:O,width:j,height:h}}},a=function(t){var o=t.start,c=t.end;if(e.value){var a=e.value.getBoundingClientRect(),r=Object(on["a"])(o,2),l=r[0],i=r[1],u=Object(on["a"])(c,2),d=u[0],s=u[1],f=Math.min(l,d),p=Math.max(l,d),b=Math.min(i,s),m=Math.max(i,s),v=(f-a.x)/n.value,O=(b-a.y)/n.value,j=(p-f)/n.value,h=(m-b)/n.value,g=[l===f?0:j,i===b?0:h],y=[d===f?0:j,s===b?0:h];return{left:v,top:O,start:g,end:y}}},r=we(),l=r.createTextElement,i=r.createShapeElement,u=r.createLineElement,d=function(e){if(o.value){var n=o.value.type;if("text"===n){var r=c(e);r&&l(r)}else if("shape"===n){var d=c(e);d&&i(d,o.value.data)}else if("line"===n){var s=a(e);s&&u(s,o.value.data)}t.commit(g.SET_CREATING_ELEMENT,null)}};return{insertElementFromCreateSelection:d}};function an(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-element",ref:"elementRef",id:"editable-element-"+e.elementInfo.id,style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,selectElement:e.selectElement,contextmenus:e.contextmenus},null,8,["elementInfo","selectElement","contextmenus"]))],12,["id"])}var rn;n("a9e3");(function(e){e["TEXT"]="text",e["IMAGE"]="image",e["SHAPE"]="shape",e["LINE"]="line",e["CHART"]="chart",e["TABLE"]="table"})(rn||(rn={}));var ln,un,dn=function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Ce(),a=c.addHistorySnapshot,r=function(c){var r,l=Le,i=Le*Te,u=Pt(n.value),d=u.minX,s=u.maxX,f=u.minY,p=u.maxY,b=JSON.parse(JSON.stringify(o.value.elements)),m=Object(ye["a"])(b);try{for(m.s();!(r=m.n()).done;){var v=r.value;if(t.value.includes(v.id)){if(c===Q.CENTER){var O=f+(p-f)/2-i/2,j=d+(s-d)/2-l/2;v.top=v.top-O,v.left=v.left-j}if(c===Q.TOP){var h=f-0;v.top=v.top-h}else if(c===Q.VERTICAL){var y=f+(p-f)/2-i/2;v.top=v.top-y}else if(c===Q.BOTTOM){var k=p-i;v.top=v.top-k}else if(c===Q.LEFT){var E=d-0;v.left=v.left-E}else if(c===Q.HORIZONTAL){var I=d+(s-d)/2-l/2;v.left=v.left-I}else if(c===Q.RIGHT){var S=s-l;v.left=v.left-S}}}}catch(C){m.e(C)}finally{m.f()}e.commit(g.UPDATE_SLIDE,{elements:b}),a()};return{alignElementToCanvas:r}},sn=Object(j["withScopeId"])("data-v-5e75c7ca"),fn=sn((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageClipHandler"),l=Object(j["resolveComponent"])("ImageOutline"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-image",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")},onMousedown:t[2]||(t[2]=function(t){return e.handleSelectElement(t)})},[e.isCliping?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,src:e.elementInfo.src,clipData:e.elementInfo.clip,width:e.elementInfo.width,height:e.elementInfo.height,top:e.elementInfo.top,left:e.elementInfo.left,clipPath:e.clipShape.style,onClip:t[1]||(t[1]=function(t){return e.handleClip(t)})},null,8,["src","clipData","width","height","top","left","clipPath"])):Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},alt:""},null,12,["src"])],4)],4)),[[i,e.contextmenus]])],38)})),pn=function(e){var t=Object(j["computed"])((function(){if(e.value){var t=e.value,n=t.h,o=t.v,c=t.blur,a=t.color;return"".concat(n,"px ").concat(o,"px ").concat(c,"px ").concat(a)}return""}));return{shadowStyle:t}},bn=function(e){var t=Object(j["computed"])((function(){if(e.value){var t="",n=e.value,o=n.x,c=n.y;return o&&c?t="rotateX(".concat(o,"deg) rotateY(").concat(c,"deg)"):o?t="rotateX(".concat(o,"deg)"):c&&(t="rotateY(".concat(c,"deg)")),t}return""}));return{flipStyle:t}};(function(e){e["RECT"]="rect",e["ELLIPSE"]="ellipse",e["POLYGON"]="polygon"})(ln||(ln={})),function(e){e["RECT"]="rect",e["ROUNDRECT"]="roundRect",e["ELLIPSE"]="ellipse",e["TRIANGLE"]="triangle",e["PENTAGON"]="pentagon",e["RHOMBUS"]="rhombus",e["STAR"]="star"}(un||(un={}));var mn={rect:{name:"矩形",type:ln.RECT,radius:"0",style:""},rect2:{name:"矩形2",type:ln.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 0 100%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},rect3:{name:"矩形3",type:ln.POLYGON,style:"polygon(0% 0%, 80% 0%, 100% 20%, 100% 100%, 20% 100%, 0% 80%)",createPath:function(e,t){return"M 0 0 L ".concat(.8*e," 0 L ").concat(e," ").concat(.2*t," L ").concat(e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.8*t," Z")}},roundRect:{name:"圆角矩形",type:ln.RECT,radius:"10%",style:"inset(0 0 0 0 round 10% 10% 10% 10%)"},ellipse:{name:"圆形",type:ln.ELLIPSE,style:"ellipse(50% 50% at 50% 50%)"},triangle:{name:"三角形",type:ln.POLYGON,style:"polygon(50% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L 0 ").concat(t," L ").concat(e," ").concat(t," Z")}},triangle2:{name:"三角形2",type:ln.POLYGON,style:"polygon(50% 100%, 0% 0%, 100% 0%)",createPath:function(e,t){return"M ".concat(.5*e," ").concat(t," L 0 0 L ").concat(e," 0 Z")}},triangle3:{name:"三角形3",type:ln.POLYGON,style:"polygon(0% 0%, 0% 100%, 100% 100%)",createPath:function(e,t){return"M 0 0 L 0 ".concat(t," L ").concat(e," ").concat(t," Z")}},rhombus:{name:"菱形",type:ln.POLYGON,style:"polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.5*e," ").concat(t," L 0 ").concat(.5*t," Z")}},hexagon:{name:"六边形",type:ln.POLYGON,style:"polygon(20% 0%, 80% 0%, 100% 50%, 80% 100%, 20% 100%, 0% 50%)",createPath:function(e,t){return"M ".concat(.2*e," 0 L ").concat(.8*e," 0 L ").concat(e," ").concat(.5*t," L ").concat(.8*e," ").concat(t," L ").concat(.2*e," ").concat(t," L 0 ").concat(.5*t," Z")}},pentagon:{name:"五边形",type:ln.POLYGON,style:"polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",createPath:function(e,t){return"M ".concat(.5*e," 0 L ").concat(e," ").concat(.38*t," L ").concat(.82*e," ").concat(t," L ").concat(.18*e," ").concat(t," L 0 ").concat(.38*t," Z")}},parallelogram:{name:"平行四边形",type:ln.POLYGON,style:"polygon(30% 0%, 100% 0%, 70% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.3*e," 0 L ").concat(e," 0 L ").concat(.7*e," ").concat(t," L 0 ").concat(t," Z")}},parallelogram2:{name:"平行四边形2",type:ln.POLYGON,style:"polygon(30% 100%, 100% 100%, 70% 0%, 0% 0%)",createPath:function(e,t){return"M ".concat(.3*e," ").concat(t," L ").concat(e," ").concat(t," L ").concat(.7*e," 0 L 0 0 Z")}},trapezoid:{name:"梯形",type:ln.POLYGON,style:"polygon(25% 0%, 75% 0%, 100% 100%, 0% 100%)",createPath:function(e,t){return"M ".concat(.25*e," 0 L ").concat(.75*e," 0 L ").concat(e," ").concat(t," L 0 ").concat(t," Z")}},trapezoid2:{name:"梯形2",type:ln.POLYGON,style:"polygon(0% 0%, 100% 0%, 75% 100%, 25% 100%)",createPath:function(e,t){return"M 0 0 L ".concat(e," 0 L ").concat(.75*e," ").concat(t," L ").concat(.25*e," ").concat(t," Z")}}},vn=function(e){var t=Object(j["computed"])((function(){if(!e.value)return mn.rect;var t=e.value.shape||ln.RECT;return mn[t]})),n=Object(j["computed"])((function(){if(!e.value)return{top:"0",left:"0",width:"100%",height:"100%"};var t=Object(on["a"])(e.value.range,2),n=t[0],o=t[1],c=(o[0]-n[0])/100,a=(o[1]-n[1])/100,r=n[0]/c,l=n[1]/a;return{left:-r+"%",top:-l+"%",width:100/c+"%",height:100/a+"%"}}));return{clipShape:t,imgPosition:n}},On=(n("b64b"),function(e){var t=Object(j["computed"])((function(){if(!e.value)return"";for(var t="",n=0,o=Object.keys(e.value);nr.width&&(p=r.width-i.width),b<0?b=0:b+i.height>r.height&&(b=r.height-i.height),f.left=p,f.top=b}},document.onmouseup=function(){n=!1,document.onmousemove=null,document.onmouseup=null,h(),setTimeout((function(){l.value=!1}),0)}},y=function(t,n){l.value=!0;var o=!0,r=50/e.width*100,i=50/e.height*100,u=t.pageX,s=t.pageY,p=d.value,b={left:f.left,top:f.top,width:f.width,height:f.height},m=f.width/f.height;document.onmousemove=function(t){if(o){var l,d,v,O,j=t.pageX,h=t.pageY,g=(j-u)/c.value/e.width*100,y=(h-s)/c.value/e.height*100;a.value&&("b-r"!==n&&"t-l"!==n||(y=g/m),"b-l"!==n&&"t-r"!==n||(y=-g/m)),"t-l"===n?(b.left+g<0&&(g=-b.left),b.top+y<0&&(y=-b.top),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+y<0&&(y=-b.top),b.width+gp.height&&(y=p.height-(b.top+b.height)),b.width-gp.width&&(g=p.width-(b.left+b.width)),b.top+b.height+y>p.height&&(y=p.height-(b.top+b.height)),b.width+g\s$/,e)},no=function(e){return Object(Qn["g"])(/^(\d+)\.\s$/,e,(function(e){return{order:+e[1]}}),(function(e,t){return t.childCount+t.attrs.order===+e[1]}))},oo=function(e){return Object(Qn["g"])(/^\s*([-+*])\s$/,e)},co=function(e){return Object(Qn["e"])(/^```$/,e)},ao=function(e){var t=[].concat(Object(A["a"])(Qn["d"]),[Qn["a"],Qn["b"]]);return t.push(to(e.nodes.blockquote)),t.push(no(e.nodes.ordered_list)),t.push(oo(e.nodes.bullet_list)),t.push(co(e.nodes.code_block)),Object(Qn["c"])({rules:t})},ro=function(e){return[ao(e),Object(Yn["b"])(eo(e)),Object(Yn["b"])(Gn["a"]),Object(Jn["a"])(),Object(Kn["a"])(),Object(Zn["a"])()]},lo=n("2210"),io=Object(P["a"])(Object(P["a"])({},$n["d"]),{},{content:"list_item+",group:"block"}),uo=Object(P["a"])(Object(P["a"])({},$n["a"]),{},{content:"list_item+",group:"block"}),so=Object(P["a"])(Object(P["a"])({},$n["c"]),{},{content:"paragraph block*",group:"block"}),fo={attrs:{align:{default:""}},content:"inline*",group:"block",parseDOM:[{tag:"p",getAttrs:function(e){var t=e.style.textAlign,n=e.getAttribute("align")||t||"";return n=/(left|right|center|justify)/.test(n)?n:"",{align:n}}}],toDOM:function(e){var t=e.attrs.align,n="";return t&&"left"!==t&&(n+="text-align: ".concat(t,";")),["p",{style:n},0]}},po=Object(P["a"])(Object(P["a"])({},lo["b"]),{},{ordered_list:io,bullet_list:uo,list_item:so,paragraph:fo}),bo=(n("ac1f"),n("5319"),{excludes:"subscript",parseDOM:[{tag:"sub"},{style:"vertical-align",getAttrs:function(e){return"sub"===e&&null}}],toDOM:function(){return["sub",0]}}),mo={excludes:"superscript",parseDOM:[{tag:"sup"},{style:"vertical-align",getAttrs:function(e){return"super"===e&&null}}],toDOM:function(){return["sup",0]}},vo={parseDOM:[{tag:"strike"},{style:"text-decoration",getAttrs:function(e){return"line-through"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"line-through"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration-line: line-through"},0]}},Oo={parseDOM:[{tag:"u"},{style:"text-decoration",getAttrs:function(e){return"underline"===e&&null}},{style:"text-decoration-line",getAttrs:function(e){return"underline"===e&&null}}],toDOM:function(){return["span",{style:"text-decoration: underline"},0]}},jo={attrs:{color:{}},parseDOM:[{style:"color",getAttrs:function(e){return e?{color:e}:{}}}],toDOM:function(e){var t=e.attrs.color,n="";return t&&(n+="color: ".concat(t,";")),["span",{style:n},0]}},ho={attrs:{backcolor:{}},inline:!0,group:"inline",parseDOM:[{tag:"span[style*=background-color]",getAttrs:function(e){return e?{backcolor:e}:{}}}],toDOM:function(e){var t=e.attrs.backcolor,n="";return t&&(n+="background-color: ".concat(t,";")),["span",{style:n},0]}},go={attrs:{fontsize:{}},inline:!0,group:"inline",parseDOM:[{style:"font-size",getAttrs:function(e){return e?{fontsize:e}:{}}}],toDOM:function(e){var t=e.attrs.fontsize,n="";return t&&(n+="font-size: ".concat(t)),["span",{style:n},0]}},yo={attrs:{fontname:{}},inline:!0,group:"inline",parseDOM:[{style:"font-family",getAttrs:function(e){return{fontname:e&&"string"===typeof e?e.replace(/[\"\']/g,""):""}}}],toDOM:function(e){var t=e.attrs.fontname,n="";return t&&(n+="font-family: ".concat(t)),["span",{style:n},0]}},ko=Object(P["a"])(Object(P["a"])({},lo["a"]),{},{subscript:bo,superscript:mo,strikethrough:vo,underline:Oo,forecolor:jo,backcolor:ho,fontsize:go,fontname:yo}),Eo=po,Io=ko,So=new Xn["i"]({nodes:Eo,marks:Io}),Co=function(e){var t="".concat(e,"
"),n=new window.DOMParser,o=n.parseFromString(t,"text/html").body.firstElementChild;return Xn["a"].fromSchema(So).parse(o)},No=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Wn["c"](e,Object(P["a"])({state:qn["b"].create({doc:Co(t),plugins:ro(So)})},n))},xo=(n("b0c0"),function(e,t){return Array.isArray(e)&&e.indexOf(t.type)>-1||t.type===e}),Lo=function(e,t){for(var n=e.depth;n>0;n--){var o=e.node(n);if(t(o))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:o}}},To=function(e){return function(t){return Lo(t.$from,e)}},wo=function(e){return function(t){return To((function(t){return xo(e,t)}))(t)}},Vo=function(e,t){var n=t.schema.nodes[e];return!!wo(n)(t.selection)},_o=function(e){var t=e.state,n=t.selection,o=t.doc,c=n.from,a=o.nodeAt(c);return(null===a||void 0===a?void 0:a.marks)||[]},Bo=function(e,t,n){var o,c=_o(e),a=Object(ye["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if(r.type.name===t&&r.attrs[n])return r.attrs[n]}}catch(l){a.e(l)}finally{a.f()}return null},Mo=function(e,t){var n,o=_o(e),c=Object(ye["a"])(o);try{for(c.s();!(n=c.n()).done;){var a=n.value;if(a.type.name===t)return!0}}catch(r){c.e(r)}finally{c.f()}return!1},Do=function(e,t){var n=e.state,o=n.selection,c=n.doc,a=o.from,r=o.to,l=!0,i="";return c.nodesBetween(a,r,(function(e){return l&&e.attrs[t]&&(l=!1,i=e.attrs[t]),l})),i},Ao=function(e){var t=Mo(e,"strong"),n=Mo(e,"em"),o=Mo(e,"underline"),c=Mo(e,"strikethrough"),a=Mo(e,"superscript"),r=Mo(e,"subscript"),l=Mo(e,"code"),i=Bo(e,"forecolor","color")||"#000",u=Bo(e,"backcolor","backcolor")||"#000",d=Bo(e,"fontsize","fontsize")||"20px",s=Bo(e,"fontname","fontname")||"微软雅黑",f=Do(e,"align")||"left",p=Vo("bullet_list",e.state),b=Vo("ordered_list",e.state),m=Vo("blockquote",e.state);return{bold:t,em:n,underline:o,strikethrough:c,superscript:a,subscript:r,code:l,color:i,backcolor:u,fontsize:d,fontname:s,align:f,bulletList:p,orderedList:b,blockquote:m}},Po=(n("6062"),n("3ca3"),function(e,t,n){var o=e,c=o.selection,a=o.doc;if(!c||!a)return e;var r=c.from,l=c.to,i=t.nodes,u=i.blockquote,d=i.list_item,s=i.paragraph,f=[];n=n||"";var p=new Set([u,d,s]);return a.nodesBetween(r,l,(function(e,t){var o=e.type,c=e.attrs.align||"";return c!==n&&p.has(o)&&f.push({node:e,pos:t,nodeType:o}),!0})),f.length?(f.forEach((function(t){var o=t.node,c=t.pos,a=t.nodeType,r=o.attrs;r=n?Object(P["a"])(Object(P["a"])({},r),{},{align:n}):Object(P["a"])(Object(P["a"])({},r),{},{align:null}),e=e.setNodeMarkup(c,a,r,o.marks)})),e):e}),Ro=function(e,t){var n=e.state,o=n.schema,c=n.selection,a=Po(n.tr.setSelection(c),o,t);e.dispatch(a)},Fo=function(e,t){return e.type===t.nodes.bullet_list||e.type===t.nodes.ordered_list},Ho=function(e,t){return function(n,o){var c=n.schema,a=n.selection,r=a.$from,l=a.$to,i=r.blockRange(l);if(!i)return!1;var u=To((function(e){return Fo(e,c)}))(a);if(i.depth>=1&&u&&i.depth-u.depth<=1){if(u.node.type===e)return Object($n["b"])(t)(n,o);if(Fo(u.node,c)&&e.validContent(u.node.content)){var d=n.tr;return d.setNodeMarkup(u.pos,e),o&&o(d),!1}}return Object($n["g"])(e)(n,o)}},zo=Object(j["withScopeId"])("data-v-2ddaa919"),Uo=zo((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return e.outline?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"element-outline",overflow:"visible",width:e.width,height:e.height},{default:zo((function(){return[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",d:"M0,0 L".concat(e.width,",0 L").concat(e.width,",").concat(e.height," L0,").concat(e.height," Z"),stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,["d","stroke","stroke-width","stroke-dasharray"])]})),_:1},8,["width","height"])):Object(j["createCommentVNode"])("",!0)})),Go=Object(j["defineComponent"])({name:"element-outline",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},outline:{type:Object}},setup:function(e){var t=kn(Object(j["toRef"])(e,"outline")),n=t.outlineWidth,o=t.outlineStyle,c=t.outlineColor;return{outlineWidth:n,outlineStyle:o,outlineColor:c}}});n("d9a3");Go.render=Uo,Go.__scopeId="data-v-2ddaa919";var qo=Go,Wo=Object(j["defineComponent"])({name:"editable-element-text",components:{ElementOutline:qo},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t,n=X(),o=Ce(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(-1),i=Object(j["ref"])(),u=Object(j["computed"])((function(){return e.elementInfo.shadow})),d=pn(u),s=d.shadowStyle,f=Object(j["computed"])((function(){return n.state.handleElementId})),p=function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo,n))},b=function(t){r.value=t,t||-1===l.value||(n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:l.value}}),l.value=-1)};Wt.on(Vt.SCALE_ELEMENT_STATE,(function(e){return b(e)})),Object(j["onUnmounted"])((function(){Wt.off(Vt.SCALE_ELEMENT_STATE,(function(e){return b(e)}))}));var m=function(t){var o=t[0].contentRect;if(a.value){var c=o.height;e.elementInfo.height!==c&&(r.value?l.value=c:n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:c}}))}},v=new ResizeObserver(m);Object(j["onMounted"])((function(){a.value&&v.observe(a.value)})),Object(j["onUnmounted"])((function(){a.value&&v.unobserve(a.value)}));var O=function(){n.commit(g.SET_DISABLE_HOTKEYS_STATE,!0)},h=function(){n.commit(g.SET_DISABLE_HOTKEYS_STATE,!1)},y=Ee()((function(){n.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{content:t.dom.innerHTML}}),c()}),300,{trailing:!0}),k=Ee()((function(){var e=Ao(t);Wt.emit(Vt.UPDATE_TEXT_STATE,e)}),30,{trailing:!0}),E=function(){y(),k()},I=Object(j["computed"])((function(){return e.elementInfo.content}));Object(j["watch"])(I,(function(){t&&(t.hasFocus()||(t.dom.innerHTML=I.value))}));var S=Object(j["computed"])((function(){return!e.elementInfo.lock}));Object(j["watch"])(S,(function(){t.setProps({editable:function(){return S.value}})})),Object(j["onMounted"])((function(){t=No(i.value,I.value,{handleDOMEvents:{focus:O,blur:h,keydown:E,click:k},editable:function(){return S.value}})})),Object(j["onUnmounted"])((function(){t&&t.destroy()}));var C=function(n){if(f.value===e.elementInfo.id){var o,c="command"in n?[n]:n,a=Object(ye["a"])(c);try{for(a.s();!(o=a.n()).done;){var r=o.value;if("fontname"===r.command&&r.value){var l=t.state.schema.marks.fontname.create({fontname:r.value}),i=t.state.selection.empty;i&&Object(Gn["d"])(t.state,t.dispatch);var u=t.state.selection,d=u.$from,s=u.$to;t.dispatch(t.state.tr.addMark(d.pos,s.pos,l))}else if("fontsize"===r.command&&r.value){var p=t.state.schema.marks.fontsize.create({fontsize:r.value}),b=t.state.selection.empty;b&&Object(Gn["d"])(t.state,t.dispatch);var m=t.state.selection,v=m.$from,O=m.$to;t.dispatch(t.state.tr.addMark(v.pos,O.pos,p))}else if("color"===r.command&&r.value){var j=t.state.schema.marks.forecolor.create({color:r.value}),h=t.state.selection.empty;h&&Object(Gn["d"])(t.state,t.dispatch);var g=t.state.selection,E=g.$from,I=g.$to;t.dispatch(t.state.tr.addMark(E.pos,I.pos,j))}else if("backcolor"===r.command&&r.value){var S=t.state.schema.marks.backcolor.create({backcolor:r.value}),C=t.state.selection.empty;C&&Object(Gn["d"])(t.state,t.dispatch);var N=t.state.selection,x=N.$from,L=N.$to;t.dispatch(t.state.tr.addMark(x.pos,L.pos,S))}else if("bold"===r.command){var T=t.state.selection.empty;T&&Object(Gn["d"])(t.state,t.dispatch),Object(Gn["f"])(t.state.schema.marks.strong)(t.state,t.dispatch)}else if("em"===r.command){var w=t.state.selection.empty;w&&Object(Gn["d"])(t.state,t.dispatch),Object(Gn["f"])(t.state.schema.marks.em)(t.state,t.dispatch)}else if("underline"===r.command){var V=t.state.selection.empty;V&&Object(Gn["d"])(t.state,t.dispatch),Object(Gn["f"])(t.state.schema.marks.underline)(t.state,t.dispatch)}else if("strikethrough"===r.command){var _=t.state.selection.empty;_&&Object(Gn["d"])(t.state,t.dispatch),Object(Gn["f"])(t.state.schema.marks.strikethrough)(t.state,t.dispatch)}else if("subscript"===r.command)Object(Gn["f"])(t.state.schema.marks.subscript)(t.state,t.dispatch);else if("superscript"===r.command)Object(Gn["f"])(t.state.schema.marks.superscript)(t.state,t.dispatch);else if("blockquote"===r.command)Object(Gn["g"])(t.state.schema.nodes.blockquote)(t.state,t.dispatch);else if("code"===r.command)Object(Gn["f"])(t.state.schema.marks.code)(t.state,t.dispatch);else if("align"===r.command&&r.value)Ro(t,r.value);else if("bulletList"===r.command){var B=t.state.schema.nodes,M=B.bullet_list,D=B.list_item;Ho(M,D)(t.state,t.dispatch)}else if("orderedList"===r.command){var A=t.state.schema.nodes,P=A.ordered_list,R=A.list_item;Ho(P,R)(t.state,t.dispatch)}else if("clear"===r.command){var F=t.state.selection.empty;F&&Object(Gn["d"])(t.state,t.dispatch);var H=t.state.selection,z=H.$from,U=H.$to;t.dispatch(t.state.tr.removeMark(z.pos,U.pos))}}}catch(G){a.e(G)}finally{a.f()}t.focus(),y(),k()}};return Wt.on(Vt.EXEC_TEXT_COMMAND,(function(e){return C(e)})),Object(j["onUnmounted"])((function(){Wt.off(Vt.EXEC_TEXT_COMMAND,(function(e){return C(e)}))})),{elementRef:a,editorViewRef:i,handleSelectElement:p,shadowStyle:s}}});n("5322");Wo.render=Un,Wo.__scopeId="data-v-3f17bdc9";var Xo=Wo,Yo=Object(j["withScopeId"])("data-v-a0860bd0");Object(j["pushScopeId"])("data-v-a0860bd0");var Zo={key:0};Object(j["popScopeId"])();var Jo=Yo((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GradientDefs"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},{default:Yo((function(){return[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createBlock"])("defs",Zo,[Object(j["createVNode"])(r,{id:"editabel-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#editabel-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 6":"0 0"},null,8,["d","fill","stroke","stroke-width","stroke-dasharray"])],8,["transform"])]})),_:1},8,["width","height"])],4),[[i,e.contextmenus]])],38)}));function Ko(e,t,n,o,c,a){return"linear"===e.type?(Object(j["openBlock"])(),Object(j["createBlock"])("linearGradient",{key:0,id:e.id,x1:"0%",y1:"0%",x2:"100%",y2:"0%",gradientTransform:"rotate(".concat(e.rotate,",0.5,0.5)")},[Object(j["createVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,["stop-color"]),Object(j["createVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,["stop-color"])],8,["id","gradientTransform"])):(Object(j["openBlock"])(),Object(j["createBlock"])("radialGradient",{key:1,id:e.id},[Object(j["createVNode"])("stop",{offset:"0%","stop-color":e.color1},null,8,["stop-color"]),Object(j["createVNode"])("stop",{offset:"100%","stop-color":e.color2},null,8,["stop-color"])],8,["id"]))}var $o=Object(j["defineComponent"])({name:"gradient-defs",props:{id:{type:String,required:!0},type:{type:String},color1:{type:String,required:!0},color2:{type:String,required:!0},rotate:{type:Number,default:0}}});$o.render=Ko;var Qo=$o,ec=Object(j["defineComponent"])({name:"editable-element-shape",components:{GradientDefs:Qo},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.outline})),o=kn(n),c=o.outlineWidth,a=o.outlineStyle,r=o.outlineColor,l=Object(j["computed"])((function(){return e.elementInfo.shadow})),i=pn(l),u=i.shadowStyle,d=Object(j["computed"])((function(){return e.elementInfo.flip})),s=bn(d),f=s.flipStyle;return{handleSelectElement:t,shadowStyle:u,outlineWidth:c,outlineStyle:a,outlineColor:r,flipStyle:f}}});n("50af");ec.render=Jo,ec.__scopeId="data-v-a0860bd0";var tc=ec,nc=Object(j["withScopeId"])("data-v-58592d51"),oc=nc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-shape",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.svgWidth,height:e.svgHeight},{default:nc((function(){return[Object(j["createVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"]),Object(j["withDirectives"])(Object(j["createVNode"])("path",{class:"line-path",d:e.path,stroke:"transparent","stroke-width":"20",fill:"none",onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},null,40,["d"]),[[i,e.contextmenus]])]})),_:1},8,["width","height"])],4)],6)}));function cc(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("marker",{id:"".concat(e.id,"-").concat(e.type,"-").concat(e.position),markerUnits:"userSpaceOnUse",orient:"auto",markerWidth:3*e.size,markerHeight:3*e.size,refX:1.5*e.size,refY:1.5*e.size},[Object(j["createVNode"])("path",{d:e.path,fill:e.color,transform:"scale(".concat(.3*e.size,", ").concat(.3*e.size,") rotate(").concat(e.rotate,", 5, 5)")},null,8,["d","fill","transform"])],8,["id","markerWidth","markerHeight","refX","refY"])}var ac={dot:"m0 5a5 5 0 1 0 10 0a5 5 0 1 0 -10 0z",arrow:"M0,0 L10,5 0,10 Z"},rc={"arrow-start":180,"arrow-end":0},lc=Object(j["defineComponent"])({name:"line-point-marker",props:{id:{type:String,required:!0},position:{type:String,required:!0},type:{type:String,required:!0},color:{type:String},baseSize:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return ac[e.type]})),n=Object(j["computed"])((function(){return rc["".concat(e.type,"-").concat(e.position)]||0})),o=Object(j["computed"])((function(){return e.baseSize<2?2:e.baseSize}));return{path:t,rotate:n,size:o}}});lc.render=cc;var ic=lc,uc=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:ic},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},n=Object(j["computed"])((function(){return e.elementInfo.shadow})),o=pn(n),c=o.shadowStyle,a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),r=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),l=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10 6":"0 0"})),i=Object(j["computed"])((function(){var t=e.elementInfo.start.join(","),n=e.elementInfo.end.join(",");return"M".concat(t," L").concat(n)}));return{handleSelectElement:t,shadowStyle:c,svgWidth:a,svgHeight:r,lineDashArray:l,path:i}}});n("2821");uc.render=oc,uc.__scopeId="data-v-58592d51";var dc=uc,sc=Object(j["withScopeId"])("data-v-2fd38bde"),fc=sc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart"),i=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-chart",{lock:e.elementInfo.lock}],style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"},onMousedown:t[1]||(t[1]=function(t){return e.handleSelectElement(t)})},[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor},null,8,["width","height","type","data","options","themeColor","gridColor"])],4),[[i,e.contextmenus]])],38)})),pc=Object(j["withScopeId"])("data-v-561c26d2");Object(j["pushScopeId"])("data-v-561c26d2");var bc={class:"chart"};Object(j["popScopeId"])();var mc=pc((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",bc,[Object(j["createVNode"])("div",{class:"chart-content",ref:"chartRef",style:{width:e.width+"px",height:e.height+"px",transform:"scale(".concat(1/e.slideScale,")")}},null,4)])})),vc=n("8103"),Oc=n.n(vc),jc=n("66cb"),hc=n.n(jc),gc=n("ba48"),yc=n.n(gc),kc=(n("aa97"),Object(j["defineComponent"])({name:"chart",props:{width:{type:Number,required:!0},height:{type:Number,required:!0},type:{type:String,required:!0},data:{type:Object,required:!0},options:{type:Object},themeColor:{type:String,required:!0},gridColor:{type:String}},setup:function(e){var t,n=Object(j["ref"])(),o=Object(j["inject"])("slideScale")||Object(j["ref"])(1),c=function(){var t=e.options||{},n=Object(P["a"])(Object(P["a"])({},t),{},{width:e.width*o.value,height:e.height*o.value}),c="pie"===e.type?Object(P["a"])(Object(P["a"])({},e.data),{},{series:e.data.series[0]}):e.data;return{data:c,options:n}},a=function(){if(n.value){var o=Oc()(e.type),a=c(),r=a.data,l=a.options;t=new yc.a[o](n.value,r,l)}},r=function(){if(t){var e=c(),n=e.data,o=e.options;t.update(n,o)}else a()};Object(j["watch"])([function(){return e.width},function(){return e.height},function(){return e.data},o],r),Object(j["onMounted"])(a);var l=function(){if(n.value)for(var t=hc()(e.themeColor).toHsl(),o=0;o<10;o++){var c=t.h+36*o;c>360&&(c-=360);var a=Object(P["a"])(Object(P["a"])({},t),{},{h:c});n.value.style.setProperty("--theme-color-".concat(o+1),hc()(a).toRgbString())}};Object(j["watch"])((function(){return e.themeColor}),l),Object(j["onMounted"])(l);var i=function(){n.value&&e.gridColor&&n.value.style.setProperty("--grid-color",e.gridColor)};return Object(j["watch"])((function(){return e.gridColor}),i),Object(j["onMounted"])(i),{slideScale:o,chartRef:n}}}));n("eef7"),n("16ee");kc.render=mc,kc.__scopeId="data-v-561c26d2";var Ec=kc,Ic=Object(j["defineComponent"])({name:"editable-element-chart",components:{ElementOutline:qo,Chart:Ec},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))};return{handleSelectElement:t}}});n("33cf");Ic.render=fc,Ic.__scopeId="data-v-2fd38bde";var Sc=Ic,Cc=Object(j["withScopeId"])("data-v-c0edfdac");Object(j["pushScopeId"])("data-v-c0edfdac");var Nc={class:"element-content"};Object(j["popScopeId"])();var xc=Cc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("EditableTable"),l=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["editable-element-table",{lock:e.elementInfo.lock}],ref:"elementRef",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"}},[Object(j["withDirectives"])(Object(j["createVNode"])("div",Nc,[Object(j["createVNode"])(r,{onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(){}),["stop"])),data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme,editable:e.editable,onChange:t[2]||(t[2]=function(t){return e.updateTableCells(t)}),onChangeColWidths:t[3]||(t[3]=function(t){return e.updateColWidths(t)}),onChangeSelectedCells:t[4]||(t[4]=function(t){return e.updateSelectedCells(t)})},null,8,["data","width","colWidths","outline","theme","editable"]),!e.editable||e.elementInfo.lock?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["table-mask",{lock:e.elementInfo.lock}],onDblclick:t[5]||(t[5]=function(t){return e.startEdit()}),onMousedown:t[6]||(t[6]=function(t){return e.handleSelectElement(t)})},[Object(j["createVNode"])("div",{class:"mask-tip",style:{transform:"scale(".concat(1/e.canvasScale,")")}},"双击编辑",4)],34)):Object(j["createCommentVNode"])("",!0)],512),[[l,e.contextmenus]])],6)})),Lc=(n("13d5"),Object(j["withScopeId"])("data-v-ae1d6576"));Object(j["pushScopeId"])("data-v-ae1d6576");var Tc={key:0,class:"handler"};Object(j["popScopeId"])();var wc=Lc((function(e,t,n,o,c,a){var r,l,i,u,d,s=Object(j["resolveComponent"])("CustomTextarea"),f=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-table",style:{width:e.totalWidth+"px"}},[e.editable?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Tc,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.dragLinePosition,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"drag-line",key:n,style:{left:t+"px"},onMousedown:function(t){return e.handleMousedownColHandler(t,n)}},null,44,["onMousedown"])})),128))])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("table",{class:{theme:e.theme,"row-header":null===(r=e.theme)||void 0===r?void 0:r.rowHeader,"row-footer":null===(l=e.theme)||void 0===l?void 0:l.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter},style:"--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1])},[Object(j["createVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])("col",{span:"1",key:t,width:e},null,8,["width"])})),128))]),Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.tableCells,(function(n,o){return Object(j["openBlock"])(),Object(j["createBlock"])("tr",{key:o},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n,(function(n,c){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("td",{class:["cell",{selected:e.selectedCells.includes("".concat(o,"_").concat(c))&&e.selectedCells.length>1,active:e.activedCell==="".concat(o,"_").concat(c)}],style:Object(P["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(n.style)),key:n.id,rowspan:n.rowspan,colspan:n.colspan,"data-cell-index":"".concat(o,"_").concat(c),onMousedown:function(t){return e.handleCellMousedown(t,o,c)},onMouseenter:function(t){return e.handleCellMouseenter(o,c)}},[Object(j["createVNode"])(s,{class:["cell-text",{active:e.activedCell==="".concat(o,"_").concat(c)}],contenteditable:e.activedCell==="".concat(o,"_").concat(c)&&"plaintext-only",modelValue:n.text,"onUpdate:modelValue":[function(e){return n.text=e},t[1]||(t[1]=function(t){return e.handleInput()})]},null,8,["class","contenteditable","modelValue","onUpdate:modelValue"])],46,["rowspan","colspan","data-cell-index","onMousedown","onMouseenter"])),[[j["vShow"],!e.hideCells.includes("".concat(o,"_").concat(c))],[f,function(t){return e.contextmenus(t)}]])})),128))])})),128))])],6)],4)})),Vc=(n("1276"),n("cc71"),function(e){if(!e)return{};var t=e.bold,n=e.em,o=e.underline,c=e.strikethrough,a=e.color,r=e.backcolor,l=e.fontsize,i=e.fontname,u=e.align;return{fontWeight:t?"bold":"normal",fontStyle:n?"italic":"normal",textDecoration:"".concat(o?"underline":""," ").concat(c?"line-through":""),color:a||"#000",backgroundColor:r||"",fontSize:l||"14px",fontFamily:i||"微软雅黑",textAlign:u||"left"}}),_c=function(e){var t=Object(j["computed"])((function(){for(var t=[],n=0;n1||a.rowspan>1)for(var r=n;r=d&&b<=f&&v>=s&&v<=p&&u.push("".concat(b,"_").concat(v));return u}));Object(j["watch"])(g,(function(){n("changeSelectedCells",g.value)}));var y=Object(j["computed"])((function(){return g.value.length>1?null:g.value[0]})),k=Object(j["computed"])((function(){if(!r.value.length)return null;var e=Object(on["a"])(r.value,2),t=e[0],n=e[1];if(!l.value.length)return{row:[t,t],col:[n,n]};var o=Object(on["a"])(l.value,2),c=o[0],a=o[1];if(t===c&&n===a)return{row:[t,t],col:[n,n]};var i=Math.min(t,c),u=Math.min(n,a),d=Math.max(t,c),s=Math.max(n,a);return{row:[i,d],col:[u,s]}})),E=function(){return a.value=!1},I=function(e,t,n){0===e.button&&(l.value=[],a.value=!0,r.value=[t,n])},S=function(e,t){a.value&&(l.value=[e,t])};Object(j["onMounted"])((function(){document.addEventListener("mouseup",E)})),Object(j["onUnmounted"])((function(){document.removeEventListener("mouseup",E)}));var C=function(e,t){return h.value.includes("".concat(e,"_").concat(t))},N=function(e){var t=i.value.length-1;r.value=[0,e],l.value=[t,e]},x=function(e){var t=i.value[e].length-1;r.value=[e,0],l.value=[e,t]},L=function(){var e=i.value.length-1,t=i.value[e].length-1;r.value=[0,0],l.value=[e,t]},T=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=i.value[e],o=[],c=0;c=0;u--)if(!C(u,l)){t[u][l].rowspan=t[u][l].rowspan-1;break}t.splice(e,1),i.value=t},w=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),o=[],c=0;c=0;u--)if(!C(l,u)){t[l][u].colspan=t[l][u].colspan-1;break}i.value=t.map((function(t){return t.splice(e,1),t})),f.value.splice(e,1),n("changeColWidths",f.value)},V=function(e){for(var t=JSON.parse(JSON.stringify(i.value)),n=[],o=0;o1,n=e[0].length>1;return{canDeleteRow:t,canDeleteCol:n}},U=function(e,t){var n=g.value.length>1,o=i.value[e][t],c=n,a=!n&&(o.rowspan>1||o.colspan>1);return{canMerge:c,canSplit:a}},G=function(e){var t=e.dataset.cellIndex,n=+t.split("_")[0],o=+t.split("_")[1];g.value.includes("".concat(n,"_").concat(o))||(r.value=[n,o],l.value=[]);var c=U(n,o),a=c.canMerge,i=c.canSplit,u=z(),d=u.canDeleteRow,s=u.canDeleteCol;return[{text:"插入列",children:[{text:"到左侧",handler:function(){return _(o)}},{text:"到右侧",handler:function(){return _(o+1)}}]},{text:"插入行",children:[{text:"到上方",handler:function(){return V(n)}},{text:"到下方",handler:function(){return V(n+1)}}]},{text:"删除列",disable:!s,handler:function(){return w(o)}},{text:"删除行",disable:!d,handler:function(){return T(n)}},{divider:!0},{text:"合并单元格",disable:!a,handler:B},{text:"取消合并单元格",disable:!i,handler:function(){return M(n,o)}},{divider:!0},{text:"选中当前列",handler:function(){return N(o)}},{text:"选中当前行",handler:function(){return x(n)}},{text:"选中全部单元格",handler:L}]};return{getTextStyle:Vc,dragLinePosition:m,tableCells:i,colSizeList:f,totalWidth:p,hideCells:h,selectedCells:g,activedCell:y,selectedRange:k,handleCellMousedown:I,handleCellMouseenter:S,selectCol:N,selectRow:x,handleMousedownColHandler:D,contextmenus:G,handleInput:F,subThemeColor:s}}});n("eb09");Pc.render=wc,Pc.__scopeId="data-v-ae1d6576";var Rc=Pc,Fc=Object(j["defineComponent"])({name:"editable-element-table",components:{EditableTable:Rc},props:{elementInfo:{type:Object,required:!0},selectElement:{type:Function,required:!0},contextmenus:{type:Function}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.handleElementId})),c=Object(j["ref"])(),a=Ce(),r=a.addHistorySnapshot,l=function(t){e.elementInfo.lock||(t.stopPropagation(),e.selectElement(t,e.elementInfo))},i=Object(j["ref"])(!1);Object(j["watch"])(o,(function(){o.value!==e.elementInfo.id&&(i.value=!1)})),Object(j["watch"])(i,(function(){t.commit(g.SET_DISABLE_HOTKEYS_STATE,i.value)}));var u=function(){e.elementInfo.lock||(i.value=!0)},d=Object(j["ref"])(!1),s=Object(j["ref"])(-1),f=function(n){d.value=n,n&&(i.value=!1),n||-1===s.value||(t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:s.value}}),s.value=-1)};Wt.on(Vt.SCALE_ELEMENT_STATE,(function(e){return f(e)})),Object(j["onUnmounted"])((function(){Wt.off(Vt.SCALE_ELEMENT_STATE,(function(e){return f(e)}))}));var p=function(n){var o=n[0].contentRect;if(c.value){var a=o.height;e.elementInfo.height!==a&&(d.value?s.value=a:t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{height:a}}))}},b=new ResizeObserver(p);Object(j["onMounted"])((function(){c.value&&b.observe(c.value)})),Object(j["onUnmounted"])((function(){c.value&&b.unobserve(c.value)}));var m=function(n){t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{data:n}}),r()},v=function(n){var o=n.reduce((function(e,t){return e+t})),c=n.map((function(e){return e/o}));t.commit(g.UPDATE_ELEMENT,{id:e.elementInfo.id,props:{width:o,colWidths:c}}),r()},O=function(e){Object(j["nextTick"])((function(){return Wt.emit(Vt.UPDATE_TABLE_SELECTED_CELL,e)}))};return{elementRef:c,canvasScale:n,handleSelectElement:l,updateTableCells:m,updateColWidths:v,editable:i,startEdit:u,updateSelectedCells:O}}});n("254e");Fc.render=xc,Fc.__scopeId="data-v-c0edfdac";var Hc=Fc,zc=Object(j["defineComponent"])({name:"editable-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},isMultiSelect:{type:Boolean,required:!0},selectElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.theme})),o=Object(j["computed"])((function(){var t,n=(t={},Object(C["a"])(t,rn.IMAGE,Hn),Object(C["a"])(t,rn.TEXT,Xo),Object(C["a"])(t,rn.SHAPE,tc),Object(C["a"])(t,rn.LINE,dc),Object(C["a"])(t,rn.CHART,Sc),Object(C["a"])(t,rn.TABLE,Hc),t);return n[e.elementInfo.type]||null})),c=Fe(),a=c.orderElement,r=dn(),l=r.alignElementToCanvas,i=De(),u=i.combineElements,d=i.uncombineElements,s=Me(),f=s.deleteElement,p=Be(),b=p.lockElement,m=p.unlockElement,v=Ae(),O=v.copyElement,h=v.pasteElement,g=v.cutElement,y=Pe(),k=y.selectAllElement,E=function(){return e.elementInfo.lock?[{text:"解锁",handler:function(){return m(e.elementInfo)}}]:[{text:"剪切",subText:"Ctrl + X",handler:g},{text:"复制",subText:"Ctrl + C",handler:O},{text:"粘贴",subText:"Ctrl + V",handler:h},{divider:!0},{text:"对齐方式",children:[{text:"水平垂直居中",handler:function(){return l(Q.CENTER)}},{divider:!0},{text:"水平居中",handler:function(){return l(Q.HORIZONTAL)}},{text:"左对齐",handler:function(){return l(Q.LEFT)}},{text:"右对齐",handler:function(){return l(Q.RIGHT)}},{divider:!0},{text:"垂直居中",handler:function(){return l(Q.VERTICAL)}},{text:"顶部对齐",handler:function(){return l(Q.TOP)}},{text:"底部对齐",handler:function(){return l(Q.BOTTOM)}}]},{text:"层级排序",disable:e.isMultiSelect&&!e.elementInfo.groupId,children:[{text:"置顶层",handler:function(){return a(e.elementInfo,$.TOP)}},{text:"置底层",handler:function(){return a(e.elementInfo,$.BOTTOM)}},{divider:!0},{text:"上移一层",handler:function(){return a(e.elementInfo,$.UP)}},{text:"下移一层",handler:function(){return a(e.elementInfo,$.DOWN)}}]},{divider:!0},{text:e.elementInfo.groupId?"取消组合":"组合",subText:"Ctrl + G",handler:e.elementInfo.groupId?d:u,hide:!e.isMultiSelect},{text:"全选",subText:"Ctrl + A",handler:k},{text:"锁定",subText:"Ctrl + L",handler:b},{text:"删除",subText:"Delete",handler:f}]};return{currentElementComponent:o,contextmenus:E,theme:n}}});zc.render=an;var Uc=zc,Gc=Object(j["withScopeId"])("data-v-1619c258"),qc=Gc((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"mouse-selection quadrant-".concat(n.quadrant),style:{top:n.top+"px",left:n.left+"px",width:n.width+"px",height:n.height+"px"}},null,6)})),Wc={name:"mouse-selection",props:{top:{type:Number,required:!0},left:{type:Number,required:!0},width:{type:Number,required:!0},height:{type:Number,required:!0},quadrant:{type:Number,required:!0,validator:function(e){return[1,2,3,4].includes(e)}}}};n("2007");Wc.render=qc,Wc.__scopeId="data-v-1619c258";var Xc=Wc,Yc=Object(j["withScopeId"])("data-v-a1052b6c"),Zc=Yc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GridLines");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"slide-background",style:e.backgroundStyle},[e.showGridLines?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0})):Object(j["createCommentVNode"])("",!0)],4)})),Jc=Object(j["withScopeId"])("data-v-5664d2b2"),Kc=Jc((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"grid-lines"},{default:Jc((function(){return[Object(j["createVNode"])("path",{style:{transform:"scale(".concat(e.canvasScale,")")},d:e.path,fill:"none",stroke:e.gridColor,"stroke-width":"0.3","shape-rendering":"crispEdges","stroke-dasharray":"5"},null,12,["d","stroke"])]})),_:1})})),$c=Object(j["defineComponent"])({name:"grid-lines",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),o=Object(j["computed"])((function(){if(!n.value||"image"===n.value.type)return"rgba(100, 100, 100, 0.5)";var e=n.value.color,t=hc()(e).toRgb(),o={r:t.r>128?t.r-128:t.r+127,g:t.g>128?t.g-128:t.g+127,b:t.b>128?t.b-128:t.b+127,a:.5};return"rgba(".concat([o.r,o.g,o.b,o.a].join(","),")")})),c=50,a=function(){for(var e=Le,t=Le*Te,n="",o=0;o<=Math.floor(t/c);o++)n+="M0 ".concat(o*c,", L").concat(e," ").concat(o*c);for(var a=0;a<=Math.floor(e/c);a++)n+="M".concat(a*c," 0, L").concat(a*c," ").concat(t);return n};return{canvasScale:t,gridColor:o,width:Le,height:Le*Te,path:a()}}});n("51ad");$c.render=Kc,$c.__scopeId="data-v-5664d2b2";var Qc=$c,ea=function(e){var t=Object(j["computed"])((function(){if(!e.value)return{backgroundColor:"#fff"};var t=e.value,n=t.type,o=t.color,c=t.image,a=t.imageSize,r=t.gradientColor,l=t.gradientRotate,i=t.gradientType;if("solid"===n)return{backgroundColor:o};if("image"===n)return c?"repeat"===a?{backgroundImage:"url(".concat(c),backgroundRepeat:"repeat",backgroundSize:"initial"}:{backgroundImage:"url(".concat(c),backgroundRepeat:"no-repeat",backgroundSize:a||"cover"}:{backgroundColor:"#fff"};if("gradient"===n){var u=l||0,d=r?r[0]:"#fff",s=r?r[1]:"#fff";return"radial"===i?{backgroundImage:"radial-gradient(".concat(d,", ").concat(s)}:{backgroundImage:"linear-gradient(".concat(u,"deg, ").concat(d,", ").concat(s)}}return{backgroundColor:"#fff"}}));return{backgroundStyle:t}},ta=Object(j["defineComponent"])({name:"slide-background",components:{GridLines:Qc},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.showGridLines})),n=Object(j["computed"])((function(){var t;return null===(t=e.getters.currentSlide)||void 0===t?void 0:t.background})),o=ea(n),c=o.backgroundStyle;return{showGridLines:t,backgroundStyle:c}}});n("b7d6");ta.render=Zc,ta.__scopeId="data-v-a1052b6c";var na=ta,oa=Object(j["withScopeId"])("data-v-2d3eddf5"),ca=oa((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"alignment-line",style:{left:e.left,top:e.top}},[Object(j["createVNode"])("div",{class:["line",e.type],style:e.sizeStyle},null,6)],4)})),aa=Object(j["defineComponent"])({name:"alignment-line",props:{type:{type:String,required:!0},axis:{type:Object,required:!0},length:{type:Number,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.axis.x*n.value+"px"})),c=Object(j["computed"])((function(){return e.axis.y*n.value+"px"})),a=Object(j["computed"])((function(){return"vertical"===e.type?{height:e.length*n.value+"px"}:{width:e.length*n.value+"px"}}));return{left:o,top:c,sizeStyle:a}}});n("92ad");aa.render=ca,aa.__scopeId="data-v-2d3eddf5";var ra=aa,la=Object(j["withScopeId"])("data-v-97a153b6"),ia=la((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"element-create-selection",ref:"selectionRef",onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.createSelection(t)}),["stop"]))},[e.start&&e.end?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["selection",e.creatingElement.type],style:e.position},["line"===e.creatingElement.type&&e.lineData?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,overflow:"visible",width:e.lineData.svgWidth,height:e.lineData.svgHeight},{default:la((function(){return[Object(j["createVNode"])("path",{d:e.lineData.path,stroke:"#888",fill:"none","stroke-width":"1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":""},null,8,["d"])]})),_:1},8,["width","height"])):Object(j["createCommentVNode"])("",!0)],6)):Object(j["createCommentVNode"])("",!0)],544)})),ua=Object(j["defineComponent"])({name:"element-create-selection",setup:function(e,t){var n=t.emit,o=X(),c=Object(j["computed"])((function(){return o.getters.ctrlOrShiftKeyActive})),a=Object(j["computed"])((function(){return o.state.creatingElement})),r=Object(j["ref"])(null),l=Object(j["ref"])(null),i=Object(j["ref"])(),u=Object(j["reactive"])({x:0,y:0});Object(j["onMounted"])((function(){if(i.value){var e=i.value.getBoundingClientRect(),t=e.x,n=e.y;u.x=t,u.y=n}}));var d=function(e){var t=!0,i=e.pageX,u=e.pageY;r.value=[i,u],document.onmousemove=function(e){if(a.value&&t){var n=e.pageX,o=e.pageY;if(c.value){var r=n-i,d=o-u,s=Math.abs(r),f=Math.abs(d);if("shape"===a.value.type){var p=d>0&&r<0||d<0&&r>0;s>f?o=p?u-r:u+r:n=p?i-d:i+d}else"line"===a.value.type&&(s>f?o=u:n=i)}l.value=[n,o]}},document.onmouseup=function(e){document.onmousemove=null,document.onmouseup=null,t=!1;var c=e.pageX,a=e.pageY,d=30;Math.abs(c-i)>=d||Math.abs(a-u)>=d?n("created",{start:r.value,end:l.value}):o.commit(g.SET_CREATING_ELEMENT,null)}},s=Object(j["computed"])((function(){if(!r.value||!l.value)return null;if(!a.value||"line"!==a.value.type)return null;var e=Object(on["a"])(r.value,2),t=e[0],n=e[1],o=Object(on["a"])(l.value,2),c=o[0],i=o[1],u=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,i),f=Math.max(n,i),p=d-u>=24?d-u:24,b=f-s>=24?f-s:24,m=t===u?0:d-u,v=n===s?0:f-s,O=c===u?0:d-u,j=i===s?0:f-s,h="M".concat(m,", ").concat(v," L").concat(O,", ").concat(j);return{svgWidth:p,svgHeight:b,startX:m,startY:v,endX:O,endY:j,path:h}})),f=Object(j["computed"])((function(){if(!r.value||!l.value)return{};var e=Object(on["a"])(r.value,2),t=e[0],n=e[1],o=Object(on["a"])(l.value,2),c=o[0],a=o[1],i=Math.min(t,c),d=Math.max(t,c),s=Math.min(n,a),f=Math.max(n,a),p=d-i,b=f-s;return{left:i-u.x+"px",top:s-u.y+"px",width:p+"px",height:b+"px"}}));return{selectionRef:i,start:r,end:l,creatingElement:a,createSelection:d,lineData:s,position:f}}});n("9ea8");ua.render=ia,ua.__scopeId="data-v-97a153b6";var da=ua,sa=Object(j["withScopeId"])("data-v-4def6455"),fa=sa((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"multi-select-operate",style:{left:e.minX*e.canvasScale+"px",top:e.minY*e.canvasScale+"px"}},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.disableResize?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleMultiElement(n,{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY},t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))],4)})),pa=function(e,t){var n=Object(j["computed"])((function(){return[{direction:te.LEFT_TOP,style:{}},{direction:te.TOP,style:{left:e.value/2+"px"}},{direction:te.RIGHT_TOP,style:{left:e.value+"px"}},{direction:te.LEFT,style:{top:t.value/2+"px"}},{direction:te.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}},{direction:te.LEFT_BOTTOM,style:{top:t.value+"px"}},{direction:te.BOTTOM,style:{left:e.value/2+"px",top:t.value+"px"}},{direction:te.RIGHT_BOTTOM,style:{left:e.value+"px",top:t.value+"px"}}]})),o=Object(j["computed"])((function(){return[{direction:te.LEFT,style:{top:t.value/2+"px"}},{direction:te.RIGHT,style:{left:e.value+"px",top:t.value/2+"px"}}]})),c=Object(j["computed"])((function(){return[{type:ee.T,style:{width:e.value+"px"}},{type:ee.B,style:{top:t.value+"px",width:e.value+"px"}},{type:ee.L,style:{height:t.value+"px"}},{type:ee.R,style:{left:e.value+"px",height:t.value+"px"}}]}));return{resizeHandlers:n,textElementResizeHandlers:o,borderLines:c}},ba=Object(j["withScopeId"])("data-v-1c2a68d0"),ma=ba((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["resize-handler",n.type]},null,2)})),va={name:"resize-handler",props:{type:{type:String,default:""}}};n("a933");va.render=ma,va.__scopeId="data-v-1c2a68d0";var Oa=va,ja=Object(j["withScopeId"])("data-v-630e246b"),ha=ja((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["border-line",n.type,{wide:n.isWide}]},null,2)})),ga={name:"border-line",props:{type:{type:String,required:!0},isWide:{type:Boolean,default:!1}}};n("fb1d");ga.render=ha,ga.__scopeId="data-v-630e246b";var ya=ga,ka=Object(j["defineComponent"])({name:"multi-select-operate",components:{ResizeHandler:Oa,BorderLine:ya},props:{elementList:{type:Array,required:!0},scaleMultiElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.activeElementIdList})),o=Object(j["computed"])((function(){return t.state.canvasScale})),c=Object(j["computed"])((function(){return e.elementList.filter((function(e){return n.value.includes(e.id)}))})),a=Object(j["reactive"])({minX:0,maxX:0,minY:0,maxY:0}),r=Object(j["computed"])((function(){return(a.maxX-a.minX)*o.value})),l=Object(j["computed"])((function(){return(a.maxY-a.minY)*o.value})),i=pa(r,l),u=i.resizeHandlers,d=i.borderLines,s=function(){var e=Pt(c.value),t=e.minX,n=e.maxX,o=e.minY,r=e.maxY;a.minX=t,a.maxX=n,a.minY=o,a.maxY=r};Object(j["watchEffect"])(s);var f=Object(j["computed"])((function(){return c.value.some((function(e){return!!("image"!==e.type&&"shape"!==e.type||e.rotate)}))}));return Object(P["a"])(Object(P["a"])({},Object(j["toRefs"])(a)),{},{canvasScale:o,borderLines:d,disableResize:f,resizeHandlers:u})}});n("de7c");ka.render=fa,ka.__scopeId="data-v-4def6455";var Ea=ka,Ia=Object(j["withScopeId"])("data-v-558a94fe");Object(j["pushScopeId"])("data-v-558a94fe");var Sa={key:1,class:"animation-index"};Object(j["popScopeId"])();var Ca=Ia((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["operate",{"multi-select":e.isMultiSelect&&!e.isActive}],style:{top:e.elementInfo.top*e.canvasScale+"px",left:e.elementInfo.left*e.canvasScale+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)"),transformOrigin:"".concat(e.elementInfo.width*e.canvasScale/2,"px ").concat(e.elementInfo.height*e.canvasScale/2,"px")}},[e.isSelected?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentOperateComponent),{key:0,elementInfo:e.elementInfo,isActiveGroupElement:e.isActiveGroupElement,isMultiSelect:e.isMultiSelect,rotateElement:e.rotateElement,scaleElement:e.scaleElement,dragLineElement:e.dragLineElement},null,8,["elementInfo","isActiveGroupElement","isMultiSelect","rotateElement","scaleElement","dragLineElement"])):Object(j["createCommentVNode"])("",!0),"elAnimation"===e.toolbarState&&-1!==e.elementIndexInAnimation?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Sa,Object(j["toDisplayString"])(e.elementIndexInAnimation+1),1)):Object(j["createCommentVNode"])("",!0)],6)})),Na=Object(j["withScopeId"])("data-v-5b0628aa"),xa=Na((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["image-element-operate",{cliping:e.isCliping}]},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))],2)})),La=Object(j["withScopeId"])("data-v-9a549510");Object(j["pushScopeId"])("data-v-9a549510");var Ta={class:"rotate-handler"};Object(j["popScopeId"])();var wa=La((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ta)})),Va={name:"rotate-handler"};n("8754");Va.render=wa,Va.__scopeId="data-v-9a549510";var _a=Va,Ba=Object(j["defineComponent"])({name:"image-element-operate",inheritAttrs:!1,components:{RotateHandler:_a,ResizeHandler:Oa,BorderLine:ya},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.clipingImageElementId})),c=Object(j["computed"])((function(){return o.value===e.elementInfo.id})),a=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),r=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),l=pa(a,r),i=l.resizeHandlers,u=l.borderLines;return{isCliping:c,scaleWidth:a,resizeHandlers:i,borderLines:u}}});n("5c02");Ba.render=xa,Ba.__scopeId="data-v-5b0628aa";var Ma=Ba,Da={class:"text-element-operate"};function Aa(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Da,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var Pa=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{RotateHandler:_a,ResizeHandler:Oa,BorderLine:ya},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=pa(o,c),r=a.textElementResizeHandlers,l=a.borderLines;return{scaleWidth:o,textElementResizeHandlers:r,borderLines:l}}});Pa.render=Aa;var Ra=Pa,Fa={class:"shape-element-operate"};function Ha(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler"),i=Object(j["resolveComponent"])("RotateHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Fa,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128)),Object(j["createVNode"])(i,{class:"operate-rotate-handler",style:{left:e.scaleWidth/2+"px"},onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.rotateElement(e.elementInfo)}),["stop"]))},null,8,["style"])],64))])}var za=Object(j["defineComponent"])({name:"shape-element-operate",inheritAttrs:!1,components:{RotateHandler:_a,ResizeHandler:Oa,BorderLine:ya},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=pa(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});za.render=Ha;var Ua=za,Ga={class:"text-element-operate"};function qa(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ga,[e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.dragLineElement(n,e.elementInfo,t.handler)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var Wa=Object(j["defineComponent"])({name:"text-element-operate",inheritAttrs:!1,components:{ResizeHandler:Oa},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return[{handler:ne.START,style:{left:e.elementInfo.start[0]*n.value+"px",top:e.elementInfo.start[1]*n.value+"px"}},{handler:ne.END,style:{left:e.elementInfo.end[0]*n.value+"px",top:e.elementInfo.end[1]*n.value+"px"}}]}));return{resizeHandlers:o}}});Wa.render=qa;var Xa=Wa,Ya={class:"chart-element-operate"};function Za(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ya,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.resizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var Ja=Object(j["defineComponent"])({name:"chart-element-operate",inheritAttrs:!1,components:{ResizeHandler:Oa,BorderLine:ya},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.width*n.value})),c=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),a=pa(o,c),r=a.resizeHandlers,l=a.borderLines;return{scaleWidth:o,resizeHandlers:r,borderLines:l}}});Ja.render=Za;var Ka=Ja,$a={class:"table-element-operate"};function Qa(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("BorderLine"),l=Object(j["resolveComponent"])("ResizeHandler");return Object(j["openBlock"])(),Object(j["createBlock"])("div",$a,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.borderLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{class:"operate-border-line",key:e.type,type:e.type,style:e.style},null,8,["type","style"])})),128)),e.elementInfo.lock||!e.isActiveGroupElement&&e.isMultiSelect?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],{key:0},Object(j["renderList"])(e.textElementResizeHandlers,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"operate-resize-handler",key:t.direction,type:t.direction,style:t.style,onMousedown:Object(j["withModifiers"])((function(n){return e.scaleElement(n,e.elementInfo,t.direction)}),["stop"])},null,8,["type","style","onMousedown"])})),128))])}var er=Object(j["defineComponent"])({name:"table-element-operate",inheritAttrs:!1,components:{ResizeHandler:Oa,BorderLine:ya},props:{elementInfo:{type:Object,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},scaleElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return e.elementInfo.outline.width||1})),c=Object(j["computed"])((function(){return(e.elementInfo.width+o.value)*n.value})),a=Object(j["computed"])((function(){return e.elementInfo.height*n.value})),r=pa(c,a),l=r.textElementResizeHandlers,i=r.borderLines;return{scaleWidth:c,textElementResizeHandlers:l,borderLines:i}}});er.render=Qa;var tr=er,nr=Object(j["defineComponent"])({name:"operate",props:{elementInfo:{type:Object,required:!0},isSelected:{type:Boolean,required:!0},isActive:{type:Boolean,required:!0},isActiveGroupElement:{type:Boolean,required:!0},isMultiSelect:{type:Boolean,required:!0},rotateElement:{type:Function,required:!0},scaleElement:{type:Function,required:!0},dragLineElement:{type:Function,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.canvasScale})),o=Object(j["computed"])((function(){return t.state.toolbarState})),c=Object(j["computed"])((function(){return t.getters.currentSlide})),a=Object(j["computed"])((function(){var t,n=(t={},Object(C["a"])(t,rn.IMAGE,Ma),Object(C["a"])(t,rn.TEXT,Ra),Object(C["a"])(t,rn.SHAPE,Ua),Object(C["a"])(t,rn.LINE,Xa),Object(C["a"])(t,rn.CHART,Ka),Object(C["a"])(t,rn.TABLE,tr),t);return n[e.elementInfo.type]||null})),r=Object(j["computed"])((function(){var t=c.value.animations||[];return t.findIndex((function(t){return t.elId===e.elementInfo.id}))}));return{currentOperateComponent:a,canvasScale:n,toolbarState:o,elementIndexInAnimation:r}}});n("9884");nr.render=Ca,nr.__scopeId="data-v-558a94fe";var or=nr,cr=Object(j["defineComponent"])({name:"editor-canvas",components:{EditableElement:Uc,MouseSelection:Xc,SlideBackground:na,AlignmentLine:ra,ElementCreateSelection:da,MultiSelectOperate:Ea,Operate:or},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.state.handleElementId})),o=Object(j["computed"])((function(){return e.state.editorAreaFocus})),c=Object(j["computed"])((function(){return e.state.ctrlKeyState})),a=Object(j["computed"])((function(){return e.getters.ctrlOrShiftKeyActive})),r=Object(j["ref"])(),l=Object(j["ref"])([]),i=Object(j["ref"])("");Object(j["watch"])(n,(function(){return i.value=""}));var u=Object(j["computed"])((function(){return e.getters.currentSlide})),d=Object(j["ref"])([]),s=function(){d.value=u.value?JSON.parse(JSON.stringify(u.value.elements)):[]};Object(j["watchEffect"])(s);var f=Object(j["ref"])(),p=Object(j["computed"])((function(){return e.state.canvasScale})),b=Mt(f),m=b.viewportStyles;Ht(f);var v=Ft(d,r),O=v.mouseSelectionState,h=v.updateMouseSelection,y=tn(d,i,l),k=y.dragElement,E=nn(d),I=E.dragLineElement,S=en(d,i,k),C=S.selectElement,N=Kt(d,i,l),x=N.scaleElement,L=N.scaleMultiElement,T=Ut(d,r),w=T.rotateElement,V=Pe(),_=V.selectAllElement,B=Me(),M=B.deleteAllElements,D=Ae(),A=D.pasteElement,P=Ge(),R=P.enterScreening,F=function(t){e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,[]),a.value||h(t),o.value||e.commit(g.SET_EDITORAREA_FOCUS,!0),Bt()},H=function(){o.value&&e.commit(g.SET_EDITORAREA_FOCUS,!1)},z=qe(),U=z.scaleCanvas,G=Se()(U,100,{leading:!0,trailing:!1}),q=function(e){c.value&&(e.preventDefault(),e.deltaY>0?G("-"):e.deltaY<0&&G("+"))},W=Object(j["computed"])((function(){return e.state.showGridLines})),Y=function(){e.commit(g.SET_GRID_LINES_STATE,!W.value)},Z=Object(j["computed"])((function(){return e.state.creatingElement})),J=cn(r),K=J.insertElementFromCreateSelection,$=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:A},{text:"全选",subText:"Ctrl + A",handler:_},{text:"网格线",subText:W.value?"√":"",handler:Y},{text:"重置当前页",handler:M},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:R}]};return Object(j["provide"])("slideScale",p),{elementList:d,activeElementIdList:t,handleElementId:n,activeGroupElementId:i,canvasRef:f,viewportRef:r,viewportStyles:m,canvasScale:p,mouseSelectionState:O,handleClickBlankArea:F,removeEditorAreaFocus:H,currentSlide:u,creatingElement:Z,insertElementFromCreateSelection:K,alignmentLines:l,selectElement:C,rotateElement:w,scaleElement:x,dragLineElement:I,scaleMultiElement:L,mousewheelScaleCanvas:q,contextmenus:$}}});n("1961");cr.render=_t,cr.__scopeId="data-v-0214a634";var ar=cr,rr=Object(j["withScopeId"])("data-v-236c5f54");Object(j["pushScopeId"])("data-v-236c5f54");var lr={class:"canvas-tool"},ir={class:"left-handler"},ur={class:"add-element-handler"},dr={class:"right-handler"},sr={class:"text"};Object(j["popScopeId"])();var fr=rr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconBack"),l=Object(j["resolveComponent"])("Tooltip"),i=Object(j["resolveComponent"])("IconNext"),u=Object(j["resolveComponent"])("IconFontSize"),d=Object(j["resolveComponent"])("IconPicture"),s=Object(j["resolveComponent"])("FileInput"),f=Object(j["resolveComponent"])("ShapePool"),p=Object(j["resolveComponent"])("IconPentagonOne"),b=Object(j["resolveComponent"])("Popover"),m=Object(j["resolveComponent"])("LinePool"),v=Object(j["resolveComponent"])("IconConnection"),O=Object(j["resolveComponent"])("ChartPool"),h=Object(j["resolveComponent"])("IconChartProportion"),g=Object(j["resolveComponent"])("TableGenerator"),y=Object(j["resolveComponent"])("IconInsertTable"),k=Object(j["resolveComponent"])("IconMinus"),E=Object(j["resolveComponent"])("IconPlus"),I=Object(j["resolveComponent"])("IconFullScreen");return Object(j["openBlock"])(),Object(j["createBlock"])("div",lr,[Object(j["createVNode"])("div",ir,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"撤销"},{default:rr((function(){return[Object(j["createVNode"])(r,{class:["handler-item",{disable:!e.canUndo}],onClick:t[1]||(t[1]=function(t){return e.undo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"重做"},{default:rr((function(){return[Object(j["createVNode"])(i,{class:["handler-item",{disable:!e.canRedo}],onClick:t[2]||(t[2]=function(t){return e.redo()})},null,8,["class"])]})),_:1},8,["mouseEnterDelay"])]),Object(j["createVNode"])("div",ur,[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入文字"},{default:rr((function(){return[Object(j["createVNode"])(u,{class:"handler-item",onClick:t[3]||(t[3]=function(t){return e.drawText()})})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(s,{onChange:t[4]||(t[4]=function(t){return e.insertImageElement(t)})},{default:rr((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图片"},{default:rr((function(){return[Object(j["createVNode"])(d,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(b,{trigger:"click",visible:e.shapePoolVisible,"onUpdate:visible":t[6]||(t[6]=function(t){return e.shapePoolVisible=t})},{content:rr((function(){return[Object(j["createVNode"])(f,{onSelect:t[5]||(t[5]=function(t){return e.drawShape(t)})})]})),default:rr((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入形状"},{default:rr((function(){return[Object(j["createVNode"])(p,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.linePoolVisible,"onUpdate:visible":t[8]||(t[8]=function(t){return e.linePoolVisible=t})},{content:rr((function(){return[Object(j["createVNode"])(m,{onSelect:t[7]||(t[7]=function(t){return e.drawLine(t)})})]})),default:rr((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入线条"},{default:rr((function(){return[Object(j["createVNode"])(v,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.chartPoolVisible,"onUpdate:visible":t[10]||(t[10]=function(t){return e.chartPoolVisible=t})},{content:rr((function(){return[Object(j["createVNode"])(O,{onSelect:t[9]||(t[9]=function(t){e.createChartElement(t),e.chartPoolVisible=!1})})]})),default:rr((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入图表"},{default:rr((function(){return[Object(j["createVNode"])(h,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"]),Object(j["createVNode"])(b,{trigger:"click",visible:e.tableGeneratorVisible,"onUpdate:visible":t[13]||(t[13]=function(t){return e.tableGeneratorVisible=t})},{content:rr((function(){return[Object(j["createVNode"])(g,{onClose:t[11]||(t[11]=function(t){return e.tableGeneratorVisible=!1}),onInsert:t[12]||(t[12]=function(t){var n=t.row,o=t.col;e.createTableElement(n,o),e.tableGeneratorVisible=!1})})]})),default:rr((function(){return[Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"插入表格"},{default:rr((function(){return[Object(j["createVNode"])(y,{class:"handler-item"})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["visible"])]),Object(j["createVNode"])("div",dr,[Object(j["createVNode"])(k,{class:"handler-item viewport-size",onClick:t[14]||(t[14]=function(t){return e.scaleCanvas("-")})}),Object(j["createVNode"])("span",sr,Object(j["toDisplayString"])(e.canvasScalePercentage),1),Object(j["createVNode"])(E,{class:"handler-item viewport-size",onClick:t[15]||(t[15]=function(t){return e.scaleCanvas("+")})}),Object(j["createVNode"])(l,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"适配屏幕"},{default:rr((function(){return[Object(j["createVNode"])(I,{class:"handler-item viewport-size-adaptation",onClick:t[16]||(t[16]=function(t){return e.setCanvasPercentage(90)})})]})),_:1},8,["mouseEnterDelay"])])])})),pr=Object(j["withScopeId"])("data-v-5aabd717");Object(j["pushScopeId"])("data-v-5aabd717");var br={class:"shape-pool"},mr={class:"category-name"},vr={class:"shape-list"};Object(j["popScopeId"])();var Or=pr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",br,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeList,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"category",key:t.type},[Object(j["createVNode"])("div",mr,Object(j["toDisplayString"])(t.type),1),Object(j["createVNode"])("div",vr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"shape-item",key:n},[Object(j["createVNode"])("div",{class:"shape-content",onClick:function(n){return e.selectShape(t)}},[Object(j["createVNode"])(r,{overflow:"visible",width:"18",height:"18"},{default:pr((function(){return[Object(j["createVNode"])("g",{transform:"scale(".concat(18/t.viewBox,", ").concat(18/t.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{class:"shape-path","vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",fill:"transparent",stroke:"#999","stroke-width":"2",d:t.path},null,8,["d"])],8,["transform"])]})),_:2},1024)],8,["onClick"])])})),128))])])})),128))])})),jr=[{type:"矩形",children:[{viewBox:200,path:"M 0 0 L 200 0 L 200 200 L 0 200 Z"},{viewBox:200,path:"M 20 0 L 180 0 Q 200 0 200 20 L 200 180 Q 200 200 180 200 L 20 200 Q 0 200 0 180 L 0 20 Q 0 0 20 0 Z"},{viewBox:200,path:"M 0 150 L 0 0 L 150 0 L 200 50 L 200 200 L 50 200 L 0 150 Z"},{viewBox:200,path:"M 0 200 L 0 0 L 150 0 L 200 50 L 200 200 L 0 200"},{viewBox:200,path:"M 0 50 L 50 0 L 150 0 L 200 50 L 200 200 L 0 200 L 0 50 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 60 200 Q 0 200 0 140 L 0 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 Q 200 0 200 60 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 0 50 Q 0 0 50 0 L 150 0 Q 200 0 200 50 L 200 200 L 0 200 L 0 50 Z"}]},{type:"常用形状",children:[{viewBox:200,path:"M 100 0 A 50 50 0 1 1 100 200 A 50 50 0 1 1 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 A 100 100 102 1 0 200 100 L 200 0 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 Q 200 200 0 200 L 0 0 Z"},{viewBox:200,path:"M 100 0 L 0 200 L 200 200 L 100 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 Z"},{viewBox:200,path:"M 50 0 L 200 0 L 150 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 150 0 L 200 200 L 50 200 L 0 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 200 200 L 0 200 L 50 0 Z"},{viewBox:200,path:"M 100 0 L 0 100 L 100 200 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 90 L 50 200 L 150 200 L 200 90 L 100 0 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 0 140 L 100 200 L 200 140 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 60 0 L 140 0 L 200 60 L 200 140 L 140 200 L 60 200 L 0 140 L 0 60 L 60 0 Z"},{viewBox:200,path:"M 75 0 L 125 0 L 175 25 L 200 75 L 200 125 L 175 175 L 125 200 L 75 200 L 25 175 L 0 125 L 0 75 L 25 25 L 75 0 Z"},{viewBox:200,path:"M 100 0 L 0 50 L 0 200 L 200 200 L 200 50 L 100 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 L 0 0 L 150 0 Z"},{viewBox:200,path:"M 150 0 A 50 100 0 1 1 150 200 L 0 200 A 50 100 0 0 0 0 0 L 150 0 Z"},{viewBox:200,path:"M 200 100 L 150 0 L 0 0 L 50 100 L 0 200 L 150 200 L 200 100 Z"},{viewBox:200,path:"M 200 0 L 200 200 L 0 200 L 0 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 200 200 L 0 200 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 100 0 L 0 100 L 0 200 L 200 0 Z"},{viewBox:200,path:"M 50 0 L 150 0 L 150 50 L 200 50 L 200 150 L 150 150 L 150 200 L 50 200 L 50 150 L 0 150 L 0 50 L 50 50 L 50 0 Z"},{viewBox:200,path:"M 0 0 L 0 200 L 200 200 L 200 140 L 60 140 L 60 0 L 0 0 Z"},{viewBox:200,path:"M0 0 L200 0 L200 200 L0 200 L0 0 Z M50 50 L50 150 L150 150 L150 50 Z"},{viewBox:200,path:"M0 100 A100 100 0 1 1 0 101 Z M150 100 A50 50 0 1 0 150 101 Z"},{viewBox:200,path:"M 70 0 L 70 70 L 0 70 L 0 130 L 70 130 L 70 200 L 130 200 L 130 130 L 200 130 L 200 70 L 130 70 L 130 0 L 70 0 Z"},{viewBox:200,path:"M 40 0 L 0 40 L 60 100 L 0 160 L 40 200 L 100 140 L 160 200 L 200 160 L 140 100 L 200 40 L 160 0 L 100 60 L 40 0 Z"},{viewBox:200,path:"M 0 0 L 200 0 L 200 160 L 100 160 L 60 200 L 60 160 L 0 160 L 0 0 Z"},{viewBox:200,path:"M 0 40 Q 0 0 40 0 L 160 0 Q 200 0 200 40 L 200 120 Q 200 160 160 160 L 100 160 L 60 200 L 60 160 L 40 160 Q 0 160 0 120 L 0 40 Z"},{viewBox:200,path:"M 180 160 A 100 100 0 1 0 100 200 L 200 200 L 200 160 L 180 160 Z"},{viewBox:200,path:"M 200 0 L 0 0 L 200 200 L 0 200 L 200 0 Z"}]},{type:"箭头",children:[{viewBox:200,path:"M 100 0 L 0 100 L 50 100 L 50 200 L 150 200 L 150 100 L 200 100 L 100 0 Z"},{viewBox:200,path:"M 100 200 L 200 100 L 150 100 L 150 0 L 50 0 L 50 100 L 0 100 L 100 200 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 100 0 L 0 60 L 60 60 L 60 140 L 0 140 L 100 200 L 200 140 L 140 140 L 140 60 L 200 60 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 60 0 L 60 60 L 140 60 L 140 0 L 200 100 L 140 200 L 140 140 L 60 140 L 60 200 L 0 100 Z"},{viewBox:200,path:"M 100 0 L 60 40 L 80 40 L 80 80 L 40 80 L 40 60 L 0 100 L 40 140 L 40 120 L 80 120 L 80 160 L 60 160 L 100 200 L 140 160 L 120 160 L 120 120 L 160 120 L 160 140 L 200 100 L 160 60 L 160 80 L 120 80 L 120 40 L 140 40 L 100 0 Z"},{viewBox:200,path:"M 0 100 L 100 0 L 100 50 L 200 50 L 150 100 L 200 150 L 100 150 L 100 200 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 100 0 L 100 50 L 0 50 L 50 100 L 0 150 L 100 150 L 100 200 L 200 100 Z"},{viewBox:200,path:"M 0 100 L 80 20 L 80 80 L 120 80 L 120 0 L 200 0 L 200 200 L 120 200 L 120 120 L 80 120 L 80 180 L 0 100 Z"},{viewBox:200,path:"M 200 100 L 120 20 L 120 80 L 80 80 L 80 0 L 0 0 L 0 200 L 80 200 L 80 120 L 120 120 L 120 180 L 200 100 Z"},{viewBox:200,path:"M 0 0 L 120 0 L 200 100 L 120 200 L 0 200 L 80 100 L 0 0 Z"},{viewBox:200,path:"M 80 0 L 200 0 L 120 100 L 200 200 L 80 200 L 0 100 L 80 0 Z"},{viewBox:200,path:"M 0 0 L 140 0 L 200 100 L 140 200 L 0 200 L 0 100 L 0 0 Z"},{viewBox:200,path:"M 60 0 L 200 0 L 200 100 L 200 200 L 60 200 L 0 100 L 60 0 Z"},{viewBox:200,path:"M 0 0 L 200 100 L 0 200 L 60 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 0 100 L 200 200 L 140 100 L 200 0 Z"},{viewBox:200,path:"M 0 0 L 80 0 L 200 100 L 80 200 L 0 200 L 120 100 L 0 0 Z"},{viewBox:200,path:"M 200 0 L 120 0 L 0 100 L 120 200 L 200 200 L 80 100 L 200 0 Z"},{viewBox:200,path:"M 0 200 L 180 200 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 160 L 0 160 L 0 200 Z"},{viewBox:200,path:"M 0 200 L 0 20 L 160 20 L 160 0 L 200 40 L 160 80 L 160 60 L 40 60 L 40 200 L 0 200 Z"},{viewBox:200,path:"M 40 180 L 180 180 L 180 40 L 200 40 L 160 0 L 120 40 L 140 40 L 140 140 L 40 140 L 40 120 L 0 160 L 40 200 L 40 180 Z"},{viewBox:1024,path:"M398.208 302.912V64L0 482.112l398.208 418.176V655.36c284.48 0 483.584 95.552 625.792 304.64-56.896-298.688-227.584-597.312-625.792-657.088z"},{viewBox:1024,path:"M625.792 302.912V64L1024 482.112l-398.208 418.176V655.36C341.312 655.36 142.208 750.912 0 960c56.896-298.688 227.584-597.312 625.792-657.088z"}]},{type:"其他形状",children:[{viewBox:1024,path:"M995.336 243.4016c-15.7584-36.5736-38.3376-69.26639999-66.91440001-97.37280001-28.5768-27.98879999-61.73999999-49.8624-98.78399999-65.26799998-38.22-15.876-78.6744-23.8728-120.4224-23.87280001-57.97680001 0-114.5424 15.876-163.69919999 45.864-11.76 7.17360001-22.932 15.05279999-33.51600001 23.63760001-10.584-8.5848-21.75600001-16.46400001-33.51600001-23.63760001-49.1568-29.98799999-105.7224-45.86399999-163.69919999-45.864-41.74799999 0-82.2024 7.9968-120.4224 23.87280001-36.9264 15.28799999-70.2072 37.27919999-98.78399999 65.26799998-28.6944 28.10640001-51.156 60.79919999-66.91440001 97.37280001-16.34639999 37.9848-24.696 78.3216-24.696 119.83439999 0 39.1608 7.9968 79.96800001 23.8728 121.48080001 13.28880001 34.692 32.34000001 70.67760001 56.6832 107.016 38.57279999 57.5064 91.61040001 117.4824 157.4664 178.28160001 109.1328 100.78319999 217.2072 170.4024 221.79359999 173.22479998l27.87120001 17.8752c12.348 7.8792 28.224 7.8792 40.572 0l27.87119999-17.8752c4.58639999-2.94 112.54319999-72.44159999 221.79360001-173.22479998 65.85599999-60.79919999 118.89359999-120.7752 157.4664-178.28160001 24.3432-36.33839999 43.512-72.324 56.68319999-107.016 15.876-41.5128 23.8728-82.32 23.87280001-121.48080001 0.1176-41.5128-8.232-81.8496-24.5784-119.83439999z"},{viewBox:1024,path:"M985.20746667 343.50079998l-303.32586667-44.08319999L546.28693333 24.5248c-3.70346666-7.5264-9.79626667-13.6192-17.32266665-17.32266668-18.87573334-9.3184-41.81333333-1.55306667-51.25120001 17.32266668L342.1184 299.41759999l-303.32586667 44.08319999c-8.36266667 1.19466667-16.00853333 5.13706667-21.8624 11.11040001-14.69440001 15.17226667-14.45546667 39.30453334 0.71679999 54.1184l219.46026668 213.9648-51.84853333 302.1312c-1.43359999 8.24320001-0.11946667 16.8448 3.82293333 24.25173333 9.79626667 18.6368 32.9728 25.92426667 51.6096 16.00853334L512 822.44266665l271.3088 142.64320001c7.40693333 3.9424 16.00853333 5.25653333 24.25173333 3.82293333 20.78719999-3.584 34.7648-23.296 31.1808-44.0832l-51.84853333-302.1312 219.46026668-213.9648c5.97333334-5.85386666 9.91573333-13.49973334 11.11039999-21.8624 3.2256-20.90666667-11.34933333-40.26026667-32.256-43.36640001z"},{viewBox:1024,path:"M852.65066667 405.84533333C800.54044445 268.40177778 667.76177778 170.66666667 512.22755555 170.66666667S223.91466667 268.288 171.80444445 405.73155555C74.29688889 431.33155555 2.27555555 520.07822222 2.27555555 625.77777778c0 125.72444445 101.83111111 227.55555555 227.44177778 227.55555555h564.56533334C919.89333333 853.33333333 1021.72444445 751.50222222 1021.72444445 625.77777778c0-105.472-71.79377778-194.21866667-169.07377778-219.93244445z"},{viewBox:1024,path:"M926.25224691 323.7371485H654.6457886L898.88200917 15.14388241c5.05486373-6.53433603 0.49315743-16.02761669-7.76722963-16.02761668H418.30008701c-3.45210206 0-6.78091476 1.84934039-8.50696579 4.93157436L90.35039154 555.76772251c-3.82197013 6.53433603 0.86302552 14.7947231 8.50696578 14.79472311h215.01664245l-110.22068713 440.88274851c-2.34249783 9.61657002 9.24670194 16.39748478 16.39748477 9.49328065L933.03316167 340.62779071c6.41104668-6.0411786 2.09591911-16.8906422-6.78091476-16.89064221z"},{viewBox:1024,path:"M878.47822222 463.30311111c-22.18666667-49.83466667-53.93066667-93.98044445-94.32177777-131.072l-33.10933334-30.37866666c-4.89244445-4.32355555-12.62933333-2.38933333-14.79111111 3.75466666l-14.79111111 42.43911111c-9.216 26.624-26.16888889 53.81688889-50.176 80.55466667-1.59288889 1.70666667-3.41333333 2.16177778-4.66488889 2.27555556-1.25155555 0.11377778-3.18577778-0.11377778-4.89244445-1.70666667-1.59288889-1.36533333-2.38933333-3.41333333-2.27555555-5.46133333 4.20977778-68.49422222-16.27022222-145.74933333-61.09866667-229.83111112C561.26577778 124.01777778 509.72444445 69.51822222 445.32622222 31.51644445l-46.99022222-27.648c-6.144-3.64088889-13.99466667 1.13777778-13.65333333 8.30577777l2.50311111 54.61333333c1.70666667 37.31911111-2.61688889 70.31466667-12.85688889 97.73511112-12.51555555 33.56444445-30.49244445 64.73955555-53.47555556 92.72888888-16.15644445 19.56977778-34.24711111 37.20533333-54.04444444 52.45155556-47.90044445 36.75022222-87.38133333 84.65066667-114.11911111 138.24C125.72444445 502.10133333 111.50222222 562.74488889 111.50222222 623.50222222c0 53.70311111 10.58133333 105.69955555 31.51644445 154.73777778 20.25244445 47.21777778 49.152 89.77066667 85.90222222 126.17955555 36.864 36.40888889 79.64444445 65.08088889 127.31733333 84.992C405.61777778 1010.11911111 457.95555555 1020.58666667 512 1020.58666667s106.38222222-10.46755555 155.76177778-31.06133334c47.67288889-19.91111111 90.56711111-48.46933333 127.31733333-84.992 36.864-36.40888889 65.76355555-78.96177778 85.90222222-126.17955555 20.93511111-49.03822222 31.51644445-101.03466667 31.51644445-154.73777778 0-55.52355555-11.37777778-109.45422222-34.01955556-160.31288889z"},{viewBox:1024,path:"M968.20337778 20.11591112H705.44042667c-22.17301333 0-41.92483556 15.16430222-47.14951111 37.33731555C642.36202666 124.73685332 582.08711111 173.03324444 512 173.03324444s-130.36202666-48.29639112-146.29091556-115.58001777c-5.22467555-22.17301333-24.84906667-37.33731556-47.14951111-37.33731555H55.79662222c-30.96576 0-56.06968889 25.10392889-56.06968888 56.06968888v321.12639999c0 30.96576 25.10392889 56.06968889 56.06968888 56.06968889h95.57333334v494.43271112c0 30.96576 25.10392889 56.06968889 56.06968889 56.06968888h609.1207111c30.96576 0 56.06968889-25.10392889 56.06968889-56.06968888V453.38168888h95.57333334c30.96576 0 56.06968889-25.10392889 56.06968888-56.06968889V76.1856c0-30.96576-25.10392889-56.06968889-56.06968888-56.06968888z"},{viewBox:1024,path:"M980.94648889 239.80714666H523.46880001L373.99210666 96.82944c-1.91146667-1.78403556-4.46008889-2.80348444-7.00871111-2.80348445H43.05351111c-22.55530667 0-40.77795555 18.22264888-40.77795555 40.77795557v754.39217776c0 22.55530667 18.22264888 40.77795555 40.77795555 40.77795557h937.89297778c22.55530667 0 40.77795555-18.22264888 40.77795555-40.77795557V280.58510222c0-22.55530667-18.22264888-40.77795555-40.77795555-40.77795556z"},{viewBox:1024,path:"M972.60904597 164.57058577L841.30587843 33.39070759c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480282-29.3428675-26.75379095 0-51.90482023 10.47959553-70.76809219 29.3428675L558.60337778 174.68031322c-18.86327195 18.86327195-29.34286748 44.1375906-29.34286749 70.64480283 0 26.75379095 10.47959553 51.90482023 29.34286749 70.76809218l103.31648301 103.31648302c-24.28800376 53.50758189-57.69942011 101.59043198-99.24793416 143.13894603-41.42522469 41.67180341-89.63136414 75.08321976-143.13894603 99.61780223L316.21649759 558.84995649c-18.86327195-18.86327195-44.1375906-29.34286748-70.64480283-29.34286747-26.75379095 0-51.90482023 10.47959553-70.76809217 29.34286747L33.39070759 700.01627278c-18.86327195 18.86327195-29.34286748 44.1375906-29.3428675 70.76809217 0 26.75379095 10.47959553 51.90482023 29.3428675 70.76809219l131.05658883 131.05658883c30.08260365 30.205893 71.63111769 47.34311394 114.28923598 47.34311394 9.00012323 0 17.63037836-0.73973616 26.13734414-2.21920846 166.19405621-27.37023774 331.03192945-115.76870829 464.06114804-248.67463751C901.84095379 636.27567408 990.11613498 471.56109018 1017.85624079 304.87387654c8.38367642-50.91850535-8.50696579-103.31648302-45.24719482-140.30329077z"},{viewBox:1024,path:"M910.60451556 640.96028445c-20.38897778-65.49959112-43.83630221-120.54983112-79.89930667-210.64362666C836.31217778 193.67708444 737.93535999 2.27555556 511.36284444 2.27555556 282.24170667 2.27555556 186.03121778 197.50001778 192.14791111 430.31665779c-36.19043555 90.22122667-59.51032888 144.88917333-79.89930667 210.64362666-43.32657778 139.53706668-29.30915556 197.26336001-18.60494222 198.53767111 22.9376 2.80348444 89.32920888-105.00323556 89.32920889-105.00323556 0 62.44124445 32.11264001 143.86972444 101.69002667 202.61546667-33.64181333 10.32192-109.20846222 38.10190221-91.24067556 68.55793777 14.52714667 24.59420444 250.01984 15.67402668 317.94062222 8.02816 67.92078222 7.64586667 303.41347556 16.56604444 317.94062223-8.02816 17.96778667-30.32860444-57.72629333-58.23601779-91.24067555-68.55793777 69.57738667-58.87317334 101.69002667-140.30165333 101.69002667-202.61546667 0 0 66.39160889 107.80672 89.32920888 105.00323556 10.83164445-1.40174222 24.84906667-59.12803556-18.47751111-198.53767111z"},{viewBox:1024,path:"M1016.86992592 199.24764445c-37.13706667 16.01991111-77.55093333 27.54939259-119.17842962 32.03982222 42.96248889-25.60758518 75.60912592-66.02145185 91.02222222-114.08118519-39.68568889 23.66577778-84.58998518 41.02068148-131.31472593 50.00154074C819.53374815 126.79395555 765.76995555 101.79318518 706.18074075 101.79318518c-114.688 0-206.92385185 92.96402963-206.92385186 207.04521482 0 16.01991111 1.94180741 32.03982222 5.09724444 47.45291852-171.72859259-8.98085925-324.88865185-91.02222222-426.71217778-216.63288889-17.96171852 30.82619259-28.15620741 66.02145185-28.1562074 104.49351112 0 71.84687408 36.53025185 135.19834075 92.23585185 172.45677036-33.98162963-1.33499259-66.02145185-10.92266667-93.57084445-26.33576296v2.54862222c0 100.6098963 71.1186963 183.98625185 165.90317037 203.1616-17.3549037 4.49042963-35.92343703 7.03905185-54.49197037 7.03905185-13.47128889 0-26.2144-1.33499259-39.07887407-3.15543704C146.69748148 681.90814815 223.03478518 741.49736297 313.93564445 743.43917037c-71.1186963 55.7056-160.19911111 88.4736-256.9253926 88.4736-17.3549037 0-33.37481482-0.60681482-50.00154074-2.54862222C98.75911111 888.22518518 207.62168889 922.20681482 324.85831111 922.20681482 705.45256297 922.20681482 913.71140741 606.90583703 913.71140741 333.23235555c0-8.98085925 0-17.96171852-0.60681482-26.94257777 40.2925037-29.4912 75.60912592-66.02145185 103.76533333-107.04213333z"},{viewBox:1024,path:"M917.96720197 1.08889505H106.03279803C53.56084718 1.08889505 9.37393998 45.27580225 9.37393998 97.74775309v5.52336372c0 19.33177108 8.28504494 41.42522469 22.0934536 55.23363205l331.40179753 392.15879462v325.87843379c0 16.57008987 8.28504494 30.37849854 22.09345359 35.90186098l209.88780469 104.94390299 2.76168121 2.76168121c27.61681602 11.04672615 55.23363335-8.28504494 55.23363335-38.66354218V550.66354348l331.40179753-392.15879462c35.90186097-41.42522469 30.37849854-102.18222047-11.04672616-135.32240022-11.04672615-13.80840865-33.14017975-22.0934536-55.23363335-22.09345359z"},{viewBox:1024,path:"M491.70164031 97.48884502a25.89076502 25.89076502 0 0 1 40.59671938 0L745.66415762 367.01171317a25.89076502 25.89076502 0 0 0 30.49932208 7.72839349l208.00640948-89.14190458a25.89076502 25.89076502 0 0 1 35.56096592 29.06238339l-115.18801541 554.96855704A103.56306132 103.56306132 0 0 1 803.14165689 952.14301275H220.85834311a103.56306132 103.56306132 0 0 1-101.4011828-82.51387024l-115.18801541-554.96855704a25.89076502 25.89076502 0 0 1 35.54802012-29.06238339l208.01935528 89.14190458a25.89076502 25.89076502 0 0 0 30.49932208-7.72839349l213.36579793-269.52286815z"},{viewBox:1024,path:"M643.02466884 387.7801525c19.85376751-88.69205333 33.718272-152.84087467 41.61900049-192.57389433C704.52292267 95.17283515 652.90057916 2.27555515 550.58614084 2.27555515c-92.26012484 0-138.59407685 45.84971417-165.91530666 137.49816969l-0.70087152 2.67605334c-16.40038399 74.13942085-41.47882668 131.61085116-74.6746315 172.73287031a189.06953915 189.06953915 0 0 1-143.04142182 70.44391902l-26.17434983 0.5606965C77.66380049 387.52529067 27.76177817 438.90551468 27.76177817 501.84374084V881.55022182c0 77.4144 62.25009818 140.17422182 139.05282766 140.17422303h492.82707951c101.23127467 0 191.59267516-63.995904 225.93535999-159.98976l102.37815468-286.22301868c26.04691951-72.82688-11.39234134-153.15945284-83.63303784-179.42300483a138.04612267 138.04612267 0 0 0-47.17499733-8.30850884H643.02466884z"},{viewBox:1024,path:"M512 512c140.82958222 0 254.86222222-114.03264 254.86222222-254.86222222S652.82958222 2.27555555 512 2.27555555a254.78940445 254.78940445 0 0 0-254.86222222 254.86222223C257.13777778 397.96736 371.17041778 512 512 512z m0 72.81777778c-170.10232889 0-509.72444445 97.57582222-509.72444445 291.27111111v145.63555556h1019.4488889v-145.63555556c0-193.69528889-339.62211555-291.27111111-509.72444445-291.27111111z"},{viewBox:1024,path:"M1019.81297778 564.50161779l-138.89991111-472.51456c-8.66531556-25.99594668-29.43658667-43.45400889-57.21656889-43.45400891s-50.33528889 15.67402668-59.00060446 41.66997334l-92.00526221 274.48661334H351.69166222L259.6864 90.33045333c-8.66531556-25.99594668-31.22062222-41.66997333-59.00060444-41.66997332s-50.33528889 17.33063112-57.2165689 43.45400887L4.69674667 564.50161779c-5.22467555 17.33063112 1.78403556 36.44529778 15.67402667 46.89464887l491.11950221 368.27591113 492.77610666-368.27591113c13.76256-10.32192 20.77127111-29.43658667 15.54659557-46.89464887z"},{viewBox:1024,path:"M927.78951111 340.39277037c-12.01493333-47.81700741 12.01493333-124.03294815 89.08041481-150.97552592l-82.40545184-4.36906667s-31.19028148-109.22666667-174.27721483-118.9357037c-143.08693333-9.8304-236.65777778-3.64088889-236.65777777-3.6408889s106.07122963 67.47780741 63.5941926 187.74850371c-31.06891852 63.71555555-79.85682963 116.02299259-132.04290371 175.61220741-1.57771852 1.57771852-3.03407408 3.15543703-4.2477037 4.49042962C278.25493333 624.86755555 7.13007408 934.34311111 7.13007408 934.34311111c298.43152592 78.15774815 498.43768889-7.64586667 616.76657777-110.56165926 24.87940741-0.24272592 43.5693037-0.36408889 56.19105185-0.36408888 164.8109037 0 304.13558518-142.72284445 298.43152593-301.4656-3.88361482-109.1053037-38.71478518-133.74198518-50.72971852-181.5589926z"}]}],hr=Object(j["defineComponent"])({name:"shape-pool",setup:function(e,t){var n=t.emit,o=jr,c=function(e){n("select",e)};return{shapeList:o,selectShape:c}}});n("3041");hr.render=Or,hr.__scopeId="data-v-5aabd717";var gr=hr,yr=Object(j["withScopeId"])("data-v-08f7cf5a");Object(j["pushScopeId"])("data-v-08f7cf5a");var kr={class:"line-pool"};Object(j["popScopeId"])();var Er=yr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",kr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"line-item",key:n},[Object(j["createVNode"])("div",{class:"line-content",onClick:function(n){return e.selectLine(t)}},[Object(j["createVNode"])(l,{overflow:"visible",width:"20",height:"20"},{default:yr((function(){return[Object(j["createVNode"])("defs",null,[t.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,class:"line-marker",id:"preset-line-".concat(n),position:"start",type:t.points[0],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0),t.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"line-marker",id:"preset-line-".concat(n),position:"end",type:t.points[1],color:"currentColor",baseSize:2},null,8,["id","type"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{class:"line-path",d:t.path,stroke:"currentColor",fill:"none","stroke-width":"2","stroke-dasharray":"solid"===t.style?"0, 0":"4, 1","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":t.points[0]?"url(#".concat("preset-line-".concat(n),"-",t.points[0],"-start)"):"","marker-end":t.points[1]?"url(#".concat("preset-line-".concat(n),"-",t.points[1],"-end)"):""},null,8,["d","stroke-dasharray","marker-start","marker-end"])]})),_:2},1024)],8,["onClick"])])})),128))])})),Ir=[{path:"M0,0 L20,20",style:"solid",points:["",""]},{path:"M0,0 L20,20",style:"dashed",points:["",""]},{path:"M0,0 L20,20",style:"solid",points:["","arrow"]},{path:"M0,0 L20,20",style:"dashed",points:["","arrow"]},{path:"M0,0 L20,20",style:"solid",points:["","dot"]}],Sr=Object(j["defineComponent"])({name:"line-pool",components:{LinePointMarker:ic},setup:function(e,t){var n=t.emit,o=Ir,c=function(e){n("select",e)};return{lineList:o,selectLine:c}}});n("b01f");Sr.render=Er,Sr.__scopeId="data-v-08f7cf5a";var Cr=Sr,Nr=Object(j["withScopeId"])("data-v-58ced0dd");Object(j["pushScopeId"])("data-v-58ced0dd");var xr={class:"chart-pool"};Object(j["popScopeId"])();var Lr=Nr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconChartLine"),l=Object(j["resolveComponent"])("IconChartHistogram"),i=Object(j["resolveComponent"])("IconChartProportion");return Object(j["openBlock"])(),Object(j["createBlock"])("ul",xr,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.chartList,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("li",{class:"chart-item",key:n},[Object(j["createVNode"])("div",{class:"chart-content",onClick:function(n){return e.selectChart(t)}},["line"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,size:"24"})):"bar"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,size:"24"})):"pie"===t?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:2,size:"24"})):Object(j["createCommentVNode"])("",!0)],8,["onClick"])])})),128))])})),Tr=Object(j["defineComponent"])({name:"chart-pool",setup:function(e,t){var n=t.emit,o=["bar","line","pie"],c=function(e){n("select",e)};return{chartList:o,selectChart:c}}});n("d091");Tr.render=Lr,Tr.__scopeId="data-v-58ced0dd";var wr=Tr,Vr=Object(j["withScopeId"])("data-v-576c614c");Object(j["pushScopeId"])("data-v-576c614c");var _r={class:"table-generator"},Br={class:"title"},Mr={class:"lef"},Dr={key:1,class:"custom"},Ar={class:"row"},Pr=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"行数:",-1),Rr={class:"row"},Fr=Object(j["createVNode"])("div",{class:"label",style:{flex:"1"}},"列数:",-1),Hr={class:"btns"},zr=Object(j["createTextVNode"])("取消"),Ur=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var Gr=Vr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("InputNumber"),l=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",_r,[Object(j["createVNode"])("div",Br,[Object(j["createVNode"])("div",Mr,"表格 "+Object(j["toDisplayString"])(e.endCell.length?"".concat(e.endCell[0]," x ").concat(e.endCell[1]):""),1),Object(j["createVNode"])("div",{class:"right",onClick:t[1]||(t[1]=function(t){return e.isCustom=!e.isCustom})},Object(j["toDisplayString"])(e.isCustom?"返回":"自定义"),1)]),e.isCustom?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Dr,[Object(j["createVNode"])("div",Ar,[Pr,Object(j["createVNode"])(r,{min:1,max:20,value:e.customRow,"onUpdate:value":t[4]||(t[4]=function(t){return e.customRow=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Rr,[Fr,Object(j["createVNode"])(r,{min:1,max:20,value:e.customCol,"onUpdate:value":t[5]||(t[5]=function(t){return e.customCol=t}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Hr,[Object(j["createVNode"])(l,{class:"btn",onClick:t[6]||(t[6]=function(t){return e.close()})},{default:Vr((function(){return[zr]})),_:1}),Object(j["createVNode"])(l,{class:"btn",type:"primary",onClick:t[7]||(t[7]=function(t){return e.insertCustomTable()})},{default:Vr((function(){return[Ur]})),_:1})])])):(Object(j["openBlock"])(),Object(j["createBlock"])("table",{key:0,onMouseleave:t[2]||(t[2]=function(t){return e.endCell=[]}),onClick:t[3]||(t[3]=function(t){return e.handleClickTable()})},[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(10,(function(n){return Object(j["createVNode"])("td",{onMouseenter:function(o){return e.endCell=[t,n]},key:n},[Object(j["createVNode"])("div",{class:["cell",{active:e.endCell.length&&t<=e.endCell[0]&&n<=e.endCell[1]}]},null,2)],40,["onMouseenter"])})),64))])})),64))])],32))])})),qr=Object(j["defineComponent"])({name:"table-generator",setup:function(e,t){var n=t.emit,o=Object(j["ref"])([]),c=Object(j["ref"])(3),a=Object(j["ref"])(3),r=Object(j["ref"])(!1),l=function(){if(o.value.length){var e=Object(on["a"])(o.value,2),t=e[0],c=e[1];n("insert",{row:t,col:c})}},i=function(){return c.value<1||c.value>20||a.value<1||a.value>20?re["a"].warning("行数/列数必须在0~20之间!"):(n("insert",{row:c.value,col:a.value}),void(r.value=!1))},u=function(){n("close"),r.value=!1};return{endCell:o,customRow:c,customCol:a,handleClickTable:l,insertCustomTable:i,isCustom:r,close:u}}});n("b61d");qr.render=Gr,qr.__scopeId="data-v-576c614c";var Wr=qr,Xr=Object(j["defineComponent"])({name:"canvas-tool",components:{ShapePool:gr,LinePool:Cr,ChartPool:wr,TableGenerator:Wr},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.canvasScale})),n=Object(j["computed"])((function(){return e.getters.canUndo})),o=Object(j["computed"])((function(){return e.getters.canRedo})),c=Object(j["computed"])((function(){return parseInt(100*t.value+"")+"%"})),a=qe(),r=a.scaleCanvas,l=a.setCanvasPercentage,i=Ce(),u=i.redo,d=i.undo,s=we(),f=s.createImageElement,p=s.createChartElement,b=s.createTableElement,m=function(e){var t=e[0];t&&xe(t).then((function(e){return f(e)}))},v=Object(j["ref"])(!1),O=Object(j["ref"])(!1),h=Object(j["ref"])(!1),y=Object(j["ref"])(!1),k=function(){e.commit(g.SET_CREATING_ELEMENT,{type:"text",data:null})},E=function(t){e.commit(g.SET_CREATING_ELEMENT,{type:"shape",data:t}),v.value=!1},I=function(t){e.commit(g.SET_CREATING_ELEMENT,{type:"line",data:t}),O.value=!1};return{scaleCanvas:r,setCanvasPercentage:l,canvasScalePercentage:c,canUndo:n,canRedo:o,redo:u,undo:d,insertImageElement:m,shapePoolVisible:v,linePoolVisible:O,chartPoolVisible:h,tableGeneratorVisible:y,drawText:k,drawShape:E,drawLine:I,createChartElement:p,createTableElement:b}}});n("70de");Xr.render=fr,Xr.__scopeId="data-v-236c5f54";var Yr=Xr,Zr=Object(j["withScopeId"])("data-v-1c5800c2");Object(j["pushScopeId"])("data-v-1c5800c2");var Jr=Object(j["createTextVNode"])(" 添加幻灯片"),Kr={class:"slide-index"},$r={class:"thumbnail"};Object(j["popScopeId"])();var Qr=Zr((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconPlus"),l=Object(j["resolveComponent"])("ThumbnailSlide"),i=Object(j["resolveComponent"])("Draggable"),u=Object(j["resolveDirective"])("contextmenu"),d=Object(j["resolveDirective"])("click-outside");return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnails",onMousedown:t[2]||(t[2]=function(){return e.setThumbnailsFocus(!0)})},[Object(j["createVNode"])("div",{class:"add-slide",onClick:t[1]||(t[1]=function(t){return e.createSlide()})},[Object(j["createVNode"])(r),Jr]),Object(j["createVNode"])(i,{class:"thumbnail-list",modelValue:e.slides,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Zr((function(t){var n=t.element,o=t.index;return[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:["thumbnail-wrapper",{active:e.slideIndex===o}],onMousedown:function(t){return e.changSlideIndex(o)}},[Object(j["createVNode"])("div",Kr,Object(j["toDisplayString"])(e.fillDigit(o+1,2)),1),Object(j["createVNode"])("div",$r,[Object(j["createVNode"])(l,{slide:n,size:120},null,8,["slide"])])],42,["onMousedown"]),[[u,e.contextmenusThumbnailItem]])]})),_:1},8,["modelValue","onEnd"])],544)),[[d,function(){return e.setThumbnailsFocus(!1)}],[u,e.contextmenusThumbnails]])})),el=n("b76a"),tl=n.n(el),nl=Object(j["withScopeId"])("data-v-5332dba4"),ol=nl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ThumbnailElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"thumbnail-slide",style:{width:e.size+"px",height:e.size*e.VIEWPORT_ASPECT_RATIO+"px"}},[Object(j["createVNode"])("div",{class:"elements-wrapper",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.VIEWPORT_ASPECT_RATIO+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:e.backgroundStyle},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.id,elementInfo:e,elementIndex:t+1},null,8,["elementInfo","elementIndex"])})),128))],4)],4)}));function cl(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element",style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo,target:"thumbnail"},null,8,["elementInfo"]))],4)}var al=Object(j["withScopeId"])("data-v-1285108e"),rl=al((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ImageOutline");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-image",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(r,{elementInfo:e.elementInfo},null,8,["elementInfo"]),Object(j["createVNode"])("div",{class:"image-content",style:{clipPath:e.clipShape.style}},[Object(j["createVNode"])("img",{src:e.elementInfo.src,draggable:!1,style:{top:e.imgPosition.top,left:e.imgPosition.left,width:e.imgPosition.width,height:e.imgPosition.height,filter:e.filter},alt:""},null,12,["src"])],4)],4)],4)})),ll=Object(j["defineComponent"])({name:"base-element-image",components:{ImageOutline:Bn},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=pn(t),o=n.shadowStyle,c=Object(j["computed"])((function(){return e.elementInfo.flip})),a=bn(c),r=a.flipStyle,l=Object(j["computed"])((function(){return e.elementInfo.clip})),i=vn(l),u=i.clipShape,d=i.imgPosition,s=Object(j["computed"])((function(){return e.elementInfo.filters})),f=On(s),p=f.filter;return{imgPosition:d,filter:p,flipStyle:r,shadowStyle:o,clipShape:u}}});n("760a");ll.render=rl,ll.__scopeId="data-v-1285108e";var il=ll,ul=Object(j["withScopeId"])("data-v-fc2d45e0"),dl=ul((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-text",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill,opacity:e.elementInfo.opacity,textShadow:e.shadowStyle,lineHeight:e.elementInfo.lineHeight,letterSpacing:(e.elementInfo.wordSpace||0)+"px"}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])("div",{class:"text ProseMirror-static",innerHTML:e.elementInfo.content},null,8,["innerHTML"])],4)],4)})),sl=Object(j["defineComponent"])({name:"base-element-text",components:{ElementOutline:qo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=pn(t),o=n.shadowStyle;return{shadowStyle:o}}});n("beaa");sl.render=dl,sl.__scopeId="data-v-fc2d45e0";var fl=sl,pl=Object(j["withScopeId"])("data-v-d0a0fd1c");Object(j["pushScopeId"])("data-v-d0a0fd1c");var bl={key:0};Object(j["popScopeId"])();var ml=pl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("GradientDefs"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-shape",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px",transform:"rotate(".concat(e.elementInfo.rotate,"deg)")}},[Object(j["createVNode"])("div",{class:"element-content",style:{opacity:e.elementInfo.opacity,filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):"",transform:e.flipStyle}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.elementInfo.width,height:e.elementInfo.height},{default:pl((function(){return[e.elementInfo.gradient?(Object(j["openBlock"])(),Object(j["createBlock"])("defs",bl,[Object(j["createVNode"])(r,{id:"base-gradient-".concat(e.elementInfo.id),type:e.elementInfo.gradient.type,color1:e.elementInfo.gradient.color[0],color2:e.elementInfo.gradient.color[1],rotate:e.elementInfo.gradient.rotate},null,8,["id","type","color1","color2","rotate"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("g",{transform:"scale(".concat(e.elementInfo.width/e.elementInfo.viewBox,", ").concat(e.elementInfo.height/e.elementInfo.viewBox,") translate(0,0) matrix(1,0,0,1,0,0)")},[Object(j["createVNode"])("path",{"vector-effect":"non-scaling-stroke","stroke-linecap":"butt","stroke-miterlimit":"8","stroke-linejoin":"",d:e.elementInfo.path,fill:e.elementInfo.gradient?"url(#base-gradient-".concat(e.elementInfo.id,")"):e.elementInfo.fill,stroke:e.outlineColor,"stroke-width":e.outlineWidth,"stroke-dasharray":"dashed"===e.outlineStyle?"10 5":"0 0"},null,8,["d","fill","stroke","stroke-width","stroke-dasharray"])],8,["transform"])]})),_:1},8,["width","height"])],4)],4)})),vl=Object(j["defineComponent"])({name:"base-element-shape",components:{GradientDefs:Qo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.outline})),n=kn(t),o=n.outlineWidth,c=n.outlineStyle,a=n.outlineColor,r=Object(j["computed"])((function(){return e.elementInfo.shadow})),l=pn(r),i=l.shadowStyle,u=Object(j["computed"])((function(){return e.elementInfo.flip})),d=bn(u),s=d.flipStyle;return{shadowStyle:i,outlineWidth:o,outlineStyle:c,outlineColor:a,flipStyle:s}}});n("2251");vl.render=ml,vl.__scopeId="data-v-d0a0fd1c";var Ol=vl,jl=Object(j["withScopeId"])("data-v-54a876d6"),hl=jl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("LinePointMarker"),l=Object(j["resolveComponent"])("SvgWrapper");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"editable-element-shape",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{filter:e.shadowStyle?"drop-shadow(".concat(e.shadowStyle,")"):""}},[Object(j["createVNode"])(l,{overflow:"visible",width:e.svgWidth,height:e.svgHeight},{default:jl((function(){return[Object(j["createVNode"])("defs",null,[e.elementInfo.points[0]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,id:e.elementInfo.id,position:"start",type:e.elementInfo.points[0],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0),e.elementInfo.points[1]?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,id:e.elementInfo.id,position:"end",type:e.elementInfo.points[1],color:e.elementInfo.color,baseSize:e.elementInfo.width},null,8,["id","type","color","baseSize"])):Object(j["createCommentVNode"])("",!0)]),Object(j["createVNode"])("path",{d:e.path,stroke:e.elementInfo.color,"stroke-width":e.elementInfo.width,"stroke-dasharray":e.lineDashArray,fill:"none","stroke-linecap":"","stroke-linejoin":"","stroke-miterlimit":"","marker-start":e.elementInfo.points[0]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[0],"-start)"):"","marker-end":e.elementInfo.points[1]?"url(#".concat(e.elementInfo.id,"-").concat(e.elementInfo.points[1],"-end)"):""},null,8,["d","stroke","stroke-width","stroke-dasharray","marker-start","marker-end"])]})),_:1},8,["width","height"])],4)],4)})),gl=Object(j["defineComponent"])({name:"editable-element-shape",components:{LinePointMarker:ic},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.elementInfo.shadow})),n=pn(t),o=n.shadowStyle,c=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[0]-e.elementInfo.end[0]);return t<24?24:t})),a=Object(j["computed"])((function(){var t=Math.abs(e.elementInfo.start[1]-e.elementInfo.end[1]);return t<24?24:t})),r=Object(j["computed"])((function(){return"dashed"===e.elementInfo.style?"10, 5":"0, 0"})),l=Object(j["computed"])((function(){var t=e.elementInfo.start.join(","),n=e.elementInfo.end.join(",");return"M".concat(t," L").concat(n)}));return{shadowStyle:o,svgWidth:c,svgHeight:a,lineDashArray:r,path:l}}});n("b959");gl.render=hl,gl.__scopeId="data-v-54a876d6";var yl=gl,kl=Object(j["withScopeId"])("data-v-b4562eca"),El=kl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("IconChartLine"),i=Object(j["resolveComponent"])("IconChartHistogram"),u=Object(j["resolveComponent"])("IconChartProportion");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-chart",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),"line"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:0,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):"bar"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):"pie"===e.elementInfo.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(u,{key:2,fill:e.elementInfo.themeColor,strokeWidth:"2",size:e.size},null,8,["fill","size"])):Object(j["createCommentVNode"])("",!0)],4)],4)})),Il=Object(j["defineComponent"])({name:"base-element-chart",components:{ElementOutline:qo},props:{elementInfo:{type:Object,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return Math.min(e.elementInfo.width,e.elementInfo.height)}));return{size:t}}});n("3deb");Il.render=El,Il.__scopeId="data-v-b4562eca";var Sl=Il,Cl=Object(j["withScopeId"])("data-v-dea016ac");Object(j["pushScopeId"])("data-v-dea016ac");var Nl={class:"element-content"};Object(j["popScopeId"])();var xl=Cl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("StaticTable");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"base-element-table",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px"}},[Object(j["createVNode"])("div",Nl,[Object(j["createVNode"])(r,{data:e.elementInfo.data,width:e.elementInfo.width,colWidths:e.elementInfo.colWidths,outline:e.elementInfo.outline,theme:e.elementInfo.theme},null,8,["data","width","colWidths","outline","theme"])])],4)})),Ll=Object(j["withScopeId"])("data-v-01f791ba"),Tl=Ll((function(e,t,n,o,c,a){var r,l,i,u,d;return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"static-table",style:{width:e.totalWidth+"px"}},[Object(j["createVNode"])("table",{class:{theme:e.theme,"row-header":null===(r=e.theme)||void 0===r?void 0:r.rowHeader,"row-footer":null===(l=e.theme)||void 0===l?void 0:l.rowFooter,"col-header":null===(i=e.theme)||void 0===i?void 0:i.colHeader,"col-footer":null===(u=e.theme)||void 0===u?void 0:u.colFooter},style:"--themeColor: ".concat(null===(d=e.theme)||void 0===d?void 0:d.color,"; --subThemeColor1: ").concat(e.subThemeColor[0],"; --subThemeColor2: ").concat(e.subThemeColor[1])},[Object(j["createVNode"])("colgroup",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.colSizeList,(function(e,t){return Object(j["openBlock"])(),Object(j["createBlock"])("col",{span:"1",key:t,width:e},null,8,["width"])})),128))]),Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.data,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("tr",{key:n},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t,o){return Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])("td",{class:"cell",style:Object(P["a"])({borderStyle:e.outline.style,borderColor:e.outline.color,borderWidth:e.outline.width+"px"},e.getTextStyle(t.style)),key:t.id,rowspan:t.rowspan,colspan:t.colspan},[Object(j["createVNode"])("div",{class:"cell-text",innerHTML:t.text},null,8,["innerHTML"])],12,["rowspan","colspan"])),[[j["vShow"],!e.hideCells.includes("".concat(n,"_").concat(o))]])})),128))])})),128))])],6)],4)})),wl=Object(j["defineComponent"])({name:"static-table",props:{data:{type:Array,required:!0},width:{type:Number,required:!0},colWidths:{type:Array,required:!0},outline:{type:Object,required:!0},theme:{type:Object},editable:{type:Boolean,default:!0}},setup:function(e){var t=Object(j["ref"])([]),n=Object(j["computed"])((function(){return t.value.reduce((function(e,t){return e+t}))}));Object(j["watch"])([function(){return e.colWidths},function(){return e.width}],(function(){t.value=e.colWidths.map((function(t){return t*e.width}))}),{immediate:!0});var o=Object(j["computed"])((function(){return e.data})),c=_c(o),a=c.hideCells,r=Object(j["computed"])((function(){return e.theme})),l=Bc(r),i=l.subThemeColor;return{colSizeList:t,totalWidth:n,hideCells:a,getTextStyle:Vc,subThemeColor:i}}});n("1726");wl.render=Tl,wl.__scopeId="data-v-01f791ba";var Vl=wl,_l=Object(j["defineComponent"])({name:"base-element-table",components:{StaticTable:Vl},props:{elementInfo:{type:Object,required:!0}}});n("ba04");_l.render=xl,_l.__scopeId="data-v-dea016ac";var Bl=_l,Ml=Object(j["defineComponent"])({name:"base-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0}},setup:function(e){var t=X(),n=Object(j["computed"])((function(){return t.state.theme})),o=Object(j["computed"])((function(){var t,n=(t={},Object(C["a"])(t,rn.IMAGE,il),Object(C["a"])(t,rn.TEXT,fl),Object(C["a"])(t,rn.SHAPE,Ol),Object(C["a"])(t,rn.LINE,yl),Object(C["a"])(t,rn.CHART,Sl),Object(C["a"])(t,rn.TABLE,Bl),t);return n[e.elementInfo.type]||null}));return{currentElementComponent:o,theme:n}}});Ml.render=cl;var Dl=Ml,Al=Object(j["defineComponent"])({name:"thumbnail-slide",components:{ThumbnailElement:Dl},props:{slide:{type:Object,required:!0},size:{type:Number,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){return e.slide.background})),n=ea(t),o=n.backgroundStyle,c=Object(j["computed"])((function(){return e.size/Le}));return{scale:c,backgroundStyle:o,VIEWPORT_SIZE:Le,VIEWPORT_ASPECT_RATIO:Te}}});n("9267");Al.render=ol,Al.__scopeId="data-v-5332dba4";var Pl=Al,Rl=Object(j["defineComponent"])({name:"thumbnails",components:{Draggable:tl.a,ThumbnailSlide:Pl},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=_e(),c=o.copySlide,a=o.pasteSlide,r=o.createSlide,l=o.copyAndPasteSlide,i=o.deleteSlide,u=o.cutSlide,d=function(t){e.commit(g.SET_ACTIVE_ELEMENT_ID_LIST,[]),n.value!==t&&e.commit(g.UPDATE_SLIDE_INDEX,t)},s=Object(j["computed"])((function(){return e.state.thumbnailsFocus})),f=function(t){s.value!==t&&e.commit(g.SET_THUMBNAILS_FOCUS,t)},p=function(n){var o=n.newIndex,c=n.oldIndex;if(c!==o){var a=JSON.parse(JSON.stringify(t.value)),r=a[c];a.splice(c,1),a.splice(o,0,r),e.commit(g.SET_SLIDES,a),e.commit(g.UPDATE_SLIDE_INDEX,o)}},b=Ge(),m=b.enterScreening,v=function(){return[{text:"粘贴",subText:"Ctrl + V",handler:a},{text:"新建页面",subText:"Enter",handler:r},{text:"开始演示",subText:"Ctrl+F",handler:m}]},O=function(){return[{text:"剪切",subText:"Ctrl + X",handler:u},{text:"复制",subText:"Ctrl + C",handler:c},{text:"粘贴",subText:"Ctrl + V",handler:a},{divider:!0},{text:"新建页面",subText:"Enter",handler:r},{text:"复制页面",subText:"Ctrl + D",handler:l},{text:"删除页面",subText:"Delete",handler:i},{divider:!0},{text:"从当前页演示",subText:"Ctrl+F",handler:m}]};return{setThumbnailsFocus:f,slides:t,slideIndex:n,createSlide:r,changSlideIndex:d,contextmenusThumbnails:v,contextmenusThumbnailItem:O,fillDigit:de,handleDragEnd:p}}});n("273d");Rl.render=Qr,Rl.__scopeId="data-v-1c5800c2";var Fl=Rl,Hl=Object(j["withScopeId"])("data-v-58d77c92");Object(j["pushScopeId"])("data-v-58d77c92");var zl={class:"toolbar"},Ul={class:"tabs"},Gl={class:"content"};Object(j["popScopeId"])();var ql=Hl((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",zl,[Object(j["createVNode"])("div",Ul,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.currentTabs,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["tab",{active:t.value===e.toolbarState}],key:t.value,onClick:function(n){return e.setToolbarState(t.value)}},Object(j["toDisplayString"])(t.label),11,["onClick"])})),128))]),Object(j["createVNode"])("div",Gl,[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentPanelComponent)))])])})),Wl={EL_ANIMATION:"elAnimation",EL_STYLE:"elStyle",EL_POSITION:"elPosition",SLIDE_STYLE:"slideStyle",SLIDE_ANIMATION:"slideAnimation",MULTI_POSITION:"multiPosition"},Xl={class:"element-style-panel"},Yl={key:0};function Zl(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Xl,[e.currentPanelComponent?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",Yl," 请先选中要编辑的元素 ")),e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentPanelComponent),{key:1})):Object(j["createCommentVNode"])("",!0)])}var Jl=Object(j["withScopeId"])("data-v-43fccffc");Object(j["pushScopeId"])("data-v-43fccffc");var Kl={class:"text-style-panel"},$l={class:"preset-style"},Ql={class:"row"},ei=Object(j["createVNode"])("div",{style:{flex:"2"}},"行间距:",-1),ti={class:"row"},ni=Object(j["createVNode"])("div",{style:{flex:"2"}},"字间距:",-1);Object(j["popScopeId"])();var oi=Jl((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Divider"),l=Object(j["resolveComponent"])("IconFontSize"),i=Object(j["resolveComponent"])("SelectOption"),u=Object(j["resolveComponent"])("SelectOptGroup"),d=Object(j["resolveComponent"])("Select"),s=Object(j["resolveComponent"])("IconAddText"),f=Object(j["resolveComponent"])("InputGroup"),p=Object(j["resolveComponent"])("ColorPicker"),b=Object(j["resolveComponent"])("IconText"),m=Object(j["resolveComponent"])("Button"),v=Object(j["resolveComponent"])("Tooltip"),O=Object(j["resolveComponent"])("Popover"),h=Object(j["resolveComponent"])("IconBackgroundColor"),g=Object(j["resolveComponent"])("IconFill"),y=Object(j["resolveComponent"])("ButtonGroup"),k=Object(j["resolveComponent"])("IconTextBold"),E=Object(j["resolveComponent"])("CheckboxButton"),I=Object(j["resolveComponent"])("IconTextItalic"),S=Object(j["resolveComponent"])("IconTextUnderline"),C=Object(j["resolveComponent"])("IconStrikethrough"),N=Object(j["resolveComponent"])("CheckboxButtonGroup"),x=Object(j["resolveComponent"])("IconUpOne"),L=Object(j["resolveComponent"])("IconDownOne"),T=Object(j["resolveComponent"])("IconCode"),w=Object(j["resolveComponent"])("IconQuote"),V=Object(j["resolveComponent"])("IconFormat"),_=Object(j["resolveComponent"])("IconAlignTextLeft"),B=Object(j["resolveComponent"])("RadioButton"),M=Object(j["resolveComponent"])("IconAlignTextCenter"),D=Object(j["resolveComponent"])("IconAlignTextRight"),A=Object(j["resolveComponent"])("RadioGroup"),P=Object(j["resolveComponent"])("IconList"),R=Object(j["resolveComponent"])("IconOrderedList"),F=Object(j["resolveComponent"])("IconRowHeight"),H=Object(j["resolveComponent"])("IconFullwidth"),z=Object(j["resolveComponent"])("ElementOutline"),U=Object(j["resolveComponent"])("ElementShadow"),G=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Kl,[Object(j["createVNode"])("div",$l,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetStyles,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"preset-style-item",key:t.label,style:t.style,onClick:function(n){return e.emitBatchRichTextCommand(t.cmd)}},Object(j["toDisplayString"])(t.label),13,["onClick"])})),128))]),Object(j["createVNode"])(r),Object(j["createVNode"])(f,{compact:"",class:"row"},{default:Jl((function(){return[Object(j["createVNode"])(d,{style:{flex:"3"},value:e.richTextAttrs.fontname,onChange:t[1]||(t[1]=function(t){return e.emitRichTextCommand("fontname",t)})},{suffixIcon:Jl((function(){return[Object(j["createVNode"])(l)]})),default:Jl((function(){return[Object(j["createVNode"])(u,{label:"系统字体"},{default:Jl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Jl((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(u,{label:"在线字体"},{default:Jl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e.value,value:e.value},{default:Jl((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"]),Object(j["createVNode"])(d,{style:{flex:"2"},value:e.richTextAttrs.fontsize,onChange:t[2]||(t[2]=function(t){return e.emitRichTextCommand("fontsize",t)})},{suffixIcon:Jl((function(){return[Object(j["createVNode"])(s)]})),default:Jl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Jl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(y,{class:"row"},{default:Jl((function(){return[Object(j["createVNode"])(O,{trigger:"click"},{content:Jl((function(){return[Object(j["createVNode"])(p,{modelValue:e.richTextAttrs.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.emitRichTextCommand("color",t)})},null,8,["modelValue"])]})),default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Jl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(b),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.richTextAttrs.color}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(O,{trigger:"click"},{content:Jl((function(){return[Object(j["createVNode"])(p,{modelValue:e.richTextAttrs.backcolor,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.emitRichTextCommand("backcolor",t)})},null,8,["modelValue"])]})),default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字高亮"},{default:Jl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(h),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.richTextAttrs.backcolor}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(O,{trigger:"click"},{content:Jl((function(){return[Object(j["createVNode"])(p,{modelValue:e.fill,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文本框填充"},{default:Jl((function(){return[Object(j["createVNode"])(m,{class:"text-color-btn",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(g),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.fill}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(N,{class:"row"},{default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.bold,onClick:t[6]||(t[6]=function(t){return e.emitRichTextCommand("bold")})},{default:Jl((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.em,onClick:t[7]||(t[7]=function(t){return e.emitRichTextCommand("em")})},{default:Jl((function(){return[Object(j["createVNode"])(I)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.underline,onClick:t[8]||(t[8]=function(t){return e.emitRichTextCommand("underline")})},{default:Jl((function(){return[Object(j["createVNode"])(S)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.strikethrough,onClick:t[9]||(t[9]=function(t){return e.emitRichTextCommand("strikethrough")})},{default:Jl((function(){return[Object(j["createVNode"])(C)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(N,{class:"row"},{default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上标"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.superscript,onClick:t[10]||(t[10]=function(t){return e.emitRichTextCommand("superscript")})},{default:Jl((function(){return[Object(j["createVNode"])(x)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下标"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.subscript,onClick:t[11]||(t[11]=function(t){return e.emitRichTextCommand("subscript")})},{default:Jl((function(){return[Object(j["createVNode"])(L)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"行内代码"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.code,onClick:t[12]||(t[12]=function(t){return e.emitRichTextCommand("code")})},{default:Jl((function(){return[Object(j["createVNode"])(T)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"引用"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.blockquote,onClick:t[13]||(t[13]=function(t){return e.emitRichTextCommand("blockquote")})},{default:Jl((function(){return[Object(j["createVNode"])(w)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"清除格式"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.emitRichTextCommand("clear")})},{default:Jl((function(){return[Object(j["createVNode"])(V)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(r),Object(j["createVNode"])(A,{class:"row","button-style":"solid",value:e.richTextAttrs.align,onChange:t[15]||(t[15]=function(t){return e.emitRichTextCommand("align",t.target.value)})},{default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Jl((function(){return[Object(j["createVNode"])(B,{value:"left",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(_)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Jl((function(){return[Object(j["createVNode"])(B,{value:"center",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(M)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Jl((function(){return[Object(j["createVNode"])(B,{value:"right",style:{flex:"1"}},{default:Jl((function(){return[Object(j["createVNode"])(D)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(N,{class:"row"},{default:Jl((function(){return[Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"项目符号"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.bulletList,onClick:t[16]||(t[16]=function(t){return e.emitRichTextCommand("bulletList")})},{default:Jl((function(){return[Object(j["createVNode"])(P)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(v,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"编号"},{default:Jl((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},checked:e.richTextAttrs.orderedList,onClick:t[17]||(t[17]=function(t){return e.emitRichTextCommand("orderedList")})},{default:Jl((function(){return[Object(j["createVNode"])(R)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(r),Object(j["createVNode"])("div",Ql,[ei,Object(j["createVNode"])(d,{style:{flex:"3"},value:e.lineHeight,onChange:t[18]||(t[18]=function(t){return e.updateLineHeight(t)})},{suffixIcon:Jl((function(){return[Object(j["createVNode"])(F)]})),default:Jl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.lineHeightOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Jl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e)+"倍",1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]),Object(j["createVNode"])("div",ti,[ni,Object(j["createVNode"])(d,{style:{flex:"3"},value:e.wordSpace,onChange:t[19]||(t[19]=function(t){return e.updateWordSpace(t)})},{suffixIcon:Jl((function(){return[Object(j["createVNode"])(H)]})),default:Jl((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.wordSpaceOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:e,value:e},{default:Jl((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e)+"px",1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]),Object(j["createVNode"])(r),Object(j["createVNode"])(z),Object(j["createVNode"])(r),Object(j["createVNode"])(U),Object(j["createVNode"])(r),Object(j["createVNode"])(G)])})),ci=Object(j["withScopeId"])("data-v-b884607e");Object(j["pushScopeId"])("data-v-b884607e");var ai={class:"element-opacity"},ri={class:"row"},li=Object(j["createVNode"])("div",{style:{flex:"2"}},"不透明度:",-1);Object(j["popScopeId"])();var ii=ci((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Slider");return Object(j["openBlock"])(),Object(j["createBlock"])("div",ai,[Object(j["createVNode"])("div",ri,[li,Object(j["createVNode"])(r,{min:0,max:1,step:.1,value:e.opacity,style:{flex:"3"},onChange:t[1]||(t[1]=function(t){return e.updateOpacity(t)})},null,8,["step","value"])])])})),ui=Object(j["defineComponent"])({name:"element-opacity",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])();Object(j["watch"])(t,(function(){t.value&&(n.value="opacity"in t.value&&void 0!==t.value.opacity?t.value.opacity:1)}),{deep:!0,immediate:!0});var o=Ce(),c=o.addHistorySnapshot,a=function(n){var o={opacity:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{opacity:n,updateOpacity:a}}});n("64c0");ui.render=ii,ui.__scopeId="data-v-b884607e";var di=ui,si=(n("c7cd"),Object(j["withScopeId"])("data-v-2d8ce9c0"));Object(j["pushScopeId"])("data-v-2d8ce9c0");var fi={class:"element-outline"},pi={key:0,class:"row"},bi=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用边框:",-1),mi={class:"switch-wrapper",style:{flex:"3"}},vi={class:"row"},Oi=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框样式:",-1),ji=Object(j["createTextVNode"])("实线边框"),hi=Object(j["createTextVNode"])("虚线边框"),gi={class:"row"},yi=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框颜色:",-1),ki={class:"row"},Ei=Object(j["createVNode"])("div",{style:{flex:"2"}},"边框粗细:",-1);Object(j["popScopeId"])();var Ii=si((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Switch"),l=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("Select"),u=Object(j["resolveComponent"])("ColorPicker"),d=Object(j["resolveComponent"])("ColorButton"),s=Object(j["resolveComponent"])("Popover"),f=Object(j["resolveComponent"])("InputNumber");return Object(j["openBlock"])(),Object(j["createBlock"])("div",fi,[e.fixed?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",pi,[bi,Object(j["createVNode"])("div",mi,[Object(j["createVNode"])(r,{checked:e.hasOutline,onChange:t[1]||(t[1]=function(t){return e.toggleOutline(t)})},null,8,["checked"])])])),e.hasOutline?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])("div",vi,[Oi,Object(j["createVNode"])(i,{style:{flex:"3"},value:e.outline.style,onChange:t[2]||(t[2]=function(t){return e.updateOutline({style:t})})},{default:si((function(){return[Object(j["createVNode"])(l,{value:"solid"},{default:si((function(){return[ji]})),_:1}),Object(j["createVNode"])(l,{value:"dashed"},{default:si((function(){return[hi]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",gi,[yi,Object(j["createVNode"])(s,{trigger:"click"},{content:si((function(){return[Object(j["createVNode"])(u,{modelValue:e.outline.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateOutline({color:t})})},null,8,["modelValue"])]})),default:si((function(){return[Object(j["createVNode"])(d,{color:e.outline.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",ki,[Ei,Object(j["createVNode"])(f,{value:e.outline.width,onChange:t[4]||(t[4]=function(t){return e.updateOutline({width:t})}),style:{flex:"3"}},null,8,["value"])])],64)):Object(j["createCommentVNode"])("",!0)])})),Si=Object(j["withScopeId"])("data-v-39016b60"),Ci=Si((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconPlatte"),l=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])(l,{class:"color-btn"},{default:Si((function(){return[Object(j["createVNode"])("div",{class:"color-block",style:{backgroundColor:n.color}},null,4),Object(j["createVNode"])(r,{class:"color-btn-icon"})]})),_:1})})),Ni={name:"color-button",props:{color:{type:String,required:!0}}};n("1401");Ni.render=Ci,Ni.__scopeId="data-v-39016b60";var xi=Ni,Li=Object(j["defineComponent"])({name:"element-outline",components:{ColorButton:xi},props:{fixed:{type:Boolean,default:!1}},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){t.value&&(n.value="outline"in t.value?t.value.outline:void 0,o.value=!!n.value)}),{deep:!0,immediate:!0});var c=Ce(),a=c.addHistorySnapshot,r=function(o){var c={outline:Object(P["a"])(Object(P["a"])({},n.value),o)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),a()},l=function(n){if(n){var o={outline:{width:2,color:"#000",style:"solid"}};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})}else e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"outline"});a()};return{outline:n,hasOutline:o,toggleOutline:l,updateOutline:r}}});n("7d4a");Li.render=Ii,Li.__scopeId="data-v-2d8ce9c0";var Ti=Li,wi=Object(j["withScopeId"])("data-v-5cca6474");Object(j["pushScopeId"])("data-v-5cca6474");var Vi={class:"element-shadow"},_i={class:"row"},Bi=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用阴影:",-1),Mi={class:"switch-wrapper",style:{flex:"3"}},Di={class:"row"},Ai=Object(j["createVNode"])("div",{style:{flex:"2"}},"水平阴影:",-1),Pi={class:"row"},Ri=Object(j["createVNode"])("div",{style:{flex:"2"}},"垂直阴影:",-1),Fi={class:"row"},Hi=Object(j["createVNode"])("div",{style:{flex:"2"}},"模糊距离:",-1),zi={class:"row"},Ui=Object(j["createVNode"])("div",{style:{flex:"2"}},"阴影颜色:",-1);Object(j["popScopeId"])();var Gi=wi((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Switch"),l=Object(j["resolveComponent"])("Slider"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Vi,[Object(j["createVNode"])("div",_i,[Bi,Object(j["createVNode"])("div",Mi,[Object(j["createVNode"])(r,{checked:e.hasShadow,onChange:t[1]||(t[1]=function(t){return e.toggleShadow(t)})},null,8,["checked"])])]),e.hasShadow?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Di,[Ai,Object(j["createVNode"])(l,{min:0,max:10,step:1,value:e.shadow.h,onChange:t[2]||(t[2]=function(t){return e.updateShadow({h:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Pi,[Ri,Object(j["createVNode"])(l,{min:0,max:10,step:1,value:e.shadow.v,onChange:t[3]||(t[3]=function(t){return e.updateShadow({v:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Fi,[Hi,Object(j["createVNode"])(l,{min:1,max:20,step:1,value:e.shadow.blur,onChange:t[4]||(t[4]=function(t){return e.updateShadow({blur:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",zi,[Ui,Object(j["createVNode"])(d,{trigger:"click"},{content:wi((function(){return[Object(j["createVNode"])(i,{modelValue:e.shadow.color,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateShadow({color:t})})},null,8,["modelValue"])]})),default:wi((function(){return[Object(j["createVNode"])(u,{color:e.shadow.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])})),qi=Object(j["defineComponent"])({name:"element-shadow",components:{ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){t.value&&(n.value="shadow"in t.value?t.value.shadow:void 0,o.value=!!n.value)}),{deep:!0,immediate:!0});var c=Ce(),a=c.addHistorySnapshot,r=function(o){var c={shadow:Object(P["a"])(Object(P["a"])({},n.value),o)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),a()},l=function(n){if(n){var o={shadow:{h:1,v:1,blur:2,color:"#000"}};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})}else e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"shadow"});a()};return{shadow:n,hasShadow:o,toggleShadow:l,updateShadow:r}}});n("c2a4");qi.render=Gi,qi.__scopeId="data-v-5cca6474";var Wi=qi,Xi=[{label:"大标题",style:{fontSize:"26px",fontWeight:700},cmd:[{command:"clear"},{command:"fontsize",value:"48px"},{command:"align",value:"center"},{command:"bold"}]},{label:"小标题",style:{fontSize:"22px",fontWeight:700},cmd:[{command:"clear"},{command:"fontsize",value:"36px"},{command:"align",value:"center"},{command:"bold"}]},{label:"正文",style:{fontSize:"20px"},cmd:[{command:"clear"},{command:"fontsize",value:"20px"}]},{label:"正文[小]",style:{fontSize:"18px"},cmd:[{command:"clear"},{command:"fontsize",value:"18px"}]},{label:"注释 1",style:{fontSize:"16px",fontStyle:"italic"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"em"}]},{label:"注释 2",style:{fontSize:"16px",textDecoration:"underline"},cmd:[{command:"clear"},{command:"fontsize",value:"16px"},{command:"underline"}]}],Yi=z,Zi=Object(j["defineComponent"])({name:"text-style-panel",components:{ElementOpacity:di,ElementOutline:Ti,ElementShadow:Wi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])();Object(j["watch"])(t,(function(){t.value&&"text"===t.value.type&&(n.value=t.value.fill||"#000",o.value=t.value.lineHeight||1.5,c.value=t.value.wordSpace||0)}),{deep:!0,immediate:!0});var a=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,superscript:!1,subscript:!1,code:!1,color:"#000",backcolor:"#000",fontsize:"20px",fontname:"微软雅黑",align:"left",bulletList:!1,orderedList:!1,blockquote:!1}),r=Object(j["computed"])((function(){return e.state.availableFonts})),l=["12px","14px","16px","18px","20px","22px","24px","28px","32px","36px","40px","44px","48px","54px","60px","66px","72px","76px","80px","88px","96px","104px","112px","120px"],i=[.9,1,1.15,1.2,1.4,1.5,1.8,2,2.5,3],u=[0,1,2,3,4,5,6,8,10],d=function(e){return a.value=e};Wt.on(Vt.UPDATE_TEXT_STATE,(function(e){return d(e)})),Object(j["onUnmounted"])((function(){Wt.off(Vt.UPDATE_TEXT_STATE,(function(e){return d(e)}))}));var s=function(e,t){Wt.emit(Vt.EXEC_TEXT_COMMAND,{command:e,value:t})},f=function(e){Wt.emit(Vt.EXEC_TEXT_COMMAND,e)},p=Ce(),b=p.addHistorySnapshot,m=function(n){var o={lineHeight:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},v=function(n){var o={wordSpace:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},O=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()};return{fill:n,lineHeight:o,wordSpace:c,richTextAttrs:a,availableFonts:r,webFonts:Yi,fontSizeOptions:l,lineHeightOptions:i,wordSpaceOptions:u,updateLineHeight:m,updateWordSpace:v,updateFill:O,emitRichTextCommand:s,emitBatchRichTextCommand:f,presetStyles:Xi}}});n("90d9");Zi.render=oi,Zi.__scopeId="data-v-43fccffc";var Ji=Zi,Ki=Object(j["withScopeId"])("data-v-5685b9e0");Object(j["pushScopeId"])("data-v-5685b9e0");var $i={class:"image-style-panel"},Qi=Object(j["createTextVNode"])(" 裁剪图片"),eu={class:"clip"},tu=Object(j["createVNode"])("div",{class:"title"},"按形状裁剪:",-1),nu={class:"shape-clip"},ou={key:0,class:"title"},cu={class:"filter"},au={class:"name"},ru={class:"value"},lu=Object(j["createTextVNode"])(" 设置滤镜"),iu=Object(j["createTextVNode"])(" 替换图片"),uu=Object(j["createTextVNode"])(" 重置样式"),du=Object(j["createTextVNode"])(" 设为背景");Object(j["popScopeId"])();var su=Ki((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconTailoring"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("ButtonGroup"),u=Object(j["resolveComponent"])("IconDown"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("Slider"),f=Object(j["resolveComponent"])("IconColorFilter"),p=Object(j["resolveComponent"])("ElementFlip"),b=Object(j["resolveComponent"])("Divider"),m=Object(j["resolveComponent"])("ElementOutline"),v=Object(j["resolveComponent"])("ElementShadow"),O=Object(j["resolveComponent"])("IconTransform"),h=Object(j["resolveComponent"])("FileInput"),g=Object(j["resolveComponent"])("IconUndo"),y=Object(j["resolveComponent"])("IconTheme");return Object(j["openBlock"])(),Object(j["createBlock"])("div",$i,[Object(j["createVNode"])("div",{class:"origin-image",style:{backgroundImage:"url(".concat(e.handleElement.src,")")}},null,4),Object(j["createVNode"])(i,{class:"row"},{default:Ki((function(){return[Object(j["createVNode"])(l,{style:{flex:"5"},onClick:t[1]||(t[1]=function(t){return e.clipImage()})},{default:Ki((function(){return[Object(j["createVNode"])(r,{class:"btn-icon"}),Qi]})),_:1}),Object(j["createVNode"])(d,{trigger:"click",visible:e.clipPanelVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.clipPanelVisible=t})},{content:Ki((function(){return[Object(j["createVNode"])("div",eu,[tu,Object(j["createVNode"])("div",nu,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.shapeClipPathOptions,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"shape-clip-item",key:n,onClick:function(t){return e.presetImageClip(n)}},[Object(j["createVNode"])("div",{class:"shape",style:{backgroundImage:"url(".concat(e.handleElement.src,")"),clipPath:t.style}},null,4)],8,["onClick"])})),128))]),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.ratioClipOptions,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:t.label},[t.label?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ou,Object(j["toDisplayString"])(t.label)+":",1)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i,{class:"row"},{default:Ki((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t.children,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{style:{flex:"1"},key:t.key,onClick:function(n){return e.presetImageClip("rect",t.ratio)}},{default:Ki((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(t.key),1)]})),_:2},1032,["onClick"])})),128))]})),_:2},1024)],64)})),128))])]})),default:Ki((function(){return[Object(j["createVNode"])(l,{class:"no-padding",style:{flex:"1"}},{default:Ki((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["visible"])]})),_:1}),Object(j["createVNode"])(d,{trigger:"click"},{content:Ki((function(){return[Object(j["createVNode"])("div",cu,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.filterOptions,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"filter-item",key:t.key},[Object(j["createVNode"])("div",au,Object(j["toDisplayString"])(t.label),1),Object(j["createVNode"])(s,{class:"filter-slider",max:t.max,min:t.min,step:t.step,value:t.value,onChange:function(n){return e.updateFilter(t,n)}},null,8,["max","min","step","value","onChange"]),Object(j["createVNode"])("div",ru,Object(j["toDisplayString"])("".concat(t.value).concat(t.unit)),1)])})),128))])]})),default:Ki((function(){return[Object(j["createVNode"])(l,{class:"full-width-btn"},{default:Ki((function(){return[Object(j["createVNode"])(f,{class:"btn-icon"}),lu]})),_:1})]})),_:1}),Object(j["createVNode"])(p),Object(j["createVNode"])(b),Object(j["createVNode"])(m),Object(j["createVNode"])(b),Object(j["createVNode"])(v),Object(j["createVNode"])(b),Object(j["createVNode"])(h,{onChange:t[3]||(t[3]=function(t){return e.replaceImage(t)})},{default:Ki((function(){return[Object(j["createVNode"])(l,{class:"full-width-btn"},{default:Ki((function(){return[Object(j["createVNode"])(O,{class:"btn-icon"}),iu]})),_:1})]})),_:1}),Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[4]||(t[4]=function(t){return e.resetImage()})},{default:Ki((function(){return[Object(j["createVNode"])(g,{class:"btn-icon"}),uu]})),_:1}),Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[5]||(t[5]=function(t){return e.setBackgroundImage()})},{default:Ki((function(){return[Object(j["createVNode"])(y,{class:"btn-icon"}),du]})),_:1})])})),fu=Object(j["withScopeId"])("data-v-b6fdb886");Object(j["pushScopeId"])("data-v-b6fdb886");var pu={class:"element-flip"},bu=Object(j["createTextVNode"])(" 水平翻转"),mu=Object(j["createTextVNode"])(" 垂直翻转");Object(j["popScopeId"])();var vu=fu((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconFlipVertically"),l=Object(j["resolveComponent"])("CheckboxButton"),i=Object(j["resolveComponent"])("IconFlipHorizontally"),u=Object(j["resolveComponent"])("CheckboxButtonGroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",pu,[Object(j["createVNode"])(u,{class:"row"},{default:fu((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},checked:180===e.flip.x,onClick:t[1]||(t[1]=function(t){return e.updateFlip({x:180===e.flip.x?0:180,y:e.flip.y})})},{default:fu((function(){return[Object(j["createVNode"])(r),bu]})),_:1},8,["checked"]),Object(j["createVNode"])(l,{style:{flex:"1"},checked:180===e.flip.y,onClick:t[2]||(t[2]=function(t){return e.updateFlip({x:e.flip.x,y:180===e.flip.y?0:180})})},{default:fu((function(){return[Object(j["createVNode"])(i),mu]})),_:1},8,["checked"])]})),_:1})])})),Ou=Object(j["defineComponent"])({name:"element-flip",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])({x:0,y:0});Object(j["watch"])(t,(function(){t.value&&["image","shape"].includes(t.value.type)&&(t.value.flip?n.value={x:t.value.flip.x||0,y:t.value.flip.y||0}:n.value={x:0,y:0})}),{deep:!0,immediate:!0});var o=Ce(),c=o.addHistorySnapshot,a=function(n){var o={flip:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{flip:n,updateFlip:a}}});n("aa55");Ou.render=vu,Ou.__scopeId="data-v-b6fdb886";var ju=Ou,hu=[{label:"模糊",key:"blur",default:0,value:0,unit:"px",max:10,step:1},{label:"亮度",key:"brightness",default:100,value:100,unit:"%",max:200,step:5},{label:"对比度",key:"contrast",default:100,value:100,unit:"%",max:200,step:5},{label:"灰度",key:"grayscale",default:0,value:0,unit:"%",max:100,step:5},{label:"饱和度",key:"saturate",default:100,value:100,unit:"%",max:200,step:5},{label:"色相",key:"hue-rotate",default:0,value:0,unit:"deg",max:360,step:10},{label:"不透明度",key:"opacity",default:100,value:100,unit:"%",max:100,step:5}],gu=mn,yu=[{label:"纵横比(方形)",children:[{key:"1:1",ratio:1}]},{label:"纵横比(纵向)",children:[{key:"2:3",ratio:1.5},{key:"3:4",ratio:4/3},{key:"3:5",ratio:5/3},{key:"4:5",ratio:5/4}]},{label:"纵横比(横向)",children:[{key:"3:2",ratio:2/3},{key:"4:3",ratio:3/4},{key:"5:3",ratio:.6},{key:"5:4",ratio:.8}]},{children:[{key:"16:9",ratio:9/16},{key:"16:10",ratio:.625}]}],ku=Object(j["defineComponent"])({name:"image-style-panel",components:{ElementOutline:Ti,ElementShadow:Wi,ElementFlip:ju},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Object(j["ref"])(!1),c=Object(j["ref"])(JSON.parse(JSON.stringify(hu)));Object(j["watch"])(t,(function(){if(t.value&&"image"===t.value.type){var e=t.value.filters;c.value=e?hu.map((function(t){return void 0!==e[t.key]?Object(P["a"])(Object(P["a"])({},t),{},{value:parseInt(e[t.key])}):t})):JSON.parse(JSON.stringify(hu))}}),{deep:!0,immediate:!0});var a=Ce(),r=a.addHistorySnapshot,l=function(n,o){var c=t.value.filters||{},a=Object(P["a"])(Object(P["a"])({},c),{},Object(C["a"])({},n.key,"".concat(o).concat(n.unit))),l={filters:a};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:l}),r()},i=function(){e.commit(g.SET_CLIPING_IMAGE_ELEMENT_ID,t.value.id),o.value=!1},u=function(){var e=t.value.width,n=t.value.height,o=t.value.left,c=t.value.top,a=t.value.clip?t.value.clip.range:[[0,0],[100,100]],r=e/((a[1][0]-a[0][0])/100),l=n/((a[1][1]-a[0][1])/100),i=o-r*(a[0][0]/100),u=c-l*(a[0][1]/100);return{originClipRange:a,originWidth:r,originHeight:l,originLeft:i,originTop:u}},d=function(n){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,c=u(),a=c.originClipRange,l=c.originWidth,d=c.originHeight,s=c.originLeft,f=c.originTop;if(o){var p,b=d/l,m=0,v=100;if(b>o){var O=(1-o/b)/2*100;p=[[m,O],[v,v-O]]}else{var j=(1-b/o)/2*100;p=[[j,m],[v-j,v]]}e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(P["a"])(Object(P["a"])({},t.value.clip),{},{shape:n,range:p}),left:s+l*(p[0][0]/100),top:f+d*(p[0][1]/100),width:l*(p[1][0]-p[0][0])/100,height:d*(p[1][1]-p[0][1])/100}})}else e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{clip:Object(P["a"])(Object(P["a"])({},t.value.clip),{},{shape:n,range:a})}});i(),r()},s=function(n){var o=n[0];o&&(xe(o).then((function(n){var o={src:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o})})),r())},f=function(){if(t.value.clip){var n=u(),o=n.originWidth,c=n.originHeight,a=n.originLeft,l=n.originTop;e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:{left:a,top:l,width:o,height:c}})}e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:["clip","outline","flip","shadow","filters"]}),r()},p=function(){var o=Object(P["a"])(Object(P["a"])({},n.value.background),{},{type:"image",image:t.value.src,imageSize:"cover"});e.commit(g.UPDATE_SLIDE,{background:o}),r()};return{clipPanelVisible:o,shapeClipPathOptions:gu,ratioClipOptions:yu,filterOptions:c,handleElement:t,updateFilter:l,clipImage:i,presetImageClip:d,replaceImage:s,resetImage:f,setBackgroundImage:p}}});n("17ac");ku.render=su,ku.__scopeId="data-v-5685b9e0";var Eu=ku,Iu=Object(j["withScopeId"])("data-v-998a7a02");Object(j["pushScopeId"])("data-v-998a7a02");var Su={class:"shape-style-panel"},Cu={class:"row"},Nu=Object(j["createTextVNode"])("纯色填充"),xu=Object(j["createTextVNode"])("渐变填充"),Lu=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),Tu=Object(j["createTextVNode"])("线性渐变"),wu=Object(j["createTextVNode"])("径向渐变"),Vu={class:"row"},_u=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),Bu={class:"row"},Mu=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),Du={key:0,class:"row"},Au=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1);Object(j["popScopeId"])();var Pu=Iu((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("Slider"),f=Object(j["resolveComponent"])("ElementFlip"),p=Object(j["resolveComponent"])("Divider"),b=Object(j["resolveComponent"])("ElementOutline"),m=Object(j["resolveComponent"])("ElementShadow"),v=Object(j["resolveComponent"])("ElementOpacity");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Su,[Object(j["createVNode"])("div",Cu,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.fillType,onChange:t[1]||(t[1]=function(t){return e.updateFillType(t)})},{default:Iu((function(){return[Object(j["createVNode"])(r,{value:"fill"},{default:Iu((function(){return[Nu]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:Iu((function(){return[xu]})),_:1})]})),_:1},8,["value"]),Lu,"fill"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Iu((function(){return[Object(j["createVNode"])(i,{modelValue:e.fill,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:Iu((function(){return[Object(j["createVNode"])(u,{color:e.fill,style:{flex:"10"}},null,8,["color"])]})),_:1})):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.gradient.type,onChange:t[3]||(t[3]=function(t){return e.updateGradient({type:t})})},{default:Iu((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:Iu((function(){return[Tu]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:Iu((function(){return[wu]})),_:1})]})),_:1},8,["value"]))]),"gradient"===e.fillType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Vu,[_u,Object(j["createVNode"])(d,{trigger:"click"},{content:Iu((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[0],"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateGradient({color:[t,e.gradient.color[1]]})})},null,8,["modelValue"])]})),default:Iu((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Bu,[Mu,Object(j["createVNode"])(d,{trigger:"click"},{content:Iu((function(){return[Object(j["createVNode"])(i,{modelValue:e.gradient.color[1],"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.updateGradient({color:[e.gradient.color[0],t]})})},null,8,["modelValue"])]})),default:Iu((function(){return[Object(j["createVNode"])(u,{color:e.gradient.color[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.gradient.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",Du,[Au,Object(j["createVNode"])(s,{min:0,max:360,step:15,value:e.gradient.rotate,style:{flex:"3"},onChange:t[6]||(t[6]=function(t){return e.updateGradient({rotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)],64)):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(f),Object(j["createVNode"])(p),Object(j["createVNode"])(b),Object(j["createVNode"])(p),Object(j["createVNode"])(m),Object(j["createVNode"])(p),Object(j["createVNode"])(v)])})),Ru=Object(j["defineComponent"])({name:"shape-style-panel",components:{ElementOpacity:di,ElementOutline:Ti,ElementShadow:Wi,ElementFlip:ju,ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(),o=Object(j["ref"])(),c=Object(j["ref"])("fill");Object(j["watch"])(t,(function(){t.value&&"shape"===t.value.type&&(n.value=t.value.fill||"#000",o.value=t.value.gradient||{type:"linear",rotate:0,color:[n.value,"#fff"]},c.value=t.value.gradient?"gradient":"fill")}),{deep:!0,immediate:!0});var a=Ce(),r=a.addHistorySnapshot,l=function(n){if("fill"===n)e.commit(g.REMOVE_ELEMENT_PROPS,{id:t.value.id,propName:"gradient"});else{var c={gradient:o.value};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c})}r()},i=function(n){var c={gradient:Object(P["a"])(Object(P["a"])({},o.value),n)};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),r()},u=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),r()};return{fill:n,gradient:o,fillType:c,updateFillType:l,updateFill:u,updateGradient:i}}});n("6f16");Ru.render=Pu,Ru.__scopeId="data-v-998a7a02";var Fu=Ru,Hu=Object(j["withScopeId"])("data-v-65b24fb3");Object(j["pushScopeId"])("data-v-65b24fb3");var zu={class:"line-style-panel"},Uu={class:"row"},Gu=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条样式:",-1),qu=Object(j["createTextVNode"])("实线"),Wu=Object(j["createTextVNode"])("虚线"),Xu={class:"row"},Yu=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条颜色:",-1),Zu={class:"row"},Ju=Object(j["createVNode"])("div",{style:{flex:"2"}},"线条宽度:",-1),Ku={class:"row"},$u=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点样式:",-1),Qu=Object(j["createTextVNode"])("无"),ed=Object(j["createTextVNode"])("箭头"),td=Object(j["createTextVNode"])("圆点"),nd={class:"row"},od=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点样式:",-1),cd=Object(j["createTextVNode"])("无"),ad=Object(j["createTextVNode"])("箭头"),rd=Object(j["createTextVNode"])("圆点");Object(j["popScopeId"])();var ld=Hu((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("InputNumber"),f=Object(j["resolveComponent"])("Divider"),p=Object(j["resolveComponent"])("ElementShadow");return Object(j["openBlock"])(),Object(j["createBlock"])("div",zu,[Object(j["createVNode"])("div",Uu,[Gu,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.style,onChange:t[1]||(t[1]=function(t){return e.updateLine({style:t})})},{default:Hu((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:Hu((function(){return[qu]})),_:1}),Object(j["createVNode"])(r,{value:"dashed"},{default:Hu((function(){return[Wu]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",Xu,[Yu,Object(j["createVNode"])(d,{trigger:"click"},{content:Hu((function(){return[Object(j["createVNode"])(i,{modelValue:e.handleElement.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateLine({color:t})})},null,8,["modelValue"])]})),default:Hu((function(){return[Object(j["createVNode"])(u,{color:e.handleElement.color,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Zu,[Ju,Object(j["createVNode"])(s,{value:e.handleElement.width,onChange:t[3]||(t[3]=function(t){return e.updateLine({width:t})}),style:{flex:"3"}},null,8,["value"])]),Object(j["createVNode"])("div",Ku,[$u,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[0],onChange:t[4]||(t[4]=function(t){return e.updateLine({points:[t,e.handleElement.points[1]]})})},{default:Hu((function(){return[Object(j["createVNode"])(r,{value:""},{default:Hu((function(){return[Qu]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:Hu((function(){return[ed]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:Hu((function(){return[td]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",nd,[od,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.handleElement.points[1],onChange:t[5]||(t[5]=function(t){return e.updateLine({points:[e.handleElement.points[0],t]})})},{default:Hu((function(){return[Object(j["createVNode"])(r,{value:""},{default:Hu((function(){return[cd]})),_:1}),Object(j["createVNode"])(r,{value:"arrow"},{default:Hu((function(){return[ad]})),_:1}),Object(j["createVNode"])(r,{value:"dot"},{default:Hu((function(){return[rd]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])(f),Object(j["createVNode"])(p)])})),id=Object(j["defineComponent"])({name:"line-style-panel",components:{ElementShadow:Wi,ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Ce(),o=n.addHistorySnapshot,c=function(n){e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:n}),o()};return{handleElement:t,updateLine:c}}});n("8df8e");id.render=ld,id.__scopeId="data-v-65b24fb3";var ud=id,dd=Object(j["withScopeId"])("data-v-4dd87e36");Object(j["pushScopeId"])("data-v-4dd87e36");var sd={class:"chart-style-panel"},fd=Object(j["createTextVNode"])(" 编辑图表数据 "),pd={class:"row"},bd=Object(j["createTextVNode"])("面积图样式"),md=Object(j["createTextVNode"])("散点图样式"),vd={class:"row"},Od=Object(j["createTextVNode"])("使用平滑曲线"),jd={key:1,class:"row"},hd=Object(j["createTextVNode"])("条形图样式"),gd={key:2,class:"row"},yd=Object(j["createTextVNode"])("环形图样式"),kd={class:"row"},Ed=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景填充:",-1),Id={class:"row"},Sd=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题配色:",-1),Cd={class:"row"},Nd=Object(j["createVNode"])("div",{style:{flex:"2"}},"网格颜色:",-1);Object(j["popScopeId"])();var xd=dd((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEdit"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Divider"),u=Object(j["resolveComponent"])("Checkbox"),d=Object(j["resolveComponent"])("ColorPicker"),s=Object(j["resolveComponent"])("ColorButton"),f=Object(j["resolveComponent"])("Popover"),p=Object(j["resolveComponent"])("ElementOutline"),b=Object(j["resolveComponent"])("ChartDataEditor"),m=Object(j["resolveComponent"])("Modal");return Object(j["openBlock"])(),Object(j["createBlock"])("div",sd,[Object(j["createVNode"])(l,{class:"full-width-btn",onClick:t[1]||(t[1]=function(t){return e.chartDataEditorVisible=!0})},{default:dd((function(){return[Object(j["createVNode"])(r,{class:"btn-icon"}),fd]})),_:1}),Object(j["createVNode"])(i),"line"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",pd,[Object(j["createVNode"])(u,{onChange:t[2]||(t[2]=function(t){return e.updateOptions({showArea:t.target.checked})}),checked:e.showArea,style:{flex:"1"}},{default:dd((function(){return[bd]})),_:1},8,["checked"]),Object(j["createVNode"])(u,{onChange:t[3]||(t[3]=function(t){return e.updateOptions({showLine:!t.target.checked})}),checked:!e.showLine,style:{flex:"1"}},{default:dd((function(){return[md]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",vd,[Object(j["createVNode"])(u,{onChange:t[4]||(t[4]=function(t){return e.updateOptions({lineSmooth:t.target.checked})}),checked:e.lineSmooth},{default:dd((function(){return[Od]})),_:1},8,["checked"])])],64)):Object(j["createCommentVNode"])("",!0),"bar"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",jd,[Object(j["createVNode"])(u,{onChange:t[5]||(t[5]=function(t){return e.updateOptions({horizontalBars:t.target.checked})}),checked:e.horizontalBars},{default:dd((function(){return[hd]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),"pie"===e.handleElement.chartType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",gd,[Object(j["createVNode"])(u,{onChange:t[6]||(t[6]=function(t){return e.updateOptions({donut:t.target.checked})}),checked:e.donut},{default:dd((function(){return[yd]})),_:1},8,["checked"])])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])(i),Object(j["createVNode"])("div",kd,[Ed,Object(j["createVNode"])(f,{trigger:"click"},{content:dd((function(){return[Object(j["createVNode"])(d,{modelValue:e.fill,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateFill(t)})},null,8,["modelValue"])]})),default:dd((function(){return[Object(j["createVNode"])(s,{color:e.fill,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Id,[Sd,Object(j["createVNode"])(f,{trigger:"click"},{content:dd((function(){return[Object(j["createVNode"])(d,{modelValue:e.themeColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.updateTheme(t)})},null,8,["modelValue"])]})),default:dd((function(){return[Object(j["createVNode"])(s,{color:e.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Cd,[Nd,Object(j["createVNode"])(f,{trigger:"click"},{content:dd((function(){return[Object(j["createVNode"])(d,{modelValue:e.gridColor,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.updateGridColor(t)})},null,8,["modelValue"])]})),default:dd((function(){return[Object(j["createVNode"])(s,{color:e.gridColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])(i),Object(j["createVNode"])(p),Object(j["createVNode"])(m,{visible:e.chartDataEditorVisible,"onUpdate:visible":t[12]||(t[12]=function(t){return e.chartDataEditorVisible=t}),footer:null,centered:"",closable:!1,width:648,destroyOnClose:""},{default:dd((function(){return[Object(j["createVNode"])(b,{data:e.handleElement.data,onClose:t[10]||(t[10]=function(t){return e.chartDataEditorVisible=!1}),onSave:t[11]||(t[11]=function(t){return e.updateData(t)})},null,8,["data"])]})),_:1},8,["visible"])])})),Ld=Object(j["withScopeId"])("data-v-08aba838");Object(j["pushScopeId"])("data-v-08aba838");var Td={class:"chart-data-editor"},wd={class:"editor-content"},Vd={class:"range-box"},_d={class:"btns"},Bd=Object(j["createTextVNode"])("取消"),Md=Object(j["createTextVNode"])("确认");Object(j["popScopeId"])();var Dd=Ld((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Td,[Object(j["createVNode"])("div",wd,[Object(j["createVNode"])("div",Vd,[Object(j["createVNode"])("div",{class:"temp-range",style:{width:e.tempRangeSize.width+"px",height:e.tempRangeSize.height+"px"}},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.rangeLines,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["range-line",e.type],key:e.type,style:e.style},null,6)})),128)),Object(j["createVNode"])("div",{class:"resizable",style:e.resizablePointStyle,onMousedown:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.changeSelectRange(t)}),["stop"]))},null,36)]),Object(j["createVNode"])("table",null,[Object(j["createVNode"])("tbody",null,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(30,(function(t){return Object(j["createVNode"])("tr",{key:t},[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(7,(function(n){return Object(j["createVNode"])("td",{key:n,class:{head:1===n&&t<=e.selectedRange[1]}},[Object(j["createVNode"])("input",{class:["item",{selected:t<=e.selectedRange[1]&&n<=e.selectedRange[0]}],id:"cell-".concat(t-1,"-").concat(n-1),autocomplete:"off"},null,10,["id"])],2)})),64))])})),64))])])]),Object(j["createVNode"])("div",_d,[Object(j["createVNode"])(r,{class:"btn",onClick:t[2]||(t[2]=function(t){return e.closeEditor()})},{default:Ld((function(){return[Bd]})),_:1}),Object(j["createVNode"])(r,{type:"primary",class:"btn",onClick:t[3]||(t[3]=function(t){return e.getTableData()})},{default:Ld((function(){return[Md]})),_:1})])])})),Ad=100,Pd=32,Rd=Object(j["defineComponent"])({name:"chart-data-editor",props:{data:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])([0,0]),c=Object(j["ref"])({width:0,height:0}),a=Object(j["computed"])((function(){var e=o.value[0]*Ad,t=o.value[1]*Pd;return[{type:"t",style:{width:e+"px"}},{type:"b",style:{top:t+"px",width:e+"px"}},{type:"l",style:{height:t+"px"}},{type:"r",style:{left:e+"px",height:t+"px"}}]})),r=Object(j["computed"])((function(){var e=o.value[0]*Ad,t=o.value[1]*Pd;return{left:e+"px",top:t+"px"}})),l=function(){for(var t=[],n=e.data,c=n.labels,a=n.series,r=c.length,l=a.length,i=0;i.5*Ad&&(i+=Ad-i%Ad),u%Pd>.5*Pd&&(u+=Pd-u%Pd);var d=Math.round(u/Pd),s=Math.round(i/Ad);d<3&&(d=3),s<2&&(s=2),o.value=[s,d],c.value={width:0,height:0}}}};return{tempRangeSize:c,rangeLines:a,resizablePointStyle:r,changeSelectRange:d,selectedRange:o,getTableData:i,closeEditor:u}}});n("aede");Rd.render=Dd,Rd.__scopeId="data-v-08aba838";var Fd=Rd,Hd=Object(j["defineComponent"])({name:"chart-style-panel",components:{ElementOutline:Ti,ChartDataEditor:Fd,ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(!1),o=Ce(),c=o.addHistorySnapshot,a=Object(j["ref"])(),r=Object(j["ref"])(""),l=Object(j["ref"])(""),i=Object(j["ref"])(!0),u=Object(j["ref"])(!0),d=Object(j["ref"])(!1),s=Object(j["ref"])(!1),f=Object(j["ref"])(!1);Object(j["watch"])(t,(function(){if(t.value&&"chart"===t.value.type){if(a.value=t.value.fill||"#000",t.value.options){var e=t.value.options,n=e.lineSmooth,o=e.showLine,c=e.showArea,p=e.horizontalBars,b=e.donut;void 0!==n&&(i.value=n),void 0!==o&&(u.value=o),void 0!==c&&(d.value=c),void 0!==p&&(s.value=p),void 0!==b&&(f.value=b)}r.value=t.value.themeColor,l.value=t.value.gridColor||"rgba(0, 0, 0, 0.4)"}}),{deep:!0,immediate:!0});var p=function(o){n.value=!1;var a={data:o};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:a}),c()},b=function(n){var o={fill:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},m=function(n){var o=t.value.options||{},a=Object(P["a"])(Object(P["a"])({},o),n),r={options:a};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:r}),c()},v=function(n){var o={themeColor:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()},O=function(n){var o={gridColor:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),c()};return{chartDataEditorVisible:n,handleElement:t,updateData:p,fill:a,updateFill:b,lineSmooth:i,showLine:u,showArea:d,horizontalBars:s,donut:f,updateOptions:m,themeColor:r,gridColor:l,updateTheme:v,updateGridColor:O}}});n("167e");Hd.render=xd,Hd.__scopeId="data-v-4dd87e36";var zd=Hd,Ud=Object(j["withScopeId"])("data-v-90d47588");Object(j["pushScopeId"])("data-v-90d47588");var Gd={class:"table-style-panel"},qd={class:"row"},Wd=Object(j["createVNode"])("div",{style:{flex:"2"}},"行数:",-1),Xd={class:"row"},Yd=Object(j["createVNode"])("div",{style:{flex:"2"}},"列数:",-1),Zd={class:"row theme-switch"},Jd=Object(j["createVNode"])("div",{style:{flex:"2"}},"启用主题表格:",-1),Kd={class:"switch-wrapper",style:{flex:"3"}},$d={class:"row"},Qd=Object(j["createTextVNode"])("标题行"),es=Object(j["createTextVNode"])("汇总行"),ts={class:"row"},ns=Object(j["createTextVNode"])("第一列"),os=Object(j["createTextVNode"])("最后一列"),cs={class:"row"},as=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题颜色:",-1);Object(j["popScopeId"])();var rs=Ud((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconFontSize"),l=Object(j["resolveComponent"])("SelectOption"),i=Object(j["resolveComponent"])("Select"),u=Object(j["resolveComponent"])("IconAddText"),d=Object(j["resolveComponent"])("InputGroup"),s=Object(j["resolveComponent"])("ColorPicker"),f=Object(j["resolveComponent"])("IconText"),p=Object(j["resolveComponent"])("Button"),b=Object(j["resolveComponent"])("Tooltip"),m=Object(j["resolveComponent"])("Popover"),v=Object(j["resolveComponent"])("IconFill"),O=Object(j["resolveComponent"])("ButtonGroup"),h=Object(j["resolveComponent"])("IconTextBold"),g=Object(j["resolveComponent"])("CheckboxButton"),y=Object(j["resolveComponent"])("IconTextItalic"),k=Object(j["resolveComponent"])("IconTextUnderline"),E=Object(j["resolveComponent"])("IconStrikethrough"),I=Object(j["resolveComponent"])("CheckboxButtonGroup"),S=Object(j["resolveComponent"])("IconAlignTextLeft"),C=Object(j["resolveComponent"])("RadioButton"),N=Object(j["resolveComponent"])("IconAlignTextCenter"),x=Object(j["resolveComponent"])("IconAlignTextRight"),L=Object(j["resolveComponent"])("RadioGroup"),T=Object(j["resolveComponent"])("Divider"),w=Object(j["resolveComponent"])("ElementOutline"),V=Object(j["resolveComponent"])("InputNumber"),_=Object(j["resolveComponent"])("Switch"),B=Object(j["resolveComponent"])("Checkbox"),M=Object(j["resolveComponent"])("ColorButton");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Gd,[Object(j["createVNode"])(d,{compact:"",class:"row"},{default:Ud((function(){return[Object(j["createVNode"])(i,{style:{flex:"3"},value:e.textAttrs.fontname,onChange:t[1]||(t[1]=function(t){return e.updateTextAttrs({fontname:t})})},{suffixIcon:Ud((function(){return[Object(j["createVNode"])(r)]})),default:Ud((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e.en,value:e.en},{default:Ud((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.en}},Object(j["toDisplayString"])(e.zh),5)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"]),Object(j["createVNode"])(i,{style:{flex:"2"},value:e.textAttrs.fontsize,onChange:t[2]||(t[2]=function(t){return e.updateTextAttrs({fontsize:t})})},{suffixIcon:Ud((function(){return[Object(j["createVNode"])(u)]})),default:Ud((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.fontSizeOptions,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:e,value:e},{default:Ud((function(){return[Object(j["createTextVNode"])(Object(j["toDisplayString"])(e),1)]})),_:2},1032,["value"])})),128))]})),_:1},8,["value"])]})),_:1}),Object(j["createVNode"])(O,{class:"row"},{default:Ud((function(){return[Object(j["createVNode"])(m,{trigger:"click"},{content:Ud((function(){return[Object(j["createVNode"])(s,{modelValue:e.textAttrs.color,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.updateTextAttrs({color:t})})},null,8,["modelValue"])]})),default:Ud((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"文字颜色"},{default:Ud((function(){return[Object(j["createVNode"])(p,{class:"text-color-btn",style:{flex:"1"}},{default:Ud((function(){return[Object(j["createVNode"])(f),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.color}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m,{trigger:"click"},{content:Ud((function(){return[Object(j["createVNode"])(s,{modelValue:e.textAttrs.backcolor,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updateTextAttrs({backcolor:t})})},null,8,["modelValue"])]})),default:Ud((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"单元格填充"},{default:Ud((function(){return[Object(j["createVNode"])(p,{class:"text-color-btn",style:{flex:"1"}},{default:Ud((function(){return[Object(j["createVNode"])(v),Object(j["createVNode"])("div",{class:"text-color-block",style:{backgroundColor:e.textAttrs.backcolor}},null,4)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1})]})),_:1}),Object(j["createVNode"])(I,{class:"row"},{default:Ud((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"加粗"},{default:Ud((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.bold,onClick:t[5]||(t[5]=function(t){return e.updateTextAttrs({bold:!e.textAttrs.bold})})},{default:Ud((function(){return[Object(j["createVNode"])(h)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"斜体"},{default:Ud((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.em,onClick:t[6]||(t[6]=function(t){return e.updateTextAttrs({em:!e.textAttrs.em})})},{default:Ud((function(){return[Object(j["createVNode"])(y)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下划线"},{default:Ud((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.underline,onClick:t[7]||(t[7]=function(t){return e.updateTextAttrs({underline:!e.textAttrs.underline})})},{default:Ud((function(){return[Object(j["createVNode"])(k)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除线"},{default:Ud((function(){return[Object(j["createVNode"])(g,{style:{flex:"1"},checked:e.textAttrs.strikethrough,onClick:t[8]||(t[8]=function(t){return e.updateTextAttrs({strikethrough:!e.textAttrs.strikethrough})})},{default:Ud((function(){return[Object(j["createVNode"])(E)]})),_:1},8,["checked"])]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(L,{class:"row","button-style":"solid",value:e.textAttrs.align,onChange:t[9]||(t[9]=function(t){return e.updateTextAttrs({align:t.target.value})})},{default:Ud((function(){return[Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Ud((function(){return[Object(j["createVNode"])(C,{value:"left",style:{flex:"1"}},{default:Ud((function(){return[Object(j["createVNode"])(S)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"居中"},{default:Ud((function(){return[Object(j["createVNode"])(C,{value:"center",style:{flex:"1"}},{default:Ud((function(){return[Object(j["createVNode"])(N)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(b,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Ud((function(){return[Object(j["createVNode"])(C,{value:"right",style:{flex:"1"}},{default:Ud((function(){return[Object(j["createVNode"])(x)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1},8,["value"]),Object(j["createVNode"])(T),Object(j["createVNode"])(w,{fixed:!0}),Object(j["createVNode"])(T),Object(j["createVNode"])("div",qd,[Wd,Object(j["createVNode"])(V,{min:e.minRowCount,max:20,value:e.rowCount,"onUpdate:value":t[10]||(t[10]=function(t){return e.rowCount=t}),onPressEnter:t[11]||(t[11]=function(t){return e.setTableRow(t)}),onBlur:t[12]||(t[12]=function(t){return e.setTableRow(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])("div",Xd,[Yd,Object(j["createVNode"])(V,{min:e.minColCount,max:20,value:e.colCount,"onUpdate:value":t[13]||(t[13]=function(t){return e.colCount=t}),onPressEnter:t[14]||(t[14]=function(t){return e.setTableCol(t)}),onBlur:t[15]||(t[15]=function(t){return e.setTableCol(t)}),style:{flex:"3"}},null,8,["min","value"])]),Object(j["createVNode"])(T),Object(j["createVNode"])("div",Zd,[Jd,Object(j["createVNode"])("div",Kd,[Object(j["createVNode"])(_,{checked:e.hasTheme,onChange:t[16]||(t[16]=function(t){return e.toggleTheme(t)})},null,8,["checked"])])]),e.hasTheme?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",$d,[Object(j["createVNode"])(B,{onChange:t[17]||(t[17]=function(t){return e.updateTheme({rowHeader:t.target.checked})}),checked:e.theme.rowHeader,style:{flex:"1"}},{default:Ud((function(){return[Qd]})),_:1},8,["checked"]),Object(j["createVNode"])(B,{onChange:t[18]||(t[18]=function(t){return e.updateTheme({rowFooter:t.target.checked})}),checked:e.theme.rowFooter,style:{flex:"1"}},{default:Ud((function(){return[es]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",ts,[Object(j["createVNode"])(B,{onChange:t[19]||(t[19]=function(t){return e.updateTheme({colHeader:t.target.checked})}),checked:e.theme.colHeader,style:{flex:"1"}},{default:Ud((function(){return[ns]})),_:1},8,["checked"]),Object(j["createVNode"])(B,{onChange:t[20]||(t[20]=function(t){return e.updateTheme({colFooter:t.target.checked})}),checked:e.theme.colFooter,style:{flex:"1"}},{default:Ud((function(){return[os]})),_:1},8,["checked"])]),Object(j["createVNode"])("div",cs,[as,Object(j["createVNode"])(m,{trigger:"click"},{content:Ud((function(){return[Object(j["createVNode"])(s,{modelValue:e.theme.color,"onUpdate:modelValue":t[21]||(t[21]=function(t){return e.updateTheme({color:t})})},null,8,["modelValue"])]})),default:Ud((function(){return[Object(j["createVNode"])(M,{color:e.theme.color,style:{flex:"3"}},null,8,["color"])]})),_:1})])],64)):Object(j["createCommentVNode"])("",!0)])})),ls=Object(j["defineComponent"])({name:"table-style-panel",components:{ElementOutline:Ti,ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.state.availableFonts})),o=["12px","14px","16px","18px","20px","22px","24px","28px","32px"],c=Object(j["ref"])({bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}),a=Object(j["ref"])(),r=Object(j["ref"])(!1),l=Object(j["ref"])(0),i=Object(j["ref"])(0),u=Object(j["ref"])(0),d=Object(j["ref"])(0);Object(j["watch"])(t,(function(){t.value&&"table"===t.value.type&&(a.value=t.value.theme,r.value=!!a.value,l.value=t.value.data.length,i.value=t.value.data[0].length,u.value=t.value.data.length,d.value=t.value.data[0].length)}),{deep:!0,immediate:!0});var s=Ce(),f=s.addHistorySnapshot,p=Object(j["ref"])([]),b=function(){if(t.value){var e=0,n=0;if(p.value.length){var o=p.value[0];e=+o.split("_")[0],n=+o.split("_")[1]}var a=t.value.data[e][n].style;c.value=a?{bold:!!a.bold,em:!!a.em,underline:!!a.underline,strikethrough:!!a.strikethrough,color:a.color||"#000",backcolor:a.backcolor||"#000",fontsize:a.fontsize||"12px",fontname:a.fontname||"微软雅黑",align:a.align||"left"}:{bold:!1,em:!1,underline:!1,strikethrough:!1,color:"#000",backcolor:"#000",fontsize:"12px",fontname:"微软雅黑",align:"left"}}},m=function(e){p.value=e,b()};Wt.on(Vt.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)})),Object(j["onUnmounted"])((function(){Wt.off(Vt.UPDATE_TABLE_SELECTED_CELL,(function(e){return m(e)}))}));var v=function(n){for(var o=JSON.parse(JSON.stringify(t.value.data)),c=0;cX
Y
',1),Os={class:"row"},js=Object(j["createVNode"])("div",{style:{flex:"3"}},"大小:",-1),hs={key:1,style:{flex:"1"}},gs=Object(j["createStaticVNode"])('',1),ys={class:"row"},ks=Object(j["createVNode"])("div",{style:{flex:"3"}},"旋转:",-1),Es=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1);Object(j["popScopeId"])();var Is=ss((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconSendToBack"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconBringToFrontOne"),d=Object(j["resolveComponent"])("IconBringToFront"),s=Object(j["resolveComponent"])("IconSentToBack"),f=Object(j["resolveComponent"])("ButtonGroup"),p=Object(j["resolveComponent"])("IconAlignLeft"),b=Object(j["resolveComponent"])("IconAlignVertically"),m=Object(j["resolveComponent"])("IconAlignRight"),v=Object(j["resolveComponent"])("IconAlignTop"),O=Object(j["resolveComponent"])("IconAlignHorizontally"),h=Object(j["resolveComponent"])("IconAlignBottom"),g=Object(j["resolveComponent"])("Divider"),y=Object(j["resolveComponent"])("InputNumber"),k=Object(j["resolveComponent"])("IconLock"),E=Object(j["resolveComponent"])("IconUnlock"),I=Object(j["resolveComponent"])("IconRotate");return Object(j["openBlock"])(),Object(j["createBlock"])("div",fs,[Object(j["createVNode"])(f,{class:"row"},{default:ss((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置顶层"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.orderElement(e.handleElement,"top")})},{default:ss((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"置底层"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.orderElement(e.handleElement,"bottom")})},{default:ss((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上移一层"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.orderElement(e.handleElement,"up")})},{default:ss((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下移一层"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.orderElement(e.handleElement,"down")})},{default:ss((function(){return[Object(j["createVNode"])(s)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:ss((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignElementToCanvas("left")})},{default:ss((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignElementToCanvas("horizontal")})},{default:ss((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[7]||(t[7]=function(t){return e.alignElementToCanvas("right")})},{default:ss((function(){return[Object(j["createVNode"])(m)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(f,{class:"row"},{default:ss((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[8]||(t[8]=function(t){return e.alignElementToCanvas("top")})},{default:ss((function(){return[Object(j["createVNode"])(v)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.alignElementToCanvas("vertical")})},{default:ss((function(){return[Object(j["createVNode"])(O)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:ss((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[10]||(t[10]=function(t){return e.alignElementToCanvas("bottom")})},{default:ss((function(){return[Object(j["createVNode"])(h)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(g),Object(j["createVNode"])("div",ps,[bs,Object(j["createVNode"])(y,{step:5,value:e.left,onChange:t[11]||(t[11]=function(t){return e.updateLeft(t)}),style:{flex:"4"}},null,8,["value"]),ms,Object(j["createVNode"])(y,{step:5,value:e.top,onChange:t[12]||(t[12]=function(t){return e.updateTop(t)}),style:{flex:"4"}},null,8,["value"])]),vs,"line"!==e.handleElement.type?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[Object(j["createVNode"])("div",Os,[js,Object(j["createVNode"])(y,{min:e.minSize,max:1500,step:5,value:e.width,onChange:t[13]||(t[13]=function(t){return e.updateWidth(t)}),style:{flex:"4"}},null,8,["min","value"]),["image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:0},[e.fixedRatio?(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:0,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"解除宽高比锁定"},{default:ss((function(){return[Object(j["createVNode"])(k,{style:{flex:"1"},class:"icon-btn",onClick:t[14]||(t[14]=function(t){return e.updateFixedRatio(!1)})})]})),_:1},8,["mouseEnterDelay"])):(Object(j["openBlock"])(),Object(j["createBlock"])(i,{key:1,mouseLeaveDelay:0,mouseEnterDelay:.5,title:"宽高比锁定"},{default:ss((function(){return[Object(j["createVNode"])(E,{style:{flex:"1"},class:"icon-btn",onClick:t[15]||(t[15]=function(t){return e.updateFixedRatio(!0)})})]})),_:1},8,["mouseEnterDelay"]))],64)):(Object(j["openBlock"])(),Object(j["createBlock"])("div",hs)),Object(j["createVNode"])(y,{min:e.minSize,max:800,step:5,disabled:"text"===e.handleElement.type,value:e.height,onChange:t[16]||(t[16]=function(t){return e.updateHeight(t)}),style:{flex:"4"}},null,8,["min","disabled","value"])]),gs],64)):Object(j["createCommentVNode"])("",!0),["text","image","shape"].includes(e.handleElement.type)?(Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:1},[Object(j["createVNode"])(g),Object(j["createVNode"])("div",ys,[ks,Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"逆时针旋转"},{default:ss((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[17]||(t[17]=function(t){return e.updateRotate45("-")}),style:{flex:"2"}})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"顺时针旋转"},{default:ss((function(){return[Object(j["createVNode"])(I,{class:"icon-btn",onClick:t[18]||(t[18]=function(t){return e.updateRotate45("+")}),style:{flex:2,transform:"rotateY(180deg)"}},null,8,["style"])]})),_:1},8,["mouseEnterDelay"]),Es,Object(j["createVNode"])(y,{min:-180,max:180,step:5,value:e.rotate,onChange:t[19]||(t[19]=function(t){return e.updateRotate(t)}),style:{flex:"4"}},null,8,["value"])])],64)):Object(j["createCommentVNode"])("",!0)])})),Ss=n("b69c"),Cs=n.n(Ss),Ns=Object(j["defineComponent"])({name:"element-positopn-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["ref"])(0),o=Object(j["ref"])(0),c=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["ref"])(0),l=Object(j["ref"])(!1),i=Object(j["computed"])((function(){return t.value&&Yt[t.value.type]||20}));Object(j["watch"])(t,(function(){t.value&&(n.value=Cs()(t.value.left,1),o.value=Cs()(t.value.top,1),l.value="fixedRatio"in t.value&&!!t.value.fixedRatio,"line"!==t.value.type&&(c.value=Cs()(t.value.width,1),a.value=Cs()(t.value.height,1),r.value="rotate"in t.value&&void 0!==t.value.rotate?Cs()(t.value.rotate,1):0))}),{deep:!0,immediate:!0});var u=Fe(),d=u.orderElement,s=dn(),f=s.alignElementToCanvas,p=Ce(),b=p.addHistorySnapshot,m=function(n){var o={left:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},v=function(n){var o={top:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},O=function(n){var o={width:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},h=function(n){var o={height:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},y=function(n){var o={rotate:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},k=function(n){var o={fixedRatio:n};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:o}),b()},E=function(n){var o=45*Math.floor(r.value/45);"+"===n?o+=45:"-"===n&&(o-=45),o<-180&&(o=-180),o>180&&(o=180);var c={rotate:o};e.commit(g.UPDATE_ELEMENT,{id:t.value.id,props:c}),b()};return{handleElement:t,orderElement:d,alignElementToCanvas:f,left:n,top:o,width:c,height:a,rotate:r,fixedRatio:l,minSize:i,updateLeft:m,updateTop:v,updateWidth:O,updateHeight:h,updateRotate:y,updateFixedRatio:k,updateRotate45:E}}});n("b7a1");Ns.render=Is,Ns.__scopeId="data-v-15c9ddcc";var xs=Ns,Ls=Object(j["withScopeId"])("data-v-79c3f50b");Object(j["pushScopeId"])("data-v-79c3f50b");var Ts={class:"element-animation-panel"},ws={key:0,class:"element-animation"},Vs={class:"animation-pool"},_s={class:"type-title"},Bs={class:"pool-item-wrapper"},Ms={key:1,class:"tip"},Ds=Object(j["createTextVNode"])(" 选中画布中的元素添加动画"),As={class:"index"},Ps={class:"text"},Rs={class:"handler"};Object(j["popScopeId"])();var Fs,Hs=Ls((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconEffects"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Popover"),u=Object(j["resolveComponent"])("IconClick"),d=Object(j["resolveComponent"])("Divider"),s=Object(j["resolveComponent"])("IconPlayOne"),f=Object(j["resolveComponent"])("Tooltip"),p=Object(j["resolveComponent"])("IconCloseSmall"),b=Object(j["resolveComponent"])("Draggable");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ts,[e.handleElement?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ws,[Object(j["createVNode"])(i,{trigger:"click",visible:e.animationPoolVisible,"onUpdate:visible":t[2]||(t[2]=function(t){return e.animationPoolVisible=t})},{content:Ls((function(){return[Object(j["createVNode"])("div",Vs,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-type",key:n.name},[Object(j["createVNode"])("div",_s,Object(j["toDisplayString"])(n.name)+":",1),Object(j["createVNode"])("div",Bs,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(n.children,(function(n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"pool-item",key:n.name,onMouseenter:function(t){return e.hoverPreviewAnimation=n.value},onMouseleave:t[1]||(t[1]=function(t){return e.hoverPreviewAnimation=""}),onClick:function(t){return e.addAnimation(n.value)}},[Object(j["createVNode"])("div",{class:["animation-box",["animate__animated","animate__faster",e.hoverPreviewAnimation===n.value&&"animate__".concat(n.value)]]},Object(j["toDisplayString"])(n.name),3)],40,["onMouseenter","onClick"])})),128))])])})),128))])]})),default:Ls((function(){return[Object(j["createVNode"])(l,{class:"element-animation-btn"},{default:Ls((function(){return[Object(j["createVNode"])(r,{style:{"margin-right":"5px"}}),Object(j["createTextVNode"])(" "+Object(j["toDisplayString"])(e.handleElementAnimation||"点击选择动画"),1)]})),_:1})]})),_:1},8,["visible"])])):(Object(j["openBlock"])(),Object(j["createBlock"])("div",Ms,[Object(j["createVNode"])(u),Ds])),Object(j["createVNode"])(d),Object(j["createVNode"])(b,{class:"animation-sequence",modelValue:e.animationSequence,animation:300,scroll:!0,scrollSensitivity:50,onEnd:e.handleDragEnd,itemKey:"id"},{item:Ls((function(t){var n,o=t.element,c=t.index;return[Object(j["createVNode"])("div",{class:["sequence-item",{active:(null===(n=e.handleElement)||void 0===n?void 0:n.id)===o.elId}]},[Object(j["createVNode"])("div",As,Object(j["toDisplayString"])(c+1),1),Object(j["createVNode"])("div",Ps,"【"+Object(j["toDisplayString"])(o.elType)+"】"+Object(j["toDisplayString"])(o.animationType),1),Object(j["createVNode"])("div",Rs,[Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"预览"},{default:Ls((function(){return[Object(j["createVNode"])(s,{class:"handler-btn",onClick:function(t){return e.runAnimation(o.elId,o.type)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"]),Object(j["createVNode"])(f,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"删除"},{default:Ls((function(){return[Object(j["createVNode"])(p,{class:"handler-btn",onClick:function(t){return e.deleteAnimation(o.elId)}},null,8,["onClick"])]})),_:2},1032,["mouseEnterDelay"])])],2)]})),_:1},8,["modelValue","onEnd"])])})),zs=[{type:"bounce",name:"弹跳",children:[{name:"弹入",value:"bounceIn"},{name:"向右弹入",value:"bounceInLeft"},{name:"向左弹入",value:"bounceInRight"},{name:"向上弹入",value:"bounceInUp"},{name:"向下弹入",value:"bounceInDown"}]},{type:"fade",name:"浮现",children:[{name:"浮入",value:"fadeIn"},{name:"向下浮入",value:"fadeInDown"},{name:"向下长距浮入",value:"fadeInDownBig"},{name:"向右浮入",value:"fadeInLeft"},{name:"向右长距浮入",value:"fadeInLeftBig"},{name:"向左浮入",value:"fadeInRight"},{name:"向左长距浮入",value:"fadeInRightBig"},{name:"向上浮入",value:"fadeInUp"},{name:"向上长距浮入",value:"fadeInUpBig"},{name:"从左上浮入",value:"fadeInTopLeft"},{name:"从右上浮入",value:"fadeInTopRight"},{name:"从左下浮入",value:"fadeInBottomLeft"},{name:"从右下浮入",value:"fadeInBottomRight"}]},{type:"rotate",name:"旋转",children:[{name:"旋转进入",value:"rotateIn"},{name:"绕左下旋转进入",value:"rotateInDownLeft"},{name:"绕右下旋转进入",value:"rotateInDownRight"},{name:"绕左上旋转进入",value:"rotateInUpLeft"},{name:"绕右上旋转进入",value:"rotateInUpRight"}]},{type:"zoom",name:"缩放",children:[{name:"放大进入",value:"zoomIn"},{name:"向下放大进入",value:"zoomInDown"},{name:"从左放大进入",value:"zoomInLeft"},{name:"从右放大进入",value:"zoomInRight"},{name:"向上放大进入",value:"zoomInUp"}]},{type:"slide",name:"滑入",children:[{name:"向下滑入",value:"slideInDown"},{name:"从右滑入",value:"slideInLeft"},{name:"从左滑入",value:"slideInRight"},{name:"向上滑入",value:"slideInUp"}]},{type:"flip",name:"翻转",children:[{name:"X轴翻转进入",value:"flipInX"},{name:"Y轴翻转进入",value:"flipInY"}]},{type:"back",name:"放大滑入",children:[{name:"向下放大滑入",value:"backInDown"},{name:"从左放大滑入",value:"backInLeft"},{name:"从右放大滑入",value:"backInRight"},{name:"向上放大滑入",value:"backInUp"}]},{type:"lightSpeed",name:"飞入",children:[{name:"从右飞入",value:"lightSpeedInRight"},{name:"从左飞入",value:"lightSpeedInLeft"}]}],Us={},Gs=Object(ye["a"])(zs);try{for(Gs.s();!(Fs=Gs.n()).done;){var qs,Ws=Fs.value,Xs=Object(ye["a"])(Ws.children);try{for(Xs.s();!(qs=Xs.n()).done;){var Ys=qs.value;Us[Ys.value]=Ys.name}}catch(Wv){Xs.e(Wv)}finally{Xs.f()}}}catch(Wv){Gs.e(Wv)}finally{Gs.f()}var Zs=Object(j["defineComponent"])({name:"element-animation-panel",components:{Draggable:tl.a},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.getters.handleElement})),n=Object(j["computed"])((function(){return e.getters.currentSlideAnimations})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["ref"])(""),a=Object(j["ref"])(!1),r=Ce(),l=r.addHistorySnapshot,i=zs,u=Object(j["computed"])((function(){if(!n.value)return[];var e,t=[],c=Object(ye["a"])(n.value);try{var a=function(){var n=e.value,c=o.value.elements.find((function(e){return e.id===n.elId}));if(!c)return"continue";var a=Xt[c.type],r=Us[n.type];t.push(Object(P["a"])(Object(P["a"])({},n),{},{elType:a,animationType:r}))};for(c.s();!(e=c.n()).done;)a()}catch(Wv){c.e(Wv)}finally{c.f()}return t})),d=Object(j["computed"])((function(){if(!t.value)return null;var e=n.value||[],o=e.find((function(e){return e.elId===t.value.id}));return o?Us[o.type]:null})),s=function(t){var o=n.value.filter((function(e){return e.elId!==t}));e.commit(g.UPDATE_SLIDE,{animations:o}),l()},f=function(t){var o=t.newIndex,c=t.oldIndex;if(c!==o){var a=JSON.parse(JSON.stringify(n.value)),r=a[c];a.splice(c,1),a.splice(o,0,r),e.commit(g.UPDATE_SLIDE,{animations:a}),l()}},p=function(e,t){var n="animate__",o=document.querySelector("#editable-element-".concat(e," [class^=editable-element-]"));if(o){var c="".concat(n).concat(t);o.classList.add("".concat(n,"animated"),c);var a=function(){o.classList.remove("".concat(n,"animated"),c)};o.addEventListener("animationend",a,{once:!0})}},b=function(o){var c=n.value.map((function(e){return e.elId===t.value.id?Object(P["a"])(Object(P["a"])({},e),{},{type:o}):e}));e.commit(g.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)},m=function(o){if(d.value)b(o);else{var c=n.value?JSON.parse(JSON.stringify(n.value)):[];c.push({elId:t.value.id,type:o,duration:1e3}),e.commit(g.UPDATE_SLIDE,{animations:c}),a.value=!1,l(),p(t.value.id,o)}};return{handleElement:t,animationPoolVisible:a,animations:i,animationSequence:u,hoverPreviewAnimation:c,handleElementAnimation:d,addAnimation:m,deleteAnimation:s,handleDragEnd:f,runAnimation:p}}});n("f8c3");Zs.render=Hs,Zs.__scopeId="data-v-79c3f50b";var Js=Zs,Ks=Object(j["withScopeId"])("data-v-5069f2f0");Object(j["pushScopeId"])("data-v-5069f2f0");var $s={class:"slide-style-panel"},Qs=Object(j["createVNode"])("div",{class:"title"},"背景填充",-1),ef={class:"row"},tf=Object(j["createTextVNode"])("纯色填充"),nf=Object(j["createTextVNode"])("图片填充"),of=Object(j["createTextVNode"])("渐变填充"),cf=Object(j["createVNode"])("div",{style:{flex:"1"}},null,-1),af=Object(j["createTextVNode"])("原始大小"),rf=Object(j["createTextVNode"])("缩放"),lf=Object(j["createTextVNode"])("拼贴"),uf=Object(j["createTextVNode"])("缩放铺满"),df=Object(j["createTextVNode"])("线性渐变"),sf=Object(j["createTextVNode"])("径向渐变"),ff={key:0,class:"background-image-wrapper"},pf={class:"background-image"},bf={key:1,class:"background-gradient-wrapper"},mf={class:"row"},vf=Object(j["createVNode"])("div",{style:{flex:"2"}},"起点颜色:",-1),Of={class:"row"},jf=Object(j["createVNode"])("div",{style:{flex:"2"}},"终点颜色:",-1),hf={key:0,class:"row"},gf=Object(j["createVNode"])("div",{style:{flex:"2"}},"渐变角度:",-1),yf={class:"row"},kf=Object(j["createTextVNode"])("应用背景到全部"),Ef=Object(j["createVNode"])("div",{class:"title"},"全局主题",-1),If={class:"row"},Sf=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体:",-1),Cf={class:"row"},Nf=Object(j["createVNode"])("div",{style:{flex:"2"}},"字体颜色:",-1),xf={class:"row"},Lf=Object(j["createVNode"])("div",{style:{flex:"2"}},"背景颜色:",-1),Tf={class:"row"},wf=Object(j["createVNode"])("div",{style:{flex:"2"}},"主题色:",-1),Vf=Object(j["createVNode"])("div",{class:"title",style:{"margin-top":"20px"}},"预置主题:",-1),_f={class:"theme-list"},Bf={class:"theme-item-content"},Mf={class:"row"},Df=Object(j["createTextVNode"])("应用主题到全部");Object(j["popScopeId"])();var Af=Ks((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("SelectOption"),l=Object(j["resolveComponent"])("Select"),i=Object(j["resolveComponent"])("ColorPicker"),u=Object(j["resolveComponent"])("ColorButton"),d=Object(j["resolveComponent"])("Popover"),s=Object(j["resolveComponent"])("IconPlus"),f=Object(j["resolveComponent"])("FileInput"),p=Object(j["resolveComponent"])("Slider"),b=Object(j["resolveComponent"])("Button"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("SelectOptGroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",$s,[Qs,Object(j["createVNode"])("div",ef,[Object(j["createVNode"])(l,{style:{flex:"10"},value:e.background.type,onChange:t[1]||(t[1]=function(t){return e.updateBackgroundType(t)})},{default:Ks((function(){return[Object(j["createVNode"])(r,{value:"solid"},{default:Ks((function(){return[tf]})),_:1}),Object(j["createVNode"])(r,{value:"image"},{default:Ks((function(){return[nf]})),_:1}),Object(j["createVNode"])(r,{value:"gradient"},{default:Ks((function(){return[of]})),_:1})]})),_:1},8,["value"]),cf,"solid"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(d,{key:0,trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.color,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.updateBackground({color:t})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.background.color||"#fff",style:{flex:"10"}},null,8,["color"])]})),_:1})):"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:1,style:{flex:"10"},value:e.background.size||"cover",onChange:t[3]||(t[3]=function(t){return e.updateBackground({imageSize:t})})},{default:Ks((function(){return[Object(j["createVNode"])(r,{value:"initial"},{default:Ks((function(){return[af]})),_:1}),Object(j["createVNode"])(r,{value:"contain"},{default:Ks((function(){return[rf]})),_:1}),Object(j["createVNode"])(r,{value:"repeat"},{default:Ks((function(){return[lf]})),_:1}),Object(j["createVNode"])(r,{value:"cover"},{default:Ks((function(){return[uf]})),_:1})]})),_:1},8,["value"])):(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:2,style:{flex:"10"},value:e.background.gradientType,onChange:t[4]||(t[4]=function(t){return e.updateBackground({gradientType:t})})},{default:Ks((function(){return[Object(j["createVNode"])(r,{value:"linear"},{default:Ks((function(){return[df]})),_:1}),Object(j["createVNode"])(r,{value:"radial"},{default:Ks((function(){return[sf]})),_:1})]})),_:1},8,["value"]))]),"image"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",ff,[Object(j["createVNode"])(f,{onChange:t[5]||(t[5]=function(t){return e.uploadBackgroundImage(t)})},{default:Ks((function(){return[Object(j["createVNode"])("div",pf,[Object(j["createVNode"])("div",{class:"content",style:{backgroundImage:"url(".concat(e.background.image,")")}},[Object(j["createVNode"])(s)],4)])]})),_:1})])):Object(j["createCommentVNode"])("",!0),"gradient"===e.background.type?(Object(j["openBlock"])(),Object(j["createBlock"])("div",bf,[Object(j["createVNode"])("div",mf,[vf,Object(j["createVNode"])(d,{trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[0],"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.updateBackground({gradientColor:[t,e.background.gradientColor[1]]})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[0],style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Of,[jf,Object(j["createVNode"])(d,{trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.background.gradientColor[1],"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.updateBackground({gradientColor:[e.background.gradientColor[0],t]})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.background.gradientColor[1],style:{flex:"3"}},null,8,["color"])]})),_:1})]),"linear"===e.background.gradientType?(Object(j["openBlock"])(),Object(j["createBlock"])("div",hf,[gf,Object(j["createVNode"])(p,{min:0,max:360,step:15,value:e.background.gradientRotate,style:{flex:"3"},onChange:t[8]||(t[8]=function(t){return e.updateBackground({gradientRotate:t})})},null,8,["value"])])):Object(j["createCommentVNode"])("",!0)])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",yf,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[9]||(t[9]=function(t){return e.applyBackgroundAllSlide()})},{default:Ks((function(){return[kf]})),_:1})]),Object(j["createVNode"])(m),Ef,Object(j["createVNode"])("div",If,[Sf,Object(j["createVNode"])(l,{style:{flex:"3"},value:e.theme.fontName,onChange:t[10]||(t[10]=function(t){return e.updateTheme({fontName:t})})},{default:Ks((function(){return[Object(j["createVNode"])(v,{label:"系统字体"},{default:Ks((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.availableFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Ks((function(){return[Object(j["createVNode"])("span",{style:{fontFamily:e.value}},Object(j["toDisplayString"])(e.label),5)]})),_:2},1032,["value"])})),128))]})),_:1}),Object(j["createVNode"])(v,{label:"在线字体"},{default:Ks((function(){return[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.webFonts,(function(e){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:e.value,value:e.value},{default:Ks((function(){return[Object(j["createVNode"])("span",null,Object(j["toDisplayString"])(e.label),1)]})),_:2},1032,["value"])})),128))]})),_:1})]})),_:1},8,["value"])]),Object(j["createVNode"])("div",Cf,[Nf,Object(j["createVNode"])(d,{trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.fontColor,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.updateTheme({fontColor:t})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.theme.fontColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",xf,[Lf,Object(j["createVNode"])(d,{trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.backgroundColor,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.updateTheme({backgroundColor:t})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.theme.backgroundColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Object(j["createVNode"])("div",Tf,[wf,Object(j["createVNode"])(d,{trigger:"click"},{content:Ks((function(){return[Object(j["createVNode"])(i,{modelValue:e.theme.themeColor,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.updateTheme({themeColor:t})})},null,8,["modelValue"])]})),default:Ks((function(){return[Object(j["createVNode"])(u,{color:e.theme.themeColor,style:{flex:"3"}},null,8,["color"])]})),_:1})]),Vf,Object(j["createVNode"])("div",_f,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themes,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"theme-item",key:n,style:{backgroundColor:t.background},onClick:function(n){return e.updateTheme({fontColor:t.text,backgroundColor:t.background,themeColor:t.color})}},[Object(j["createVNode"])("div",Bf,[Object(j["createVNode"])("div",{class:"text",style:{color:t.text}},"Aa",4),Object(j["createVNode"])("div",{class:"color-block",style:{backgroundColor:t.color}},null,4)])],12,["onClick"])})),128))]),Object(j["createVNode"])("div",Mf,[Object(j["createVNode"])(b,{style:{flex:"1"},onClick:t[14]||(t[14]=function(t){return e.applyThemeAllSlide()})},{default:Ks((function(){return[Df]})),_:1})])])})),Pf=[{color:"#d14424",background:"#ffffff",text:"#333"},{color:"#42464b",background:"#ffffff",text:"#333"},{color:"#5d82ba",background:"#ffffff",text:"#333"},{color:"#005a6f",background:"#ffffff",text:"#333"},{color:"#d0614c",background:"#dfb044",text:"#333"},{color:"#86a1ad",background:"#dfdbd4",text:"#333"},{color:"#697586",background:"#d5c4a4",text:"#333"},{color:"#333333",background:"#7acfa6",text:"#333"},{color:"#42464b",background:"#415065",text:"#fff"},{color:"#0c5999",background:"#35a2cd",text:"#fff"},{color:"#c49a41",background:"#8c4357",text:"#fff"},{color:"#dfaa00",background:"#2e4e7d",text:"#fff"},{color:"#d1ad88",background:"#f99070",text:"#fff"},{color:"#464d52",background:"#657984",text:"#fff"},{color:"#ffcfb6",background:"#1e4c6f",text:"#fff"},{color:"#c3a043",background:"#43292a",text:"#fff"},{color:"#ffffff",background:"#171925",text:"#fff"},{color:"#df9636",background:"#5b89a0",text:"#fff"},{color:"#b898a4",background:"#93716b",text:"#fff"},{color:"#c47a11",background:"#187db1",text:"#fff"},{color:"#333333",background:"#759564",text:"#fff"},{color:"#355b5e",background:"#424b50",text:"#fff"},{color:"#d29090",background:"#942a32",text:"#fff"},{color:"#00cfdf",background:"#3b434d",text:"#fff"},{color:"#424246",background:"#c70042",text:"#fff"},{color:"#2e4155",background:"#b35d44",text:"#fff"},{color:"#11bfce",background:"#8f98aa",text:"#fff"},{color:"#333333",background:"#549688",text:"#fff"}],Rf=Pf,Ff=z,Hf=Object(j["defineComponent"])({name:"slide-style-panel",components:{ColorButton:xi},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.theme})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["computed"])((function(){return e.state.availableFonts})),a=Object(j["computed"])((function(){return o.value.background?o.value.background:{type:"solid",value:"#fff"}})),r=Ce(),l=r.addHistorySnapshot,i=function(t){if("solid"===t){var n=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"solid",color:a.value.color||"#fff"});e.commit(g.UPDATE_SLIDE,{background:n})}else if("image"===t){var o=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"image",image:a.value.image||"",imageSize:a.value.imageSize||"cover"});e.commit(g.UPDATE_SLIDE,{background:o})}else{var c=Object(P["a"])(Object(P["a"])({},a.value),{},{type:"gradient",gradientType:a.value.gradientType||"linear",gradientColor:a.value.gradientColor||["#fff","#fff"],gradientRotate:a.value.gradientRotate||0});e.commit(g.UPDATE_SLIDE,{background:c})}l()},u=function(t){e.commit(g.UPDATE_SLIDE,{background:Object(P["a"])(Object(P["a"])({},a.value),t)}),l()},d=function(e){var t=e[0];t&&xe(t).then((function(e){return u({image:e})}))},s=function(){var n=t.value.map((function(e){return Object(P["a"])(Object(P["a"])({},e),{},{background:o.value.background})}));e.commit(g.SET_SLIDES,n),l()},f=function(t){e.commit(g.SET_THEME,t)},p=function(){var o,c=JSON.parse(JSON.stringify(t.value)),a=n.value,r=a.themeColor,i=a.backgroundColor,u=a.fontColor,d=Object(ye["a"])(c);try{for(d.s();!(o=d.n()).done;){var s=o.value;s.background&&"image"===s.background.type||(s.background=Object(P["a"])(Object(P["a"])({},s.background),{},{type:"solid",color:i}));var f,p=s.elements,b=Object(ye["a"])(p);try{for(b.s();!(f=b.n()).done;){var m=f.value;"shape"===m.type?m.fill=r:"line"===m.type?m.color=r:"text"===m.type?m.fill&&(m.fill=r):"table"===m.type?m.theme&&(m.theme.color=r):"chart"===m.type&&(m.themeColor=r,m.gridColor=u)}}catch(Wv){b.e(Wv)}finally{b.f()}}}catch(Wv){d.e(Wv)}finally{d.f()}e.commit(g.SET_SLIDES,c),l()};return{availableFonts:c,background:a,updateBackgroundType:i,updateBackground:u,uploadBackgroundImage:d,applyBackgroundAllSlide:s,themes:Rf,theme:n,webFonts:Ff,updateTheme:f,applyThemeAllSlide:p}}});n("872a6");Hf.render=Af,Hf.__scopeId="data-v-5069f2f0";var zf=Hf,Uf=Object(j["withScopeId"])("data-v-6e3028f1");Object(j["pushScopeId"])("data-v-6e3028f1");var Gf={class:"slide-animation-panel"},qf={class:"animation-pool"},Wf={class:"animation-text"},Xf=Object(j["createTextVNode"])("应用到全部");Object(j["popScopeId"])();var Yf=Uf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Button");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Gf,[Object(j["createVNode"])("div",qf,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.animations,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["animation-item",{active:e.currentTurningMode===t.value}],key:t.label,onClick:function(n){return e.updateTurningMode(t.value)}},[Object(j["createVNode"])("div",{class:["animation-block",t.value]},null,2),Object(j["createVNode"])("div",Wf,Object(j["toDisplayString"])(t.label),1)],10,["onClick"])})),128))]),Object(j["createVNode"])(r,{style:{width:"100%"},onClick:t[1]||(t[1]=function(t){return e.applyAllSlide()})},{default:Uf((function(){return[Xf]})),_:1})])})),Zf=Object(j["defineComponent"])({name:"slide-animation-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.getters.currentSlide})),o=Object(j["computed"])((function(){return n.value.turningMode||"slideY"})),c=[{label:"无",value:"no"},{label:"淡入淡出",value:"fade"},{label:"左右推移",value:"slideX"},{label:"上下推移",value:"slideY"}],a=Ce(),r=a.addHistorySnapshot,l=function(t){t!==o.value&&(e.commit(g.UPDATE_SLIDE,{turningMode:t}),r())},i=function(){var o=t.value.map((function(e){return Object(P["a"])(Object(P["a"])({},e),{},{turningMode:n.value.turningMode})}));e.commit(g.SET_SLIDES,o),r()};return{currentTurningMode:o,animations:c,updateTurningMode:l,applyAllSlide:i}}});n("5217");Zf.render=Yf,Zf.__scopeId="data-v-6e3028f1";var Jf=Zf,Kf=Object(j["withScopeId"])("data-v-540e3d06");Object(j["pushScopeId"])("data-v-540e3d06");var $f={class:"multi-position-panel"},Qf=Object(j["createTextVNode"])("组合"),ep=Object(j["createTextVNode"])("取消组合");Object(j["popScopeId"])();var tp=Kf((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconAlignLeft"),l=Object(j["resolveComponent"])("Button"),i=Object(j["resolveComponent"])("Tooltip"),u=Object(j["resolveComponent"])("IconAlignVertically"),d=Object(j["resolveComponent"])("IconAlignRight"),s=Object(j["resolveComponent"])("ButtonGroup"),f=Object(j["resolveComponent"])("IconAlignTop"),p=Object(j["resolveComponent"])("IconAlignHorizontally"),b=Object(j["resolveComponent"])("IconAlignBottom"),m=Object(j["resolveComponent"])("Divider"),v=Object(j["resolveComponent"])("IconGroup"),O=Object(j["resolveComponent"])("IconUngroup");return Object(j["openBlock"])(),Object(j["createBlock"])("div",$f,[Object(j["createVNode"])(s,{class:"row"},{default:Kf((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"左对齐"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[1]||(t[1]=function(t){return e.alignActiveElement("left")})},{default:Kf((function(){return[Object(j["createVNode"])(r)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"水平居中"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[2]||(t[2]=function(t){return e.alignActiveElement("horizontal")})},{default:Kf((function(){return[Object(j["createVNode"])(u)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"右对齐"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[3]||(t[3]=function(t){return e.alignActiveElement("right")})},{default:Kf((function(){return[Object(j["createVNode"])(d)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(s,{class:"row"},{default:Kf((function(){return[Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"上对齐"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[4]||(t[4]=function(t){return e.alignActiveElement("top")})},{default:Kf((function(){return[Object(j["createVNode"])(f)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"垂直居中"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[5]||(t[5]=function(t){return e.alignActiveElement("vertical")})},{default:Kf((function(){return[Object(j["createVNode"])(p)]})),_:1})]})),_:1},8,["mouseEnterDelay"]),Object(j["createVNode"])(i,{mouseLeaveDelay:0,mouseEnterDelay:.5,title:"下对齐"},{default:Kf((function(){return[Object(j["createVNode"])(l,{style:{flex:"1"},onClick:t[6]||(t[6]=function(t){return e.alignActiveElement("bottom")})},{default:Kf((function(){return[Object(j["createVNode"])(b)]})),_:1})]})),_:1},8,["mouseEnterDelay"])]})),_:1}),Object(j["createVNode"])(m),Object(j["createVNode"])(s,{class:"row"},{default:Kf((function(){return[Object(j["createVNode"])(l,{disabled:!e.canCombine,onClick:t[7]||(t[7]=function(t){return e.combineElements()}),style:{flex:"1"}},{default:Kf((function(){return[Object(j["createVNode"])(v,{style:{"margin-right":"3px"}}),Qf]})),_:1},8,["disabled"]),Object(j["createVNode"])(l,{disabled:e.canCombine,onClick:t[8]||(t[8]=function(t){return e.uncombineElements()}),style:{flex:"1"}},{default:Kf((function(){return[Object(j["createVNode"])(O,{style:{"margin-right":"3px"}}),ep]})),_:1},8,["disabled"])]})),_:1})])})),np=Object(j["defineComponent"])({name:"multi-position-panel",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.activeElementIdList})),n=Object(j["computed"])((function(){return e.getters.activeElementList})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Ce(),a=c.addHistorySnapshot,r=De(),l=r.combineElements,i=r.uncombineElements,u=Object(j["computed"])((function(){var e=n.value[0].groupId;if(!e)return!0;var t=n.value.every((function(t){return(t.groupId&&t.groupId)===e}));return!t})),d=function(c){var r,l=Pt(n.value),i=l.minX,u=l.maxX,d=l.minY,s=l.maxY,f=JSON.parse(JSON.stringify(o.value.elements)),p={},b=Object(ye["a"])(n.value);try{var m=function(){var e=r.value;if(e.groupId&&!p[e.groupId]){var t=n.value.filter((function(t){return t.groupId===e.groupId}));p[e.groupId]=Pt(t)}};for(b.s();!(r=b.n()).done;)m()}catch(Wv){b.e(Wv)}finally{b.f()}if(c===Q.LEFT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minX-i;e.left=e.left-o}else e.left=i}));else if(c===Q.RIGHT)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxX-u;e.left=e.left-o}else{var c="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=u-c}}));else if(c===Q.TOP)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.minY-d;e.top=e.top-o}else e.top=d}));else if(c===Q.BOTTOM)f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=n.maxY-s;e.top=e.top-o}else{var c="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=s-c}}));else if(c===Q.HORIZONTAL){var v=(i+u)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxX+n.minX)/2,c=o-v;e.left=e.left-c}else{var a="line"===e.type?Math.max(e.start[0],e.end[0]):e.width;e.left=v-a/2}}))}else if(c===Q.VERTICAL){var O=(d+s)/2;f.forEach((function(e){if(t.value.includes(e.id))if(e.groupId){var n=p[e.groupId],o=(n.maxY+n.minY)/2,c=o-O;e.top=e.top-c}else{var a="line"===e.type?Math.max(e.start[1],e.end[1]):e.height;e.top=O-a/2}}))}e.commit(g.UPDATE_SLIDE,{elements:f}),a()};return{canCombine:u,combineElements:l,uncombineElements:i,alignActiveElement:d}}});n("a607");np.render=tp,np.__scopeId="data-v-540e3d06";var op=np,cp=Object(j["defineComponent"])({name:"toolbar",setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.toolbarState})),n=[{label:"样式",value:Wl.EL_STYLE},{label:"位置",value:Wl.EL_POSITION},{label:"动画",value:Wl.EL_ANIMATION}],o=[{label:"页面样式",value:Wl.SLIDE_STYLE},{label:"切换",value:Wl.SLIDE_ANIMATION},{label:"动画",value:Wl.EL_ANIMATION}],c=[{label:"位置",value:Wl.MULTI_POSITION},{label:"样式",value:Wl.EL_STYLE}],a=function(t){e.commit(g.SET_TOOLBAR_STATE,t)},r=Object(j["computed"])((function(){return e.state.activeElementIdList})),l=Object(j["computed"])((function(){return r.value.length?r.value.length>1?c:n:o}));Object(j["watch"])(l,(function(){var n=l.value.map((function(e){return e.value}));n.includes(t.value)||e.commit(g.SET_TOOLBAR_STATE,n[0])}));var i=Object(j["computed"])((function(){var e,n=(e={},Object(C["a"])(e,Wl.EL_STYLE,ds),Object(C["a"])(e,Wl.EL_POSITION,xs),Object(C["a"])(e,Wl.EL_ANIMATION,Js),Object(C["a"])(e,Wl.SLIDE_STYLE,zf),Object(C["a"])(e,Wl.SLIDE_ANIMATION,Jf),Object(C["a"])(e,Wl.MULTI_POSITION,op),e);return n[t.value]||null}));return{toolbarState:t,currentTabs:l,setToolbarState:a,currentPanelComponent:i}}});n("31e2");cp.render=ql,cp.__scopeId="data-v-58d77c92";var ap=cp,rp=Object(j["defineComponent"])({name:"editor",components:{EditorHeader:Lt,Canvas:ar,CanvasTool:Yr,Thumbnails:Fl,Toolbar:ap},setup:function(){We(),Xe()}});n("c527");rp.render=ce,rp.__scopeId="data-v-5186b40b";var lp=rp,ip=Object(j["withScopeId"])("data-v-7ab5e859");Object(j["pushScopeId"])("data-v-7ab5e859");var up={class:"hamster-ppt-screen"},dp={class:"tools"};Object(j["popScopeId"])();var sp=ip((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenSlide"),l=Object(j["resolveComponent"])("SlideThumbnails"),i=Object(j["resolveComponent"])("IconLeftC"),u=Object(j["resolveComponent"])("IconRightC"),d=Object(j["resolveComponent"])("IconSearch"),s=Object(j["resolveComponent"])("WritingBoardTool"),f=Object(j["resolveComponent"])("IconWrite"),p=Object(j["resolveComponent"])("Popover"),b=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",up,[Object(j["withDirectives"])(Object(j["createVNode"])("div",{class:"slide-list",onMousewheel:t[1]||(t[1]=function(t){return e.mousewheelListener(t)})},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["slide-item","turning-mode-".concat(t.turningMode||"slideY"),{current:n===e.slideIndex,before:ne.slideIndex,hide:(n===e.slideIndex-1||n===e.slideIndex+1)&&t.turningMode!==e.currentSlide.turningMode}],key:t.id},[Object(j["createVNode"])("div",{class:"slide-content",style:{width:e.slideWidth+"px",height:e.slideHeight+"px"}},[Object(j["createVNode"])(r,{slide:t,scale:e.scale,animationIndex:e.animationIndex},null,8,["slide","scale","animationIndex"])],4)],2)})),128))],544),[[b,e.contextmenus]]),e.slideThumbnailModelVisible?(Object(j["openBlock"])(),Object(j["createBlock"])(l,{key:0,turnSlideToIndex:e.turnSlideToIndex,onClose:t[2]||(t[2]=function(t){return e.slideThumbnailModelVisible=!1})},null,8,["turnSlideToIndex"])):Object(j["createCommentVNode"])("",!0),Object(j["createVNode"])("div",dp,[Object(j["createVNode"])(i,{class:"tool-btn",onClick:t[3]||(t[3]=function(t){return e.execPrev()})}),Object(j["createVNode"])(u,{class:"tool-btn",onClick:t[4]||(t[4]=function(t){return e.execNext()})}),Object(j["createVNode"])(d,{class:"tool-btn",onClick:t[5]||(t[5]=function(t){return e.slideThumbnailModelVisible=!0})}),Object(j["createVNode"])(p,{trigger:"click",visible:e.writingBoardToolVisible,"onUpdate:visible":t[7]||(t[7]=function(t){return e.writingBoardToolVisible=t})},{content:ip((function(){return[Object(j["createVNode"])(s,{onClose:t[6]||(t[6]=function(t){return e.writingBoardToolVisible=!1})})]})),default:ip((function(){return[Object(j["createVNode"])(f,{class:"tool-btn"})]})),_:1},8,["visible"])])])})),fp=Object(j["withScopeId"])("data-v-5e193d56"),pp=fp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ScreenElement");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-slide",style:{width:e.VIEWPORT_SIZE+"px",height:e.VIEWPORT_SIZE*e.VIEWPORT_ASPECT_RATIO+"px",transform:"scale(".concat(e.scale,")")}},[Object(j["createVNode"])("div",{class:"background",style:Object(P["a"])({},e.backgroundStyle)},null,4),(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slide.elements,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(r,{id:"screen-element-".concat(t.id),key:t.id,elementInfo:t,elementIndex:n+1,animationIndex:e.animationIndex},null,8,["id","elementInfo","elementIndex","animationIndex"])})),128))],4)}));function bp(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element",style:{zIndex:e.elementIndex,color:e.theme.fontColor,fontFamily:e.theme.fontName,visibility:e.needWaitAnimation?"hidden":"visible"}},[(Object(j["openBlock"])(),Object(j["createBlock"])(Object(j["resolveDynamicComponent"])(e.currentElementComponent),{elementInfo:e.elementInfo},null,8,["elementInfo"]))],4)}var mp=Object(j["withScopeId"])("data-v-1423f8c2"),vp=mp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("ElementOutline"),l=Object(j["resolveComponent"])("Chart");return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"screen-element-chart",style:{top:e.elementInfo.top+"px",left:e.elementInfo.left+"px",width:e.elementInfo.width+"px",height:e.elementInfo.height+"px"}},[Object(j["createVNode"])("div",{class:"element-content",style:{backgroundColor:e.elementInfo.fill}},[Object(j["createVNode"])(r,{width:e.elementInfo.width,height:e.elementInfo.height,outline:e.elementInfo.outline},null,8,["width","height","outline"]),Object(j["createVNode"])(l,{width:e.elementInfo.width,height:e.elementInfo.height,type:e.elementInfo.chartType,data:e.elementInfo.data,options:e.elementInfo.options,themeColor:e.elementInfo.themeColor,gridColor:e.elementInfo.gridColor},null,8,["width","height","type","data","options","themeColor","gridColor"])],4)],4)})),Op=Object(j["defineComponent"])({name:"screen-element-chart",components:{ElementOutline:qo,Chart:Ec},props:{elementInfo:{type:Object,required:!0}}});n("1539");Op.render=vp,Op.__scopeId="data-v-1423f8c2";var jp=Op,hp=Object(j["defineComponent"])({name:"screen-element",props:{elementInfo:{type:Object,required:!0},elementIndex:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Object(j["computed"])((function(){var t,n=(t={},Object(C["a"])(t,rn.IMAGE,il),Object(C["a"])(t,rn.TEXT,fl),Object(C["a"])(t,rn.SHAPE,Ol),Object(C["a"])(t,rn.LINE,yl),Object(C["a"])(t,rn.CHART,jp),Object(C["a"])(t,rn.TABLE,Bl),t);return n[e.elementInfo.type]||null})),n=X(),o=Object(j["computed"])((function(){return n.state.theme})),c=Object(j["computed"])((function(){return n.getters.currentSlide})),a=Object(j["computed"])((function(){var t=c.value.animations||[],n=t.findIndex((function(t){return t.elId===e.elementInfo.id}));return-1!==n&&n>=e.animationIndex}));return{currentElementComponent:t,needWaitAnimation:a,theme:o}}});hp.render=bp;var gp=hp,yp=Object(j["defineComponent"])({name:"screen-slide",components:{ScreenElement:gp},props:{slide:{type:Object,required:!0},scale:{type:Number,required:!0},animationIndex:{type:Number,default:-1}},setup:function(e){var t=Object(j["computed"])((function(){return e.slide.background})),n=ea(t),o=n.backgroundStyle;return{backgroundStyle:o,VIEWPORT_SIZE:Le,VIEWPORT_ASPECT_RATIO:Te}}});n("993a");yp.render=pp,yp.__scopeId="data-v-5e193d56";var kp=yp,Ep=Object(j["withScopeId"])("data-v-49960bc8");Object(j["pushScopeId"])("data-v-49960bc8");var Ip={class:"slide-thumbnails"},Sp={class:"return-button"},Cp={class:"slide-thumbnails-content"};Object(j["popScopeId"])();var Np=Ep((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconArrowCircleLeft"),l=Object(j["resolveComponent"])("ThumbnailSlide");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ip,[Object(j["createVNode"])("div",Sp,[Object(j["createVNode"])(r,{class:"icon",onClick:t[1]||(t[1]=function(t){return e.close()})})]),Object(j["createVNode"])("div",Cp,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.slides,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["thumbnail",{active:n===e.slideIndex}],key:t.id,onClick:function(t){return e.turnSlideToIndex(n)}},[Object(j["createVNode"])(l,{slide:t,size:150},null,8,["slide"])],10,["onClick"])})),128))])])})),xp=Object(j["defineComponent"])({name:"slide-thumbnails",components:{ThumbnailSlide:Pl},props:{turnSlideToIndex:{type:Function}},setup:function(e,t){var n=t.emit,o=X(),c=Object(j["computed"])((function(){return o.state.slides})),a=Object(j["computed"])((function(){return o.state.slideIndex})),r=function(){return n("close")};return{slides:c,slideIndex:a,close:r}}});n("9a54");xp.render=Np,xp.__scopeId="data-v-49960bc8";var Lp=xp,Tp=Object(j["withScopeId"])("data-v-0bfb345d");Object(j["pushScopeId"])("data-v-0bfb345d");var wp={class:"writing-board-tool"},Vp={class:"tools"},_p={class:"colors"};Object(j["popScopeId"])();var Bp=Tp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("WritingBoard"),l=Object(j["resolveDirective"])("contextmenu");return Object(j["openBlock"])(),Object(j["createBlock"])("div",wp,[(Object(j["openBlock"])(),Object(j["createBlock"])(j["Teleport"],{to:"body"},[e.writingBoardVisible?Object(j["withDirectives"])((Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:0,ref:"writingBoardRef",color:e.writingBoardColor,model:e.writingBoardModel},null,8,["color","model"])),[[l,e.contextmenus]]):Object(j["createCommentVNode"])("",!0)])),Object(j["createVNode"])("div",Vp,[Object(j["createVNode"])("div",{class:"btn",onClick:t[1]||(t[1]=function(t){return e.changePen()})},"画笔"),Object(j["createVNode"])("div",{class:"btn",onClick:t[2]||(t[2]=function(t){return e.changeEraser()})},"橡皮擦"),Object(j["createVNode"])("div",{class:"btn",onClick:t[3]||(t[3]=function(t){return e.clearCanvas()})},"擦除所有墨迹"),Object(j["createVNode"])("div",{class:"btn",onClick:t[4]||(t[4]=function(t){return e.closeWritingBoard()})},"退出画笔"),Object(j["createVNode"])("div",_p,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.writingBoardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:["color",{active:t===e.writingBoardColor}],key:t,style:{backgroundColor:t},onClick:function(n){return e.changeColor(t)}},null,14,["onClick"])})),128))])])])})),Mp=Object(j["withScopeId"])("data-v-4ddc4b2c");Object(j["pushScopeId"])("data-v-4ddc4b2c");var Dp={class:"writing-board",ref:"writingBoardRef"};Object(j["popScopeId"])();var Ap=Mp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("IconWrite");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Dp,[Object(j["createVNode"])("canvas",{class:"canvas",ref:"canvasRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMousedown(t)}),onMousemove:t[2]||(t[2]=function(t){return e.handleMousemove(t)}),onMouseup:t[3]||(t[3]=function(t){return e.handleMouseup()}),onMouseleave:t[4]||(t[4]=function(t){e.handleMouseup(),e.mouseInCanvas=!1}),onMouseenter:t[5]||(t[5]=function(t){return e.mouseInCanvas=!0})},null,544),e.mouseInCanvas&&"pen"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:"pen",style:{left:e.mouse.x-e.penSize/2+"px",top:e.mouse.y-36+e.penSize/2+"px",color:e.color}},[Object(j["createVNode"])(r,{class:"icon",size:"36"})],4)):Object(j["createCommentVNode"])("",!0),e.mouseInCanvas&&"eraser"===e.model?(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:1,class:"eraser",style:{left:e.mouse.x-e.rubberSize/2+"px",top:e.mouse.y-e.rubberSize/2+"px",width:e.rubberSize+"px",height:e.rubberSize+"px"}},null,4)):Object(j["createCommentVNode"])("",!0)],512)})),Pp=6,Rp=80,Fp=Object(j["defineComponent"])({name:"writing-board",props:{color:{type:String,default:"#ffcc00"},model:{type:String,default:"pen"}},setup:function(e){var t=null,n=Object(j["ref"])(),o=Object(j["ref"])(),c={x:0,y:0},a=!1,r=0,l=-1,i=Object(j["reactive"])({x:0,y:0}),u=function(e){i.x=e.pageX,i.y=e.pageY},d=Object(j["ref"])(!1),s=function(){o.value&&n.value&&(t=o.value.getContext("2d"),t&&(o.value.width=n.value.clientWidth,o.value.height=n.value.clientHeight,o.value.style.width=n.value.clientWidth+"px",o.value.style.height=n.value.clientHeight+"px",t.lineCap="round",t.lineJoin="round"))};Object(j["onMounted"])(s);var f=function(n,o,a){if(t){var r=c.x,l=c.y;t.lineWidth=a,t.strokeStyle=e.color,t.beginPath(),t.moveTo(r,l),t.lineTo(n,o),t.stroke(),t.closePath()}},p=function(e,n){var a,r,l,i;if(t&&o.value){var u=c.x,d=c.y,s=Rp/2,f=s*Math.sin(Math.atan((n-d)/(e-u))),p=s*Math.cos(Math.atan((n-d)/(e-u))),b=[u+f,d-p],m=[u-f,d+p],v=[e+f,n-p],O=[e-f,n+p];t.save(),t.beginPath(),t.arc(e,n,s,0,2*Math.PI),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore(),t.save(),t.beginPath(),(a=t).moveTo.apply(a,b),(r=t).lineTo.apply(r,v),(l=t).lineTo.apply(l,O),(i=t).lineTo.apply(i,m),t.closePath(),t.clip(),t.clearRect(0,0,o.value.width,o.value.height),t.restore()}},b=function(e){a=!0,c={x:e.offsetX,y:e.offsetY},r=(new Date).getTime()},m=function(e,t){var n=c.x,o=c.y;return Math.sqrt((e-n)*(e-n)+(t-o)*(t-o))},v=function(e,t){var n,o=10,c=.1,a=Pp,r=3,i=e/t;return n=i<=c?a:i>=o?r:a-i/o*a,-1===l?n:1*n/3+2*l/3},O=function(t){if(u(t),a){var n=(new Date).getTime();if("pen"===e.model){var o=m(t.offsetX,t.offsetY),i=n-r,d=v(o,i);f(t.offsetX,t.offsetY,d),l=d}else p(t.offsetX,t.offsetY);c={x:t.offsetX,y:t.offsetY},r=(new Date).getTime()}},h=function(){a&&(a=!1)},g=function(){t&&o.value&&t.clearRect(0,0,o.value.width,o.value.height)};return{mouse:i,mouseInCanvas:d,penSize:Pp,rubberSize:Rp,writingBoardRef:n,canvasRef:o,handleMousedown:b,handleMousemove:O,handleMouseup:h,clearCanvas:g}}});n("6c26");Fp.render=Ap,Fp.__scopeId="data-v-4ddc4b2c";var Hp=Fp,zp=["#000000","#ffffff","#1e497b","#4e81bb","#e2534d","#9aba60","#8165a0","#47acc5","#f9974c"],Up=Object(j["defineComponent"])({name:"writing-board-tool",components:{WritingBoard:Hp},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=Object(j["ref"])(!1),a=Object(j["ref"])("#e2534d"),r=Object(j["ref"])("pen"),l=function(){c.value||(c.value=!0),r.value="pen",n("close")},i=function(){r.value="eraser",n("close")},u=function(){o.value.clearCanvas(),n("close")},d=function(e){"pen"!==r.value&&(r.value="pen"),a.value=e,n("close")},s=function(){c.value=!1,n("close")},f=function(){return[{text:"画笔",handler:l,disable:"pen"===r.value},{text:"橡皮擦",handler:i,disable:"eraser"===r.value},{text:"擦除所有墨迹",handler:u},{text:"退出画笔",handler:s}]};return{writingBoardRef:o,writingBoardVisible:c,writingBoardColors:zp,writingBoardColor:a,writingBoardModel:r,changePen:l,changeEraser:i,clearCanvas:u,changeColor:d,closeWritingBoard:s,contextmenus:f}}});n("4e25");Up.render=Bp,Up.__scopeId="data-v-0bfb345d";var Gp=Up,qp=Object(j["defineComponent"])({name:"screen",components:{ScreenSlide:kp,SlideThumbnails:Lp,WritingBoardTool:Gp},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.slides})),n=Object(j["computed"])((function(){return e.state.slideIndex})),o=Object(j["computed"])((function(){return e.getters.currentSlide})),c=Object(j["ref"])(0),a=Object(j["ref"])(0),r=Object(j["computed"])((function(){return c.value/Le})),l=Object(j["ref"])(!1),i=Object(j["ref"])(!1),u=function(){var e,t,n=document.body.clientWidth,o=document.body.clientHeight;o/n===Te?(e=n,t=o):o/n>Te?(e=n,t=n*Te):(e=o/Te,t=o),c.value=e,a.value=t},d=Ge(),s=d.exitScreening,f=function(){u(),Ue()||s()};Object(j["onMounted"])((function(){window.addEventListener("resize",f)})),Object(j["onUnmounted"])((function(){window.removeEventListener("resize",f)}));var p=Object(j["computed"])((function(){return o.value.animations||[]})),b=Object(j["ref"])(0),m=function(){var e="animate__",t=p.value[b.value];b.value+=1;var n=document.querySelector("#screen-element-".concat(t.elId," [class^=base-element-]"));if(n){var o="".concat(e).concat(t.type);n.classList.add("".concat(e,"animated"),o);var c=function(){n.classList.remove("".concat(e,"animated"),o)};n.addEventListener("animationend",c,{once:!0})}},v=function(){if(p.value.length&&b.value>0)b.value-=1;else if(n.value>0){e.commit(g.UPDATE_SLIDE_INDEX,n.value-1);var t=p.value?p.value.length:0;b.value=t}},O=function(){p.value.length&&b.value0&&O()}),500,{leading:!0,trailing:!1}),y=function(e){var t=e.key.toUpperCase();t===oe.UP||t===oe.LEFT?v():t!==oe.DOWN&&t!==oe.RIGHT&&t!==oe.SPACE&&t!==oe.ENTER||O()};Object(j["onMounted"])((function(){document.addEventListener("keydown",y)})),Object(j["onUnmounted"])((function(){document.removeEventListener("keydown",y)}));var k=function(){e.commit(g.UPDATE_SLIDE_INDEX,n.value-1),b.value=0},E=function(){e.commit(g.UPDATE_SLIDE_INDEX,n.value+1),b.value=0},I=function(t){l.value=!1,e.commit(g.UPDATE_SLIDE_INDEX,t),b.value=0},S=function(){return[{text:"上一张",subText:"↑、←",disable:n.value<=0,handler:function(){return k()}},{text:"下一张",subText:"↓、→",disable:n.value>=t.value.length-1,handler:function(){return E()}},{divider:!0},{text:"查看所有幻灯片",handler:function(){return l.value=!0}},{divider:!0},{text:"结束放映",subText:"ESC",handler:s}]};return Object(j["provide"])("slideScale",r),{slides:t,slideIndex:n,currentSlide:o,slideWidth:c,slideHeight:a,scale:r,mousewheelListener:h,animationIndex:b,contextmenus:S,execPrev:v,execNext:O,slideThumbnailModelVisible:l,turnSlideToIndex:I,writingBoardToolVisible:i}}});n("77ec");qp.render=sp,qp.__scopeId="data-v-7ab5e859";var Wp=qp,Xp=Object(j["defineComponent"])({name:"app",components:{Editor:lp,Screen:Wp},setup:function(){var e=X(),t=Object(j["computed"])((function(){return e.state.screening}));return Object(j["onMounted"])((function(){e.commit(g.SET_AVAILABLE_FONTS),e.dispatch(y.INIT_SNAPSHOT_DATABASE)})),{screening:t}}});n("a2af");Xp.render=h;var Yp=Xp;n("793f"),n("41ed"),n("5952"),n("c860"),n("ae3f"),n("8c56"),n("77ed");function Zp(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("MenuContent");return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],null,[Object(j["createVNode"])("div",{class:"mask",onContextmenu:t[1]||(t[1]=Object(j["withModifiers"])((function(t){return e.removeContextmenu()}),["prevent"])),onMousedown:t[2]||(t[2]=function(t){return e.removeContextmenu()})},null,32),Object(j["createVNode"])("div",{class:"contextmenu",style:{left:e.style.left+"px",top:e.style.top+"px"},onContextmenu:t[3]||(t[3]=Object(j["withModifiers"])((function(){}),["prevent"]))},[Object(j["createVNode"])(r,{menus:e.menus,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])],36)],64)}var Jp=Object(j["withScopeId"])("data-v-d08042ec");Object(j["pushScopeId"])("data-v-d08042ec");var Kp={class:"menu-content"},$p={class:"text"},Qp={key:0,class:"sub-text"};Object(j["popScopeId"])();var eb=Jp((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("_self");return Object(j["openBlock"])(),Object(j["createBlock"])("ul",Kp,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.menus,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])(j["Fragment"],{key:t.text||n},[t.hide?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("li",{key:0,class:["menu-item",{divider:t.divider,disable:t.disable}],onClick:Object(j["withModifiers"])((function(n){return e.handleClickMenuItem(t)}),["stop"])},[t.divider?Object(j["createCommentVNode"])("",!0):(Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:0,class:["menu-item-content",{"has-children":t.children}]},[Object(j["createVNode"])("span",$p,Object(j["toDisplayString"])(t.text),1),t.subText&&!t.children?(Object(j["openBlock"])(),Object(j["createBlock"])("span",Qp,Object(j["toDisplayString"])(t.subText),1)):Object(j["createCommentVNode"])("",!0),t.children&&t.children.length?(Object(j["openBlock"])(),Object(j["createBlock"])(r,{key:1,class:"sub-menu",menus:t.children,handleClickMenuItem:e.handleClickMenuItem},null,8,["menus","handleClickMenuItem"])):Object(j["createCommentVNode"])("",!0)],2))],10,["onClick"]))],64)})),128))])})),tb=Object(j["defineComponent"])({name:"menu-content",props:{menus:{type:Array,required:!0},handleClickMenuItem:{type:Function,required:!0}}});n("53fd");tb.render=eb,tb.__scopeId="data-v-d08042ec";var nb=tb,ob=Object(j["defineComponent"])({name:"contextmenu",components:{MenuContent:nb},props:{axis:{type:Object,required:!0},el:{type:Object,required:!0},menus:{type:Array,required:!0},removeContextmenu:{type:Function,required:!0}},setup:function(e){var t=Object(j["computed"])((function(){var t=170,n=30,o=11,c=5,a=e.axis,r=a.x,l=a.y,i=e.menus.filter((function(e){return!(e.divider||e.hide)})).length,u=e.menus.filter((function(e){return e.divider})).length,d=t,s=i*n+u*o+2*c,f=document.body.clientWidth,p=document.body.clientHeight;return{left:f<=r+d?r-d:r,top:p<=l+s?l-s:l}})),n=function(t){t.disable||t.children||(t.handler&&t.handler(e.el),e.removeContextmenu())};return{style:t,handleClickMenuItem:n}}});n("7ef3");ob.render=Zp;var cb=ob,ab="CTX_CONTEXTMENU_HANDLER",rb=function(e,t,n){t.stopPropagation(),t.preventDefault();var o=n.value(e);if(o){var c=null,a=function t(){c&&(document.body.removeChild(c),c=null),e.classList.remove("contextmenu-active"),document.body.removeEventListener("scroll",t),window.removeEventListener("resize",t)},r={axis:{x:t.x,y:t.y},el:e,menus:o,removeContextmenu:a};c=document.createElement("div");var l=Object(j["createVNode"])(cb,r,null);Object(j["render"])(l,c),document.body.appendChild(c),e.classList.add("contextmenu-active"),document.body.addEventListener("scroll",a),window.addEventListener("resize",a)}},lb={mounted:function(e,t){e[ab]=function(n){return rb(e,n,t)},e.addEventListener("contextmenu",e[ab])},unmounted:function(e){e&&e[ab]&&(e.removeEventListener("contextmenu",e[ab]),delete e[ab])}},ib=lb,ub="CTX_CLICK_OUTSIDE_HANDLER",db=function(e,t,n){var o=n.value,c=t.composedPath(),a=c?c.indexOf(e)<0:!e.contains(t.target);a&&o(t)},sb={mounted:function(e,t){e[ub]=function(n){return db(e,n,t)},setTimeout((function(){document.addEventListener("click",e[ub])}),0)},unmounted:function(e){e[ub]&&(document.removeEventListener("click",e[ub]),delete e[ub])}},fb=sb,pb=n("8845"),bb=n("a3ef"),mb=n("8331"),vb=n("4040"),Ob=n("f745"),jb=n("2e2d"),hb=n("6010"),gb=n("1fcb"),yb=n("0996"),kb=n("1646"),Eb=n("fbe7"),Ib=n("b8af"),Sb=n("bdf8"),Cb=n("bf2c"),Nb=n("e970"),xb=n("c53e"),Lb=n("23fa"),Tb=n("8377"),wb=n("33a2"),Vb=n("fdbcb"),_b=n("031f"),Bb=n("d26b"),Mb=n("3a3e"),Db=n("eac59"),Ab=n("694b"),Pb=n("e9ec"),Rb=n("ea01"),Fb=n("74f3"),Hb=n("4bad"),zb=n("e7f4"),Ub=n("eb50"),Gb=n("0be2"),qb=n("a90c"),Wb=n("c90a"),Xb=n("d41d6"),Yb=n("2c06"),Zb=n("a5dc"),Jb=n("8678"),Kb=n("d7fb"),$b=n("ce42"),Qb=n("7abc"),em=n("5b20"),tm=n("69de"),nm=n("d0c6"),om=n("dcc2"),cm=n("f1d2"),am=n("d16b"),rm=n("a5f1"),lm=n("df0d"),im=n("70f2"),um=n("b7c8"),dm=n("f99d"),sm=n("40bb"),fm=n("ae33"),pm=n("8c1a"),bm=n("b7b3"),mm=n("96be"),vm=n("5a69"),Om=n("f9e5"),jm=n("bbce"),hm=n("77ad"),gm=n("46cd"),ym=n("3ee3"),km=n("dde4"),Em=n("cead"),Im=n("fa00"),Sm=n("f3c2"),Cm=n("c8bf"),Nm=n("5294b"),xm=n("9fbc"),Lm={install:function(e){e.component("IconFontSize",xm["a"]),e.component("IconPicture",Nm["a"]),e.component("IconPentagonOne",Cm["a"]),e.component("IconConnection",Sm["a"]),e.component("IconInsertTable",Im["a"]),e.component("IconLock",Em["a"]),e.component("IconUnlock",km["a"]),e.component("IconFullScreen",ym["a"]),e.component("IconBack",gm["a"]),e.component("IconNext",hm["a"]),e.component("IconAlignTop",jm["a"]),e.component("IconAlignLeft",Om["a"]),e.component("IconAlignRight",vm["a"]),e.component("IconAlignBottom",mm["a"]),e.component("IconAlignVertically",bm["a"]),e.component("IconAlignHorizontally",pm["a"]),e.component("IconBringToFront",fm["a"]),e.component("IconSentToBack",sm["a"]),e.component("IconBringToFrontOne",dm["a"]),e.component("IconSendToBack",um["a"]),e.component("IconGroup",im["a"]),e.component("IconUngroup",lm["a"]),e.component("IconFill",rm["a"]),e.component("IconBackgroundColor",am["a"]),e.component("IconPlatte",cm["a"]),e.component("IconTailoring",om["a"]),e.component("IconColorFilter",nm["a"]),e.component("IconFlipVertically",tm["a"]),e.component("IconFlipHorizontally",em["a"]),e.component("IconText",Qb["a"]),e.component("IconAddText",$b["a"]),e.component("IconAlignTextLeft",Kb["a"]),e.component("IconAlignTextRight",Jb["a"]),e.component("IconAlignTextCenter",Zb["a"]),e.component("IconRowHeight",Yb["a"]),e.component("IconFullwidth",Xb["a"]),e.component("IconCode",Wb["a"]),e.component("IconTextBold",qb["a"]),e.component("IconTextItalic",Gb["a"]),e.component("IconTextUnderline",Ub["a"]),e.component("IconStrikethrough",zb["a"]),e.component("IconQuote",Hb["a"]),e.component("IconList",Fb["a"]),e.component("IconOrderedList",Rb["a"]),e.component("IconUpOne",Pb["a"]),e.component("IconDownOne",Ab["a"]),e.component("IconFormat",Db["a"]),e.component("IconDown",Mb["a"]),e.component("IconLeftC",Bb["a"]),e.component("IconRightC",_b["a"]),e.component("IconPlus",Vb["a"]),e.component("IconMinus",wb["a"]),e.component("IconCloseSmall",Tb["a"]),e.component("IconChartLine",Lb["a"]),e.component("IconChartHistogram",xb["a"]),e.component("IconChartProportion",Nb["a"]),e.component("IconPlayOne",Cb["a"]),e.component("IconSearch",Sb["a"]),e.component("IconPpt",Ib["a"]),e.component("IconHelpcenter",Eb["a"]),e.component("IconGithub",kb["a"]),e.component("IconWrite",yb["a"]),e.component("IconEffects",gb["a"]),e.component("IconRotate",hb["a"]),e.component("IconEdit",jb["a"]),e.component("IconUndo",Ob["a"]),e.component("IconTransform",vb["a"]),e.component("IconClick",mb["a"]),e.component("IconTheme",bb["a"]),e.component("IconArrowCircleLeft",pb["a"])}},Tm=Object(j["withScopeId"])("data-v-bf80565c"),wm=Tm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"file-input",onClick:t[2]||(t[2]=function(t){return e.handleClick()})},[Object(j["renderSlot"])(e.$slots,"default"),Object(j["createVNode"])("input",{class:"input",type:"file",name:"upload",ref:"inputRef",accept:e.accept,onChange:t[1]||(t[1]=function(t){return e.handleChange(t)})},null,40,["accept"])])})),Vm=Object(j["defineComponent"])({name:"file-input",props:{accept:{type:String,default:"image/*"}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(),c=function(){o.value&&(o.value.value="",o.value.click())},a=function(e){var t=e.target.files;t&&n("change",t)};return{handleClick:c,handleChange:a,inputRef:o}}});n("e3f5");Vm.render=wm,Vm.__scopeId="data-v-bf80565c";var _m=Vm,Bm={xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",version:"1.1"};function Mm(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("svg",Bm,[Object(j["renderSlot"])(e.$slots,"default")])}var Dm={name:"svg-wrapper"};Dm.render=Mm;var Am=Dm,Pm=Object(j["withScopeId"])("data-v-7cae2b90"),Rm=Pm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("button",{class:["checkbox-button",{checked:n.checked}]},[Object(j["renderSlot"])(e.$slots,"default")],2)})),Fm={name:"checkbox-button",props:{checked:{type:Boolean,default:!1}}};n("782e");Fm.render=Rm,Fm.__scopeId="data-v-7cae2b90";var Hm=Fm,zm=Object(j["withScopeId"])("data-v-7dafd0a9");Object(j["pushScopeId"])("data-v-7dafd0a9");var Um={class:"checkbox-button-group"};Object(j["popScopeId"])();var Gm=zm((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Um,[Object(j["renderSlot"])(e.$slots,"default")])})),qm={name:"checkbox-button-group"};n("69d58");qm.render=Gm,qm.__scopeId="data-v-7dafd0a9";var Wm=qm,Xm=Object(j["withScopeId"])("data-v-44b23aae");Object(j["pushScopeId"])("data-v-44b23aae");var Ym={class:"color-picker"},Zm={class:"picker-saturation-wrap"},Jm={class:"picker-controls"},Km={class:"picker-color-wrap"},$m={class:"picker-sliders"},Qm={class:"picker-hue-wrap"},ev={class:"picker-alpha-wrap"},tv={class:"picker-field"},nv={class:"picker-presets"},ov={class:"picker-gradient-presets"},cv={class:"picker-presets"};Object(j["popScopeId"])();var av=Xm((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Saturation"),l=Object(j["resolveComponent"])("Checkboard"),i=Object(j["resolveComponent"])("Hue"),u=Object(j["resolveComponent"])("Alpha"),d=Object(j["resolveComponent"])("EditableInput");return Object(j["openBlock"])(),Object(j["createBlock"])("div",Ym,[Object(j["createVNode"])("div",Zm,[Object(j["createVNode"])(r,{value:e.color,hue:e.hue,onColorChange:t[1]||(t[1]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",Jm,[Object(j["createVNode"])("div",Km,[Object(j["createVNode"])("div",{class:"picker-current-color",style:{background:e.currentColor}},null,4),Object(j["createVNode"])(l)]),Object(j["createVNode"])("div",$m,[Object(j["createVNode"])("div",Qm,[Object(j["createVNode"])(i,{value:e.color,hue:e.hue,onColorChange:t[2]||(t[2]=function(t){return e.changeColor(t)})},null,8,["value","hue"])]),Object(j["createVNode"])("div",ev,[Object(j["createVNode"])(u,{value:e.color,onColorChange:t[3]||(t[3]=function(t){return e.changeColor(t)})},null,8,["value"])])])]),Object(j["createVNode"])("div",tv,[Object(j["createVNode"])(d,{value:e.color,onColorChange:t[4]||(t[4]=function(t){return e.changeColor(t)})},null,8,["value"])]),Object(j["createVNode"])("div",nv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.themeColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-presets-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))]),Object(j["createVNode"])("div",ov,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.presetColors,(function(t,n){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-col",key:n},[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(t,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"picker-gradient-color",key:t,style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])})),128))]),Object(j["createVNode"])("div",cv,[(Object(j["openBlock"])(!0),Object(j["createBlock"])(j["Fragment"],null,Object(j["renderList"])(e.standardColors,(function(t){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{key:t,class:"picker-presets-color",style:{background:t},onClick:function(n){return e.selectPresetColor(t)}},null,12,["onClick"])})),128))])])})),rv=Object(j["withScopeId"])("data-v-ecf7d10e");Object(j["pushScopeId"])("data-v-ecf7d10e");var lv={class:"alpha"},iv={class:"alpha-checkboard-wrap"},uv=Object(j["createVNode"])("div",{class:"alpha-picker"},null,-1);Object(j["popScopeId"])();var dv=rv((function(e,t,n,o,c,a){var r=Object(j["resolveComponent"])("Checkboard");return Object(j["openBlock"])(),Object(j["createBlock"])("div",lv,[Object(j["createVNode"])("div",iv,[Object(j["createVNode"])(r)]),Object(j["createVNode"])("div",{class:"alpha-gradient",style:{background:e.gradientColor}},null,4),Object(j["createVNode"])("div",{class:"alpha-container",ref:"alphaRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"alpha-pointer",style:{left:100*e.color.a+"%"}},[uv],4)],544)])})),sv=Object(j["withScopeId"])("data-v-e9a0ac98"),fv=sv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"checkerboard",style:e.bgStyle},null,4)})),pv={},bv=function(e,t,n){var o=document.createElement("canvas");o.width=o.height=2*n;var c=o.getContext("2d");return c?(c.fillStyle=e,c.fillRect(0,0,o.width,o.height),c.fillStyle=t,c.fillRect(0,0,n,n),c.translate(n,n),c.fillRect(0,0,n,n),o.toDataURL()):null},mv=function(e,t,n){var o=e+","+t+","+n;if(pv[o])return pv[o];var c=bv(e,t,n);return pv[o]=c,c},vv=Object(j["defineComponent"])({name:"checkboard",props:{size:{type:Number,default:8},white:{type:String,default:"#fff"},grey:{type:String,default:"#e6e6e6"}},setup:function(e){var t=Object(j["computed"])((function(){var t=mv(e.white,e.grey,e.size);return{backgroundImage:"url(".concat(t,")")}}));return{bgStyle:t}}});n("62d8");vv.render=fv,vv.__scopeId="data-v-e9a0ac98";var Ov=vv,jv=Object(j["defineComponent"])({name:"alpha",components:{Checkboard:Ov},props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){return e.value})),c=Object(j["computed"])((function(){var e=[o.value.r,o.value.g,o.value.b].join(",");return"linear-gradient(to right, rgba(".concat(e,", 0) 0%, rgba(").concat(e,", 1) 100%)")})),a=Object(j["ref"])(),r=function(e){if(e.preventDefault(),a.value){var t,c=a.value.clientWidth,r=a.value.getBoundingClientRect().left+window.pageXOffset,l=e.pageX-r;t=l<0?0:l>c?1:Math.round(100*l/c)/100,o.value.a!==t&&n("colorChange",{r:o.value.r,g:o.value.g,b:o.value.b,a:t})}},l=function e(){window.removeEventListener("mousemove",r),window.removeEventListener("mouseup",e)},i=function(e){r(e),window.addEventListener("mousemove",r),window.addEventListener("mouseup",l)};return Object(j["onUnmounted"])(l),{alphaRef:a,gradientColor:c,handleMouseDown:i,color:o}}});n("5c5e");jv.render=dv,jv.__scopeId="data-v-ecf7d10e";var hv=jv,gv=Object(j["withScopeId"])("data-v-7b983451");Object(j["pushScopeId"])("data-v-7b983451");var yv={class:"hue"},kv=Object(j["createVNode"])("div",{class:"hue-picker"},null,-1);Object(j["popScopeId"])();var Ev=gv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",yv,[Object(j["createVNode"])("div",{class:"hue-container",ref:"hueRef",onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Object(j["createVNode"])("div",{class:"hue-pointer",style:{left:e.pointerLeft}},[kv],4)],544)])})),Iv=Object(j["defineComponent"])({name:"hue",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["ref"])(0),c=Object(j["ref"])(""),a=Object(j["computed"])((function(){var t=hc()(e.value).toHsl();return 0===t.s&&(t.h=e.hue),t})),r=Object(j["computed"])((function(){return 0===a.value.h&&"right"===c.value?"100%":100*a.value.h/360+"%"}));Object(j["watch"])((function(){return e.value}),(function(){var t=hc()(e.value).toHsl(),n=0===t.s?e.hue:t.h;0!==n&&n-o.value>0&&(c.value="right"),0!==n&&n-o.value<0&&(c.value="left"),o.value=n}));var l=Object(j["ref"])(),i=function(e){if(e.preventDefault(),l.value){var t,o,c=l.value.clientWidth,r=l.value.getBoundingClientRect().left+window.pageXOffset,i=e.pageX-r;i<0?t=0:i>c?t=360:(o=100*i/c,t=360*o/100),a.value.h!==t&&n("colorChange",{h:t,l:a.value.l,s:a.value.s,a:a.value.a})}},u=function e(){window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",e)},d=function(e){i(e),window.addEventListener("mousemove",i),window.addEventListener("mouseup",u)};return Object(j["onUnmounted"])(u),{hueRef:l,handleMouseDown:d,pointerLeft:r}}});n("a025");Iv.render=Ev,Iv.__scopeId="data-v-7b983451";var Sv=Iv,Cv=Object(j["withScopeId"])("data-v-5310dbb4");Object(j["pushScopeId"])("data-v-5310dbb4");var Nv=Object(j["createVNode"])("div",{class:"saturation-white"},null,-1),xv=Object(j["createVNode"])("div",{class:"saturation-black"},null,-1),Lv=Object(j["createVNode"])("div",{class:"saturation-circle"},null,-1);Object(j["popScopeId"])();var Tv=Cv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",{class:"saturation",ref:"saturationRef",style:{background:e.bgColor},onMousedown:t[1]||(t[1]=function(t){return e.handleMouseDown(t)})},[Nv,xv,Object(j["createVNode"])("div",{class:"saturation-pointer",style:{top:e.pointerTop,left:e.pointerLeft}},[Lv],4)],36)})),wv=n("f678"),Vv=n.n(wv),_v=Object(j["defineComponent"])({name:"saturation",props:{value:{type:Object,required:!0},hue:{type:Number,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t=hc()(e.value).toHsv();return 0===t.s&&(t.h=e.hue),t})),c=Object(j["computed"])((function(){return"hsl(".concat(o.value.h,", 100%, 50%)")})),a=Object(j["computed"])((function(){return-100*o.value.v+1+100+"%"})),r=Object(j["computed"])((function(){return 100*o.value.s+"%"})),l=Se()((function(e){n("colorChange",e)}),20,{leading:!0,trailing:!1}),i=Object(j["ref"])(),u=function(e){if(e.preventDefault(),i.value){var t=i.value.clientWidth,n=i.value.clientHeight,c=i.value.getBoundingClientRect().left+window.pageXOffset,a=i.value.getBoundingClientRect().top+window.pageYOffset,r=Vv()(e.pageX-c,0,t),u=Vv()(e.pageY-a,0,n),d=r/t,s=Vv()(-u/n+1,0,1);l({h:o.value.h,s:d,v:s,a:o.value.a})}},d=function e(){window.removeEventListener("mousemove",u),window.removeEventListener("mouseup",e)},s=function(e){u(e),window.addEventListener("mousemove",u),window.addEventListener("mouseup",d)};return Object(j["onUnmounted"])(d),{saturationRef:i,bgColor:c,handleMouseDown:s,pointerTop:a,pointerLeft:r}}});n("5070");_v.render=Tv,_v.__scopeId="data-v-5310dbb4";var Bv=_v,Mv=Object(j["withScopeId"])("data-v-0311fdee");Object(j["pushScopeId"])("data-v-0311fdee");var Dv={class:"editable-input"};Object(j["popScopeId"])();var Av=Mv((function(e,t,n,o,c,a){return Object(j["openBlock"])(),Object(j["createBlock"])("div",Dv,[Object(j["createVNode"])("input",{class:"input-content",value:e.val,onInput:t[1]||(t[1]=function(t){return e.handleInput(t)})},null,40,["value"])])})),Pv=Object(j["defineComponent"])({name:"editable-input",props:{value:{type:Object,required:!0}},setup:function(e,t){var n=t.emit,o=Object(j["computed"])((function(){var t="";return t=e.value.a<1?hc()(e.value).toHex8String().toUpperCase():hc()(e.value).toHexString().toUpperCase(),t.replace("#","")})),c=function(e){var t=e.target.value;t.length>=6&&n("colorChange",hc()(t).toRgb())};return{val:o,handleInput:c}}});n("3706");Pv.render=Av,Pv.__scopeId="data-v-0311fdee";var Rv=Pv,Fv=[["#7f7f7f","#f2f2f2"],["#0d0d0d","#808080"],["#1c1a10","#ddd8c3"],["#0e243d","#c6d9f0"],["#233f5e","#dae5f0"],["#632623","#f2dbdb"],["#4d602c","#eaf1de"],["#3f3150","#e6e0ec"],["#1e5867","#d9eef3"],["#99490f","#fee9da"]],Hv=function(e,t,n){for(var o=hc()(e).toRgb(),c=hc()(t).toRgb(),a=(c.r-o.r)/n,r=(c.g-o.g)/n,l=(c.b-o.b)/n,i=[],u=0;u\r\n \r\n \r\n\r\n\r\n\r\n\r\n","export const enum MutationTypes {\r\n\r\n // editor\r\n SET_ACTIVE_ELEMENT_ID_LIST = 'setActiveElementIdList',\r\n SET_HANDLE_ELEMENT_ID = 'setHandleElementId',\r\n SET_CANVAS_PERCENTAGE = 'setCanvasPercentage',\r\n SET_CANVAS_SCALE = 'setCanvasScale',\r\n SET_THUMBNAILS_FOCUS = 'setThumbnailsFocus',\r\n SET_EDITORAREA_FOCUS = 'setEditorAreaFocus',\r\n SET_DISABLE_HOTKEYS_STATE = 'setDisableHotkeysState',\r\n SET_GRID_LINES_STATE = 'setGridLinesState',\r\n SET_CREATING_ELEMENT = 'setCreatingElement',\r\n SET_AVAILABLE_FONTS = 'setAvailableFonts',\r\n SET_TOOLBAR_STATE = 'setToolbarState',\r\n SET_CLIPING_IMAGE_ELEMENT_ID = 'setClipingImageElementId',\r\n\r\n // slides\r\n SET_THEME = 'setTheme',\r\n SET_SLIDES = 'setSlides',\r\n ADD_SLIDE = 'addSlide',\r\n UPDATE_SLIDE = 'updateSlide',\r\n DELETE_SLIDE = 'deleteSlide',\r\n UPDATE_SLIDE_INDEX = 'updateSlideIndex',\r\n ADD_ELEMENT = 'addElement',\r\n UPDATE_ELEMENT = 'updateElement',\r\n REMOVE_ELEMENT_PROPS = 'removeElementProps',\r\n\r\n // snapshot\r\n SET_SNAPSHOT_CURSOR = 'setSnapshotCursor',\r\n SET_SNAPSHOT_LENGTH = 'setSnapshotLength',\r\n\r\n // keyboard\r\n SET_CTRL_KEY_STATE = 'setCtrlKeyState',\r\n SET_SHIFT_KEY_STATE = 'setShiftKeyState',\r\n\r\n // screen\r\n SET_SCREENING = 'setScreening',\r\n}\r\n\r\nexport const enum ActionTypes {\r\n INIT_SNAPSHOT_DATABASE = 'initSnapshotDatabase',\r\n ADD_SNAPSHOT = 'addSnapshot',\r\n UN_DO = 'undo',\r\n RE_DO = 'redo',\r\n}","import { Slide } from '@/types/slides'\r\n\r\nexport const slides: Slide[] = [\r\n {\r\n id: 'test123456',\r\n elements: [],\r\n },\r\n]","import { Slide, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { ToolbarState } from '@/types/toolbar'\r\nimport { slides } from '@/mocks/index'\r\nimport { SYS_FONTS } from '@/configs/font'\r\n\r\nexport interface State {\r\n activeElementIdList: string[];\r\n handleElementId: string;\r\n canvasPercentage: number;\r\n canvasScale: number;\r\n thumbnailsFocus: boolean;\r\n editorAreaFocus: boolean;\r\n disableHotkeys: boolean;\r\n showGridLines: boolean;\r\n creatingElement: CreatingElement | null;\r\n availableFonts: typeof SYS_FONTS;\r\n toolbarState: ToolbarState;\r\n theme: SlideTheme;\r\n slides: Slide[];\r\n slideIndex: number;\r\n snapshotCursor: number;\r\n snapshotLength: number;\r\n ctrlKeyState: boolean;\r\n shiftKeyState: boolean;\r\n screening: boolean;\r\n clipingImageElementId: string;\r\n}\r\n\r\nexport const state: State = {\r\n activeElementIdList: [],\r\n handleElementId: '',\r\n canvasPercentage: 90,\r\n canvasScale: 1,\r\n thumbnailsFocus: false,\r\n editorAreaFocus: false,\r\n disableHotkeys: false,\r\n showGridLines: false,\r\n creatingElement: null,\r\n availableFonts: [],\r\n toolbarState: 'slideStyle',\r\n theme: {\r\n themeColor: '#d14424',\r\n fontColor: '#333',\r\n fontName: '微软雅黑',\r\n backgroundColor: '#fff',\r\n },\r\n slides: slides,\r\n slideIndex: 0,\r\n snapshotCursor: -1,\r\n snapshotLength: 0,\r\n ctrlKeyState: false,\r\n shiftKeyState: false,\r\n screening: false,\r\n clipingImageElementId: '',\r\n}","import { GetterTree } from 'vuex'\r\nimport { State } from './state'\r\n\r\nexport const getters: GetterTree = {\r\n currentSlide(state) {\r\n return state.slides[state.slideIndex] || null\r\n },\r\n\r\n currentSlideAnimations(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide) return null\r\n const animations = currentSlide.animations\r\n if (!animations) return null\r\n\r\n const els = currentSlide.elements\r\n const elIds = els.map(el => el.id)\r\n return animations.filter(animation => elIds.includes(animation.elId))\r\n },\r\n\r\n activeElementList(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return []\r\n return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.id))\r\n },\r\n\r\n handleElement(state) {\r\n const currentSlide = state.slides[state.slideIndex]\r\n if (!currentSlide || !currentSlide.elements) return null\r\n return currentSlide.elements.find(element => state.handleElementId === element.id) || null\r\n },\r\n\r\n canUndo(state) {\r\n return state.snapshotCursor > 0\r\n },\r\n\r\n canRedo(state) {\r\n return state.snapshotCursor < state.snapshotLength - 1\r\n },\r\n\r\n ctrlOrShiftKeyActive(state) {\r\n return state.ctrlKeyState || state.shiftKeyState\r\n },\r\n}","import Dexie from 'dexie'\r\nimport { Slide } from '@/types/slides'\r\n\r\nexport interface Snapshot {\r\n index: number;\r\n slides: Slide[];\r\n}\r\n\r\nclass SnapshotDatabase extends Dexie {\r\n public snapshots: Dexie.Table\r\n\r\n public constructor() {\r\n super('SnapshotDatabase')\r\n this.version(1).stores({\r\n snapshots: '++id'\r\n })\r\n this.snapshots = this.table('snapshots')\r\n }\r\n}\r\n\r\nexport default new SnapshotDatabase()","import { ActionTree } from 'vuex'\r\nimport { IndexableTypeArray } from 'dexie'\r\nimport { State } from './state'\r\nimport { ActionTypes, MutationTypes } from './constants'\r\nimport db, { Snapshot } from '@/utils/database'\r\n\r\nexport const actions: ActionTree = {\r\n async [ActionTypes.INIT_SNAPSHOT_DATABASE]({ commit, state }) {\r\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\r\n const lastSnapshot = snapshots.slice(-1)[0]\r\n\r\n if (lastSnapshot) {\r\n db.snapshots.clear()\r\n }\r\n\r\n const newFirstSnapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await db.snapshots.add(newFirstSnapshot)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, 0)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, 1)\r\n },\r\n\r\n async [ActionTypes.ADD_SNAPSHOT]({ state, commit }) {\r\n const allKeys = await db.snapshots.orderBy('id').keys()\r\n\r\n let needDeleteKeys: IndexableTypeArray = []\r\n\r\n if (state.snapshotCursor >= 0 && state.snapshotCursor < allKeys.length - 1) {\r\n needDeleteKeys = allKeys.slice(state.snapshotCursor + 1)\r\n }\r\n\r\n const snapshot = {\r\n index: state.slideIndex,\r\n slides: state.slides,\r\n }\r\n await db.snapshots.add(snapshot)\r\n\r\n let snapshotLength = allKeys.length - needDeleteKeys.length + 1\r\n\r\n if (snapshotLength > 20) {\r\n needDeleteKeys.push(allKeys[0])\r\n snapshotLength--\r\n }\r\n if (snapshotLength >= 2) {\r\n db.snapshots.update(allKeys[snapshotLength - 2] as number, { index: state.slideIndex })\r\n }\r\n\r\n await db.snapshots.bulkDelete(needDeleteKeys)\r\n\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotLength - 1)\r\n commit(MutationTypes.SET_SNAPSHOT_LENGTH, snapshotLength)\r\n },\r\n\r\n async [ActionTypes.UN_DO]({ state, commit }) {\r\n if (state.snapshotCursor <= 0) return\r\n\r\n const snapshotCursor = state.snapshotCursor - 1\r\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n\r\n async [ActionTypes.RE_DO]({ state, commit }) {\r\n if (state.snapshotCursor >= state.snapshotLength - 1) return\r\n\r\n const snapshotCursor = state.snapshotCursor + 1\r\n const snapshots: Snapshot[] = await db.snapshots.orderBy('id').toArray()\r\n const snapshot = snapshots[snapshotCursor]\r\n const { index, slides } = snapshot\r\n\r\n commit(MutationTypes.SET_SLIDES, slides)\r\n commit(MutationTypes.UPDATE_SLIDE_INDEX, index)\r\n commit(MutationTypes.SET_SNAPSHOT_CURSOR, snapshotCursor)\r\n commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, [])\r\n },\r\n}","export const SYS_FONTS = [\r\n { label: 'Arial', value: 'Arial' },\r\n { label: '微软雅黑', value: 'Microsoft Yahei' },\r\n { label: '宋体', value: 'SimSun' },\r\n { label: '黑体', value: 'SimHei' },\r\n { label: '楷体', value: 'KaiTi' },\r\n { label: '新宋体', value: 'NSimSun' },\r\n { label: '仿宋', value: 'FangSong' },\r\n { label: '苹方', value: 'PingFang SC' },\r\n { label: '华文黑体', value: 'STHeiti' },\r\n { label: '华文楷体', value: 'STKaiti' },\r\n { label: '华文宋体', value: 'STSong' },\r\n { label: '华文仿宋', value: 'STFangSong' },\r\n { label: '华文中宋', value: 'STZhongSong' },\r\n { label: '华文琥珀', value: 'STHupo' },\r\n { label: '华文新魏', value: 'STXinwei' },\r\n { label: '华文隶书', value: 'STLiti' },\r\n { label: '华文行楷', value: 'STXingkai' },\r\n { label: '冬青黑体', value: 'Hiragino Sans GB' },\r\n { label: '兰亭黑', value: 'Lantinghei SC' },\r\n { label: '偏偏体', value: 'Hanzipen SC' },\r\n { label: '手札体', value: 'Hannotate SC' },\r\n { label: '宋体', value: 'Songti SC' },\r\n { label: '娃娃体', value: 'Wawati SC' },\r\n { label: '行楷', value: 'Xingkai SC' },\r\n { label: '圆体', value: 'Yuanti SC' },\r\n { label: '华文细黑', value: 'STXihei' },\r\n { label: '幼圆', value: 'YouYuan' },\r\n { label: '隶书', value: 'LiSu' },\r\n]\r\n\r\nexport const WEB_FONTS = [\r\n { label: '仓耳小丸子', value: '仓耳小丸子' },\r\n { label: '优设标题黑', value: '优设标题黑' },\r\n { label: '峰广明锐体', value: '峰广明锐体' },\r\n { label: '摄图摩登小方体', value: '摄图摩登小方体' },\r\n { label: '站酷快乐体', value: '站酷快乐体' },\r\n { label: '站酷酷黑体', value: '站酷酷黑体' },\r\n { label: '素材集市康康体', value: '素材集市康康体' },\r\n { label: '联盟起艺卢帅正锐黑体', value: '联盟起艺卢帅正锐黑体' },\r\n { label: '谦度手写楷体', value: '谦度手写楷体' },\r\n { label: '途牛类圆体', value: '途牛类圆体' },\r\n { label: '锐字真言体', value: '锐字真言体' },\r\n { label: '问藏书房', value: '问藏书房' },\r\n]","/**\r\n * 判断操作系统是否存在某字体\r\n * @param fontFamily 字体名\r\n */\r\nexport const isSupportFontFamily = (fontFamily: string) => {\r\n if (typeof fontFamily !== 'string') return false\r\n\r\n const arial = 'Arial'\r\n if (fontFamily.toLowerCase() === arial.toLowerCase()) return true\r\n\r\n const size = 100\r\n const width = 100\r\n const height = 100\r\n const str = 'a'\r\n\r\n const canvas = document.createElement('canvas')\r\n const ctx = canvas.getContext('2d')\r\n\r\n if (!ctx) return false\r\n\r\n canvas.width = width\r\n canvas.height = height\r\n ctx.textAlign = 'center'\r\n ctx.fillStyle = 'black'\r\n ctx.textBaseline = 'middle'\r\n\r\n const getDotArray = (_fontFamily: string) => {\r\n ctx.clearRect(0, 0, width, height)\r\n ctx.font = `${size}px ${_fontFamily}, ${arial}`\r\n ctx.fillText(str, width / 2, height / 2)\r\n const imageData = ctx.getImageData(0, 0, width, height).data\r\n return [].slice.call(imageData).filter(item => item !== 0)\r\n }\r\n\r\n return getDotArray(arial).join('') !== getDotArray(fontFamily).join('')\r\n}","import { MutationTree } from 'vuex'\r\nimport omit from 'lodash/omit'\r\nimport { MutationTypes } from './constants'\r\nimport { State } from './state'\r\nimport { Slide, PPTElement, SlideTheme } from '@/types/slides'\r\nimport { CreatingElement } from '@/types/edit'\r\nimport { SYS_FONTS } from '@/configs/font'\r\nimport { isSupportFontFamily } from '@/utils/fontFamily'\r\n\r\ninterface RemoveElementPropData {\r\n id: string;\r\n propName: string | string[];\r\n}\r\n\r\ninterface UpdateElementData {\r\n id: string | string[];\r\n props: Partial;\r\n}\r\n\r\nexport const mutations: MutationTree = {\r\n\r\n // editor\r\n\r\n [MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST](state, activeElementIdList: string[]) {\r\n if (activeElementIdList.length === 1) state.handleElementId = activeElementIdList[0]\r\n else state.handleElementId = ''\r\n \r\n state.activeElementIdList = activeElementIdList\r\n },\r\n \r\n [MutationTypes.SET_HANDLE_ELEMENT_ID](state, handleElementId: string) {\r\n state.handleElementId = handleElementId\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_PERCENTAGE](state, percentage: number) {\r\n state.canvasPercentage = percentage\r\n },\r\n\r\n [MutationTypes.SET_CANVAS_SCALE](state, scale: number) {\r\n state.canvasScale = scale\r\n },\r\n\r\n [MutationTypes.SET_THUMBNAILS_FOCUS](state, isFocus: boolean) {\r\n state.thumbnailsFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_EDITORAREA_FOCUS](state, isFocus: boolean) {\r\n state.editorAreaFocus = isFocus\r\n },\r\n\r\n [MutationTypes.SET_DISABLE_HOTKEYS_STATE](state, disable: boolean) {\r\n state.disableHotkeys = disable\r\n },\r\n\r\n [MutationTypes.SET_GRID_LINES_STATE](state, show: boolean) {\r\n state.showGridLines = show\r\n },\r\n\r\n [MutationTypes.SET_CREATING_ELEMENT](state, element: CreatingElement | null) {\r\n state.creatingElement = element\r\n },\r\n\r\n [MutationTypes.SET_AVAILABLE_FONTS](state) {\r\n state.availableFonts = SYS_FONTS.filter(font => isSupportFontFamily(font.value))\r\n },\r\n\r\n [MutationTypes.SET_TOOLBAR_STATE](state, type) {\r\n state.toolbarState = type\r\n },\r\n\r\n [MutationTypes.SET_CLIPING_IMAGE_ELEMENT_ID](state, elId) {\r\n state.clipingImageElementId = elId\r\n },\r\n\r\n // slides\r\n\r\n [MutationTypes.SET_THEME](state, themeProps: Partial) {\r\n state.theme = { ...state.theme, ...themeProps }\r\n },\r\n\r\n [MutationTypes.SET_SLIDES](state, slides: Slide[]) {\r\n state.slides = slides\r\n },\r\n\r\n [MutationTypes.ADD_SLIDE](state, slide: Slide) {\r\n const addIndex = state.slideIndex + 1\r\n state.slides.splice(addIndex, 0, slide)\r\n state.slideIndex = addIndex\r\n },\r\n\r\n [MutationTypes.UPDATE_SLIDE](state, props: Partial