@duxweb/dvha-pro 1.1.31 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`circle`,name:`圆形`,icon:`i-tabler:circle`,category:`basic`,defaultProps:{type:`circle`,left:100,top:100,width:100,height:100,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,radius:50,fill:`#00ff00`,stroke:``,strokeWidth:0,strokeDashArray:null,opacity:1,label:``},createFabricObject:t=>{let n=new e.Circle({left:t.left,top:t.top,radius:t.radius,fill:t.fill,stroke:t.stroke||void 0,strokeWidth:t.strokeWidth,strokeDashArray:t.strokeDashArray,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked,strokeUniform:!0,lockUniScaling:!0});return n.label=t.label,n},getPropsFromFabricObject:e=>{let t=e,n=t.scaleX||1,r=t.scaleY||1,i=Math.round((t.radius||50)*Math.max(n,r));return{type:`circle`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:i*2,height:i*2,angle:Math.round(t.angle||0),scaleX:1,scaleY:1,visible:t.visible!==!1,locked:!t.selectable,radius:i,fill:t.fill||`#00ff00`,stroke:t.stroke||``,strokeWidth:Math.round(t.strokeWidth||0),strokeDashArray:t.strokeDashArray||null,opacity:t.opacity||1,label:t.label||``}},getToolbarControls:e=>[{key:`label`,label:`标签`,type:`text`,value:e.label,options:{placeholder:`请输入标签`}},{key:`radius`,label:`半径`,type:`number`,value:e.radius,options:{min:1,max:1e3,step:1}},{key:`fill`,label:`填充颜色`,type:`color`,value:e.fill},{key:`stroke`,label:`边框颜色`,type:`color`,value:e.stroke},{key:`strokeWidth`,label:`边框宽度`,type:`number`,value:e.strokeWidth,options:{min:0,max:50,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;n.set({radius:e.radius,fill:e.fill,stroke:e.stroke||void 0,strokeWidth:e.strokeWidth,opacity:e.opacity}),n.label=e.label}};exports.default=t;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`circle`,name:`圆形`,icon:`i-tabler:circle`,category:`basic`,defaultProps:{type:`circle`,left:100,top:100,width:100,height:100,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,radius:50,fill:`#00ff00`,stroke:``,strokeWidth:0,strokeDashArray:null,opacity:1,label:``},createFabricObject:t=>{let n=new e.Circle({left:t.left,top:t.top,originX:`left`,originY:`top`,radius:t.radius,fill:t.fill,stroke:t.stroke||void 0,strokeWidth:t.strokeWidth,strokeDashArray:t.strokeDashArray,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked,strokeUniform:!0,lockUniScaling:!0});return n.label=t.label,n},getPropsFromFabricObject:e=>{let t=e,n=t.scaleX||1,r=t.scaleY||1,i=Math.round((t.radius||50)*Math.max(n,r));return{type:`circle`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:i*2,height:i*2,angle:Math.round(t.angle||0),scaleX:1,scaleY:1,visible:t.visible!==!1,locked:!t.selectable,radius:i,fill:t.fill||`#00ff00`,stroke:t.stroke||``,strokeWidth:Math.round(t.strokeWidth||0),strokeDashArray:t.strokeDashArray||null,opacity:t.opacity||1,label:t.label||``}},getToolbarControls:e=>[{key:`label`,label:`标签`,type:`text`,value:e.label,options:{placeholder:`请输入标签`}},{key:`radius`,label:`半径`,type:`number`,value:e.radius,options:{min:1,max:1e3,step:1}},{key:`fill`,label:`填充颜色`,type:`color`,value:e.fill},{key:`stroke`,label:`边框颜色`,type:`color`,value:e.stroke},{key:`strokeWidth`,label:`边框宽度`,type:`number`,value:e.strokeWidth,options:{min:0,max:50,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;n.set({radius:e.radius,fill:e.fill,stroke:e.stroke||void 0,strokeWidth:e.strokeWidth,opacity:e.opacity}),n.label=e.label}};exports.default=t;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`image`,name:`图片`,icon:`i-tabler:photo`,category:`basic`,defaultProps:{id:``,type:`image`,left:100,top:100,width:200,height:200,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,src:``,opacity:1},createFabricObject:t=>e.FabricImage.fromURL(t.src||``,{crossOrigin:`anonymous`}).then(e=>(e.set({left:t.left,top:t.top,width:t.width,height:t.height,angle:t.angle,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked}),e)),getPropsFromFabricObject:e=>{let t=e,n=(t.width||200)*(t.scaleX||1),r=(t.height||200)*(t.scaleY||1);return{type:`image`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round(n),height:Math.round(r),angle:Math.round(t.angle||0),scaleX:t.scaleX||1,scaleY:t.scaleY||1,visible:t.visible!==!1,locked:!t.selectable,src:t.getSrc()||``,opacity:t.opacity||1,cropX:0,cropY:0,borderRadius:0}},getToolbarControls:e=>[{key:`src`,label:`选择图片`,type:`image`,value:e.src,options:{placeholder:`点击选择图片文件`}},{key:`width`,label:`宽度`,type:`number`,value:e.width,options:{min:10,max:2e3,step:1}},{key:`height`,label:`高度`,type:`number`,value:e.height,options:{min:10,max:2e3,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;if(e.src&&e.src!==(n.getSrc()||``)){n.setSrc(e.src,{crossOrigin:`anonymous`}).then(()=>{let t=n.getElement().width,r=n.getElement().height,i=n.canvas,a=i?.width||800,o=i?.height||600,s=a/t,c=o/r,l=Math.min(s,c,1);n.set({left:e.left,top:e.top,width:t,height:r,scaleX:l,scaleY:l,angle:e.angle,opacity:e.opacity,visible:e.visible,selectable:!e.locked,evented:!e.locked}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})});return}if(!e.src){n.setSrc(``).then(()=>{n.set({width:200,height:200}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})});return}let r=n.width||200,i=n.height||200,a=e.width/r,o=e.height/i;n.set({left:e.left,top:e.top,scaleX:a,scaleY:o,angle:e.angle,opacity:e.opacity,visible:e.visible,selectable:!e.locked,evented:!e.locked}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})}};exports.default=t;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`image`,name:`图片`,icon:`i-tabler:photo`,category:`basic`,defaultProps:{id:``,type:`image`,left:100,top:100,width:200,height:200,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,src:``,opacity:1},createFabricObject:t=>e.FabricImage.fromURL(t.src||``,{crossOrigin:`anonymous`}).then(e=>(e.set({left:t.left,top:t.top,originX:`left`,originY:`top`,width:t.width,height:t.height,angle:t.angle,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked}),e)),getPropsFromFabricObject:e=>{let t=e,n=(t.width||200)*(t.scaleX||1),r=(t.height||200)*(t.scaleY||1);return{type:`image`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round(n),height:Math.round(r),angle:Math.round(t.angle||0),scaleX:t.scaleX||1,scaleY:t.scaleY||1,visible:t.visible!==!1,locked:!t.selectable,src:t.getSrc()||``,opacity:t.opacity||1,cropX:0,cropY:0,borderRadius:0}},getToolbarControls:e=>[{key:`src`,label:`选择图片`,type:`image`,value:e.src,options:{placeholder:`点击选择图片文件`}},{key:`width`,label:`宽度`,type:`number`,value:e.width,options:{min:10,max:2e3,step:1}},{key:`height`,label:`高度`,type:`number`,value:e.height,options:{min:10,max:2e3,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;if(e.src&&e.src!==(n.getSrc()||``)){n.setSrc(e.src,{crossOrigin:`anonymous`}).then(()=>{let t=n.getElement().width,r=n.getElement().height,i=n.canvas,a=i?.width||800,o=i?.height||600,s=a/t,c=o/r,l=Math.min(s,c,1);n.set({left:e.left,top:e.top,originX:`left`,originY:`top`,width:t,height:r,scaleX:l,scaleY:l,angle:e.angle,opacity:e.opacity,visible:e.visible,selectable:!e.locked,evented:!e.locked}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})});return}if(!e.src){n.setSrc(``).then(()=>{n.set({width:200,height:200}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})});return}let r=n.width||200,i=n.height||200,a=e.width/r,o=e.height/i;n.set({left:e.left,top:e.top,originX:`left`,originY:`top`,scaleX:a,scaleY:o,angle:e.angle,opacity:e.opacity,visible:e.visible,selectable:!e.locked,evented:!e.locked}),n.setCoords(),n.canvas?.renderAll(),n.canvas?.fire(`object:modified`,{target:n})}};exports.default=t;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`rect`,name:`矩形`,icon:`i-tabler:square`,category:`basic`,defaultProps:{id:``,type:`rect`,left:100,top:100,width:100,height:100,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,fill:`#ff0000`,stroke:``,strokeWidth:0,strokeDashArray:null,rx:0,ry:0,opacity:1,label:``},createFabricObject:t=>{let n=new e.Rect({left:t.left,top:t.top,width:t.width,height:t.height,fill:t.fill,stroke:t.stroke||void 0,strokeWidth:t.strokeWidth,strokeDashArray:t.strokeDashArray,rx:t.rx,ry:t.ry,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked,strokeUniform:!0,uniformScaling:!1});return n.setControlsVisibility({mtr:!0,mt:!0,mb:!0,ml:!0,mr:!0,tl:!0,tr:!0,bl:!0,br:!0}),n.label=t.label,n},getPropsFromFabricObject:e=>{let t=e,n=t.scaleX||1,r=t.scaleY||1;return{type:`rect`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round((t.width||100)*n),height:Math.round((t.height||100)*r),angle:Math.round(t.angle||0),scaleX:1,scaleY:1,visible:t.visible!==!1,locked:!t.selectable,fill:t.fill||`#ff0000`,stroke:t.stroke||``,strokeWidth:Math.round(t.strokeWidth||0),strokeDashArray:t.strokeDashArray||null,rx:Math.round(t.rx||0),ry:Math.round(t.ry||0),opacity:t.opacity||1,label:t.label||``}},getToolbarControls:e=>[{key:`label`,label:`标签`,type:`text`,value:e.label,options:{placeholder:`请输入标签`}},{key:`width`,label:`宽度`,type:`number`,value:e.width,options:{min:1,max:2e3,step:1}},{key:`height`,label:`高度`,type:`number`,value:e.height,options:{min:1,max:2e3,step:1}},{key:`fill`,label:`填充颜色`,type:`color`,value:e.fill},{key:`stroke`,label:`边框颜色`,type:`color`,value:e.stroke},{key:`strokeWidth`,label:`边框宽度`,type:`number`,value:e.strokeWidth,options:{min:0,max:50,step:1}},{key:`rx`,label:`圆角半径`,type:`number`,value:e.rx,options:{min:0,max:100,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;n.set({width:e.width,height:e.height,fill:e.fill,stroke:e.stroke||void 0,strokeWidth:e.strokeWidth,rx:e.rx,ry:e.rx,opacity:e.opacity}),n.label=e.label}};exports.default=t;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`rect`,name:`矩形`,icon:`i-tabler:square`,category:`basic`,defaultProps:{id:``,type:`rect`,left:100,top:100,width:100,height:100,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,fill:`#ff0000`,stroke:``,strokeWidth:0,strokeDashArray:null,rx:0,ry:0,opacity:1,label:``},createFabricObject:t=>{let n=new e.Rect({left:t.left,top:t.top,originX:`left`,originY:`top`,width:t.width,height:t.height,fill:t.fill,stroke:t.stroke||void 0,strokeWidth:t.strokeWidth,strokeDashArray:t.strokeDashArray,rx:t.rx,ry:t.ry,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,opacity:t.opacity,visible:t.visible,selectable:!t.locked,evented:!t.locked,strokeUniform:!0,uniformScaling:!1});return n.setControlsVisibility({mtr:!0,mt:!0,mb:!0,ml:!0,mr:!0,tl:!0,tr:!0,bl:!0,br:!0}),n.label=t.label,n},getPropsFromFabricObject:e=>{let t=e,n=t.scaleX||1,r=t.scaleY||1;return{type:`rect`,left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round((t.width||100)*n),height:Math.round((t.height||100)*r),angle:Math.round(t.angle||0),scaleX:1,scaleY:1,visible:t.visible!==!1,locked:!t.selectable,fill:t.fill||`#ff0000`,stroke:t.stroke||``,strokeWidth:Math.round(t.strokeWidth||0),strokeDashArray:t.strokeDashArray||null,rx:Math.round(t.rx||0),ry:Math.round(t.ry||0),opacity:t.opacity||1,label:t.label||``}},getToolbarControls:e=>[{key:`label`,label:`标签`,type:`text`,value:e.label,options:{placeholder:`请输入标签`}},{key:`width`,label:`宽度`,type:`number`,value:e.width,options:{min:1,max:2e3,step:1}},{key:`height`,label:`高度`,type:`number`,value:e.height,options:{min:1,max:2e3,step:1}},{key:`fill`,label:`填充颜色`,type:`color`,value:e.fill},{key:`stroke`,label:`边框颜色`,type:`color`,value:e.stroke},{key:`strokeWidth`,label:`边框宽度`,type:`number`,value:e.strokeWidth,options:{min:0,max:50,step:1}},{key:`rx`,label:`圆角半径`,type:`number`,value:e.rx,options:{min:0,max:100,step:1}},{key:`opacity`,label:`透明度`,type:`slider`,value:e.opacity,options:{min:0,max:1,step:.01}}],onPropsChange:(e,t)=>{let n=t;n.set({width:e.width,height:e.height,fill:e.fill,stroke:e.stroke||void 0,strokeWidth:e.strokeWidth,rx:e.rx,ry:e.rx,opacity:e.opacity}),n.label=e.label}};exports.default=t;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`text`,name:`文本`,icon:`i-tabler:typography`,category:`basic`,defaultProps:{id:``,type:`text`,left:100,top:100,width:200,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,text:`双击编辑文本`,fontSize:20,fontFamily:`Arial`,fill:`#000000`,textAlign:`left`,fontWeight:`normal`,fontStyle:`normal`,underline:!1,linethrough:!1},createFabricObject:t=>{let n=new e.Textbox(t.text,{left:t.left,top:t.top,width:t.width,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,visible:t.visible,selectable:!t.locked,evented:!t.locked,fontSize:t.fontSize,fontFamily:t.fontFamily,fill:t.fill,textAlign:t.textAlign,fontWeight:t.fontWeight,fontStyle:t.fontStyle,underline:t.underline,linethrough:t.linethrough,splitByGrapheme:!0,lockScalingY:!0,setControlsVisibility:{mt:!1,mb:!1}}),r=t.fontSize;return n.on(`mousedown`,()=>{r=n.fontSize||20}),n.on(`scaling`,()=>{let e=n.scaleX||1,t=Math.round(r*e),i=Math.max(8,Math.min(200,t));n.set({fontSize:i,scaleX:1,scaleY:1}),n.canvas?.requestRenderAll()}),n.on(`mousedblclick`,()=>{n.enterEditing(),n.selectAll()}),n},getPropsFromFabricObject:e=>{let t=e;return{left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round(t.width||0),angle:Math.round(t.angle||0),scaleX:t.scaleX||1,scaleY:t.scaleY||1,visible:t.visible!==!1,locked:!t.selectable,text:t.text||``,fontSize:Math.round(t.fontSize||20),fontFamily:t.fontFamily||`Arial`,fill:t.fill,textAlign:t.textAlign||`left`,fontWeight:t.fontWeight||`normal`,fontStyle:t.fontStyle||`normal`,underline:t.underline||!1,linethrough:t.linethrough||!1}},onPropsChange:(e,t)=>{t.set({left:e.left,top:e.top,width:e.width,angle:e.angle,visible:e.visible,selectable:!e.locked,evented:!e.locked,text:e.text,fontSize:e.fontSize,fontFamily:e.fontFamily,fill:e.fill,textAlign:e.textAlign,fontWeight:e.fontWeight,fontStyle:e.fontStyle,underline:e.underline,linethrough:e.linethrough})},getToolbarControls:e=>[{key:`text`,label:`文本内容`,type:`text`,value:e.text},{key:`fontSize`,label:`字体大小`,type:`number`,value:e.fontSize,options:{min:8,max:200,step:1}},{key:`fontFamily`,label:`字体`,type:`select`,value:e.fontFamily,options:{choices:[{label:`Arial`,value:`Arial`},{label:`微软雅黑`,value:`Microsoft YaHei`},{label:`宋体`,value:`SimSun`},{label:`黑体`,value:`SimHei`}]}},{key:`fill`,label:`颜色`,type:`color`,value:e.fill},{key:`textAlign`,label:`对齐`,type:`select`,value:e.textAlign,options:{choices:[{label:`左对齐`,value:`left`},{label:`居中`,value:`center`},{label:`右对齐`,value:`right`}]}},{key:`fontWeight`,label:`粗体`,type:`select`,value:e.fontWeight,options:{choices:[{label:`正常`,value:`normal`},{label:`粗体`,value:`bold`}]}},{key:`fontStyle`,label:`斜体`,type:`select`,value:e.fontStyle,options:{choices:[{label:`正常`,value:`normal`},{label:`斜体`,value:`italic`}]}},{key:`underline`,label:`下划线`,type:`switch`,value:e.underline},{key:`linethrough`,label:`删除线`,type:`switch`,value:e.linethrough}]};exports.default=t;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);let e=require(`fabric`);var t={type:`text`,name:`文本`,icon:`i-tabler:typography`,category:`basic`,defaultProps:{id:``,type:`text`,left:100,top:100,width:200,angle:0,scaleX:1,scaleY:1,visible:!0,locked:!1,text:`双击编辑文本`,fontSize:20,fontFamily:`Arial`,fill:`#000000`,textAlign:`left`,fontWeight:`normal`,fontStyle:`normal`,underline:!1,linethrough:!1},createFabricObject:t=>{let n=new e.Textbox(t.text,{left:t.left,top:t.top,originX:`left`,originY:`top`,width:t.width,angle:t.angle,scaleX:t.scaleX,scaleY:t.scaleY,visible:t.visible,selectable:!t.locked,evented:!t.locked,fontSize:t.fontSize,fontFamily:t.fontFamily,fill:t.fill,textAlign:t.textAlign,fontWeight:t.fontWeight,fontStyle:t.fontStyle,underline:t.underline,linethrough:t.linethrough,splitByGrapheme:!0,lockScalingY:!0,setControlsVisibility:{mt:!1,mb:!1}}),r=t.fontSize;return n.on(`mousedown`,()=>{r=n.fontSize||20}),n.on(`scaling`,()=>{let e=n.scaleX||1,t=Math.round(r*e),i=Math.max(8,Math.min(200,t));n.set({fontSize:i,scaleX:1,scaleY:1}),n.canvas?.requestRenderAll()}),n.on(`mousedblclick`,()=>{n.enterEditing(),n.selectAll()}),n},getPropsFromFabricObject:e=>{let t=e;return{left:Math.round(t.left||0),top:Math.round(t.top||0),width:Math.round(t.width||0),angle:Math.round(t.angle||0),scaleX:t.scaleX||1,scaleY:t.scaleY||1,visible:t.visible!==!1,locked:!t.selectable,text:t.text||``,fontSize:Math.round(t.fontSize||20),fontFamily:t.fontFamily||`Arial`,fill:t.fill,textAlign:t.textAlign||`left`,fontWeight:t.fontWeight||`normal`,fontStyle:t.fontStyle||`normal`,underline:t.underline||!1,linethrough:t.linethrough||!1}},onPropsChange:(e,t)=>{t.set({left:e.left,top:e.top,width:e.width,angle:e.angle,visible:e.visible,selectable:!e.locked,evented:!e.locked,text:e.text,fontSize:e.fontSize,fontFamily:e.fontFamily,fill:e.fill,textAlign:e.textAlign,fontWeight:e.fontWeight,fontStyle:e.fontStyle,underline:e.underline,linethrough:e.linethrough})},getToolbarControls:e=>[{key:`text`,label:`文本内容`,type:`text`,value:e.text},{key:`fontSize`,label:`字体大小`,type:`number`,value:e.fontSize,options:{min:8,max:200,step:1}},{key:`fontFamily`,label:`字体`,type:`select`,value:e.fontFamily,options:{choices:[{label:`Arial`,value:`Arial`},{label:`微软雅黑`,value:`Microsoft YaHei`},{label:`宋体`,value:`SimSun`},{label:`黑体`,value:`SimHei`}]}},{key:`fill`,label:`颜色`,type:`color`,value:e.fill},{key:`textAlign`,label:`对齐`,type:`select`,value:e.textAlign,options:{choices:[{label:`左对齐`,value:`left`},{label:`居中`,value:`center`},{label:`右对齐`,value:`right`}]}},{key:`fontWeight`,label:`粗体`,type:`select`,value:e.fontWeight,options:{choices:[{label:`正常`,value:`normal`},{label:`粗体`,value:`bold`}]}},{key:`fontStyle`,label:`斜体`,type:`select`,value:e.fontStyle,options:{choices:[{label:`正常`,value:`normal`},{label:`斜体`,value:`italic`}]}},{key:`underline`,label:`下划线`,type:`switch`,value:e.underline},{key:`linethrough`,label:`删除线`,type:`switch`,value:e.linethrough}]};exports.default=t;
@@ -1 +1 @@
1
- require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../elements/index.cjs`);let t=require(`vue`),n=require(`@vueuse/core`),r=require(`fabric`);function i(i={}){let a=(0,t.ref)(null),o=(0,t.ref)(null),s=(0,t.ref)({width:i.width||750,height:i.height||1e3,backgroundColor:i.backgroundColor||`#ffffff`,backgroundImage:i.backgroundImage||``,elements:[]}),c=(0,t.ref)([]),l=(0,t.ref)(!1),u=(0,t.ref)(1),d=(0,t.ref)(0),f=(0,t.ref)(0),p=null,m=()=>{},ee=0,h=()=>`element_${++ee}`,g=()=>{l.value||(l.value=!0,(0,t.nextTick)(()=>{m(JSON.stringify(s.value)),l.value=!1}))},_=()=>{if(!a.value)return;let t=a.value.getObjects(),n=[];t.forEach(t=>{let r=t.elementId;if(!r)return;let i=s.value.elements.find(e=>e.id===r);if(!i)return;let a=e.getElementConfig(i.type);if(!a)return;let o=a.getPropsFromFabricObject(t);n.push({...i,...o,id:i.id,type:i.type})}),s.value.elements=n},v=(0,n.useThrottleFn)(()=>{_(),g()},100),y=()=>{if(!a.value)return;let e=a.value.getActiveObjects(),t=a.value.getActiveObject();e.length>0?c.value=[...e]:t?c.value=[t]:c.value=[]},b=()=>{c.value=[]},x=e=>{if(!e.target)return;let t=e.target,n=t.elementId,r=s.value.elements.find(e=>e.id===n)?.type,i=t.scaleX||1,a=t.scaleY||1;if(i!==1||a!==1){if(r===`circle`){let e=Math.max(i,a),n=Math.round((t.radius||50)*e);t.set({radius:n,scaleX:1,scaleY:1})}else if(r!==`image`){let e=Math.round(t.width*i),n=Math.round(t.height*a);t.set({width:e,height:n,scaleX:1,scaleY:1})}t.setCoords()}v()},S=e=>{let t=e.target;if(!t)return;let n=t.elementId;if(!n)return;let r=s.value.elements.find(e=>e.id===n);if(r){if(r.type===`circle`){let e=Math.max(t.scaleX||1,t.scaleY||1);t.set({scaleX:e,scaleY:e}),t.setCoords()}if(r.type===`rect`){let e=t.__corner;if(e&&[`tl`,`tr`,`bl`,`br`].includes(e)){let e=Math.max(Math.abs(t.scaleX||1),Math.abs(t.scaleY||1));t.set({scaleX:t.scaleX>=0?e:-e,scaleY:t.scaleY>=0?e:-e}),t.setCoords()}}if(r.type===`image`){let e=t.__corner;if(e&&[`tl`,`tr`,`bl`,`br`].includes(e)){let e=Math.max(Math.abs(t.scaleX||1),Math.abs(t.scaleY||1));t.set({scaleX:t.scaleX>=0?e:-e,scaleY:t.scaleY>=0?e:-e}),t.setCoords()}}}},C=()=>{a.value&&(a.value.on(`selection:created`,y),a.value.on(`selection:updated`,y),a.value.on(`selection:cleared`,b),a.value.on(`mouse:down`,()=>setTimeout(y,10)),a.value.on(`mouse:up`,()=>setTimeout(y,10)),a.value.on(`object:modified`,x),a.value.on(`object:scaling`,S),a.value.on(`path:created`,v),a.value.on(`object:moving`,v),a.value.on(`object:rotating`,v),a.value.on(`object:skewing`,v),a.value.on(`object:added`,v),a.value.on(`object:removed`,v),a.value.on(`custom:text:changed`,e=>{e.target&&e.newText!==void 0&&e.target.elementId&&v()}))},w=()=>{if(!a.value)return;let e=u.value||1;a.value.setZoom(e),a.value.setDimensions({width:s.value.width*e,height:s.value.height*e}),a.value.backgroundColor=s.value.backgroundColor,a.value.renderAll(),a.value.getObjects().forEach(e=>e.setCoords())},T=()=>{if(!p)return;let e=p.getBoundingClientRect();d.value=e.width-40,f.value=e.height-40;let t=d.value/s.value.width,n=f.value/s.value.height,r=Math.min(t,n,1);u.value=r,a.value&&(a.value.setZoom(r),a.value.setDimensions({width:s.value.width*r,height:s.value.height*r}),a.value.renderAll(),a.value.getObjects().forEach(e=>e.setCoords()))},E=e=>{p=e,(0,t.nextTick)(T);let n=new ResizeObserver(T);return n.observe(e),()=>n.disconnect()},D=(e,t)=>{let n=s.value.width,r=s.value.height,i=e.getBoundingRect();switch(t){case`center-horizontal`:e.set(`left`,Math.round(e.left+(n/2-i.left-i.width/2)));break;case`center-vertical`:e.set(`top`,Math.round(e.top+(r/2-i.top-i.height/2)));break;case`center-both`:e.set({left:Math.round(e.left+(n/2-i.left-i.width/2)),top:Math.round(e.top+(r/2-i.top-i.height/2))});break;case`move-up`:a.value?.bringObjectForward(e);break;case`move-down`:a.value?.sendObjectBackwards(e);break;case`move-to-front`:a.value?.bringObjectToFront(e);break;case`move-to-back`:a.value?.sendObjectToBack(e);break}e.setCoords(),a.value?.renderAll()},O=e=>{if(e.length<3)return;let t=[...e].sort((e,t)=>e.getBoundingRect().left-t.getBoundingRect().left),n=t[0].getBoundingRect(),r=t[t.length-1].getBoundingRect(),i=(r.left+r.width-n.left-t.reduce((e,t)=>e+t.getBoundingRect().width,0))/(t.length-1),a=n.left+n.width+i;for(let e=1;e<t.length-1;e++){let n=t[e],r=n.getBoundingRect();n.set(`left`,Math.round(n.left+(a-r.left))),a+=r.width+i}},k=e=>{if(e.length<3)return;let t=[...e].sort((e,t)=>e.getBoundingRect().top-t.getBoundingRect().top),n=t[0].getBoundingRect(),r=t[t.length-1].getBoundingRect(),i=(r.top+r.height-n.top-t.reduce((e,t)=>e+t.getBoundingRect().height,0))/(t.length-1),a=n.top+n.height+i;for(let e=1;e<t.length-1;e++){let n=t[e],r=n.getBoundingRect();n.set(`top`,Math.round(n.top+(a-r.top))),a+=r.height+i}},A=(e,t)=>{if(e.length<2)return;let n=e.map(e=>e.getBoundingRect()),r=Math.min(...n.map(e=>e.left)),i=Math.max(...n.map(e=>e.left+e.width)),o=Math.min(...n.map(e=>e.top)),s=Math.max(...n.map(e=>e.top+e.height)),c=(r+i)/2,l=(o+s)/2;switch(t){case`left`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`left`,Math.round(e.left+(r-t.left)))});break;case`right`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`left`,Math.round(e.left+(i-t.left-t.width)))});break;case`top`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`top`,Math.round(e.top+(o-t.top)))});break;case`bottom`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`top`,Math.round(e.top+(s-t.top-t.height)))});break;case`center-horizontal`:e.forEach(e=>{let t=e.getBoundingRect(),n=t.left+t.width/2;e.set(`left`,Math.round(e.left+(c-n)))});break;case`center-vertical`:e.forEach(e=>{let t=e.getBoundingRect(),n=t.top+t.height/2;e.set(`top`,Math.round(e.top+(l-n)))});break;case`distribute-horizontal`:O(e);break;case`distribute-vertical`:k(e);break}e.forEach(e=>e.setCoords()),a.value?.renderAll()},j=(e,n)=>(o.value=e,a.value=(0,t.markRaw)(new r.Canvas(e,{selection:!0,preserveObjectStacking:!0,uniformScaling:!1,uniScaleKey:`shiftKey`,altActionKey:`altKey`})),C(),w(),n&&E(n),a.value),M=async(t,n={})=>{let r=e.getElementConfig(t);if(!r||!a.value)return;let i=h(),o=s.value.width/2,c=s.value.height/2,l={...r.defaultProps,left:Math.round(o-(r.defaultProps.width||100)/2),top:Math.round(c-(r.defaultProps.height||50)/2),...n,id:i},u=await r.createFabricObject(l);if(!u)return;u.elementId=i,a.value.add(u),u.setCoords(),a.value.setActiveObject(u),a.value.renderAll();let d=l;return s.value.elements.push(d),i},N=()=>{!a.value||c.value.length===0||(a.value.getActiveObjects().forEach(e=>{let t=e.elementId;if(t){let e=s.value.elements.findIndex(e=>e.id===t);e!==-1&&s.value.elements.splice(e,1)}a.value?.remove(e)}),a.value.discardActiveObject(),c.value=[],a.value.renderAll())},P=()=>{a.value?.discardActiveObject(),a.value?.renderAll()},F=(t,n,r)=>{let i=s.value.elements.findIndex(e=>e.id===t);if(i===-1)return;let o=s.value.elements[i],c=e.getElementConfig(o.type);if(!c)return;s.value.elements[i]={...o,[n]:r};let l=a.value?.getObjects().find(e=>e.elementId===t);l&&c.onPropsChange&&(c.onPropsChange(s.value.elements[i],l),l.setCoords(),a.value?.renderAll())},I=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;if(!e)return!1;let t=s.value.elements.findIndex(t=>t.id===e);return t!==-1&&t<s.value.elements.length-1}),L=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;return e?s.value.elements.findIndex(t=>t.id===e)>0:!1}),R=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;if(!e)return!1;let t=s.value.elements.findIndex(t=>t.id===e);return t!==-1&&t<s.value.elements.length-1}),z=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;return e?s.value.elements.findIndex(t=>t.id===e)>0:!1}),B=e=>{let t=a.value?.getActiveObjects()||[];if(t.length===1){if(D(t[0],e),[`move-up`,`move-down`,`move-to-front`,`move-to-back`].includes(e)){let n=t[0].elementId;if(n){let t=s.value.elements.findIndex(e=>e.id===n);if(t!==-1){let n=s.value.elements[t];switch(s.value.elements.splice(t,1),e){case`move-up`:s.value.elements.splice(Math.min(t+1,s.value.elements.length),0,n);break;case`move-down`:s.value.elements.splice(Math.max(t-1,0),0,n);break;case`move-to-front`:s.value.elements.push(n);break;case`move-to-back`:s.value.elements.unshift(n);break}}}}}else t.length>1&&A(t,e)},V=()=>{a.value&&(a.value.clear(),s.value.elements=[],c.value=[])},H=async t=>{if(t)try{let n=JSON.parse(t);if(s.value={width:n.width||750,height:n.height||1e3,backgroundColor:n.backgroundColor||`#ffffff`,backgroundImage:n.backgroundImage||``,elements:n.elements||[]},a.value){a.value.clear(),a.value.setDimensions({width:s.value.width,height:s.value.height}),a.value.backgroundColor=s.value.backgroundColor,s.value.backgroundImage&&$(s.value.backgroundImage);let t=s.value.elements.map(async t=>{let n=e.getElementConfig(t.type);if(!n)return;let r=await n.createFabricObject(t);r&&(r.elementId=t.id,a.value?.add(r))});Promise.all(t).then(()=>{w(),a.value?.renderAll(),g()})}}catch(e){console.error(`Failed to load data:`,e)}},U=e=>{m=e?.onDataChange||(()=>{})},W=()=>{a.value&&=(a.value.dispose(),null)},G=(0,t.computed)(()=>c.value.length===1?c.value[0]:null),K=(0,t.computed)(()=>{if(!G.value)return null;let e=G.value.elementId;return s.value.elements.find(t=>t.id===e)||null}),q=(0,t.computed)(()=>K.value?e.getElementConfig(K.value.type):null),J=(0,t.computed)(()=>c.value.length>1),Y=e=>{if(K.value)return K.value[e]},X=(0,t.computed)(()=>c.value.map(e=>{let t=e.elementId;return s.value.elements.find(e=>e.id===t)}).filter(e=>!!e)),Z=(e,t)=>{s.value.width=e,s.value.height=t,a.value&&(a.value.setDimensions({width:e,height:t}),T(),a.value.renderAll()),g()},Q=e=>{s.value.backgroundColor=e,a.value&&(a.value.backgroundColor=e,a.value.renderAll()),g()},$=e=>{!a.value||!e||r.FabricImage.fromURL(e,{crossOrigin:`anonymous`}).then(e=>{a.value&&(a.value.backgroundImage=e,a.value.renderAll())}).catch(e=>{console.error(`Failed to load background image:`,e)})};return(0,t.watch)(s,()=>{v()},{deep:!0}),{initCanvas:j,destroy:W,setCallbacks:U,addElement:M,deleteSelectedElements:N,updateElementProperty:F,alignElements:B,canMoveUp:I,canMoveDown:L,canMoveToFront:R,canMoveToBack:z,clearCanvas:V,loadData:H,updateData:g,canvas:a,canvasData:s,selectedElements:c,canvasScale:u,currentElement:G,currentElementData:K,currentElementConfig:q,hasMultipleSelection:J,clearSelection:P,updateCanvasSize:w,setupAutoResize:E,getSelectedElementProperty:Y,selectedElementsData:X,syncAllFabricObjectsToData:_,updateCanvasSettings:Z,updateCanvasBackground:Q,updateCanvasBackgroundImage:e=>{s.value.backgroundImage=e,e?$(e):a.value&&(a.value.backgroundImage=void 0,a.value.renderAll()),g()},saveData:()=>{_(),g()},exportJson:()=>{_();let e=JSON.stringify(s.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`poster-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}}}exports.usePosterEditor=i;
1
+ require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../elements/index.cjs`);let t=require(`vue`),n=require(`@vueuse/core`),r=require(`fabric`);function i(i={}){let a=(0,t.ref)(null),o=(0,t.ref)(null),s=(0,t.ref)({width:i.width||750,height:i.height||1e3,backgroundColor:i.backgroundColor||`#ffffff`,backgroundImage:i.backgroundImage||``,elements:[]}),c=(0,t.ref)([]),l=(0,t.ref)(!1),u=(0,t.ref)(1),d=(0,t.ref)(0),f=(0,t.ref)(0),p=null,m=()=>{},ee=0,h=()=>`element_${++ee}`,g=()=>{l.value||(l.value=!0,(0,t.nextTick)(()=>{m(JSON.stringify(s.value)),l.value=!1}))},_=()=>{if(!a.value)return;let t=a.value.getObjects(),n=[];t.forEach(t=>{let r=t.elementId;if(!r)return;let i=s.value.elements.find(e=>e.id===r);if(!i)return;let a=e.getElementConfig(i.type);if(!a)return;let o=a.getPropsFromFabricObject(t);n.push({...i,...o,id:i.id,type:i.type})}),s.value.elements=n},v=(0,n.useThrottleFn)(()=>{_(),g()},100),y=()=>{if(!a.value)return;let e=a.value.getActiveObjects(),t=a.value.getActiveObject();e.length>0?c.value=[...e]:t?c.value=[t]:c.value=[]},b=()=>{c.value=[]},x=e=>{if(!e.target)return;let t=e.target,n=t.elementId,r=s.value.elements.find(e=>e.id===n)?.type,i=t.scaleX||1,a=t.scaleY||1;if(i!==1||a!==1){if(r===`circle`){let e=Math.max(i,a),n=Math.round((t.radius||50)*e);t.set({radius:n,scaleX:1,scaleY:1})}else if(r!==`image`){let e=Math.round(t.width*i),n=Math.round(t.height*a);t.set({width:e,height:n,scaleX:1,scaleY:1})}t.setCoords()}v()},S=e=>{let t=e.target;if(!t)return;let n=t.elementId;if(!n)return;let r=s.value.elements.find(e=>e.id===n);if(r){if(r.type===`circle`){let e=Math.max(t.scaleX||1,t.scaleY||1);t.set({scaleX:e,scaleY:e}),t.setCoords()}if(r.type===`rect`){let e=t.__corner;if(e&&[`tl`,`tr`,`bl`,`br`].includes(e)){let e=Math.max(Math.abs(t.scaleX||1),Math.abs(t.scaleY||1));t.set({scaleX:t.scaleX>=0?e:-e,scaleY:t.scaleY>=0?e:-e}),t.setCoords()}}if(r.type===`image`){let e=t.__corner;if(e&&[`tl`,`tr`,`bl`,`br`].includes(e)){let e=Math.max(Math.abs(t.scaleX||1),Math.abs(t.scaleY||1));t.set({scaleX:t.scaleX>=0?e:-e,scaleY:t.scaleY>=0?e:-e}),t.setCoords()}}}},C=()=>{if(!a.value)return;let e=e=>{let t=e?.e;return!t||typeof t.button!=`number`?!0:t.button===0};a.value.on(`selection:created`,y),a.value.on(`selection:updated`,y),a.value.on(`selection:cleared`,b),a.value.on(`mouse:down`,t=>{e(t)&&setTimeout(y,10)}),a.value.on(`mouse:up`,t=>{e(t)&&setTimeout(y,10)}),a.value.on(`object:modified`,x),a.value.on(`object:scaling`,S),a.value.on(`path:created`,v),a.value.on(`object:moving`,v),a.value.on(`object:rotating`,v),a.value.on(`object:skewing`,v),a.value.on(`object:added`,v),a.value.on(`object:removed`,v),a.value.on(`custom:text:changed`,e=>{e.target&&e.newText!==void 0&&e.target.elementId&&v()})},w=()=>{if(!a.value)return;let e=u.value||1;a.value.setZoom(e),a.value.setDimensions({width:s.value.width*e,height:s.value.height*e}),a.value.backgroundColor=s.value.backgroundColor,a.value.renderAll(),a.value.getObjects().forEach(e=>e.setCoords())},T=()=>{if(!p)return;let e=p.getBoundingClientRect();d.value=e.width-40,f.value=e.height-40;let t=d.value/s.value.width,n=f.value/s.value.height,r=Math.min(t,n,1);u.value=r,a.value&&(a.value.setZoom(r),a.value.setDimensions({width:s.value.width*r,height:s.value.height*r}),a.value.renderAll(),a.value.getObjects().forEach(e=>e.setCoords()))},E=e=>{p=e,(0,t.nextTick)(T);let n=new ResizeObserver(T);return n.observe(e),()=>n.disconnect()},D=(e,t)=>{let n=s.value.width,r=s.value.height,i=e.getBoundingRect();switch(t){case`center-horizontal`:e.set(`left`,Math.round(e.left+(n/2-i.left-i.width/2)));break;case`center-vertical`:e.set(`top`,Math.round(e.top+(r/2-i.top-i.height/2)));break;case`center-both`:e.set({left:Math.round(e.left+(n/2-i.left-i.width/2)),top:Math.round(e.top+(r/2-i.top-i.height/2))});break;case`move-up`:a.value?.bringObjectForward(e);break;case`move-down`:a.value?.sendObjectBackwards(e);break;case`move-to-front`:a.value?.bringObjectToFront(e);break;case`move-to-back`:a.value?.sendObjectToBack(e);break}e.setCoords(),a.value?.renderAll()},O=e=>{if(e.length<3)return;let t=[...e].sort((e,t)=>e.getBoundingRect().left-t.getBoundingRect().left),n=t[0].getBoundingRect(),r=t[t.length-1].getBoundingRect(),i=(r.left+r.width-n.left-t.reduce((e,t)=>e+t.getBoundingRect().width,0))/(t.length-1),a=n.left+n.width+i;for(let e=1;e<t.length-1;e++){let n=t[e],r=n.getBoundingRect();n.set(`left`,Math.round(n.left+(a-r.left))),a+=r.width+i}},k=e=>{if(e.length<3)return;let t=[...e].sort((e,t)=>e.getBoundingRect().top-t.getBoundingRect().top),n=t[0].getBoundingRect(),r=t[t.length-1].getBoundingRect(),i=(r.top+r.height-n.top-t.reduce((e,t)=>e+t.getBoundingRect().height,0))/(t.length-1),a=n.top+n.height+i;for(let e=1;e<t.length-1;e++){let n=t[e],r=n.getBoundingRect();n.set(`top`,Math.round(n.top+(a-r.top))),a+=r.height+i}},A=(e,t)=>{if(e.length<2)return;let n=e.map(e=>e.getBoundingRect()),r=Math.min(...n.map(e=>e.left)),i=Math.max(...n.map(e=>e.left+e.width)),o=Math.min(...n.map(e=>e.top)),s=Math.max(...n.map(e=>e.top+e.height)),c=(r+i)/2,l=(o+s)/2;switch(t){case`left`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`left`,Math.round(e.left+(r-t.left)))});break;case`right`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`left`,Math.round(e.left+(i-t.left-t.width)))});break;case`top`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`top`,Math.round(e.top+(o-t.top)))});break;case`bottom`:e.forEach(e=>{let t=e.getBoundingRect();e.set(`top`,Math.round(e.top+(s-t.top-t.height)))});break;case`center-horizontal`:e.forEach(e=>{let t=e.getBoundingRect(),n=t.left+t.width/2;e.set(`left`,Math.round(e.left+(c-n)))});break;case`center-vertical`:e.forEach(e=>{let t=e.getBoundingRect(),n=t.top+t.height/2;e.set(`top`,Math.round(e.top+(l-n)))});break;case`distribute-horizontal`:O(e);break;case`distribute-vertical`:k(e);break}e.forEach(e=>e.setCoords()),a.value?.renderAll()},j=(e,n)=>(o.value=e,a.value=(0,t.markRaw)(new r.Canvas(e,{selection:!0,preserveObjectStacking:!0,uniformScaling:!1,uniScaleKey:`shiftKey`,altActionKey:`altKey`})),C(),w(),n&&E(n),a.value),M=async(t,n={})=>{let r=e.getElementConfig(t);if(!r||!a.value)return;let i=h(),o=s.value.width/2,c=s.value.height/2,l={...r.defaultProps,left:Math.round(o-(r.defaultProps.width||100)/2),top:Math.round(c-(r.defaultProps.height||50)/2),...n,id:i},u=await r.createFabricObject(l);if(!u)return;u.elementId=i,a.value.add(u),u.setCoords(),a.value.setActiveObject(u),a.value.renderAll();let d=l;return s.value.elements.push(d),i},N=()=>{!a.value||c.value.length===0||(a.value.getActiveObjects().forEach(e=>{let t=e.elementId;if(t){let e=s.value.elements.findIndex(e=>e.id===t);e!==-1&&s.value.elements.splice(e,1)}a.value?.remove(e)}),a.value.discardActiveObject(),c.value=[],a.value.renderAll())},P=()=>{a.value?.discardActiveObject(),a.value?.renderAll()},F=(t,n,r)=>{let i=s.value.elements.findIndex(e=>e.id===t);if(i===-1)return;let o=s.value.elements[i],c=e.getElementConfig(o.type);if(!c)return;s.value.elements[i]={...o,[n]:r};let l=a.value?.getObjects().find(e=>e.elementId===t);l&&c.onPropsChange&&(c.onPropsChange(s.value.elements[i],l),l.setCoords(),a.value?.renderAll())},I=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;if(!e)return!1;let t=s.value.elements.findIndex(t=>t.id===e);return t!==-1&&t<s.value.elements.length-1}),L=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;return e?s.value.elements.findIndex(t=>t.id===e)>0:!1}),R=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;if(!e)return!1;let t=s.value.elements.findIndex(t=>t.id===e);return t!==-1&&t<s.value.elements.length-1}),z=(0,t.computed)(()=>{if(c.value.length!==1||s.value.elements.length<=1)return!1;let e=c.value[0].elementId;return e?s.value.elements.findIndex(t=>t.id===e)>0:!1}),B=e=>{let t=a.value?.getActiveObjects()||[];if(t.length===1){if(D(t[0],e),[`move-up`,`move-down`,`move-to-front`,`move-to-back`].includes(e)){let n=t[0].elementId;if(n){let t=s.value.elements.findIndex(e=>e.id===n);if(t!==-1){let n=s.value.elements[t];switch(s.value.elements.splice(t,1),e){case`move-up`:s.value.elements.splice(Math.min(t+1,s.value.elements.length),0,n);break;case`move-down`:s.value.elements.splice(Math.max(t-1,0),0,n);break;case`move-to-front`:s.value.elements.push(n);break;case`move-to-back`:s.value.elements.unshift(n);break}}}}}else t.length>1&&A(t,e)},V=()=>{a.value&&(a.value.clear(),s.value.elements=[],c.value=[])},H=async t=>{if(t)try{let n=JSON.parse(t);if(s.value={width:n.width||750,height:n.height||1e3,backgroundColor:n.backgroundColor||`#ffffff`,backgroundImage:n.backgroundImage||``,elements:n.elements||[]},a.value){a.value.clear(),a.value.setDimensions({width:s.value.width,height:s.value.height}),a.value.backgroundColor=s.value.backgroundColor,s.value.backgroundImage&&$(s.value.backgroundImage);let t=s.value.elements.map(async t=>{let n=e.getElementConfig(t.type);if(!n)return;let r=await n.createFabricObject(t);r&&(r.elementId=t.id,a.value?.add(r))});Promise.all(t).then(()=>{w(),a.value?.renderAll(),g()})}}catch(e){console.error(`Failed to load data:`,e)}},U=e=>{m=e?.onDataChange||(()=>{})},W=()=>{a.value&&=(a.value.dispose(),null)},G=(0,t.computed)(()=>c.value.length===1?c.value[0]:null),K=(0,t.computed)(()=>{if(!G.value)return null;let e=G.value.elementId;return s.value.elements.find(t=>t.id===e)||null}),q=(0,t.computed)(()=>K.value?e.getElementConfig(K.value.type):null),J=(0,t.computed)(()=>c.value.length>1),Y=e=>{if(K.value)return K.value[e]},X=(0,t.computed)(()=>c.value.map(e=>{let t=e.elementId;return s.value.elements.find(e=>e.id===t)}).filter(e=>!!e)),Z=(e,t)=>{s.value.width=e,s.value.height=t,a.value&&(a.value.setDimensions({width:e,height:t}),T(),a.value.renderAll()),g()},Q=e=>{s.value.backgroundColor=e,a.value&&(a.value.backgroundColor=e,a.value.renderAll()),g()},$=e=>{!a.value||!e||r.FabricImage.fromURL(e,{crossOrigin:`anonymous`}).then(e=>{a.value&&(a.value.backgroundImage=e,a.value.renderAll())}).catch(e=>{console.error(`Failed to load background image:`,e)})};return(0,t.watch)(s,()=>{v()},{deep:!0}),{initCanvas:j,destroy:W,setCallbacks:U,addElement:M,deleteSelectedElements:N,updateElementProperty:F,alignElements:B,canMoveUp:I,canMoveDown:L,canMoveToFront:R,canMoveToBack:z,clearCanvas:V,loadData:H,updateData:g,canvas:a,canvasData:s,selectedElements:c,canvasScale:u,currentElement:G,currentElementData:K,currentElementConfig:q,hasMultipleSelection:J,clearSelection:P,updateCanvasSize:w,setupAutoResize:E,getSelectedElementProperty:Y,selectedElementsData:X,syncAllFabricObjectsToData:_,updateCanvasSettings:Z,updateCanvasBackground:Q,updateCanvasBackgroundImage:e=>{s.value.backgroundImage=e,e?$(e):a.value&&(a.value.backgroundImage=void 0,a.value.renderAll()),g()},saveData:()=>{_(),g()},exportJson:()=>{_();let e=JSON.stringify(s.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`poster-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}}}exports.usePosterEditor=i;
@@ -7,7 +7,7 @@ var e=`/* Source: /Volumes/Web/dux-vue/packages/pro/src/components/flowEditor/st
7
7
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.5);
8
8
  }
9
9
  /* layer: properties */
10
- @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-text-opacity:100%;--un-bg-opacity:100%;--un-from-opacity:100%;--un-space-y-reverse:initial;--un-divide-y-reverse:initial;--un-border-style:solid;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-shadow-opacity:100%;--un-border-opacity:100%;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-ease:initial;--un-to-opacity:100%;--un-outline-style:solid;--un-fill-opacity:100%;}}
10
+ @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*, ::before, ::after, ::backdrop{--un-text-opacity:100%;--un-bg-opacity:100%;--un-from-opacity:100%;--un-divide-y-reverse:initial;--un-border-style:solid;--un-divide-x-reverse:initial;--un-divide-opacity:100%;--un-space-y-reverse:initial;--un-shadow-opacity:100%;--un-border-opacity:100%;--un-translate-x:initial;--un-translate-y:initial;--un-translate-z:initial;--un-ease:initial;--un-to-opacity:100%;--un-outline-style:solid;--un-fill-opacity:100%;}}
11
11
  @property --un-text-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
12
12
  @property --un-outline-style{syntax:"*";inherits:false;initial-value:solid;}
13
13
  @property --un-border-opacity{syntax:"<percentage>";inherits:false;initial-value:100%;}
@@ -27,6 +27,8 @@ var t = {
27
27
  let n = new e({
28
28
  left: t.left,
29
29
  top: t.top,
30
+ originX: "left",
31
+ originY: "top",
30
32
  radius: t.radius,
31
33
  fill: t.fill,
32
34
  stroke: t.stroke || void 0,
@@ -22,6 +22,8 @@ var t = {
22
22
  createFabricObject: (t) => e.fromURL(t.src || "", { crossOrigin: "anonymous" }).then((e) => (e.set({
23
23
  left: t.left,
24
24
  top: t.top,
25
+ originX: "left",
26
+ originY: "top",
25
27
  width: t.width,
26
28
  height: t.height,
27
29
  angle: t.angle,
@@ -100,6 +102,8 @@ var t = {
100
102
  n.set({
101
103
  left: e.left,
102
104
  top: e.top,
105
+ originX: "left",
106
+ originY: "top",
103
107
  width: t,
104
108
  height: r,
105
109
  scaleX: l,
@@ -126,6 +130,8 @@ var t = {
126
130
  n.set({
127
131
  left: e.left,
128
132
  top: e.top,
133
+ originX: "left",
134
+ originY: "top",
129
135
  scaleX: a,
130
136
  scaleY: o,
131
137
  angle: e.angle,
@@ -29,6 +29,8 @@ var t = {
29
29
  let n = new e({
30
30
  left: t.left,
31
31
  top: t.top,
32
+ originX: "left",
33
+ originY: "top",
32
34
  width: t.width,
33
35
  height: t.height,
34
36
  fill: t.fill,
@@ -29,6 +29,8 @@ var t = {
29
29
  let n = new e(t.text, {
30
30
  left: t.left,
31
31
  top: t.top,
32
+ originX: "left",
33
+ originY: "top",
32
34
  width: t.width,
33
35
  angle: t.angle,
34
36
  scaleX: t.scaleX,
@@ -108,9 +108,18 @@ function l(l = {}) {
108
108
  }
109
109
  }
110
110
  }, ee = () => {
111
- u.value && (u.value.on("selection:created", T), u.value.on("selection:updated", T), u.value.on("selection:cleared", E), u.value.on("mouse:down", () => setTimeout(T, 10)), u.value.on("mouse:up", () => setTimeout(T, 10)), u.value.on("object:modified", D), u.value.on("object:scaling", O), u.value.on("path:created", w), u.value.on("object:moving", w), u.value.on("object:rotating", w), u.value.on("object:skewing", w), u.value.on("object:added", w), u.value.on("object:removed", w), u.value.on("custom:text:changed", (e) => {
111
+ if (!u.value) return;
112
+ let e = (e) => {
113
+ let t = e?.e;
114
+ return !t || typeof t.button != "number" ? !0 : t.button === 0;
115
+ };
116
+ u.value.on("selection:created", T), u.value.on("selection:updated", T), u.value.on("selection:cleared", E), u.value.on("mouse:down", (t) => {
117
+ e(t) && setTimeout(T, 10);
118
+ }), u.value.on("mouse:up", (t) => {
119
+ e(t) && setTimeout(T, 10);
120
+ }), u.value.on("object:modified", D), u.value.on("object:scaling", O), u.value.on("path:created", w), u.value.on("object:moving", w), u.value.on("object:rotating", w), u.value.on("object:skewing", w), u.value.on("object:added", w), u.value.on("object:removed", w), u.value.on("custom:text:changed", (e) => {
112
121
  e.target && e.newText !== void 0 && e.target.elementId && w();
113
- }));
122
+ });
114
123
  }, k = () => {
115
124
  if (!u.value) return;
116
125
  let e = h.value || 1;