@bitovi/vybit 0.5.0 → 0.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitovi/vybit",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Browser overlay + inspector panel + MCP server for visually editing Tailwind CSS classes on a running React app",
5
5
  "keywords": [
6
6
  "tailwind",
@@ -1,4 +1,4 @@
1
- import{r as X,j as P,c as En,s as Ns,o as jn,a as Pn}from"./index-DVWn5Mcj.js";function p(a,t,e){return(t=function(s){var r=function(i,n){if(typeof i!="object"||!i)return i;var o=i[Symbol.toPrimitive];if(o!==void 0){var h=o.call(i,n);if(typeof h!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(i)}(s,"string");return typeof r=="symbol"?r:r+""}(t))in a?Object.defineProperty(a,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):a[t]=e,a}function Rr(a,t){var e=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);t&&(s=s.filter(function(r){return Object.getOwnPropertyDescriptor(a,r).enumerable})),e.push.apply(e,s)}return e}function m(a){for(var t=1;t<arguments.length;t++){var e=arguments[t]!=null?arguments[t]:{};t%2?Rr(Object(e),!0).forEach(function(s){p(a,s,e[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(e)):Rr(Object(e)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(e,s))})}return a}function G(a,t){if(a==null)return{};var e,s,r=function(n,o){if(n==null)return{};var h={};for(var l in n)if({}.hasOwnProperty.call(n,l)){if(o.indexOf(l)>=0)continue;h[l]=n[l]}return h}(a,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(a);for(s=0;s<i.length;s++)e=i[s],t.indexOf(e)>=0||{}.propertyIsEnumerable.call(a,e)&&(r[e]=a[e])}return r}function Et(a,t){return t||(t=a.slice(0)),Object.freeze(Object.defineProperties(a,{raw:{value:Object.freeze(t)}}))}class Br{constructor(){p(this,"browserShadowBlurConstant",1),p(this,"DPI",96),p(this,"devicePixelRatio",typeof window<"u"?window.devicePixelRatio:1),p(this,"perfLimitSizeTotal",2097152),p(this,"maxCacheSideLimit",4096),p(this,"minCacheSideLimit",256),p(this,"disableStyleCopyPaste",!1),p(this,"enableGLFiltering",!0),p(this,"textureSize",4096),p(this,"forceGLPutImageData",!1),p(this,"cachesBoundsOfCurve",!1),p(this,"fontPaths",{}),p(this,"NUM_FRACTION_DIGITS",4)}}const B=new class extends Br{constructor(a){super(),this.configure(a)}configure(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(this,a)}addFonts(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.fontPaths=m(m({},this.fontPaths),a)}removeFonts(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(a=>{delete this.fontPaths[a]})}clearFonts(){this.fontPaths={}}restoreDefaults(a){const t=new Br,e=(a==null?void 0:a.reduce((s,r)=>(s[r]=t[r],s),{}))||t;this.configure(e)}},Kt=function(a){for(var t=arguments.length,e=new Array(t>1?t-1:0),s=1;s<t;s++)e[s-1]=arguments[s];return console[a]("fabric",...e)};class kt extends Error{constructor(t,e){super("fabric: ".concat(t),e)}}class An extends kt{constructor(t){super("".concat(t," 'options.signal' is in 'aborted' state"))}}class Fn{}class Ln extends Fn{testPrecision(t,e){const s="precision ".concat(e,` float;
1
+ import{r as X,j as P,c as En,s as Ns,o as jn,a as Pn}from"./index-BYIDlGa3.js";function p(a,t,e){return(t=function(s){var r=function(i,n){if(typeof i!="object"||!i)return i;var o=i[Symbol.toPrimitive];if(o!==void 0){var h=o.call(i,n);if(typeof h!="object")return h;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(i)}(s,"string");return typeof r=="symbol"?r:r+""}(t))in a?Object.defineProperty(a,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):a[t]=e,a}function Rr(a,t){var e=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);t&&(s=s.filter(function(r){return Object.getOwnPropertyDescriptor(a,r).enumerable})),e.push.apply(e,s)}return e}function m(a){for(var t=1;t<arguments.length;t++){var e=arguments[t]!=null?arguments[t]:{};t%2?Rr(Object(e),!0).forEach(function(s){p(a,s,e[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(e)):Rr(Object(e)).forEach(function(s){Object.defineProperty(a,s,Object.getOwnPropertyDescriptor(e,s))})}return a}function G(a,t){if(a==null)return{};var e,s,r=function(n,o){if(n==null)return{};var h={};for(var l in n)if({}.hasOwnProperty.call(n,l)){if(o.indexOf(l)>=0)continue;h[l]=n[l]}return h}(a,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(a);for(s=0;s<i.length;s++)e=i[s],t.indexOf(e)>=0||{}.propertyIsEnumerable.call(a,e)&&(r[e]=a[e])}return r}function Et(a,t){return t||(t=a.slice(0)),Object.freeze(Object.defineProperties(a,{raw:{value:Object.freeze(t)}}))}class Br{constructor(){p(this,"browserShadowBlurConstant",1),p(this,"DPI",96),p(this,"devicePixelRatio",typeof window<"u"?window.devicePixelRatio:1),p(this,"perfLimitSizeTotal",2097152),p(this,"maxCacheSideLimit",4096),p(this,"minCacheSideLimit",256),p(this,"disableStyleCopyPaste",!1),p(this,"enableGLFiltering",!0),p(this,"textureSize",4096),p(this,"forceGLPutImageData",!1),p(this,"cachesBoundsOfCurve",!1),p(this,"fontPaths",{}),p(this,"NUM_FRACTION_DIGITS",4)}}const B=new class extends Br{constructor(a){super(),this.configure(a)}configure(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(this,a)}addFonts(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.fontPaths=m(m({},this.fontPaths),a)}removeFonts(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(a=>{delete this.fontPaths[a]})}clearFonts(){this.fontPaths={}}restoreDefaults(a){const t=new Br,e=(a==null?void 0:a.reduce((s,r)=>(s[r]=t[r],s),{}))||t;this.configure(e)}},Kt=function(a){for(var t=arguments.length,e=new Array(t>1?t-1:0),s=1;s<t;s++)e[s-1]=arguments[s];return console[a]("fabric",...e)};class kt extends Error{constructor(t,e){super("fabric: ".concat(t),e)}}class An extends kt{constructor(t){super("".concat(t," 'options.signal' is in 'aborted' state"))}}class Fn{}class Ln extends Fn{testPrecision(t,e){const s="precision ".concat(e,` float;
2
2
  void main(){}`),r=t.createShader(t.FRAGMENT_SHADER);return!!r&&(t.shaderSource(r,s),t.compileShader(r),!!t.getShaderParameter(r,t.COMPILE_STATUS))}queryWebGL(t){const e=t.getContext("webgl");e&&(this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),this.GLPrecision=["highp","mediump","lowp"].find(s=>this.testPrecision(e,s)),e.getExtension("WEBGL_lose_context").loseContext(),Kt("log","WebGL: max texture size ".concat(this.maxTextureSize)))}isSupported(t){return!!this.maxTextureSize&&this.maxTextureSize>=t}}const Rn={};let Ir;const Mt=()=>Ir||(Ir={document,window,isTouchSupported:"ontouchstart"in window||"ontouchstart"in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new Ln,dispose(){},copyPasteData:Rn}),pe=()=>Mt().document,js=()=>Mt().window,wi=()=>{var a;return Math.max((a=B.devicePixelRatio)!==null&&a!==void 0?a:js().devicePixelRatio,1)},ke=new class{constructor(){p(this,"boundsOfCurveCache",{}),this.charWidthsCache=new Map}getFontCache(a){let{fontFamily:t,fontStyle:e,fontWeight:s}=a;t=t.toLowerCase();const r=this.charWidthsCache;r.has(t)||r.set(t,new Map);const i=r.get(t),n="".concat(e.toLowerCase(),"_").concat((s+"").toLowerCase());return i.has(n)||i.set(n,new Map),i.get(n)}clearFontCache(a){a?this.charWidthsCache.delete((a||"").toLowerCase()):this.charWidthsCache=new Map}limitDimsByArea(a){const{perfLimitSizeTotal:t}=B,e=Math.sqrt(t*a);return[Math.floor(e),Math.floor(t/e)]}},ir="6.9.1";function gs(){}const Be=Math.PI/2,xs=2*Math.PI,vr=Math.PI/180,rt=Object.freeze([1,0,0,1,0,0]),xr=16,Gt=.4477152502,F="center",W="left",ot="top",nr="bottom",q="right",at="none",yr=/\r?\n/,Ti="moving",Ps="scaling",Oi="rotating",_r="rotate",ki="skewing",je="resizing",Bn="modifyPoly",In="modifyPath",ys="changed",As="scale",lt="scaleX",ft="scaleY",me="skewX",ve="skewY",Z="fill",ht="stroke",_s="modified",ne="json",Gs="svg",D=new class{constructor(){this[ne]=new Map,this[Gs]=new Map}has(a){return this[ne].has(a)}getClass(a){const t=this[ne].get(a);if(!t)throw new kt("No class registered for ".concat(a));return t}setClass(a,t){t?this[ne].set(t,a):(this[ne].set(a.type,a),this[ne].set(a.type.toLowerCase(),a))}getSVGClass(a){return this[Gs].get(a)}setSVGClass(a,t){this[Gs].set(t??a.type.toLowerCase(),a)}},bs=new class extends Array{remove(a){const t=this.indexOf(a);t>-1&&this.splice(t,1)}cancelAll(){const a=this.splice(0);return a.forEach(t=>t.abort()),a}cancelByCanvas(a){if(!a)return[];const t=this.filter(e=>{var s;return e.target===a||typeof e.target=="object"&&((s=e.target)===null||s===void 0?void 0:s.canvas)===a});return t.forEach(e=>e.abort()),t}cancelByTarget(a){if(!a)return[];const t=this.filter(e=>e.target===a);return t.forEach(e=>e.abort()),t}};class Wn{constructor(){p(this,"__eventListeners",{})}on(t,e){if(this.__eventListeners||(this.__eventListeners={}),typeof t=="object")return Object.entries(t).forEach(s=>{let[r,i]=s;this.on(r,i)}),()=>this.off(t);if(e){const s=t;return this.__eventListeners[s]||(this.__eventListeners[s]=[]),this.__eventListeners[s].push(e),()=>this.off(s,e)}return()=>!1}once(t,e){if(typeof t=="object"){const s=[];return Object.entries(t).forEach(r=>{let[i,n]=r;s.push(this.once(i,n))}),()=>s.forEach(r=>r())}if(e){const s=this.on(t,function(){for(var r=arguments.length,i=new Array(r),n=0;n<r;n++)i[n]=arguments[n];e.call(this,...i),s()});return s}return()=>!1}_removeEventListener(t,e){if(this.__eventListeners[t])if(e){const s=this.__eventListeners[t],r=s.indexOf(e);r>-1&&s.splice(r,1)}else this.__eventListeners[t]=[]}off(t,e){if(this.__eventListeners)if(t===void 0)for(const s in this.__eventListeners)this._removeEventListener(s);else typeof t=="object"?Object.entries(t).forEach(s=>{let[r,i]=s;this._removeEventListener(r,i)}):this._removeEventListener(t,e)}fire(t,e){var s;if(!this.__eventListeners)return;const r=(s=this.__eventListeners[t])===null||s===void 0?void 0:s.concat();if(r)for(let i=0;i<r.length;i++)r[i].call(this,e||{})}}const ae=(a,t)=>{const e=a.indexOf(t);return e!==-1&&a.splice(e,1),a},Bt=a=>{if(a===0)return 1;switch(Math.abs(a)/Be){case 1:case 3:return 0;case 2:return-1}return Math.cos(a)},It=a=>{if(a===0)return 0;const t=a/Be,e=Math.sign(a);switch(t){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(a)};class x{constructor(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;typeof t=="object"?(this.x=t.x,this.y=t.y):(this.x=t,this.y=e)}add(t){return new x(this.x+t.x,this.y+t.y)}addEquals(t){return this.x+=t.x,this.y+=t.y,this}scalarAdd(t){return new x(this.x+t,this.y+t)}scalarAddEquals(t){return this.x+=t,this.y+=t,this}subtract(t){return new x(this.x-t.x,this.y-t.y)}subtractEquals(t){return this.x-=t.x,this.y-=t.y,this}scalarSubtract(t){return new x(this.x-t,this.y-t)}scalarSubtractEquals(t){return this.x-=t,this.y-=t,this}multiply(t){return new x(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new x(this.x*t,this.y*t)}scalarMultiplyEquals(t){return this.x*=t,this.y*=t,this}divide(t){return new x(this.x/t.x,this.y/t.y)}scalarDivide(t){return new x(this.x/t,this.y/t)}scalarDivideEquals(t){return this.x/=t,this.y/=t,this}eq(t){return this.x===t.x&&this.y===t.y}lt(t){return this.x<t.x&&this.y<t.y}lte(t){return this.x<=t.x&&this.y<=t.y}gt(t){return this.x>t.x&&this.y>t.y}gte(t){return this.x>=t.x&&this.y>=t.y}lerp(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;return e=Math.max(Math.min(1,e),0),new x(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)}distanceFrom(t){const e=this.x-t.x,s=this.y-t.y;return Math.sqrt(e*e+s*s)}midPointFrom(t){return this.lerp(t)}min(t){return new x(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new x(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return"".concat(this.x,",").concat(this.y)}setXY(t,e){return this.x=t,this.y=e,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setFromPoint(t){return this.x=t.x,this.y=t.y,this}swap(t){const e=this.x,s=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=s}clone(){return new x(this.x,this.y)}rotate(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:br;const s=It(t),r=Bt(t),i=this.subtract(e);return new x(i.x*r-i.y*s,i.x*s+i.y*r).add(e)}transform(t){let e=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return new x(t[0]*this.x+t[2]*this.y+(e?0:t[4]),t[1]*this.x+t[3]*this.y+(e?0:t[5]))}}const br=new x(0,0),fs=a=>!!a&&Array.isArray(a._objects);function Di(a){class t extends a{constructor(){super(...arguments),p(this,"_objects",[])}_onObjectAdded(s){}_onObjectRemoved(s){}_onStackOrderChanged(s){}add(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];const n=this._objects.push(...r);return r.forEach(o=>this._onObjectAdded(o)),n}insertAt(s){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n<r;n++)i[n-1]=arguments[n];return this._objects.splice(s,0,...i),i.forEach(o=>this._onObjectAdded(o)),this._objects.length}remove(){const s=this._objects,r=[];for(var i=arguments.length,n=new Array(i),o=0;o<i;o++)n[o]=arguments[o];return n.forEach(h=>{const l=s.indexOf(h);l!==-1&&(s.splice(l,1),r.push(h),this._onObjectRemoved(h))}),r}forEachObject(s){this.getObjects().forEach((r,i,n)=>s(r,i,n))}getObjects(){for(var s=arguments.length,r=new Array(s),i=0;i<s;i++)r[i]=arguments[i];return r.length===0?[...this._objects]:this._objects.filter(n=>n.isType(...r))}item(s){return this._objects[s]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(s,r){return!!this._objects.includes(s)||!!r&&this._objects.some(i=>i instanceof t&&i.contains(s,!0))}complexity(){return this._objects.reduce((s,r)=>s+=r.complexity?r.complexity():0,0)}sendObjectToBack(s){return!(!s||s===this._objects[0])&&(ae(this._objects,s),this._objects.unshift(s),this._onStackOrderChanged(s),!0)}bringObjectToFront(s){return!(!s||s===this._objects[this._objects.length-1])&&(ae(this._objects,s),this._objects.push(s),this._onStackOrderChanged(s),!0)}sendObjectBackwards(s,r){if(!s)return!1;const i=this._objects.indexOf(s);if(i!==0){const n=this.findNewLowerIndex(s,i,r);return ae(this._objects,s),this._objects.splice(n,0,s),this._onStackOrderChanged(s),!0}return!1}bringObjectForward(s,r){if(!s)return!1;const i=this._objects.indexOf(s);if(i!==this._objects.length-1){const n=this.findNewUpperIndex(s,i,r);return ae(this._objects,s),this._objects.splice(n,0,s),this._onStackOrderChanged(s),!0}return!1}moveObjectTo(s,r){return s!==this._objects[r]&&(ae(this._objects,s),this._objects.splice(r,0,s),this._onStackOrderChanged(s),!0)}findNewLowerIndex(s,r,i){let n;if(i){n=r;for(let o=r-1;o>=0;--o)if(s.isOverlapping(this._objects[o])){n=o;break}}else n=r-1;return n}findNewUpperIndex(s,r,i){let n;if(i){n=r;for(let o=r+1;o<this._objects.length;++o)if(s.isOverlapping(this._objects[o])){n=o;break}}else n=r+1;return n}collectObjects(s){let{left:r,top:i,width:n,height:o}=s,{includeIntersecting:h=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const l=[],c=new x(r,i),u=c.add(new x(n,o));for(let d=this._objects.length-1;d>=0;d--){const g=this._objects[d];g.selectable&&g.visible&&(h&&g.intersectsWithRect(c,u)||g.isContainedWithinRect(c,u)||h&&g.containsPoint(c)||h&&g.containsPoint(u))&&l.push(g)}return l}}return t}class Mi extends Wn{_setOptions(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};for(const e in t)this.set(e,t[e])}_setObject(t){for(const e in t)this._set(e,t[e])}set(t,e){return typeof t=="object"?this._setObject(t):this._set(t,e),this}_set(t,e){this[t]=e}toggle(t){const e=this.get(t);return typeof e=="boolean"&&this.set(t,!e),this}get(t){return this[t]}}function ps(a){return js().requestAnimationFrame(a)}function Xn(a){return js().cancelAnimationFrame(a)}let Yn=0;const Jt=()=>Yn++,Wt=()=>{const a=pe().createElement("canvas");if(!a||a.getContext===void 0)throw new kt("Failed to create `canvas` element");return a},Vn=()=>pe().createElement("img"),pt=a=>{const t=Wt();return t.width=a.width,t.height=a.height,t},Ei=(a,t,e)=>a.toDataURL("image/".concat(t),e),ji=(a,t,e)=>new Promise((s,r)=>{a.toBlob(s,"image/".concat(t),e)}),K=a=>a*vr,Xt=a=>a/vr,zn=a=>a.every((t,e)=>t===rt[e]),it=(a,t,e)=>new x(a).transform(t,e),bt=a=>{const t=1/(a[0]*a[3]-a[1]*a[2]),e=[t*a[3],-t*a[1],-t*a[2],t*a[0],0,0],{x:s,y:r}=new x(a[4],a[5]).transform(e,!0);return e[4]=-s,e[5]=-r,e},Q=(a,t,e)=>[a[0]*t[0]+a[2]*t[1],a[1]*t[0]+a[3]*t[1],a[0]*t[2]+a[2]*t[3],a[1]*t[2]+a[3]*t[3],e?0:a[0]*t[4]+a[2]*t[5]+a[4],e?0:a[1]*t[4]+a[3]*t[5]+a[5]],Cr=(a,t)=>a.reduceRight((e,s)=>s&&e?Q(s,e,t):s||e,void 0)||rt.concat(),Pi=a=>{let[t,e]=a;return Math.atan2(e,t)},Cs=a=>{const t=Pi(a),e=Math.pow(a[0],2)+Math.pow(a[1],2),s=Math.sqrt(e),r=(a[0]*a[3]-a[2]*a[1])/s,i=Math.atan2(a[0]*a[2]+a[1]*a[3],e);return{angle:Xt(t),scaleX:s,scaleY:r,skewX:Xt(i),skewY:0,translateX:a[4]||0,translateY:a[5]||0}},Ie=function(a){return[1,0,0,1,a,arguments.length>1&&arguments[1]!==void 0?arguments[1]:0]};function xe(){let{angle:a=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{x:t=0,y:e=0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const s=K(a),r=Bt(s),i=It(s);return[r,i,-i,r,t?t-(r*t-i*e):0,e?e-(i*t+r*e):0]}const Sr=function(a){return[a,0,0,arguments.length>1&&arguments[1]!==void 0?arguments[1]:a,0,0]},Ai=a=>Math.tan(K(a)),Fi=a=>[1,0,Ai(a),1,0,0],Li=a=>[1,Ai(a),0,1,0,0],Fs=a=>{let{scaleX:t=1,scaleY:e=1,flipX:s=!1,flipY:r=!1,skewX:i=0,skewY:n=0}=a,o=Sr(s?-t:t,r?-e:e);return i&&(o=Q(o,Fi(i),!0)),n&&(o=Q(o,Li(n),!0)),o},Nn=a=>{const{translateX:t=0,translateY:e=0,angle:s=0}=a;let r=Ie(t,e);s&&(r=Q(r,xe({angle:s})));const i=Fs(a);return zn(i)||(r=Q(r,i)),r},ms=function(a){let{signal:t,crossOrigin:e=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise(function(s,r){if(t&&t.aborted)return r(new An("loadImage"));const i=Vn();let n;t&&(n=function(h){i.src="",r(h)},t.addEventListener("abort",n,{once:!0}));const o=function(){i.onload=i.onerror=null,n&&(t==null||t.removeEventListener("abort",n)),s(i)};a?(i.onload=o,i.onerror=function(){n&&(t==null||t.removeEventListener("abort",n)),r(new kt("Error loading ".concat(i.src)))},e&&(i.crossOrigin=e),i.src=a):o()})},Pe=function(a){let{signal:t,reviver:e=gs}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((s,r)=>{const i=[];t&&t.addEventListener("abort",r,{once:!0}),Promise.all(a.map(n=>D.getClass(n.type).fromObject(n,{signal:t}).then(o=>(e(n,o),i.push(o),o)))).then(s).catch(n=>{i.forEach(o=>{o.dispose&&o.dispose()}),r(n)}).finally(()=>{t&&t.removeEventListener("abort",r)})})},Ls=function(a){let{signal:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((e,s)=>{const r=[];t&&t.addEventListener("abort",s,{once:!0});const i=Object.values(a).map(o=>o&&o.type&&D.has(o.type)?Pe([o],{signal:t}).then(h=>{let[l]=h;return r.push(l),l}):o),n=Object.keys(a);Promise.all(i).then(o=>o.reduce((h,l,c)=>(h[n[c]]=l,h),{})).then(e).catch(o=>{r.forEach(h=>{h.dispose&&h.dispose()}),s(o)}).finally(()=>{t&&t.removeEventListener("abort",s)})})},ye=function(a){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:[]).reduce((t,e)=>(e in a&&(t[e]=a[e]),t),{})},wr=(a,t)=>Object.keys(a).reduce((e,s)=>(t(a[s],s,a)&&(e[s]=a[s]),e),{}),N=(a,t)=>parseFloat(Number(a).toFixed(t)),Ae=a=>"matrix("+a.map(t=>N(t,B.NUM_FRACTION_DIGITS)).join(" ")+")",gt=a=>!!a&&a.toLive!==void 0,Wr=a=>!!a&&typeof a.toObject=="function",Xr=a=>!!a&&a.offsetX!==void 0&&"source"in a,Qt=a=>!!a&&"multiSelectionStacking"in a;function Ri(a){const t=a&&_t(a);let e=0,s=0;if(!a||!t)return{left:e,top:s};let r=a;const i=t.documentElement,n=t.body||{scrollLeft:0,scrollTop:0};for(;r&&(r.parentNode||r.host)&&(r=r.parentNode||r.host,r===t?(e=n.scrollLeft||i.scrollLeft||0,s=n.scrollTop||i.scrollTop||0):(e+=r.scrollLeft||0,s+=r.scrollTop||0),r.nodeType!==1||r.style.position!=="fixed"););return{left:e,top:s}}const _t=a=>a.ownerDocument||null,Bi=a=>{var t;return((t=a.ownerDocument)===null||t===void 0?void 0:t.defaultView)||null},Ii=function(a,t,e){let{width:s,height:r}=e,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;a.width=s,a.height=r,i>1&&(a.setAttribute("width",(s*i).toString()),a.setAttribute("height",(r*i).toString()),t.scale(i,i))},or=(a,t)=>{let{width:e,height:s}=t;e&&(a.style.width=typeof e=="number"?"".concat(e,"px"):e),s&&(a.style.height=typeof s=="number"?"".concat(s,"px"):s)};function Yr(a){return a.onselectstart!==void 0&&(a.onselectstart=()=>!1),a.style.userSelect=at,a}class Wi{constructor(t){p(this,"_originalCanvasStyle",void 0),p(this,"lower",void 0);const e=this.createLowerCanvas(t);this.lower={el:e,ctx:e.getContext("2d")}}createLowerCanvas(t){const e=(s=t)&&s.getContext!==void 0?t:t&&pe().getElementById(t)||Wt();var s;if(e.hasAttribute("data-fabric"))throw new kt("Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?");return this._originalCanvasStyle=e.style.cssText,e.setAttribute("data-fabric","main"),e.classList.add("lower-canvas"),e}cleanupDOM(t){let{width:e,height:s}=t;const{el:r}=this.lower;r.classList.remove("lower-canvas"),r.removeAttribute("data-fabric"),r.setAttribute("width","".concat(e)),r.setAttribute("height","".concat(s)),r.style.cssText=this._originalCanvasStyle||"",this._originalCanvasStyle=void 0}setDimensions(t,e){const{el:s,ctx:r}=this.lower;Ii(s,r,t,e)}setCSSDimensions(t){or(this.lower.el,t)}calcOffset(){return function(t){var e;const s=t&&_t(t),r={left:0,top:0};if(!s)return r;const i=((e=Bi(t))===null||e===void 0?void 0:e.getComputedStyle(t,null))||{};r.left+=parseInt(i.borderLeftWidth,10)||0,r.top+=parseInt(i.borderTopWidth,10)||0,r.left+=parseInt(i.paddingLeft,10)||0,r.top+=parseInt(i.paddingTop,10)||0;let n={left:0,top:0};const o=s.documentElement;t.getBoundingClientRect!==void 0&&(n=t.getBoundingClientRect());const h=Ri(t);return{left:n.left+h.left-(o.clientLeft||0)+r.left,top:n.top+h.top-(o.clientTop||0)+r.top}}(this.lower.el)}dispose(){Mt().dispose(this.lower.el),delete this.lower}}const Gn={backgroundVpt:!0,backgroundColor:"",overlayVpt:!0,overlayColor:"",includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...rt]},Hn=["objects"];class We extends Di(Mi){get lowerCanvasEl(){var t;return(t=this.elements.lower)===null||t===void 0?void 0:t.el}get contextContainer(){var t;return(t=this.elements.lower)===null||t===void 0?void 0:t.ctx}static getDefaults(){return We.ownDefaults}constructor(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(e),this.initElements(t),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(t){this.elements=new Wi(t)}add(){const t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),r=1;r<e;r++)s[r-1]=arguments[r];const i=super.insertAt(t,...s);return s.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),i}remove(){const t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(Kt("warn",`Canvas is trying to add an object that belongs to a different canvas.
3
3
  Resulting to default behavior: removing object from previous canvas and adding to new canvas`),t.canvas.remove(t)),t._set("canvas",this),t.setCoords(),this.fire("object:added",{target:t}),t.fire("added",{target:this})}_onObjectRemoved(t){t._set("canvas",void 0),this.fire("object:removed",{target:t}),t.fire("removed",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?wi():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}setWidth(t,e){return this.setDimensions({width:t},e)}setHeight(t,e){return this.setDimensions({height:t},e)}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:s=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!e){const r=m({width:this.width,height:this.height},t);this.elements.setDimensions(r,this.getRetinaScaling()),this.hasLostContext=!0,this.width=r.width,this.height=r.height}s||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){const s=t,r=[...this.viewportTransform],i=it(t,bt(r));r[0]=e,r[3]=e;const n=it(i,r);r[4]+=s.x-n.x,r[5]+=s.y-n.y,this.setViewportTransform(r)}setZoom(t){this.zoomToPoint(new x(0,0),t)}absolutePan(t){const e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new x(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor="",this.overlayColor="",this.clearContext(this.getContext()),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=ps(()=>this.renderAndReset()))}calcViewportBoundaries(){const t=this.width,e=this.height,s=bt(this.viewportTransform),r=it({x:0,y:0},s),i=it({x:t,y:e},s),n=r.min(i),o=r.max(i);return this.vptCoords={tl:n,tr:new x(o.x,n.y),bl:new x(n.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(Xn(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;const s=this.viewportTransform,r=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality="best",this.fire("before:render",{ctx:t}),this._renderBackground(t),t.save(),t.transform(s[0],s[1],s[2],s[3],s[4],s[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),r&&(r._set("canvas",this),r.shouldCache(),r._transformDone=!0,r.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,r)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire("after:render",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){const s=this.viewportTransform;t.save(),t.transform(...s),t.globalCompositeOperation="destination-in",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let s=0,r=e.length;s<r;++s)e[s]&&e[s].render(t)}_renderBackgroundOrOverlay(t,e){const s=this["".concat(e,"Color")],r=this["".concat(e,"Image")],i=this.viewportTransform,n=this["".concat(e,"Vpt")];if(!s&&!r)return;const o=gt(s);if(s){if(t.save(),t.beginPath(),t.moveTo(0,0),t.lineTo(this.width,0),t.lineTo(this.width,this.height),t.lineTo(0,this.height),t.closePath(),t.fillStyle=o?s.toLive(t):s,n&&t.transform(...i),o){t.transform(1,0,0,1,s.offsetX||0,s.offsetY||0);const h=s.gradientTransform||s.patternTransform;h&&t.transform(...h)}t.fill(),t.restore()}if(r){t.save();const{skipOffscreen:h}=this;this.skipOffscreen=n,n&&t.transform(...i),r.render(t),this.skipOffscreen=h,t.restore()}}_renderBackground(t){this._renderBackgroundOrOverlay(t,"background")}_renderOverlay(t){this._renderBackgroundOrOverlay(t,"overlay")}getCenter(){return{top:this.height/2,left:this.width/2}}getCenterPoint(){return new x(this.width/2,this.height/2)}centerObjectH(t){return this._centerObject(t,new x(this.getCenterPoint().x,t.getCenterPoint().y))}centerObjectV(t){return this._centerObject(t,new x(t.getCenterPoint().x,this.getCenterPoint().y))}centerObject(t){return this._centerObject(t,this.getCenterPoint())}viewportCenterObject(t){return this._centerObject(t,this.getVpCenter())}viewportCenterObjectH(t){return this._centerObject(t,new x(this.getVpCenter().x,t.getCenterPoint().y))}viewportCenterObjectV(t){return this._centerObject(t,new x(t.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return it(this.getCenterPoint(),bt(this.viewportTransform))}_centerObject(t,e){t.setXY(e,F,F),t.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(t){return this.toDatalessObject(t)}toObject(t){return this._toObjectMethod("toObject",t)}toJSON(){return this.toObject()}toDatalessObject(t){return this._toObjectMethod("toDatalessObject",t)}_toObjectMethod(t,e){const s=this.clipPath,r=s&&!s.excludeFromExport?this._toObject(s,t,e):null;return m(m(m({version:ir},ye(this,e)),{},{objects:this._objects.filter(i=>!i.excludeFromExport).map(i=>this._toObject(i,t,e))},this.__serializeBgOverlay(t,e)),r?{clipPath:r}:null)}_toObject(t,e,s){let r;this.includeDefaultValues||(r=t.includeDefaultValues,t.includeDefaultValues=!1);const i=t[e](s);return this.includeDefaultValues||(t.includeDefaultValues=!!r),i}__serializeBgOverlay(t,e){const s={},r=this.backgroundImage,i=this.overlayImage,n=this.backgroundColor,o=this.overlayColor;return gt(n)?n.excludeFromExport||(s.background=n.toObject(e)):n&&(s.background=n),gt(o)?o.excludeFromExport||(s.overlay=o.toObject(e)):o&&(s.overlay=o),r&&!r.excludeFromExport&&(s.backgroundImage=this._toObject(r,t,e)),i&&!i.excludeFromExport&&(s.overlayImage=this._toObject(i,t,e)),s}toSVG(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;const s=[];return this._setSVGPreamble(s,t),this._setSVGHeader(s,t),this.clipPath&&s.push('<g clip-path="url(#'.concat(this.clipPath.clipPathId,`)" >
4
4
  `)),this._setSVGBgOverlayColor(s,"background"),this._setSVGBgOverlayImage(s,"backgroundImage",e),this._setSVGObjects(s,e),this.clipPath&&s.push(`</g>
@@ -507,4 +507,4 @@ void main() {
507
507
  ${e==="transparent"?"ring-2 ring-bv-teal ring-offset-1":""}`,style:{background:"repeating-conic-gradient(#ddd 0% 25%, white 0% 50%) 50%/8px 8px"},onClick:()=>{s("transparent"),f(!1)}}),P.jsx("span",{className:"text-[9px] text-bv-muted",children:"None"})]})]})]}),P.jsxs("div",{ref:C,className:"relative",children:[P.jsx("button",{title:"Stroke color",className:"w-7 h-[26px] rounded border border-transparent flex flex-col items-center justify-center gap-0.5 cursor-pointer transition-all hover:bg-bv-surface hover:border-bv-border",onClick:()=>{y(!v),f(!1)},children:P.jsxs("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"currentColor",className:"text-bv-text-mid",children:[P.jsx("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z"}),P.jsx("rect",{x:"0",y:"21",width:"24",height:"3",style:{fill:r}})]})}),v&&P.jsxs("div",{className:"absolute top-full left-0 mt-1 z-50 bg-bv-bg border border-bv-border rounded-lg shadow-lg p-2 w-[164px]",children:[P.jsx("div",{className:"text-[9px] font-semibold uppercase tracking-wider text-bv-muted mb-1.5",children:"Stroke Color"}),P.jsx("div",{className:"grid grid-cols-6 gap-1",children:Si.map(S=>P.jsx("button",{className:`w-[22px] h-[22px] rounded cursor-pointer transition-all hover:scale-110
508
508
  ${r===S?"ring-2 ring-bv-teal ring-offset-1":"border border-black/10"}`,style:{background:S},onClick:()=>{i(S),y(!1)}},S))})]})]}),P.jsx("div",{className:"w-px h-[18px] bg-bv-border mx-1"}),P.jsx("button",{title:"Undo",onClick:h,disabled:!n,className:`w-7 h-[26px] rounded border border-transparent flex items-center justify-center text-[13px] cursor-pointer transition-all
509
509
  ${n?"text-bv-text-mid hover:bg-bv-surface hover:border-bv-border hover:text-bv-text":"opacity-35 cursor-default"}`,children:"↶"}),P.jsx("button",{title:"Redo",onClick:l,disabled:!o,className:`w-7 h-[26px] rounded border border-transparent flex items-center justify-center text-[13px] cursor-pointer transition-all
510
- ${o?"text-bv-text-mid hover:bg-bv-surface hover:border-bv-border hover:text-bv-text":"opacity-35 cursor-default"}`,children:"↷"}),P.jsx("button",{title:"Clear canvas",onClick:c,className:"w-7 h-[26px] rounded border border-transparent flex items-center justify-center text-[13px] cursor-pointer text-bv-text-mid hover:bg-bv-surface hover:border-bv-border hover:text-bv-text transition-all",children:P.jsx(Oh,{})}),d&&P.jsx("button",{onClick:d,className:"ml-auto px-2.5 py-0.5 rounded border border-bv-border bg-bv-bg text-bv-muted text-[10px] font-medium cursor-pointer hover:bg-bv-orange/10 hover:border-bv-orange hover:text-bv-orange transition-all",children:"✕ Cancel"}),u&&P.jsx("button",{onClick:u,className:"px-2.5 py-0.5 rounded border border-bv-teal bg-bv-teal text-white text-[10px] font-medium cursor-pointer hover:bg-bv-teal/80 transition-all",children:"✓ Add to Drafts"})]})}function Mh({onSubmit:a,onClose:t,backgroundImage:e}){const{canvasElRef:s,containerRef:r,lockedHeight:i,activeTool:n,setActiveTool:o,fillColor:h,setFillColor:l,strokeColor:c,setStrokeColor:u,canUndo:d,canRedo:g,handleUndo:f,handleRedo:v,handleClear:y,handleSubmit:_}=Sh({onSubmit:a,backgroundImage:e});return P.jsxs("div",{className:"flex flex-col h-full","data-testid":"design-canvas",children:[P.jsx(Dh,{activeTool:n,onToolChange:o,fillColor:h,onFillChange:l,strokeColor:c,onStrokeChange:u,canUndo:d,canRedo:g,onUndo:f,onRedo:v,onClear:y,onSubmit:_,onClose:t}),P.jsx("div",{ref:r,className:"bg-white cursor-crosshair overflow-hidden relative",style:i!==null?{height:i}:{flex:1},children:P.jsx("canvas",{ref:s})})]})}function jh(){const[a,t]=X.useState(null);X.useEffect(()=>{jn(()=>{Ns({type:"REGISTER",role:"design"})}),Pn(r=>{r.type==="ELEMENT_CONTEXT"&&t({componentName:r.componentName,instanceCount:r.instanceCount,target:r.target,context:r.context,insertMode:r.insertMode??"after",screenshot:r.screenshot})}),En()},[]);const e=(r,i,n)=>{Ns({type:"DESIGN_SUBMIT",image:r,componentName:(a==null?void 0:a.componentName)??"",target:(a==null?void 0:a.target)??{tag:"",classes:"",innerText:""},context:(a==null?void 0:a.context)??"",insertMode:(a==null?void 0:a.insertMode)??"after",canvasWidth:i,canvasHeight:n})},s=()=>{Ns({type:"DESIGN_CLOSE"})};return P.jsx("div",{className:"h-screen w-screen flex flex-col",children:P.jsx("div",{className:"flex-1 overflow-hidden",children:P.jsx(Mh,{onSubmit:e,onClose:s,backgroundImage:a==null?void 0:a.screenshot})})})}export{jh as DesignMode};
510
+ ${o?"text-bv-text-mid hover:bg-bv-surface hover:border-bv-border hover:text-bv-text":"opacity-35 cursor-default"}`,children:"↷"}),P.jsx("button",{title:"Clear canvas",onClick:c,className:"w-7 h-[26px] rounded border border-transparent flex items-center justify-center text-[13px] cursor-pointer text-bv-text-mid hover:bg-bv-surface hover:border-bv-border hover:text-bv-text transition-all",children:P.jsx(Oh,{})}),d&&P.jsx("button",{onClick:d,className:"ml-auto px-2.5 py-0.5 rounded border border-bv-border bg-bv-bg text-bv-muted text-[10px] font-medium cursor-pointer hover:bg-bv-orange/10 hover:border-bv-orange hover:text-bv-orange transition-all",children:"✕ Close"}),u&&P.jsx("button",{onClick:u,className:"px-2.5 py-0.5 rounded border border-bv-teal bg-bv-teal text-white text-[10px] font-medium cursor-pointer hover:bg-bv-teal/80 transition-all",children:"✓ Add to Drafts"})]})}function Mh({onSubmit:a,onClose:t,backgroundImage:e}){const{canvasElRef:s,containerRef:r,lockedHeight:i,activeTool:n,setActiveTool:o,fillColor:h,setFillColor:l,strokeColor:c,setStrokeColor:u,canUndo:d,canRedo:g,handleUndo:f,handleRedo:v,handleClear:y,handleSubmit:_}=Sh({onSubmit:a,backgroundImage:e});return P.jsxs("div",{className:"flex flex-col h-full","data-testid":"design-canvas",children:[P.jsx(Dh,{activeTool:n,onToolChange:o,fillColor:h,onFillChange:l,strokeColor:c,onStrokeChange:u,canUndo:d,canRedo:g,onUndo:f,onRedo:v,onClear:y,onSubmit:_,onClose:t}),P.jsx("div",{ref:r,className:"bg-white cursor-crosshair overflow-hidden relative",style:i!==null?{height:i}:{flex:1},children:P.jsx("canvas",{ref:s})})]})}function jh(){const[a,t]=X.useState(null);X.useEffect(()=>{jn(()=>{Ns({type:"REGISTER",role:"design"})}),Pn(r=>{r.type==="ELEMENT_CONTEXT"&&t({componentName:r.componentName,instanceCount:r.instanceCount,target:r.target,context:r.context,insertMode:r.insertMode??"after",screenshot:r.screenshot})}),En()},[]);const e=(r,i,n)=>{Ns({type:"DESIGN_SUBMIT",image:r,componentName:(a==null?void 0:a.componentName)??"",target:(a==null?void 0:a.target)??{tag:"",classes:"",innerText:""},context:(a==null?void 0:a.context)??"",insertMode:(a==null?void 0:a.insertMode)??"after",canvasWidth:i,canvasHeight:n})},s=()=>{Ns({type:"DESIGN_CLOSE"})};return P.jsx("div",{className:"h-screen w-screen flex flex-col",children:P.jsx("div",{className:"flex-1 overflow-hidden",children:P.jsx(Mh,{onSubmit:e,onClose:s,backgroundImage:a==null?void 0:a.screenshot})})})}export{jh as DesignMode};