@snowcone-app/canvas 0.1.9 → 0.1.10

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.
Files changed (38) hide show
  1. package/dist/{CanvasStateV1-D5GzvmnY.cjs → CanvasStateV1-BmE5V6me.cjs} +2 -2
  2. package/dist/{CanvasStateV1-D5GzvmnY.cjs.map → CanvasStateV1-BmE5V6me.cjs.map} +1 -1
  3. package/dist/{CanvasStateV1-ejb4d_LM.js → CanvasStateV1-CD3Q94F4.js} +2 -2
  4. package/dist/{CanvasStateV1-ejb4d_LM.js.map → CanvasStateV1-CD3Q94F4.js.map} +1 -1
  5. package/dist/{ElementFactory-uJTXU-nP.js → ElementFactory-Ckv6sSev.js} +698 -696
  6. package/dist/ElementFactory-Ckv6sSev.js.map +1 -0
  7. package/dist/{ElementFactory-B7UOaJSD.cjs → ElementFactory-DEjwp-Wg.cjs} +5 -5
  8. package/dist/ElementFactory-DEjwp-Wg.cjs.map +1 -0
  9. package/dist/{ImportManager-CxiaRg1N.js → ImportManager-64OYjELO.js} +2 -2
  10. package/dist/{ImportManager-CxiaRg1N.js.map → ImportManager-64OYjELO.js.map} +1 -1
  11. package/dist/{ImportManager-BYwuK6n4.cjs → ImportManager-wSzrR-5a.cjs} +2 -2
  12. package/dist/{ImportManager-BYwuK6n4.cjs.map → ImportManager-wSzrR-5a.cjs.map} +1 -1
  13. package/dist/advanced.js +14 -14
  14. package/dist/advanced.js.map +1 -1
  15. package/dist/advanced.mjs +1847 -1854
  16. package/dist/advanced.mjs.map +1 -1
  17. package/dist/{compose-Bo108juW.cjs → compose-DHBRwi_A.cjs} +5 -5
  18. package/dist/compose-DHBRwi_A.cjs.map +1 -0
  19. package/dist/{compose-DQ1FZS3O.js → compose-DIPiisIw.js} +355 -355
  20. package/dist/compose-DIPiisIw.js.map +1 -0
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +44 -45
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/internals.js +1 -1
  26. package/dist/internals.mjs +3 -3
  27. package/package.json +2 -2
  28. package/dist/ElementFactory-B7UOaJSD.cjs.map +0 -1
  29. package/dist/ElementFactory-uJTXU-nP.js.map +0 -1
  30. package/dist/components/stories/utils/MockEditorProvider.d.ts +0 -32
  31. package/dist/components/stories/utils/QACanvasCard.d.ts +0 -41
  32. package/dist/components/stories/utils/VisualQACard.d.ts +0 -24
  33. package/dist/components/stories/utils/element-factories.d.ts +0 -188
  34. package/dist/components/stories/utils/spec-to-elements.d.ts +0 -74
  35. package/dist/components/stories/utils/themeDecorator.d.ts +0 -45
  36. package/dist/components/stories/utils/unified-test-cases.d.ts +0 -27
  37. package/dist/compose-Bo108juW.cjs.map +0 -1
  38. package/dist/compose-DQ1FZS3O.js.map +0 -1
package/dist/advanced.js CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("./compose-Bo108juW.cjs"),t=require("react/jsx-runtime"),i=require("react"),$t=require("react-dom"),c=require("@snowcone-app/ui"),ml=require("clsx"),gl=require("tailwind-merge"),je=require("./ThemeContext-4mJ_y0Me.cjs"),$=require("./HybridHistoryManager-BXD93pp8.cjs"),ye=require("./ElementFactory-B7UOaJSD.cjs"),xl=require("@runware/sdk-js"),Ln=require("./ImportManager-BYwuK6n4.cjs"),pn=new Map;function Ee(e,n){pn.set(e,n)}function bl(e){return pn.get(e)}function yl(){return Array.from(pn.keys())}function vl(){return Array.from(pn.entries())}function jl(e){pn.delete(e)}let Pn=!1;async function Cl(){if(Pn)return;Pn=!0;const[{LayersPanel:e},{EffectsPanel:n},{ExportPanel:r},{ImagePanel:s},{GlyphPanel:a},{ArtboardTabs:o},{ContextualToolbars:l},{ZoomControls:d},{MenuButton:u},{CropPanel:h}]=await Promise.all([Promise.resolve().then(()=>jd),Promise.resolve().then(()=>hu),Promise.resolve().then(()=>fu),Promise.resolve().then(()=>Eu),Promise.resolve().then(()=>Du),Promise.resolve().then(()=>Au),Promise.resolve().then(()=>Fh),Promise.resolve().then(()=>Uh),Promise.resolve().then(()=>Bh),Promise.resolve().then(()=>eh)]);Ee("layers-panel",{component:e,label:"Layers",icon:"gravity-ui:layers",position:"left"}),Ee("effects-panel",{component:n,label:"Effects",icon:"gravity-ui:sparkles",position:"right"}),Ee("export-panel",{component:r,label:"Export",icon:"gravity-ui:arrow-down-to-square",position:"right"}),Ee("images-panel",{component:s,label:"Images",icon:"gravity-ui:picture",position:"right"}),Ee("glyph-panel",{component:a,label:"Glyphs",icon:"gravity-ui:text",position:"right"}),Ee("artboard-tabs",{component:o,label:"Artboards",icon:"gravity-ui:copy",position:"topbar"}),Ee("contextual-toolbar",{component:l,label:"Contextual Toolbar",position:"topbar"}),Ee("zoom-controls",{component:d,label:"Zoom",icon:"gravity-ui:magnifier",position:"bottombar"}),Ee("menu-button",{component:u,label:"Menu",icon:"gravity-ui:bars",position:"topbar"}),Ee("crop-panel",{component:h,label:"Crop",icon:"gravity-ui:scissors",position:"right"})}function wl(e){Pn||(Pn=!0,Ee("layers-panel",{component:e.LayersPanel,label:"Layers",icon:"gravity-ui:layers",position:"left"}),Ee("effects-panel",{component:e.EffectsPanel,label:"Effects",icon:"gravity-ui:sparkles",position:"right"}),Ee("export-panel",{component:e.ExportPanel,label:"Export",icon:"gravity-ui:arrow-down-to-square",position:"right"}),Ee("images-panel",{component:e.ImagePanel,label:"Images",icon:"gravity-ui:picture",position:"right"}),Ee("glyph-panel",{component:e.GlyphPanel,label:"Glyphs",icon:"gravity-ui:text",position:"right"}),Ee("artboard-tabs",{component:e.ArtboardTabs,label:"Artboards",icon:"gravity-ui:copy",position:"topbar"}),Ee("contextual-toolbar",{component:e.ContextualToolbars,label:"Contextual Toolbar",position:"topbar"}),Ee("zoom-controls",{component:e.ZoomControls,label:"Zoom",icon:"gravity-ui:magnifier",position:"bottombar"}),Ee("menu-button",{component:e.MenuButton,label:"Menu",icon:"gravity-ui:bars",position:"topbar"}),Ee("crop-panel",{component:e.CropPanel,label:"Crop",icon:"gravity-ui:scissors",position:"right"}))}function Sl(e){const n={name:e.name,capabilities:{elements:[...e.capabilities.elements],transforms:[...e.capabilities.transforms],effects:[...e.capabilities.effects],panels:[...e.capabilities.panels],tools:[...e.capabilities.tools],features:{...e.capabilities.features}},behavior:{...e.behavior},layout:{slots:{...e.layout.slots.topbar&&{topbar:[...e.layout.slots.topbar]},...e.layout.slots.left&&{left:[...e.layout.slots.left]},...e.layout.slots.canvas&&{canvas:[...e.layout.slots.canvas]},...e.layout.slots.right&&{right:[...e.layout.slots.right]},...e.layout.slots.bottombar&&{bottombar:[...e.layout.slots.bottombar]}}},style:{...e.style}};return e.content&&(n.content={...e.content}),n}function Tl(e){if(!e.name||e.name.trim()==="")throw new Error("[loadKitFromJSON] Kit name is required");const n={};e.capabilities&&(n.capabilities=e.capabilities),e.behavior&&(n.behavior=e.behavior),e.layout&&(n.layout=e.layout),e.style&&(n.style=e.style),e.content&&(n.content=e.content);let r;if(e.extends){const a=L.resolveKit(e.extends);r=L.extendKit(a,{name:e.name,...n})}else r=L.createKit({name:e.name,...n});const s=L.validateKit(r);if(s.warnings.length>0)for(const a of s.warnings)console.warn(`[loadKitFromJSON] Warning: ${a}`);if(!s.valid)throw new Error(`[loadKitFromJSON] Kit "${e.name}" failed validation:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("./compose-DHBRwi_A.cjs"),t=require("react/jsx-runtime"),i=require("react"),$t=require("react-dom"),c=require("@snowcone-app/ui"),ml=require("clsx"),gl=require("tailwind-merge"),je=require("./ThemeContext-4mJ_y0Me.cjs"),U=require("./HybridHistoryManager-BXD93pp8.cjs"),ye=require("./ElementFactory-DEjwp-Wg.cjs"),xl=require("@runware/sdk-js"),Ln=require("./ImportManager-wSzrR-5a.cjs"),pn=new Map;function Ee(e,n){pn.set(e,n)}function bl(e){return pn.get(e)}function yl(){return Array.from(pn.keys())}function vl(){return Array.from(pn.entries())}function jl(e){pn.delete(e)}let Pn=!1;async function Cl(){if(Pn)return;Pn=!0;const[{LayersPanel:e},{EffectsPanel:n},{ExportPanel:r},{ImagePanel:s},{GlyphPanel:a},{ArtboardTabs:o},{ContextualToolbars:l},{ZoomControls:d},{MenuButton:u},{CropPanel:h}]=await Promise.all([Promise.resolve().then(()=>jd),Promise.resolve().then(()=>hu),Promise.resolve().then(()=>fu),Promise.resolve().then(()=>Eu),Promise.resolve().then(()=>Du),Promise.resolve().then(()=>Au),Promise.resolve().then(()=>Fh),Promise.resolve().then(()=>Uh),Promise.resolve().then(()=>Bh),Promise.resolve().then(()=>eh)]);Ee("layers-panel",{component:e,label:"Layers",icon:"gravity-ui:layers",position:"left"}),Ee("effects-panel",{component:n,label:"Effects",icon:"gravity-ui:sparkles",position:"right"}),Ee("export-panel",{component:r,label:"Export",icon:"gravity-ui:arrow-down-to-square",position:"right"}),Ee("images-panel",{component:s,label:"Images",icon:"gravity-ui:picture",position:"right"}),Ee("glyph-panel",{component:a,label:"Glyphs",icon:"gravity-ui:text",position:"right"}),Ee("artboard-tabs",{component:o,label:"Artboards",icon:"gravity-ui:copy",position:"topbar"}),Ee("contextual-toolbar",{component:l,label:"Contextual Toolbar",position:"topbar"}),Ee("zoom-controls",{component:d,label:"Zoom",icon:"gravity-ui:magnifier",position:"bottombar"}),Ee("menu-button",{component:u,label:"Menu",icon:"gravity-ui:bars",position:"topbar"}),Ee("crop-panel",{component:h,label:"Crop",icon:"gravity-ui:scissors",position:"right"})}function wl(e){Pn||(Pn=!0,Ee("layers-panel",{component:e.LayersPanel,label:"Layers",icon:"gravity-ui:layers",position:"left"}),Ee("effects-panel",{component:e.EffectsPanel,label:"Effects",icon:"gravity-ui:sparkles",position:"right"}),Ee("export-panel",{component:e.ExportPanel,label:"Export",icon:"gravity-ui:arrow-down-to-square",position:"right"}),Ee("images-panel",{component:e.ImagePanel,label:"Images",icon:"gravity-ui:picture",position:"right"}),Ee("glyph-panel",{component:e.GlyphPanel,label:"Glyphs",icon:"gravity-ui:text",position:"right"}),Ee("artboard-tabs",{component:e.ArtboardTabs,label:"Artboards",icon:"gravity-ui:copy",position:"topbar"}),Ee("contextual-toolbar",{component:e.ContextualToolbars,label:"Contextual Toolbar",position:"topbar"}),Ee("zoom-controls",{component:e.ZoomControls,label:"Zoom",icon:"gravity-ui:magnifier",position:"bottombar"}),Ee("menu-button",{component:e.MenuButton,label:"Menu",icon:"gravity-ui:bars",position:"topbar"}),Ee("crop-panel",{component:e.CropPanel,label:"Crop",icon:"gravity-ui:scissors",position:"right"}))}function Sl(e){const n={name:e.name,capabilities:{elements:[...e.capabilities.elements],transforms:[...e.capabilities.transforms],effects:[...e.capabilities.effects],panels:[...e.capabilities.panels],tools:[...e.capabilities.tools],features:{...e.capabilities.features}},behavior:{...e.behavior},layout:{slots:{...e.layout.slots.topbar&&{topbar:[...e.layout.slots.topbar]},...e.layout.slots.left&&{left:[...e.layout.slots.left]},...e.layout.slots.canvas&&{canvas:[...e.layout.slots.canvas]},...e.layout.slots.right&&{right:[...e.layout.slots.right]},...e.layout.slots.bottombar&&{bottombar:[...e.layout.slots.bottombar]}}},style:{...e.style}};return e.content&&(n.content={...e.content}),n}function Tl(e){if(!e.name||e.name.trim()==="")throw new Error("[loadKitFromJSON] Kit name is required");const n={};e.capabilities&&(n.capabilities=e.capabilities),e.behavior&&(n.behavior=e.behavior),e.layout&&(n.layout=e.layout),e.style&&(n.style=e.style),e.content&&(n.content=e.content);let r;if(e.extends){const a=F.resolveKit(e.extends);r=F.extendKit(a,{name:e.name,...n})}else r=F.createKit({name:e.name,...n});const s=F.validateKit(r);if(s.warnings.length>0)for(const a of s.warnings)console.warn(`[loadKitFromJSON] Warning: ${a}`);if(!s.valid)throw new Error(`[loadKitFromJSON] Kit "${e.name}" failed validation:
2
2
  ${s.errors.join(`
3
3
  `)}`);return r}const Vn=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Vt(e){const n=Object.prototype.toString.call(e);return n==="[object Window]"||n==="[object global]"}function qr(e){return"nodeType"in e}function Xe(e){var n,r;return e?Vt(e)?e:qr(e)&&(n=(r=e.ownerDocument)==null?void 0:r.defaultView)!=null?n:window:window}function Jr(e){const{Document:n}=Xe(e);return e instanceof n}function mn(e){return Vt(e)?!1:e instanceof Xe(e).HTMLElement}function zo(e){return e instanceof Xe(e).SVGElement}function Yt(e){return e?Vt(e)?e.document:qr(e)?Jr(e)?e:mn(e)||zo(e)?e.ownerDocument:document:document:document}const At=Vn?i.useLayoutEffect:i.useEffect;function Yn(e){const n=i.useRef(e);return At(()=>{n.current=e}),i.useCallback(function(){for(var r=arguments.length,s=new Array(r),a=0;a<r;a++)s[a]=arguments[a];return n.current==null?void 0:n.current(...s)},[])}function kl(){const e=i.useRef(null),n=i.useCallback((s,a)=>{e.current=setInterval(s,a)},[]),r=i.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[n,r]}function ln(e,n){n===void 0&&(n=[e]);const r=i.useRef(e);return At(()=>{r.current!==e&&(r.current=e)},n),r}function gn(e,n){const r=i.useRef();return i.useMemo(()=>{const s=e(r.current);return r.current=s,s},[...n])}function $n(e){const n=Yn(e),r=i.useRef(null),s=i.useCallback(a=>{a!==r.current&&(n==null||n(a,r.current)),r.current=a},[]);return[r,s]}function Bn(e){const n=i.useRef();return i.useEffect(()=>{n.current=e},[e]),n.current}let ur={};function Xn(e,n){return i.useMemo(()=>{if(n)return n;const r=ur[e]==null?0:ur[e]+1;return ur[e]=r,e+"-"+r},[e,n])}function Oo(e){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];return s.reduce((o,l)=>{const d=Object.entries(l);for(const[u,h]of d){const m=o[u];m!=null&&(o[u]=m+e*h)}return o},{...n})}}const Kt=Oo(1),cn=Oo(-1);function Nl(e){return"clientX"in e&&"clientY"in e}function Zr(e){if(!e)return!1;const{KeyboardEvent:n}=Xe(e.target);return n&&e instanceof n}function El(e){if(!e)return!1;const{TouchEvent:n}=Xe(e.target);return n&&e instanceof n}function Un(e){if(El(e)){if(e.touches&&e.touches.length){const{clientX:n,clientY:r}=e.touches[0];return{x:n,y:r}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:n,clientY:r}=e.changedTouches[0];return{x:n,y:r}}}return Nl(e)?{x:e.clientX,y:e.clientY}:null}const dn=Object.freeze({Translate:{toString(e){if(!e)return;const{x:n,y:r}=e;return"translate3d("+(n?Math.round(n):0)+"px, "+(r?Math.round(r):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:n,scaleY:r}=e;return"scaleX("+n+") scaleY("+r+")"}},Transform:{toString(e){if(e)return[dn.Translate.toString(e),dn.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:n,duration:r,easing:s}=e;return n+" "+r+"ms "+s}}}),Zs="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Rl(e){return e.matches(Zs)?e:e.querySelector(Zs)}const Il={display:"none"};function Dl(e){let{id:n,value:r}=e;return i.createElement("div",{id:n,style:Il},r)}function Al(e){let{id:n,announcement:r,ariaLiveType:s="assertive"}=e;const a={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return i.createElement("div",{id:n,style:a,role:"status","aria-live":s,"aria-atomic":!0},r)}function Ml(){const[e,n]=i.useState("");return{announce:i.useCallback(s=>{s!=null&&n(s)},[]),announcement:e}}const _o=i.createContext(null);function Fl(e){const n=i.useContext(_o);i.useEffect(()=>{if(!n)throw new Error("useDndMonitor must be used within a children of <DndContext>");return n(e)},[e,n])}function Ll(){const[e]=i.useState(()=>new Set),n=i.useCallback(s=>(e.add(s),()=>e.delete(s)),[e]);return[i.useCallback(s=>{let{type:a,event:o}=s;e.forEach(l=>{var d;return(d=l[a])==null?void 0:d.call(l,o)})},[e]),n]}const zl={draggable:`
4
4
  To pick up a draggable item, press the space bar.
5
5
  While dragging, use the arrow keys to move the item.
6
6
  Press space again to drop the item in its new position, or press escape to cancel.
7
- `},Ol={onDragStart(e){let{active:n}=e;return"Picked up draggable item "+n.id+"."},onDragOver(e){let{active:n,over:r}=e;return r?"Draggable item "+n.id+" was moved over droppable area "+r.id+".":"Draggable item "+n.id+" is no longer over a droppable area."},onDragEnd(e){let{active:n,over:r}=e;return r?"Draggable item "+n.id+" was dropped over droppable area "+r.id:"Draggable item "+n.id+" was dropped."},onDragCancel(e){let{active:n}=e;return"Dragging was cancelled. Draggable item "+n.id+" was dropped."}};function _l(e){let{announcements:n=Ol,container:r,hiddenTextDescribedById:s,screenReaderInstructions:a=zl}=e;const{announce:o,announcement:l}=Ml(),d=Xn("DndLiveRegion"),[u,h]=i.useState(!1);if(i.useEffect(()=>{h(!0)},[]),Fl(i.useMemo(()=>({onDragStart(f){let{active:g}=f;o(n.onDragStart({active:g}))},onDragMove(f){let{active:g,over:p}=f;n.onDragMove&&o(n.onDragMove({active:g,over:p}))},onDragOver(f){let{active:g,over:p}=f;o(n.onDragOver({active:g,over:p}))},onDragEnd(f){let{active:g,over:p}=f;o(n.onDragEnd({active:g,over:p}))},onDragCancel(f){let{active:g,over:p}=f;o(n.onDragCancel({active:g,over:p}))}}),[o,n])),!u)return null;const m=i.createElement(i.Fragment,null,i.createElement(Dl,{id:s,value:a.draggable}),i.createElement(Al,{id:d,announcement:l}));return r?$t.createPortal(m,r):m}var Fe;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Fe||(Fe={}));function Wn(){}function Qs(e,n){return i.useMemo(()=>({sensor:e,options:n??{}}),[e,n])}function Pl(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return i.useMemo(()=>[...n].filter(s=>s!=null),[...n])}const Et=Object.freeze({x:0,y:0});function Qr(e,n){return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function $l(e,n){const r=Un(e);if(!r)return"0 0";const s={x:(r.x-n.left)/n.width*100,y:(r.y-n.top)/n.height*100};return s.x+"% "+s.y+"%"}function es(e,n){let{data:{value:r}}=e,{data:{value:s}}=n;return r-s}function Bl(e,n){let{data:{value:r}}=e,{data:{value:s}}=n;return s-r}function Mr(e){let{left:n,top:r,height:s,width:a}=e;return[{x:n,y:r},{x:n+a,y:r},{x:n,y:r+s},{x:n+a,y:r+s}]}function Po(e,n){if(!e||e.length===0)return null;const[r]=e;return r[n]}function eo(e,n,r){return n===void 0&&(n=e.left),r===void 0&&(r=e.top),{x:n+e.width*.5,y:r+e.height*.5}}const Ul=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=eo(n,n.left,n.top),o=[];for(const l of s){const{id:d}=l,u=r.get(d);if(u){const h=Qr(eo(u),a);o.push({id:d,data:{droppableContainer:l,value:h}})}}return o.sort(es)},Wl=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=Mr(n),o=[];for(const l of s){const{id:d}=l,u=r.get(d);if(u){const h=Mr(u),m=a.reduce((g,p,b)=>g+Qr(h[b],p),0),f=Number((m/4).toFixed(4));o.push({id:d,data:{droppableContainer:l,value:f}})}}return o.sort(es)};function Hl(e,n){const r=Math.max(n.top,e.top),s=Math.max(n.left,e.left),a=Math.min(n.left+n.width,e.left+e.width),o=Math.min(n.top+n.height,e.top+e.height),l=a-s,d=o-r;if(s<a&&r<o){const u=n.width*n.height,h=e.width*e.height,m=l*d,f=m/(u+h-m);return Number(f.toFixed(4))}return 0}const Gl=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=[];for(const o of s){const{id:l}=o,d=r.get(l);if(d){const u=Hl(d,n);u>0&&a.push({id:l,data:{droppableContainer:o,value:u}})}}return a.sort(Bl)};function Kl(e,n){const{top:r,left:s,bottom:a,right:o}=n;return r<=e.y&&e.y<=a&&s<=e.x&&e.x<=o}const Vl=e=>{let{droppableContainers:n,droppableRects:r,pointerCoordinates:s}=e;if(!s)return[];const a=[];for(const o of n){const{id:l}=o,d=r.get(l);if(d&&Kl(s,d)){const h=Mr(d).reduce((f,g)=>f+Qr(s,g),0),m=Number((h/4).toFixed(4));a.push({id:l,data:{droppableContainer:o,value:m}})}}return a.sort(es)};function Yl(e,n,r){return{...e,scaleX:n&&r?n.width/r.width:1,scaleY:n&&r?n.height/r.height:1}}function $o(e,n){return e&&n?{x:e.left-n.left,y:e.top-n.top}:Et}function Xl(e){return function(r){for(var s=arguments.length,a=new Array(s>1?s-1:0),o=1;o<s;o++)a[o-1]=arguments[o];return a.reduce((l,d)=>({...l,top:l.top+e*d.y,bottom:l.bottom+e*d.y,left:l.left+e*d.x,right:l.right+e*d.x}),{...r})}}const ql=Xl(1);function Bo(e){if(e.startsWith("matrix3d(")){const n=e.slice(9,-1).split(/, /);return{x:+n[12],y:+n[13],scaleX:+n[0],scaleY:+n[5]}}else if(e.startsWith("matrix(")){const n=e.slice(7,-1).split(/, /);return{x:+n[4],y:+n[5],scaleX:+n[0],scaleY:+n[3]}}return null}function Jl(e,n,r){const s=Bo(n);if(!s)return e;const{scaleX:a,scaleY:o,x:l,y:d}=s,u=e.left-l-(1-a)*parseFloat(r),h=e.top-d-(1-o)*parseFloat(r.slice(r.indexOf(" ")+1)),m=a?e.width/a:e.width,f=o?e.height/o:e.height;return{width:m,height:f,top:h,right:u+m,bottom:h+f,left:u}}const Zl={ignoreTransform:!1};function xn(e,n){n===void 0&&(n=Zl);let r=e.getBoundingClientRect();if(n.ignoreTransform){const{transform:h,transformOrigin:m}=Xe(e).getComputedStyle(e);h&&(r=Jl(r,h,m))}const{top:s,left:a,width:o,height:l,bottom:d,right:u}=r;return{top:s,left:a,width:o,height:l,bottom:d,right:u}}function to(e){return xn(e,{ignoreTransform:!0})}function Ql(e){const n=e.innerWidth,r=e.innerHeight;return{top:0,left:0,right:n,bottom:r,width:n,height:r}}function ec(e,n){return n===void 0&&(n=Xe(e).getComputedStyle(e)),n.position==="fixed"}function tc(e,n){n===void 0&&(n=Xe(e).getComputedStyle(e));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(a=>{const o=n[a];return typeof o=="string"?r.test(o):!1})}function qn(e,n){const r=[];function s(a){if(n!=null&&r.length>=n||!a)return r;if(Jr(a)&&a.scrollingElement!=null&&!r.includes(a.scrollingElement))return r.push(a.scrollingElement),r;if(!mn(a)||zo(a)||r.includes(a))return r;const o=Xe(e).getComputedStyle(a);return a!==e&&tc(a,o)&&r.push(a),ec(a,o)?r:s(a.parentNode)}return e?s(e):r}function Uo(e){const[n]=qn(e,1);return n??null}function hr(e){return!Vn||!e?null:Vt(e)?e:qr(e)?Jr(e)||e===Yt(e).scrollingElement?window:mn(e)?e:null:null}function Wo(e){return Vt(e)?e.scrollX:e.scrollLeft}function Ho(e){return Vt(e)?e.scrollY:e.scrollTop}function Fr(e){return{x:Wo(e),y:Ho(e)}}var $e;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})($e||($e={}));function Go(e){return!Vn||!e?!1:e===document.scrollingElement}function Ko(e){const n={x:0,y:0},r=Go(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},s={x:e.scrollWidth-r.width,y:e.scrollHeight-r.height},a=e.scrollTop<=n.y,o=e.scrollLeft<=n.x,l=e.scrollTop>=s.y,d=e.scrollLeft>=s.x;return{isTop:a,isLeft:o,isBottom:l,isRight:d,maxScroll:s,minScroll:n}}const nc={x:.2,y:.2};function rc(e,n,r,s,a){let{top:o,left:l,right:d,bottom:u}=r;s===void 0&&(s=10),a===void 0&&(a=nc);const{isTop:h,isBottom:m,isLeft:f,isRight:g}=Ko(e),p={x:0,y:0},b={x:0,y:0},x={height:n.height*a.y,width:n.width*a.x};return!h&&o<=n.top+x.height?(p.y=$e.Backward,b.y=s*Math.abs((n.top+x.height-o)/x.height)):!m&&u>=n.bottom-x.height&&(p.y=$e.Forward,b.y=s*Math.abs((n.bottom-x.height-u)/x.height)),!g&&d>=n.right-x.width?(p.x=$e.Forward,b.x=s*Math.abs((n.right-x.width-d)/x.width)):!f&&l<=n.left+x.width&&(p.x=$e.Backward,b.x=s*Math.abs((n.left+x.width-l)/x.width)),{direction:p,speed:b}}function sc(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:l}=window;return{top:0,left:0,right:o,bottom:l,width:o,height:l}}const{top:n,left:r,right:s,bottom:a}=e.getBoundingClientRect();return{top:n,left:r,right:s,bottom:a,width:e.clientWidth,height:e.clientHeight}}function Vo(e){return e.reduce((n,r)=>Kt(n,Fr(r)),Et)}function oc(e){return e.reduce((n,r)=>n+Wo(r),0)}function ac(e){return e.reduce((n,r)=>n+Ho(r),0)}function Yo(e,n){if(n===void 0&&(n=xn),!e)return;const{top:r,left:s,bottom:a,right:o}=n(e);Uo(e)&&(a<=0||o<=0||r>=window.innerHeight||s>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const ic=[["x",["left","right"],oc],["y",["top","bottom"],ac]];class ts{constructor(n,r){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const s=qn(r),a=Vo(s);this.rect={...n},this.width=n.width,this.height=n.height;for(const[o,l,d]of ic)for(const u of l)Object.defineProperty(this,u,{get:()=>{const h=d(s),m=a[o]-h;return this.rect[u]+m},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class tn{constructor(n){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(r=>{var s;return(s=this.target)==null?void 0:s.removeEventListener(...r)})},this.target=n}add(n,r,s){var a;(a=this.target)==null||a.addEventListener(n,r,s),this.listeners.push([n,r,s])}}function lc(e){const{EventTarget:n}=Xe(e);return e instanceof n?e:Yt(e)}function fr(e,n){const r=Math.abs(e.x),s=Math.abs(e.y);return typeof n=="number"?Math.sqrt(r**2+s**2)>n:"x"in n&&"y"in n?r>n.x&&s>n.y:"x"in n?r>n.x:"y"in n?s>n.y:!1}var yt;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(yt||(yt={}));function no(e){e.preventDefault()}function cc(e){e.stopPropagation()}var fe;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(fe||(fe={}));const Xo={start:[fe.Space,fe.Enter],cancel:[fe.Esc],end:[fe.Space,fe.Enter,fe.Tab]},dc=(e,n)=>{let{currentCoordinates:r}=n;switch(e.code){case fe.Right:return{...r,x:r.x+25};case fe.Left:return{...r,x:r.x-25};case fe.Down:return{...r,y:r.y+25};case fe.Up:return{...r,y:r.y-25}}};class ns{constructor(n){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=n;const{event:{target:r}}=n;this.props=n,this.listeners=new tn(Yt(r)),this.windowListeners=new tn(Xe(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(yt.Resize,this.handleCancel),this.windowListeners.add(yt.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(yt.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:n,onStart:r}=this.props,s=n.node.current;s&&Yo(s),r(Et)}handleKeyDown(n){if(Zr(n)){const{active:r,context:s,options:a}=this.props,{keyboardCodes:o=Xo,coordinateGetter:l=dc,scrollBehavior:d="smooth"}=a,{code:u}=n;if(o.end.includes(u)){this.handleEnd(n);return}if(o.cancel.includes(u)){this.handleCancel(n);return}const{collisionRect:h}=s.current,m=h?{x:h.left,y:h.top}:Et;this.referenceCoordinates||(this.referenceCoordinates=m);const f=l(n,{active:r,context:s.current,currentCoordinates:m});if(f){const g=cn(f,m),p={x:0,y:0},{scrollableAncestors:b}=s.current;for(const x of b){const S=n.code,{isTop:T,isRight:C,isLeft:w,isBottom:R,maxScroll:k,minScroll:v}=Ko(x),z=sc(x),D={x:Math.min(S===fe.Right?z.right-z.width/2:z.right,Math.max(S===fe.Right?z.left:z.left+z.width/2,f.x)),y:Math.min(S===fe.Down?z.bottom-z.height/2:z.bottom,Math.max(S===fe.Down?z.top:z.top+z.height/2,f.y))},O=S===fe.Right&&!C||S===fe.Left&&!w,A=S===fe.Down&&!R||S===fe.Up&&!T;if(O&&D.x!==f.x){const P=x.scrollLeft+g.x,G=S===fe.Right&&P<=k.x||S===fe.Left&&P>=v.x;if(G&&!g.y){x.scrollTo({left:P,behavior:d});return}G?p.x=x.scrollLeft-P:p.x=S===fe.Right?x.scrollLeft-k.x:x.scrollLeft-v.x,p.x&&x.scrollBy({left:-p.x,behavior:d});break}else if(A&&D.y!==f.y){const P=x.scrollTop+g.y,G=S===fe.Down&&P<=k.y||S===fe.Up&&P>=v.y;if(G&&!g.x){x.scrollTo({top:P,behavior:d});return}G?p.y=x.scrollTop-P:p.y=S===fe.Down?x.scrollTop-k.y:x.scrollTop-v.y,p.y&&x.scrollBy({top:-p.y,behavior:d});break}}this.handleMove(n,Kt(cn(f,this.referenceCoordinates),p))}}}handleMove(n,r){const{onMove:s}=this.props;n.preventDefault(),s(r)}handleEnd(n){const{onEnd:r}=this.props;n.preventDefault(),this.detach(),r()}handleCancel(n){const{onCancel:r}=this.props;n.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}ns.activators=[{eventName:"onKeyDown",handler:(e,n,r)=>{let{keyboardCodes:s=Xo,onActivation:a}=n,{active:o}=r;const{code:l}=e.nativeEvent;if(s.start.includes(l)){const d=o.activatorNode.current;return d&&e.target!==d?!1:(e.preventDefault(),a==null||a({event:e.nativeEvent}),!0)}return!1}}];function ro(e){return!!(e&&"distance"in e)}function so(e){return!!(e&&"delay"in e)}class rs{constructor(n,r,s){var a;s===void 0&&(s=lc(n.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=n,this.events=r;const{event:o}=n,{target:l}=o;this.props=n,this.events=r,this.document=Yt(l),this.documentListeners=new tn(this.document),this.listeners=new tn(s),this.windowListeners=new tn(Xe(l)),this.initialCoordinates=(a=Un(o))!=null?a:Et,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:n,props:{options:{activationConstraint:r,bypassActivationConstraint:s}}}=this;if(this.listeners.add(n.move.name,this.handleMove,{passive:!1}),this.listeners.add(n.end.name,this.handleEnd),n.cancel&&this.listeners.add(n.cancel.name,this.handleCancel),this.windowListeners.add(yt.Resize,this.handleCancel),this.windowListeners.add(yt.DragStart,no),this.windowListeners.add(yt.VisibilityChange,this.handleCancel),this.windowListeners.add(yt.ContextMenu,no),this.documentListeners.add(yt.Keydown,this.handleKeydown),r){if(s!=null&&s({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(so(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(ro(r)){this.handlePending(r);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(n,r){const{active:s,onPending:a}=this.props;a(s,n,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:n}=this,{onStart:r}=this.props;n&&(this.activated=!0,this.documentListeners.add(yt.Click,cc,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(yt.SelectionChange,this.removeTextSelection),r(n))}handleMove(n){var r;const{activated:s,initialCoordinates:a,props:o}=this,{onMove:l,options:{activationConstraint:d}}=o;if(!a)return;const u=(r=Un(n))!=null?r:Et,h=cn(a,u);if(!s&&d){if(ro(d)){if(d.tolerance!=null&&fr(h,d.tolerance))return this.handleCancel();if(fr(h,d.distance))return this.handleStart()}if(so(d)&&fr(h,d.tolerance))return this.handleCancel();this.handlePending(d,h);return}n.cancelable&&n.preventDefault(),l(u)}handleEnd(){const{onAbort:n,onEnd:r}=this.props;this.detach(),this.activated||n(this.props.active),r()}handleCancel(){const{onAbort:n,onCancel:r}=this.props;this.detach(),this.activated||n(this.props.active),r()}handleKeydown(n){n.code===fe.Esc&&this.handleCancel()}removeTextSelection(){var n;(n=this.document.getSelection())==null||n.removeAllRanges()}}const uc={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class ss extends rs{constructor(n){const{event:r}=n,s=Yt(r.target);super(n,uc,s)}}ss.activators=[{eventName:"onPointerDown",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;return!r.isPrimary||r.button!==0?!1:(s==null||s({event:r}),!0)}}];const hc={move:{name:"mousemove"},end:{name:"mouseup"}};var Lr;(function(e){e[e.RightClick=2]="RightClick"})(Lr||(Lr={}));class fc extends rs{constructor(n){super(n,hc,Yt(n.event.target))}}fc.activators=[{eventName:"onMouseDown",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;return r.button===Lr.RightClick?!1:(s==null||s({event:r}),!0)}}];const pr={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class pc extends rs{constructor(n){super(n,pr)}static setup(){return window.addEventListener(pr.move.name,n,{capture:!1,passive:!1}),function(){window.removeEventListener(pr.move.name,n)};function n(){}}}pc.activators=[{eventName:"onTouchStart",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;const{touches:a}=r;return a.length>1?!1:(s==null||s({event:r}),!0)}}];var nn;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(nn||(nn={}));var Hn;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Hn||(Hn={}));function mc(e){let{acceleration:n,activator:r=nn.Pointer,canScroll:s,draggingRect:a,enabled:o,interval:l=5,order:d=Hn.TreeOrder,pointerCoordinates:u,scrollableAncestors:h,scrollableAncestorRects:m,delta:f,threshold:g}=e;const p=xc({delta:f,disabled:!o}),[b,x]=kl(),S=i.useRef({x:0,y:0}),T=i.useRef({x:0,y:0}),C=i.useMemo(()=>{switch(r){case nn.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case nn.DraggableRect:return a}},[r,a,u]),w=i.useRef(null),R=i.useCallback(()=>{const v=w.current;if(!v)return;const z=S.current.x*T.current.x,D=S.current.y*T.current.y;v.scrollBy(z,D)},[]),k=i.useMemo(()=>d===Hn.TreeOrder?[...h].reverse():h,[d,h]);i.useEffect(()=>{if(!o||!h.length||!C){x();return}for(const v of k){if((s==null?void 0:s(v))===!1)continue;const z=h.indexOf(v),D=m[z];if(!D)continue;const{direction:O,speed:A}=rc(v,D,C,n,g);for(const P of["x","y"])p[P][O[P]]||(A[P]=0,O[P]=0);if(A.x>0||A.y>0){x(),w.current=v,b(R,l),S.current=A,T.current=O;return}}S.current={x:0,y:0},T.current={x:0,y:0},x()},[n,R,s,x,o,l,JSON.stringify(C),JSON.stringify(p),b,h,k,m,JSON.stringify(g)])}const gc={x:{[$e.Backward]:!1,[$e.Forward]:!1},y:{[$e.Backward]:!1,[$e.Forward]:!1}};function xc(e){let{delta:n,disabled:r}=e;const s=Bn(n);return gn(a=>{if(r||!s||!a)return gc;const o={x:Math.sign(n.x-s.x),y:Math.sign(n.y-s.y)};return{x:{[$e.Backward]:a.x[$e.Backward]||o.x===-1,[$e.Forward]:a.x[$e.Forward]||o.x===1},y:{[$e.Backward]:a.y[$e.Backward]||o.y===-1,[$e.Forward]:a.y[$e.Forward]||o.y===1}}},[r,n,s])}function bc(e,n){const r=n!=null?e.get(n):void 0,s=r?r.node.current:null;return gn(a=>{var o;return n==null?null:(o=s??a)!=null?o:null},[s,n])}function yc(e,n){return i.useMemo(()=>e.reduce((r,s)=>{const{sensor:a}=s,o=a.activators.map(l=>({eventName:l.eventName,handler:n(l.handler,s)}));return[...r,...o]},[]),[e,n])}var un;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(un||(un={}));var zr;(function(e){e.Optimized="optimized"})(zr||(zr={}));const oo=new Map;function vc(e,n){let{dragging:r,dependencies:s,config:a}=n;const[o,l]=i.useState(null),{frequency:d,measure:u,strategy:h}=a,m=i.useRef(e),f=S(),g=ln(f),p=i.useCallback(function(T){T===void 0&&(T=[]),!g.current&&l(C=>C===null?T:C.concat(T.filter(w=>!C.includes(w))))},[g]),b=i.useRef(null),x=gn(T=>{if(f&&!r)return oo;if(!T||T===oo||m.current!==e||o!=null){const C=new Map;for(let w of e){if(!w)continue;if(o&&o.length>0&&!o.includes(w.id)&&w.rect.current){C.set(w.id,w.rect.current);continue}const R=w.node.current,k=R?new ts(u(R),R):null;w.rect.current=k,k&&C.set(w.id,k)}return C}return T},[e,o,r,f,u]);return i.useEffect(()=>{m.current=e},[e]),i.useEffect(()=>{f||p()},[r,f]),i.useEffect(()=>{o&&o.length>0&&l(null)},[JSON.stringify(o)]),i.useEffect(()=>{f||typeof d!="number"||b.current!==null||(b.current=setTimeout(()=>{p(),b.current=null},d))},[d,f,p,...s]),{droppableRects:x,measureDroppableContainers:p,measuringScheduled:o!=null};function S(){switch(h){case un.Always:return!1;case un.BeforeDragging:return r;default:return!r}}}function os(e,n){return gn(r=>e?r||(typeof n=="function"?n(e):e):null,[n,e])}function jc(e,n){return os(e,n)}function Cc(e){let{callback:n,disabled:r}=e;const s=Yn(n),a=i.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(s)},[s,r]);return i.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function Jn(e){let{callback:n,disabled:r}=e;const s=Yn(n),a=i.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(s)},[r]);return i.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function wc(e){return new ts(xn(e),e)}function ao(e,n,r){n===void 0&&(n=wc);const[s,a]=i.useState(null);function o(){a(u=>{if(!e)return null;if(e.isConnected===!1){var h;return(h=u??r)!=null?h:null}const m=n(e);return JSON.stringify(u)===JSON.stringify(m)?u:m})}const l=Cc({callback(u){if(e)for(const h of u){const{type:m,target:f}=h;if(m==="childList"&&f instanceof HTMLElement&&f.contains(e)){o();break}}}}),d=Jn({callback:o});return At(()=>{o(),e?(d==null||d.observe(e),l==null||l.observe(document.body,{childList:!0,subtree:!0})):(d==null||d.disconnect(),l==null||l.disconnect())},[e]),s}function Sc(e){const n=os(e);return $o(e,n)}const io=[];function Tc(e){const n=i.useRef(e),r=gn(s=>e?s&&s!==io&&e&&n.current&&e.parentNode===n.current.parentNode?s:qn(e):io,[e]);return i.useEffect(()=>{n.current=e},[e]),r}function kc(e){const[n,r]=i.useState(null),s=i.useRef(e),a=i.useCallback(o=>{const l=hr(o.target);l&&r(d=>d?(d.set(l,Fr(l)),new Map(d)):null)},[]);return i.useEffect(()=>{const o=s.current;if(e!==o){l(o);const d=e.map(u=>{const h=hr(u);return h?(h.addEventListener("scroll",a,{passive:!0}),[h,Fr(h)]):null}).filter(u=>u!=null);r(d.length?new Map(d):null),s.current=e}return()=>{l(e),l(o)};function l(d){d.forEach(u=>{const h=hr(u);h==null||h.removeEventListener("scroll",a)})}},[a,e]),i.useMemo(()=>e.length?n?Array.from(n.values()).reduce((o,l)=>Kt(o,l),Et):Vo(e):Et,[e,n])}function lo(e,n){n===void 0&&(n=[]);const r=i.useRef(null);return i.useEffect(()=>{r.current=null},n),i.useEffect(()=>{const s=e!==Et;s&&!r.current&&(r.current=e),!s&&r.current&&(r.current=null)},[e]),r.current?cn(e,r.current):Et}function Nc(e){i.useEffect(()=>{if(!Vn)return;const n=e.map(r=>{let{sensor:s}=r;return s.setup==null?void 0:s.setup()});return()=>{for(const r of n)r==null||r()}},e.map(n=>{let{sensor:r}=n;return r}))}function Ec(e,n){return i.useMemo(()=>e.reduce((r,s)=>{let{eventName:a,handler:o}=s;return r[a]=l=>{o(l,n)},r},{}),[e,n])}function qo(e){return i.useMemo(()=>e?Ql(e):null,[e])}const co=[];function Rc(e,n){n===void 0&&(n=xn);const[r]=e,s=qo(r?Xe(r):null),[a,o]=i.useState(co);function l(){o(()=>e.length?e.map(u=>Go(u)?s:new ts(n(u),u)):co)}const d=Jn({callback:l});return At(()=>{d==null||d.disconnect(),l(),e.forEach(u=>d==null?void 0:d.observe(u))},[e]),a}function Jo(e){if(!e)return null;if(e.children.length>1)return e;const n=e.children[0];return mn(n)?n:e}function Ic(e){let{measure:n}=e;const[r,s]=i.useState(null),a=i.useCallback(h=>{for(const{target:m}of h)if(mn(m)){s(f=>{const g=n(m);return f?{...f,width:g.width,height:g.height}:g});break}},[n]),o=Jn({callback:a}),l=i.useCallback(h=>{const m=Jo(h);o==null||o.disconnect(),m&&(o==null||o.observe(m)),s(m?n(m):null)},[n,o]),[d,u]=$n(l);return i.useMemo(()=>({nodeRef:d,rect:r,setRef:u}),[r,d,u])}const Dc=[{sensor:ss,options:{}},{sensor:ns,options:{}}],Ac={current:{}},zn={draggable:{measure:to},droppable:{measure:to,strategy:un.WhileDragging,frequency:zr.Optimized},dragOverlay:{measure:xn}};class rn extends Map{get(n){var r;return n!=null&&(r=super.get(n))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(n=>{let{disabled:r}=n;return!r})}getNodeFor(n){var r,s;return(r=(s=this.get(n))==null?void 0:s.node.current)!=null?r:void 0}}const Mc={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new rn,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Wn},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:zn,measureDroppableContainers:Wn,windowRect:null,measuringScheduled:!1},Zo={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Wn,draggableNodes:new Map,over:null,measureDroppableContainers:Wn},bn=i.createContext(Zo),Qo=i.createContext(Mc);function Fc(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new rn}}}function Lc(e,n){switch(n.type){case Fe.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:n.initialCoordinates,active:n.active}};case Fe.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:n.coordinates.x-e.draggable.initialCoordinates.x,y:n.coordinates.y-e.draggable.initialCoordinates.y}}};case Fe.DragEnd:case Fe.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Fe.RegisterDroppable:{const{element:r}=n,{id:s}=r,a=new rn(e.droppable.containers);return a.set(s,r),{...e,droppable:{...e.droppable,containers:a}}}case Fe.SetDroppableDisabled:{const{id:r,key:s,disabled:a}=n,o=e.droppable.containers.get(r);if(!o||s!==o.key)return e;const l=new rn(e.droppable.containers);return l.set(r,{...o,disabled:a}),{...e,droppable:{...e.droppable,containers:l}}}case Fe.UnregisterDroppable:{const{id:r,key:s}=n,a=e.droppable.containers.get(r);if(!a||s!==a.key)return e;const o=new rn(e.droppable.containers);return o.delete(r),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function zc(e){let{disabled:n}=e;const{active:r,activatorEvent:s,draggableNodes:a}=i.useContext(bn),o=Bn(s),l=Bn(r==null?void 0:r.id);return i.useEffect(()=>{if(!n&&!s&&o&&l!=null){if(!Zr(o)||document.activeElement===o.target)return;const d=a.get(l);if(!d)return;const{activatorNode:u,node:h}=d;if(!u.current&&!h.current)return;requestAnimationFrame(()=>{for(const m of[u.current,h.current]){if(!m)continue;const f=Rl(m);if(f){f.focus();break}}})}},[s,n,a,l,o]),null}function ea(e,n){let{transform:r,...s}=n;return e!=null&&e.length?e.reduce((a,o)=>o({transform:a,...s}),r):r}function Oc(e){return i.useMemo(()=>({draggable:{...zn.draggable,...e==null?void 0:e.draggable},droppable:{...zn.droppable,...e==null?void 0:e.droppable},dragOverlay:{...zn.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function _c(e){let{activeNode:n,measure:r,initialRect:s,config:a=!0}=e;const o=i.useRef(!1),{x:l,y:d}=typeof a=="boolean"?{x:a,y:a}:a;At(()=>{if(!l&&!d||!n){o.current=!1;return}if(o.current||!s)return;const h=n==null?void 0:n.node.current;if(!h||h.isConnected===!1)return;const m=r(h),f=$o(m,s);if(l||(f.x=0),d||(f.y=0),o.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const g=Uo(h);g&&g.scrollBy({top:f.y,left:f.x})}},[n,l,d,s,r])}const Zn=i.createContext({...Et,scaleX:1,scaleY:1});var Ft;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Ft||(Ft={}));const Pc=i.memo(function(n){var r,s,a,o;let{id:l,accessibility:d,autoScroll:u=!0,children:h,sensors:m=Dc,collisionDetection:f=Gl,measuring:g,modifiers:p,...b}=n;const x=i.useReducer(Lc,void 0,Fc),[S,T]=x,[C,w]=Ll(),[R,k]=i.useState(Ft.Uninitialized),v=R===Ft.Initialized,{draggable:{active:z,nodes:D,translate:O},droppable:{containers:A}}=S,P=z!=null?D.get(z):null,G=i.useRef({initial:null,translated:null}),Y=i.useMemo(()=>{var we;return z!=null?{id:z,data:(we=P==null?void 0:P.data)!=null?we:Ac,rect:G}:null},[z,P]),U=i.useRef(null),[W,F]=i.useState(null),[H,K]=i.useState(null),M=ln(b,Object.values(b)),Z=Xn("DndDescribedBy",l),V=i.useMemo(()=>A.getEnabled(),[A]),J=Oc(g),{droppableRects:ne,measureDroppableContainers:pe,measuringScheduled:se}=vc(V,{dragging:v,dependencies:[O.x,O.y],config:J.droppable}),B=bc(D,z),_=i.useMemo(()=>H?Un(H):null,[H]),ae=It(),Q=jc(B,J.draggable.measure);_c({activeNode:z!=null?D.get(z):null,config:ae.layoutShiftCompensation,initialRect:Q,measure:J.draggable.measure});const le=ao(B,J.draggable.measure,Q),Re=ao(B?B.parentElement:null),be=i.useRef({activatorEvent:null,active:null,activeNode:B,collisionRect:null,collisions:null,droppableRects:ne,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:A,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),xe=A.getNodeFor((r=be.current.over)==null?void 0:r.id),We=Ic({measure:J.dragOverlay.measure}),He=(s=We.nodeRef.current)!=null?s:B,qe=v?(a=We.rect)!=null?a:le:null,vt=!!(We.nodeRef.current&&We.rect),Rt=Sc(vt?null:le),dt=qo(He?Xe(He):null),Le=Tc(v?xe??B:null),Je=Rc(Le),Ze=ea(p,{transform:{x:O.x-Rt.x,y:O.y-Rt.y,scaleX:1,scaleY:1},activatorEvent:H,active:Y,activeNodeRect:le,containerNodeRect:Re,draggingNodeRect:qe,over:be.current.over,overlayNodeRect:We.rect,scrollableAncestors:Le,scrollableAncestorRects:Je,windowRect:dt}),N=_?Kt(_,O):null,ue=kc(Le),ut=lo(ue),Me=lo(ue,[le]),Ie=Kt(Ze,ut),Ce=qe?ql(qe,Ze):null,Ke=Y&&Ce?f({active:Y,collisionRect:Ce,droppableRects:ne,droppableContainers:V,pointerCoordinates:N}):null,ot=Po(Ke,"id"),[Ge,ke]=i.useState(null),Qe=vt?Ze:Kt(Ze,Me),jt=Yl(Qe,(o=Ge==null?void 0:Ge.rect)!=null?o:null,le),at=i.useRef(null),et=i.useCallback((we,ze)=>{let{sensor:De,options:it}=ze;if(U.current==null)return;const Ae=D.get(U.current);if(!Ae)return;const Oe=we.nativeEvent,Ve=new De({active:U.current,activeNode:Ae,event:Oe,options:it,context:be,onAbort(Se){if(!D.get(Se))return;const{onDragAbort:tt}=M.current,nt={id:Se};tt==null||tt(nt),C({type:"onDragAbort",event:nt})},onPending(Se,lt,tt,nt){if(!D.get(Se))return;const{onDragPending:I}=M.current,q={id:Se,constraint:lt,initialCoordinates:tt,offset:nt};I==null||I(q),C({type:"onDragPending",event:q})},onStart(Se){const lt=U.current;if(lt==null)return;const tt=D.get(lt);if(!tt)return;const{onDragStart:nt}=M.current,St={activatorEvent:Oe,active:{id:lt,data:tt.data,rect:G}};$t.unstable_batchedUpdates(()=>{nt==null||nt(St),k(Ft.Initializing),T({type:Fe.DragStart,initialCoordinates:Se,active:lt}),C({type:"onDragStart",event:St}),F(at.current),K(Oe)})},onMove(Se){T({type:Fe.DragMove,coordinates:Se})},onEnd:wt(Fe.DragEnd),onCancel:wt(Fe.DragCancel)});at.current=Ve;function wt(Se){return async function(){const{active:tt,collisions:nt,over:St,scrollAdjustedTranslate:I}=be.current;let q=null;if(tt&&I){const{cancelDrop:oe}=M.current;q={activatorEvent:Oe,active:tt,collisions:nt,delta:I,over:St},Se===Fe.DragEnd&&typeof oe=="function"&&await Promise.resolve(oe(q))&&(Se=Fe.DragCancel)}U.current=null,$t.unstable_batchedUpdates(()=>{T({type:Se}),k(Ft.Uninitialized),ke(null),F(null),K(null),at.current=null;const oe=Se===Fe.DragEnd?"onDragEnd":"onDragCancel";if(q){const ce=M.current[oe];ce==null||ce(q),C({type:oe,event:q})}})}}},[D]),ht=i.useCallback((we,ze)=>(De,it)=>{const Ae=De.nativeEvent,Oe=D.get(it);if(U.current!==null||!Oe||Ae.dndKit||Ae.defaultPrevented)return;const Ve={active:Oe};we(De,ze.options,Ve)===!0&&(Ae.dndKit={capturedBy:ze.sensor},U.current=it,et(De,ze))},[D,et]),Mt=yc(m,ht);Nc(m),At(()=>{le&&R===Ft.Initializing&&k(Ft.Initialized)},[le,R]),i.useEffect(()=>{const{onDragMove:we}=M.current,{active:ze,activatorEvent:De,collisions:it,over:Ae}=be.current;if(!ze||!De)return;const Oe={active:ze,activatorEvent:De,collisions:it,delta:{x:Ie.x,y:Ie.y},over:Ae};$t.unstable_batchedUpdates(()=>{we==null||we(Oe),C({type:"onDragMove",event:Oe})})},[Ie.x,Ie.y]),i.useEffect(()=>{const{active:we,activatorEvent:ze,collisions:De,droppableContainers:it,scrollAdjustedTranslate:Ae}=be.current;if(!we||U.current==null||!ze||!Ae)return;const{onDragOver:Oe}=M.current,Ve=it.get(ot),wt=Ve&&Ve.rect.current?{id:Ve.id,rect:Ve.rect.current,data:Ve.data,disabled:Ve.disabled}:null,Se={active:we,activatorEvent:ze,collisions:De,delta:{x:Ae.x,y:Ae.y},over:wt};$t.unstable_batchedUpdates(()=>{ke(wt),Oe==null||Oe(Se),C({type:"onDragOver",event:Se})})},[ot]),At(()=>{be.current={activatorEvent:H,active:Y,activeNode:B,collisionRect:Ce,collisions:Ke,droppableRects:ne,draggableNodes:D,draggingNode:He,draggingNodeRect:qe,droppableContainers:A,over:Ge,scrollableAncestors:Le,scrollAdjustedTranslate:Ie},G.current={initial:qe,translated:Ce}},[Y,B,Ke,Ce,D,He,qe,ne,A,Ge,Le,Ie]),mc({...ae,delta:O,draggingRect:Ce,pointerCoordinates:N,scrollableAncestors:Le,scrollableAncestorRects:Je});const Ct=i.useMemo(()=>({active:Y,activeNode:B,activeNodeRect:le,activatorEvent:H,collisions:Ke,containerNodeRect:Re,dragOverlay:We,draggableNodes:D,droppableContainers:A,droppableRects:ne,over:Ge,measureDroppableContainers:pe,scrollableAncestors:Le,scrollableAncestorRects:Je,measuringConfiguration:J,measuringScheduled:se,windowRect:dt}),[Y,B,le,H,Ke,Re,We,D,A,ne,Ge,pe,Le,Je,J,se,dt]),ft=i.useMemo(()=>({activatorEvent:H,activators:Mt,active:Y,activeNodeRect:le,ariaDescribedById:{draggable:Z},dispatch:T,draggableNodes:D,over:Ge,measureDroppableContainers:pe}),[H,Mt,Y,le,T,Z,D,Ge,pe]);return i.createElement(_o.Provider,{value:w},i.createElement(bn.Provider,{value:ft},i.createElement(Qo.Provider,{value:Ct},i.createElement(Zn.Provider,{value:jt},h)),i.createElement(zc,{disabled:(d==null?void 0:d.restoreFocus)===!1})),i.createElement(_l,{...d,hiddenTextDescribedById:Z}));function It(){const we=(W==null?void 0:W.autoScrollEnabled)===!1,ze=typeof u=="object"?u.enabled===!1:u===!1,De=v&&!we&&!ze;return typeof u=="object"?{...u,enabled:De}:{enabled:De}}}),$c=i.createContext(null),uo="button",Bc="Draggable";function Uc(e){let{id:n,data:r,disabled:s=!1,attributes:a}=e;const o=Xn(Bc),{activators:l,activatorEvent:d,active:u,activeNodeRect:h,ariaDescribedById:m,draggableNodes:f,over:g}=i.useContext(bn),{role:p=uo,roleDescription:b="draggable",tabIndex:x=0}=a??{},S=(u==null?void 0:u.id)===n,T=i.useContext(S?Zn:$c),[C,w]=$n(),[R,k]=$n(),v=Ec(l,n),z=ln(r);At(()=>(f.set(n,{id:n,key:o,node:C,activatorNode:R,data:z}),()=>{const O=f.get(n);O&&O.key===o&&f.delete(n)}),[f,n]);const D=i.useMemo(()=>({role:p,tabIndex:x,"aria-disabled":s,"aria-pressed":S&&p===uo?!0:void 0,"aria-roledescription":b,"aria-describedby":m.draggable}),[s,p,x,S,b,m.draggable]);return{active:u,activatorEvent:d,activeNodeRect:h,attributes:D,isDragging:S,listeners:s?void 0:v,node:C,over:g,setNodeRef:w,setActivatorNodeRef:k,transform:T}}function Wc(){return i.useContext(Qo)}const Hc="Droppable",Gc={timeout:25};function ta(e){let{data:n,disabled:r=!1,id:s,resizeObserverConfig:a}=e;const o=Xn(Hc),{active:l,dispatch:d,over:u,measureDroppableContainers:h}=i.useContext(bn),m=i.useRef({disabled:r}),f=i.useRef(!1),g=i.useRef(null),p=i.useRef(null),{disabled:b,updateMeasurementsFor:x,timeout:S}={...Gc,...a},T=ln(x??s),C=i.useCallback(()=>{if(!f.current){f.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{h(Array.isArray(T.current)?T.current:[T.current]),p.current=null},S)},[S]),w=Jn({callback:C,disabled:b||!l}),R=i.useCallback((D,O)=>{w&&(O&&(w.unobserve(O),f.current=!1),D&&w.observe(D))},[w]),[k,v]=$n(R),z=ln(n);return i.useEffect(()=>{!w||!k.current||(w.disconnect(),f.current=!1,w.observe(k.current))},[k,w]),i.useEffect(()=>(d({type:Fe.RegisterDroppable,element:{id:s,key:o,disabled:r,node:k,rect:g,data:z}}),()=>d({type:Fe.UnregisterDroppable,key:o,id:s})),[s]),i.useEffect(()=>{r!==m.current.disabled&&(d({type:Fe.SetDroppableDisabled,id:s,key:o,disabled:r}),m.current.disabled=r)},[s,o,r,d]),{active:l,rect:g,isOver:(u==null?void 0:u.id)===s,node:k,over:u,setNodeRef:v}}function Kc(e){let{animation:n,children:r}=e;const[s,a]=i.useState(null),[o,l]=i.useState(null),d=Bn(r);return!r&&!s&&d&&a(d),At(()=>{if(!o)return;const u=s==null?void 0:s.key,h=s==null?void 0:s.props.id;if(u==null||h==null){a(null);return}Promise.resolve(n(h,o)).then(()=>{a(null)})},[n,s,o]),i.createElement(i.Fragment,null,r,s?i.cloneElement(s,{ref:l}):null)}const Vc={x:0,y:0,scaleX:1,scaleY:1};function Yc(e){let{children:n}=e;return i.createElement(bn.Provider,{value:Zo},i.createElement(Zn.Provider,{value:Vc},n))}const Xc={position:"fixed",touchAction:"none"},qc=e=>Zr(e)?"transform 250ms ease":void 0,Jc=i.forwardRef((e,n)=>{let{as:r,activatorEvent:s,adjustScale:a,children:o,className:l,rect:d,style:u,transform:h,transition:m=qc}=e;if(!d)return null;const f=a?h:{...h,scaleX:1,scaleY:1},g={...Xc,width:d.width,height:d.height,top:d.top,left:d.left,transform:dn.Transform.toString(f),transformOrigin:a&&s?$l(s,d):void 0,transition:typeof m=="function"?m(s):m,...u};return i.createElement(r,{className:l,style:g,ref:n},o)}),Zc=e=>n=>{let{active:r,dragOverlay:s}=n;const a={},{styles:o,className:l}=e;if(o!=null&&o.active)for(const[d,u]of Object.entries(o.active))u!==void 0&&(a[d]=r.node.style.getPropertyValue(d),r.node.style.setProperty(d,u));if(o!=null&&o.dragOverlay)for(const[d,u]of Object.entries(o.dragOverlay))u!==void 0&&s.node.style.setProperty(d,u);return l!=null&&l.active&&r.node.classList.add(l.active),l!=null&&l.dragOverlay&&s.node.classList.add(l.dragOverlay),function(){for(const[u,h]of Object.entries(a))r.node.style.setProperty(u,h);l!=null&&l.active&&r.node.classList.remove(l.active)}},Qc=e=>{let{transform:{initial:n,final:r}}=e;return[{transform:dn.Transform.toString(n)},{transform:dn.Transform.toString(r)}]},ed={duration:250,easing:"ease",keyframes:Qc,sideEffects:Zc({styles:{active:{opacity:"0"}}})};function td(e){let{config:n,draggableNodes:r,droppableContainers:s,measuringConfiguration:a}=e;return Yn((o,l)=>{if(n===null)return;const d=r.get(o);if(!d)return;const u=d.node.current;if(!u)return;const h=Jo(l);if(!h)return;const{transform:m}=Xe(l).getComputedStyle(l),f=Bo(m);if(!f)return;const g=typeof n=="function"?n:nd(n);return Yo(u,a.draggable.measure),g({active:{id:o,data:d.data,node:u,rect:a.draggable.measure(u)},draggableNodes:r,dragOverlay:{node:l,rect:a.dragOverlay.measure(h)},droppableContainers:s,measuringConfiguration:a,transform:f})})}function nd(e){const{duration:n,easing:r,sideEffects:s,keyframes:a}={...ed,...e};return o=>{let{active:l,dragOverlay:d,transform:u,...h}=o;if(!n)return;const m={x:d.rect.left-l.rect.left,y:d.rect.top-l.rect.top},f={scaleX:u.scaleX!==1?l.rect.width*u.scaleX/d.rect.width:1,scaleY:u.scaleY!==1?l.rect.height*u.scaleY/d.rect.height:1},g={x:u.x-m.x,y:u.y-m.y,...f},p=a({...h,active:l,dragOverlay:d,transform:{initial:u,final:g}}),[b]=p,x=p[p.length-1];if(JSON.stringify(b)===JSON.stringify(x))return;const S=s==null?void 0:s({active:l,dragOverlay:d,...h}),T=d.node.animate(p,{duration:n,easing:r,fill:"forwards"});return new Promise(C=>{T.onfinish=()=>{S==null||S(),C()}})}}let ho=0;function rd(e){return i.useMemo(()=>{if(e!=null)return ho++,ho},[e])}const sd=i.memo(e=>{let{adjustScale:n=!1,children:r,dropAnimation:s,style:a,transition:o,modifiers:l,wrapperElement:d="div",className:u,zIndex:h=999}=e;const{activatorEvent:m,active:f,activeNodeRect:g,containerNodeRect:p,draggableNodes:b,droppableContainers:x,dragOverlay:S,over:T,measuringConfiguration:C,scrollableAncestors:w,scrollableAncestorRects:R,windowRect:k}=Wc(),v=i.useContext(Zn),z=rd(f==null?void 0:f.id),D=ea(l,{activatorEvent:m,active:f,activeNodeRect:g,containerNodeRect:p,draggingNodeRect:S.rect,over:T,overlayNodeRect:S.rect,scrollableAncestors:w,scrollableAncestorRects:R,transform:v,windowRect:k}),O=os(g),A=td({config:s,draggableNodes:b,droppableContainers:x,measuringConfiguration:C}),P=O?S.setRef:void 0;return i.createElement(Yc,null,i.createElement(Kc,{animation:A},f&&z?i.createElement(Jc,{key:z,id:f.id,ref:P,as:d,activatorEvent:m,adjustScale:n,className:u,transition:o,rect:O,style:{zIndex:h,...a},transform:D},r):null))});function Gn(e){if(!e)return!1;const n=e.data.current;return!!(n&&"sortable"in n&&typeof n.sortable=="object"&&"containerId"in n.sortable&&"items"in n.sortable&&"index"in n.sortable)}const od=[fe.Down,fe.Right,fe.Up,fe.Left],ad=(e,n)=>{let{context:{active:r,collisionRect:s,droppableRects:a,droppableContainers:o,over:l,scrollableAncestors:d}}=n;if(od.includes(e.code)){if(e.preventDefault(),!r||!s)return;const u=[];o.getEnabled().forEach(f=>{if(!f||f!=null&&f.disabled)return;const g=a.get(f.id);if(g)switch(e.code){case fe.Down:s.top<g.top&&u.push(f);break;case fe.Up:s.top>g.top&&u.push(f);break;case fe.Left:s.left>g.left&&u.push(f);break;case fe.Right:s.left<g.left&&u.push(f);break}});const h=Wl({collisionRect:s,droppableRects:a,droppableContainers:u});let m=Po(h,"id");if(m===(l==null?void 0:l.id)&&h.length>1&&(m=h[1].id),m!=null){const f=o.get(r.id),g=o.get(m),p=g?a.get(g.id):null,b=g==null?void 0:g.node.current;if(b&&p&&f&&g){const S=qn(b).some((v,z)=>d[z]!==v),T=na(f,g),C=id(f,g),w=S||!T?{x:0,y:0}:{x:C?s.width-p.width:0,y:C?s.height-p.height:0},R={x:p.left,y:p.top};return w.x&&w.y?R:cn(R,w)}}}};function na(e,n){return!Gn(e)||!Gn(n)?!1:e.data.current.sortable.containerId===n.data.current.sortable.containerId}function id(e,n){return!Gn(e)||!Gn(n)||!na(e,n)?!1:e.data.current.sortable.index<n.data.current.sortable.index}function fo(e){var r;if(!e||e.length===0)return null;const n=(r=e[0].data)==null?void 0:r.zone;return n==="before"||n==="after"||n==="into"?n:null}function ld(e){const{onReorder:n,onGroupReorder:r,onDropIntoGroup:s,onDropIntoGroupAtPosition:a,onRemoveFromGroup:o,findParentGroup:l}=e,[d,u]=i.useState(null),[h,m]=i.useState(null),[f,g]=i.useState(null),p=i.useRef(null),b=Pl(Qs(ss,{activationConstraint:{distance:5}}),Qs(ns,{coordinateGetter:ad})),x=i.useCallback(k=>{u(String(k.active.id))},[]),S=i.useCallback(k=>{const{over:v,collisions:z}=k;m(v?String(v.id):null);const D=fo(z);p.current=D,g(D)},[]),T=i.useCallback(k=>{const{collisions:v}=k,z=fo(v);p.current=z,g(z)},[]),C=i.useCallback(()=>{p.current=null,u(null),m(null),g(null)},[]),w=i.useCallback(k=>{const{active:v,over:z}=k,D=p.current;if(!z||v.id===z.id||!D){C();return}const O=String(v.id),A=String(z.id);if(A.startsWith("group-footer::")){const P=A.replace("group-footer::",""),G=l==null?void 0:l(O);G&&G.id===P?o==null||o(O):n(O,P,"before"),C();return}if(D==="into")s==null||s(O,A);else{const P=D==="before"?"after":"before",G=l==null?void 0:l(O),Y=l==null?void 0:l(A);G&&Y&&G.id===Y.id?r==null||r(O,A,P,G.id):!G&&Y&&a?a(O,Y.id,A,P):n(O,A,P)}C()},[n,r,s,a,o,l,C]),R=i.useCallback(()=>{C()},[C]);return{activeId:d,overId:h,dropPosition:f,sensors:b,onDragStart:x,onDragMove:T,onDragOver:S,onDragEnd:w,onDragCancel:R}}function Nt(...e){return gl.twMerge(ml.clsx(e))}const cd={"gravity-ui":1.2,lucide:1,hugeicons:1.05,mdi:.95,"fa6-solid":.7,heroicons:1,ph:1,"radix-icons":1,"material-symbols":.9,"simple-icons":.95,"eos-icons":1},dd=1,ud={"gravity-ui:arrow-rotate-left":{x:4,y:4},"gravity-ui:arrow-rotate-right":{x:-4,y:4},"gravity-ui:sparkles":{x:2,y:-2}},hd={xs:12,sm:16,md:20,lg:24,xl:32,toolbar:{mobile:24,desktop:20}};function fd(e){const n=e.indexOf(":");return n===-1?"":e.substring(0,n)}function pd(e){return cd[e]??dd}function md(e){return ud[e]??null}function mr(e,n){const r=pd(n);return Math.round(e*r)}const ra=({icon:e,size:n="md",className:r})=>{const s=fd(e),a=hd[n],o=md(e);if(typeof a=="object"){const u=mr(a.mobile,s),h=mr(a.desktop,s),m=o?{x:o.x*u/20,y:o.y*u/20}:null;return t.jsx("span",{className:Nt("normalized-icon-responsive inline-flex",r),style:{"--icon-size-mobile":`${u}px`,"--icon-size-desktop":`${h}px`,width:`${u}px`,height:`${u}px`},children:t.jsx(L.Icon,{icon:e,width:"100%",height:"100%",style:m?{transform:`translate(${m.x}px, ${m.y}px)`}:void 0})})}const l=mr(a,s),d=o?{x:o.x*l/20,y:o.y*l/20}:null;return t.jsx("span",{className:Nt("inline-flex",r),style:{width:`${l}px`,height:`${l}px`},children:t.jsx(L.Icon,{icon:e,width:"100%",height:"100%",style:d?{transform:`translate(${d.x}px, ${d.y}px)`}:void 0})})};ra.displayName="NormalizedIcon";const ie=i.forwardRef(({icon:e,onClick:n,active:r=!1,tooltip:s,tooltipDelay:a=300,tooltipDisabled:o=!1,"aria-label":l,disabled:d=!1,className:u,onMouseLeave:h},m)=>{const f=t.jsx(c.Button,{ref:m,variant:"ghost",size:"toolbar",onClick:n,disabled:d,"aria-label":l||s,"aria-pressed":r,"data-active":r,onMouseLeave:h,className:Nt(u),children:typeof e=="string"?t.jsx(ra,{icon:e,size:"toolbar"}):e});return!s||o?f:t.jsxs(c.Tooltip,{delay:a,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:f}),t.jsx(c.TooltipContent,{children:s})]})});ie.displayName="ToolbarButton";const Qn=({className:e,size:n=24})=>t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",width:n,height:n,className:Nt("inline-block iconify",e),children:[t.jsx("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),t.jsx("path",{d:"M3 3v5h5"})]}),Kn=({className:e,size:n=24})=>t.jsx("svg",{viewBox:"0 0 28 28",fill:"currentColor",width:n,height:n,className:Nt("inline-block",e),children:t.jsx("path",{d:"M10.06 18.701a1.628 1.628 0 0 0 2.43-.676l.77-2.34a3.82 3.82 0 0 1 2.416-2.418l2.238-.727a1.6 1.6 0 0 0 .786-.595a1.62 1.62 0 0 0-.849-2.489l-2.215-.72a3.82 3.82 0 0 1-2.42-2.414l-.727-2.237a1.62 1.62 0 0 0-.594-.785a1.655 1.655 0 0 0-1.879 0a1.63 1.63 0 0 0-.6.8L8.68 6.365a3.82 3.82 0 0 1-2.359 2.37l-2.24.726a1.626 1.626 0 0 0 .02 3.073l2.216.72a3.86 3.86 0 0 1 1.816 1.286c.266.343.471.728.606 1.14l.728 2.234c.112.318.32.593.595.787m-3.273-6.873l-2.22-.72s-.085-.038-.085-.108a.14.14 0 0 1 .084-.115L6.8 10.16a5.34 5.34 0 0 0 3.32-3.375l.721-2.219s.043-.084.114-.084s.113.084.113.084l.723 2.223a5.32 5.32 0 0 0 3.377 3.372l2.27.735a.13.13 0 0 1 .078.11a.15.15 0 0 1-.083.113l-2.225.722a5.32 5.32 0 0 0-3.374 3.374l-.715 2.2a.11.11 0 0 1-.115.093c-.104 0-.118-.075-.118-.075l-.723-2.22a5.32 5.32 0 0 0-3.376-3.385m13.017 12.954A1.2 1.2 0 0 0 20.5 25a1.2 1.2 0 0 0 .692-.216a1.2 1.2 0 0 0 .446-.6l.372-1.143a1.61 1.61 0 0 1 1.017-1.02l1.166-.378A1.21 1.21 0 0 0 25 20.505a1.2 1.2 0 0 0-.844-1.146l-1.144-.37a1.61 1.61 0 0 1-1.02-1.018l-.38-1.163a1.2 1.2 0 0 0-2.274.016l-.374 1.146a1.61 1.61 0 0 1-.993 1.017l-1.166.378a1.21 1.21 0 0 0-.807 1.139a1.2 1.2 0 0 0 .823 1.138l1.144.372a1.6 1.6 0 0 1 1.02 1.023l.379 1.163a1.2 1.2 0 0 0 .44.582m-1.371-4.194l-.27-.088l.283-.096a3.12 3.12 0 0 0 1.943-1.974l.088-.27l.089.272a3.11 3.11 0 0 0 1.974 1.975l.293.1l-.271.087a3.12 3.12 0 0 0-1.974 1.977l-.088.27l-.088-.272a3.12 3.12 0 0 0-1.98-1.98"})}),X={plus:"lucide:plus",minus:"lucide:minus",close:"lucide:x",check:"lucide:check",menu:"lucide:menu",moreHorizontal:"lucide:ellipsis",text:"lucide:type",image:"lucide:image",layers:"lucide:layers",shapes:"lucide:shapes",trash:"lucide:trash-2",copy:"lucide:copy",pencil:"lucide:pencil",scissors:"lucide:scissors",save:"lucide:save",folderOpen:"lucide:folder-open",download:"lucide:download",eye:"lucide:eye",eyeOff:"lucide:eye-off",lock:"lucide:lock",lockOpen:"lucide:lock-open",search:"lucide:search",link:"lucide:link",palette:"lucide:palette",rotateLeft:"lucide:rotate-ccw",rotateCcwSquare:"lucide:rotate-ccw-square",bold:"lucide:bold",italic:"lucide:italic",underline:"lucide:underline",alignLeft:"lucide:align-left",alignCenter:"lucide:align-center",alignRight:"lucide:align-right",play:"lucide:play",pause:"lucide:pause",grip:"lucide:grip-vertical",fileText:"lucide:file-text",group:"lucide:group",fitScreen:"lucide:scan",maximize:"lucide:maximize",alertCircle:"lucide:alert-circle",wand:"lucide:wand-2"},Or=({icon:e,label:n,onClose:r,className:s,closeButtonStyle:a="icon"})=>{const o=i.useRef(null),l=i.useRef({x:0,y:0});return i.useEffect(()=>{const d=o.current;if(!d)return;const u=m=>{l.current={x:m.touches[0].clientX,y:m.touches[0].clientY}},h=m=>{const f=Math.abs(m.touches[0].clientX-l.current.x),g=Math.abs(m.touches[0].clientY-l.current.y);f>10&&f>g&&m.preventDefault()};return d.addEventListener("touchstart",u,{passive:!0}),d.addEventListener("touchmove",h,{passive:!1}),()=>{d.removeEventListener("touchstart",u),d.removeEventListener("touchmove",h)}},[]),t.jsxs("div",{ref:o,className:Nt("flex w-full items-center justify-between",s),style:{touchAction:"pan-y"},children:[t.jsxs("div",{className:"flex items-center gap-3 md:gap-2",children:[typeof e=="string"?t.jsx(L.Icon,{icon:e,className:"text-primary size-7 md:size-5"}):e,t.jsx("span",{className:"text-foreground text-lg font-semibold md:text-sm md:font-medium",children:n})]}),a==="done"?t.jsx("button",{onClick:r,className:"bg-primary text-primary-foreground rounded-xl hover:bg-primary/90 shadow-sm px-8 py-3.5 text-xl font-bold transition-colors md:rounded-button md:shadow-none md:px-4 md:py-2 md:text-sm md:font-medium","aria-label":"Done",children:"Done"}):t.jsx("button",{onClick:r,className:"hover:bg-muted text-foreground/70 hover:text-foreground flex size-11 items-center justify-center rounded-md transition-colors md:size-7","aria-label":"Close panel",children:t.jsx(L.Icon,{icon:X.close,className:"size-7 md:size-4"})})]})};Or.displayName="CollapsedToolbarHeader";function po({children:e,className:n}){const r=i.useRef(null);return i.useEffect(()=>{const s=r.current;if(!s)return;const a=l=>{l.stopPropagation()},o=l=>{l.preventDefault(),l.stopPropagation()};return s.addEventListener("touchstart",a,{passive:!1}),s.addEventListener("touchmove",o,{passive:!1}),()=>{s.removeEventListener("touchstart",a),s.removeEventListener("touchmove",o)}},[]),t.jsx("div",{ref:r,className:n,style:{touchAction:"none"},children:e})}const Ue=({label:e,value:n,onChange:r,min:s,max:a,step:o=1,unit:l="",showInput:d=!1,inputWidth:u="56px",className:h,variant:m="inline"})=>{const f=Math.round(n);return m==="stacked"?t.jsxs("div",{className:Nt("flex flex-col gap-2.5 md:gap-1.5",h),children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-base md:text-xs",children:e}),d&&t.jsx("input",{type:"number",value:f,onChange:g=>r(Math.max(s,Math.min(a,Number(g.target.value)))),min:s,max:a,"aria-label":`${e} value`,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]",style:{width:u}})]}),t.jsx(po,{children:t.jsxs(c.Slider,{value:[n],onValueChange:g=>r(g[0]),min:s,max:a,step:o,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2.5 md:h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{className:"size-7 md:size-6"})]})})]}):t.jsxs("div",{className:Nt("flex items-center gap-3",h),children:[t.jsx("span",{className:"text-foreground/70 text-base md:text-[13px] whitespace-nowrap",children:e}),d?t.jsx("input",{type:"number",value:f,onChange:g=>r(Math.max(s,Math.min(a,Number(g.target.value)))),min:s,max:a,"aria-label":`${e} value`,className:"bg-transparent text-foreground rounded-md border-none px-2 py-2 text-right text-base md:py-1.5 md:text-[13px]",style:{width:u}}):null,t.jsx(po,{className:"flex-1",children:t.jsxs(c.Slider,{value:[n],onValueChange:g=>r(g[0]),min:s,max:a,step:o,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2.5 md:h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{className:"size-7 md:size-6"})]})}),t.jsxs("span",{className:"text-foreground text-base md:text-[13px] min-w-[44px] md:min-w-[32px] text-right",children:[f,l]})]})},mo="border-2 border-primary overflow-hidden",go="border-2 border-border-primary hover:border-border-focus overflow-hidden",er=({presets:e,selectedId:n,onSelect:r,showOff:s=!0,size:a=40,ariaLabel:o="Preset options"})=>{const l=i.useRef(null),d=i.useCallback(f=>{f.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})},[]),u=i.useCallback(f=>{if(f.key!=="ArrowLeft"&&f.key!=="ArrowRight")return;f.preventDefault(),f.stopPropagation();const g=l.current;if(!g)return;const p=Array.from(g.querySelectorAll("button[data-preset-id]")),b=document.activeElement;let x=p.indexOf(b);x===-1&&(x=p.findIndex(w=>w.getAttribute("aria-selected")==="true"),x===-1&&(x=0));let S;f.key==="ArrowRight"?S=x<p.length-1?x+1:0:S=x>0?x-1:p.length-1;const T=p[S];T.focus(),d(T);const C=T.getAttribute("data-preset-id");C!==null&&r(C)},[d,r]),h=s&&!n,m=s?!0:e.some(f=>f.id===n);return t.jsxs("div",{ref:l,className:"flex gap-1.5 overflow-x-auto p-1 -m-1",style:{flexWrap:"nowrap"},role:"listbox","aria-label":o,onKeyDown:u,children:[s&&t.jsx("button",{"data-preset-id":"",role:"option","aria-selected":h,tabIndex:h||!m?0:-1,onClick:()=>r(""),className:`shrink-0 rounded-md transition-all flex items-center justify-center ${h?mo:go}`,style:{width:a,height:a},title:"None",children:t.jsx("span",{className:"text-xs text-muted-foreground",children:"Off"})}),e.map((f,g)=>{const p=n===f.id,b=p||!s&&!m&&g===0;return t.jsx("button",{"data-preset-id":f.id,role:"option","aria-selected":p,tabIndex:b?0:-1,onClick:()=>r(f.id),className:`shrink-0 rounded-md transition-all ${p?mo:go}`,style:{width:a,height:a},title:f.name,children:f.thumbnailUrl&&t.jsx("img",{src:f.thumbnailUrl,alt:f.name,className:"w-full h-full object-cover",loading:"lazy"})},f.id)})]})},gd=e=>{var g,p;const{pointerCoordinates:n,droppableContainers:r,droppableRects:s}=e;let a=Vl(e);if(a.length===0&&(a=Ul(e)),a.length===0||!n)return a;const o=a[0];if(String(o.id).startsWith("group-footer::"))return[{...o,data:{...o.data,zone:"after"}}];const l=s.get(o.id);if(!l)return a;const d=n.y-l.top,u=l.height,h=r.find(b=>b.id===o.id),m=((p=(g=h==null?void 0:h.data)==null?void 0:g.current)==null?void 0:p.isGroup)===!0;let f;return m?d<u*.25?f="before":d>u*.75?f="after":f="into":f=d<u/2?"before":"after",[{...o,data:{...o.data,zone:f}}]},xd=({layer:e,isOver:n,dropPosition:r,isDragActive:s,showPreviewImages:a,previewDisplaySize:o,onSelect:l,onToggleVisibility:d,onToggleLock:u,onDuplicate:h,onDelete:m})=>{const{attributes:f,listeners:g,setNodeRef:p,isDragging:b}=Uc({id:e.id}),{setNodeRef:x}=ta({id:e.id,data:{isGroup:!!e.isGroup}}),S=i.useCallback(D=>{p(D),x(D)},[p,x]),T=e.isGroup,C=e.depth>0,w=C?e.depth*24:0,R={opacity:b?.3:1,paddingLeft:w+8,paddingRight:8,paddingTop:T?6:8,paddingBottom:T?6:8,minHeight:T?32:36,display:"flex",alignItems:"center",gap:8,cursor:"pointer",position:"relative",touchAction:"manipulation"};(C||T)&&(R.backgroundColor="var(--surface-secondary, rgba(0,0,0,0.04))"),n&&!b&&(r==="before"?R.borderTop="2px solid var(--primary, var(--accent-primary, #007AFF))":r==="after"?R.borderBottom="2px solid var(--primary, var(--accent-primary, #007AFF))":r==="into"&&(R.outline="2px solid var(--primary, var(--accent-primary, #007AFF))",R.outlineOffset="-2px",R.backgroundColor="var(--accent-primary-alpha, rgba(0, 122, 255, 0.08))"));const k=e.isSelected?{outline:"3px solid var(--primary, var(--accent-primary, #007AFF))",outlineOffset:"2px"}:{},v=()=>l(e.id),z=t.jsx("span",{...g,"aria-label":"Drag to reorder",title:"Drag to reorder",style:{touchAction:"none",cursor:"grab",display:"flex",alignItems:"center",justifyContent:"center",width:36,alignSelf:"stretch",marginLeft:-4,marginRight:4,flexShrink:0,color:"var(--text-secondary, #888)",opacity:.6},children:t.jsx(L.Icon,{icon:"lucide:grip-vertical",style:{fontSize:24}})});return T?t.jsxs("div",{ref:S,style:R,...f,children:[z,t.jsx(L.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)",flexShrink:0}}),t.jsx("span",{onClick:v,style:{fontSize:13,fontWeight:600,color:"var(--foreground, #333)",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),!s&&(!e.children||e.children.length===0)&&t.jsx("div",{style:{display:"flex",gap:4,flexShrink:0},children:t.jsx(Dt,{title:"Delete Group",onClick:()=>m(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(L.Icon,{icon:X.trash,className:"size-6"})})})]}):t.jsxs("div",{ref:S,style:R,...f,children:[z,a&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,onClick:v,style:{width:o,height:o,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)",cursor:"pointer",flexShrink:0,...k}}):t.jsx("div",{style:{width:o,height:o,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4,cursor:"pointer",flexShrink:0,...k},onClick:v,children:t.jsx(L.Icon,{icon:X.fileText})}),t.jsx("div",{style:{flex:1,minWidth:0},onClick:v}),!s&&t.jsxs("div",{style:{display:"flex",gap:4,flexShrink:0},children:[t.jsx(Dt,{title:e.visible?"Hide":"Show",onClick:()=>d(e.id),style:{opacity:e.visible?1:.4},children:t.jsx(L.Icon,{icon:e.visible?X.eye:X.eyeOff,className:"size-6"})}),t.jsx(Dt,{title:e.locked?"Unlock":"Lock",onClick:()=>u(e.id),style:{opacity:e.locked?1:.4},children:t.jsx(L.Icon,{icon:e.locked?X.lock:X.lockOpen,className:"size-6"})}),t.jsx(Dt,{title:"Duplicate",onClick:()=>h(e.id),children:t.jsx(L.Icon,{icon:X.copy,className:"size-6"})}),t.jsx(Dt,{title:"Delete",onClick:()=>m(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(L.Icon,{icon:X.trash,className:"size-6"})})]})]})},Dt=({title:e,onClick:n,style:r,children:s})=>t.jsx("button",{onClick:a=>{a.stopPropagation(),n()},style:{background:"none",border:"none",cursor:"pointer",padding:4,opacity:.6,...r},title:e,children:s}),bd=({groupId:e,isOver:n,depth:r})=>{const{setNodeRef:s}=ta({id:`group-footer::${e}`}),a=(r+1)*24;return t.jsx("div",{ref:s,style:{height:8,marginLeft:a,position:"relative",...n?{borderBottom:"2px solid var(--primary, var(--accent-primary, #007AFF))"}:{}}})},yd=({layer:e,showPreviewImages:n,previewDisplaySize:r})=>t.jsxs("div",{style:{paddingLeft:8,paddingRight:8,paddingTop:8,paddingBottom:8,display:"flex",alignItems:"center",gap:8,backgroundColor:"var(--surface, #fff)",borderRadius:8,boxShadow:"0 4px 16px rgba(0,0,0,0.15)",opacity:.9},children:[e.isGroup?t.jsx(L.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)"}}):n&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,style:{width:r,height:r,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)"}}):t.jsx("div",{style:{width:r,height:r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4},children:t.jsx(L.Icon,{icon:X.fileText})}),t.jsx("span",{style:{fontSize:13,color:"var(--foreground, #333)"},children:e.name})]}),sa=({width:e=250,height:n,showPreviewImages:r=!0,enableDragReorder:s=!1,enableGrouping:a=!1,style:o={},className:l="",showHeader:d=!0,...u})=>{const{activeArtboard:h}=L.useArtboards(),m=(h==null?void 0:h.previewBackgroundColor)||(h==null?void 0:h.backgroundColor)||"transparent",f=80,g=160,{layers:p,flatLayers:b,selectLayer:x,toggleVisibility:S,toggleLock:T,deleteLayer:C,duplicateLayer:w,reorderById:R,reorderWithinGroup:k,addToGroup:v,removeFromGroup:z,createEmptyGroup:D,findElementById:O,findParentGroup:A,ungroupLayer:P,generateAllPreviews:G}=L.useLayers({...u,previewSize:g,previewBackgroundColor:m});i.useEffect(()=>{r&&b.length>0&&G()},[r,b.length,m,G]);const Y=i.useMemo(()=>{const _=new Map,ae=Q=>{for(const le of Q)_.set(le.id,le),le.children&&ae(le.children)};return ae(p),_},[p]),U=i.useCallback((_,ae,Q)=>{const le=A(_),Re=A(ae);le&&!Re?z(_,ae,Q):R(_,ae,Q)},[A,z,R]),W=ld({onReorder:U,onDropIntoGroup:v,onDropIntoGroupAtPosition:(_,ae)=>v(_,ae),onGroupReorder:k,onRemoveFromGroup:z,findParentGroup:A}),F=_=>[..._].reverse().map(Q=>t.jsxs(i.Fragment,{children:[t.jsx(xd,{layer:Q,isOver:W.overId===Q.id,dropPosition:W.overId===Q.id?W.dropPosition:null,isDragActive:!!W.activeId,showPreviewImages:r,previewDisplaySize:f,onSelect:x,onToggleVisibility:S,onToggleLock:T,onDuplicate:w,onDelete:C}),Q.children&&F(Q.children),Q.isGroup&&t.jsx(bd,{groupId:Q.id,isOver:W.overId===`group-footer::${Q.id}`,depth:Q.depth})]},Q.id)),H=_=>[..._].reverse().map(Q=>t.jsxs(i.Fragment,{children:[t.jsx(vd,{layer:Q,showPreviewImages:r,previewDisplaySize:f,onSelect:x,onToggleVisibility:S,onToggleLock:T,onDuplicate:w,onDelete:C}),Q.children&&H(Q.children)]},Q.id)),K=W.activeId?Y.get(W.activeId):null,{width:M,height:Z,flex:V,...J}=o,ne=M||(l.includes("w-full")?"100%":e?`${e}px`:void 0),pe=n||Z||void 0,B=V!==void 0?V:pe==="100%"||pe==="100vh"?1:void 0;return t.jsxs("div",{className:`layers-panel ${l}`,style:{width:ne,height:pe,flex:B,display:"flex",flexDirection:"column",backgroundColor:"transparent",minHeight:0,...J},children:[(d||a)&&t.jsxs("div",{style:{padding:"10px 16px",borderBottom:"1px solid var(--border-primary, #e5e5e5)",fontWeight:500,fontSize:13,color:"var(--text-secondary, #666)",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[d&&t.jsxs("span",{children:["Layers (",b.length,")"]}),!d&&t.jsx("span",{}),a&&t.jsxs("button",{onClick:D,style:{background:"none",border:"none",cursor:"pointer",fontSize:13,fontWeight:500,color:"var(--primary, var(--accent-primary, #007AFF))",display:"flex",alignItems:"center",gap:4},children:[t.jsx(L.Icon,{icon:"lucide:folder-plus",style:{fontSize:16}}),"Add Group"]})]}),t.jsxs("div",{style:{flex:1,overflow:"auto",minHeight:0},children:[p.length>0?s?t.jsxs(Pc,{sensors:W.sensors,collisionDetection:gd,onDragStart:W.onDragStart,onDragMove:W.onDragMove,onDragOver:W.onDragOver,onDragEnd:W.onDragEnd,onDragCancel:W.onDragCancel,children:[F(p),t.jsx(sd,{dropAnimation:null,children:K?t.jsx(yd,{layer:K,showPreviewImages:r,previewDisplaySize:f}):null})]}):H(p):t.jsx("div",{style:{padding:24,textAlign:"center",color:"var(--text-secondary, #999)",fontSize:12},children:"No layers"}),s&&p.length>1&&t.jsx("div",{style:{padding:"12px 16px",textAlign:"center",color:"var(--text-secondary, #aaa)",fontSize:12},children:"Drag to reorder"})]})]})},vd=({layer:e,showPreviewImages:n,previewDisplaySize:r,onSelect:s,onToggleVisibility:a,onToggleLock:o,onDuplicate:l,onDelete:d})=>{const u=e.depth>0,h=u?e.depth*24:0,m=e.isSelected?{outline:"3px solid var(--primary, var(--accent-primary, #007AFF))",outlineOffset:"2px"}:{},f={paddingLeft:h+8,paddingRight:8,paddingTop:e.isGroup?6:8,paddingBottom:e.isGroup?6:8,minHeight:e.isGroup?32:36,display:"flex",alignItems:"center",gap:8,cursor:"pointer"};return(u||e.isGroup)&&(f.backgroundColor="var(--surface-secondary, rgba(0,0,0,0.04))"),e.isGroup?t.jsxs("div",{style:f,children:[t.jsx(L.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)"}}),t.jsx("span",{onClick:()=>s(e.id),style:{fontSize:13,fontWeight:600,flex:1},children:e.name})]},e.id):t.jsxs("div",{style:f,children:[n&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,onClick:()=>s(e.id),style:{width:r,height:r,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)",cursor:"pointer",...m}}):t.jsx("div",{style:{width:r,height:r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4,cursor:"pointer",...m},onClick:()=>s(e.id),children:t.jsx(L.Icon,{icon:X.fileText})}),t.jsx("div",{style:{flex:1},onClick:()=>s(e.id)}),t.jsxs("div",{style:{display:"flex",gap:4},children:[t.jsx(Dt,{title:e.visible?"Hide":"Show",onClick:()=>a(e.id),style:{opacity:e.visible?1:.4},children:t.jsx(L.Icon,{icon:e.visible?X.eye:X.eyeOff,className:"size-6"})}),t.jsx(Dt,{title:e.locked?"Unlock":"Lock",onClick:()=>o(e.id),style:{opacity:e.locked?1:.4},children:t.jsx(L.Icon,{icon:e.locked?X.lock:X.lockOpen,className:"size-6"})}),t.jsx(Dt,{title:"Duplicate",onClick:()=>l(e.id),children:t.jsx(L.Icon,{icon:X.copy,className:"size-6"})}),t.jsx(Dt,{title:"Delete",onClick:()=>d(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(L.Icon,{icon:X.trash,className:"size-6"})})]})]},e.id)},jd=Object.freeze(Object.defineProperty({__proto__:null,LayersPanel:sa},Symbol.toStringTag,{value:"Module"}));function Cd(){const[e,n]=i.useState(!1);return i.useEffect(()=>{if(typeof document>"u")return;const r=()=>n(document.documentElement.classList.contains("dark"));r();const s=new MutationObserver(r);return s.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>s.disconnect()},[]),e}const yn=({isOpen:e,onClose:n,title:r,description:s,children:a,placement:o="bottom",height:l,maxHeight:d="70vh",width:u,maxWidth:h="400px",showCloseButton:m=!0,headerActions:f,hideVisibleTitle:g=!1,hideHandle:p=!1,disableScrollWrapper:b=!1,disableOverflowHidden:x=!1,"data-testid":S})=>{const T=o==="bottom"?l||d:void 0,w=Cd()?.65:.4;return t.jsx(c.Drawer,{open:e,onOpenChange:R=>!R&&n(),children:t.jsxs(c.DrawerContent,{placement:o,width:u,maxWidth:h,hideHandle:p||o!=="bottom",showOverlay:!0,overlayOpacity:w,className:x?"":"overflow-hidden",style:{...T&&o==="bottom"?{height:T}:{},zIndex:"var(--z-drawer, 10002)"},"data-testid":S,"data-preserve-selection":!0,children:[t.jsx(c.DrawerTitle,{className:"sr-only",children:r}),s&&t.jsx(c.DrawerDescription,{className:"sr-only",children:s}),b?t.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[(!g||f||m)&&t.jsxs("div",{className:"border-border-primary flex shrink-0 items-center justify-between gap-4 border-b px-6 py-4",children:[!g&&t.jsx("h2",{className:"text-foreground text-lg font-semibold",children:r}),t.jsxs("div",{className:"flex items-center gap-2",children:[f,m&&t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:n,className:"min-w-8 px-2","aria-label":"Close drawer",children:t.jsx(L.Icon,{icon:X.close,className:"size-6"})})]})]}),a]}):t.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[(!g||f||m)&&t.jsxs("div",{className:"border-border-primary flex shrink-0 items-center justify-between gap-4 border-b px-6 py-4",children:[!g&&t.jsx("h2",{className:"text-foreground text-lg font-semibold",children:r}),t.jsxs("div",{className:"flex items-center gap-2",children:[f,m&&t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:n,className:"min-w-8 px-2","aria-label":"Close drawer",children:t.jsx(L.Icon,{icon:X.close,className:"size-6"})})]})]}),a]})]})})};function tr(){return(tr=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e}).apply(this,arguments)}function oa(e,n){if(e==null)return{};var r,s,a={},o=Object.keys(e);for(s=0;s<o.length;s++)n.indexOf(r=o[s])>=0||(a[r]=e[r]);return a}function sn(e){var n=i.useRef(e),r=i.useRef(function(s){n.current&&n.current(s)});return n.current=e,r.current}var hn=function(e,n,r){return n===void 0&&(n=0),r===void 0&&(r=1),e>r?r:e<n?n:e},on=function(e){return"touches"in e},_r=function(e){return e&&e.ownerDocument.defaultView||self},xo=function(e,n,r){var s=e.getBoundingClientRect(),a=on(n)?function(o,l){for(var d=0;d<o.length;d++)if(o[d].identifier===l)return o[d];return o[0]}(n.touches,r):n;return{left:hn((a.pageX-(s.left+_r(e).pageXOffset))/s.width),top:hn((a.pageY-(s.top+_r(e).pageYOffset))/s.height)}},bo=function(e){!on(e)&&e.preventDefault()},aa=i.memo(function(e){var n=e.onMove,r=e.onKey,s=e.onEnd,a=oa(e,["onMove","onKey","onEnd"]),o=i.useRef(null),l=sn(n),d=sn(r),u=sn(s),h=i.useRef(null),m=i.useRef(!1),f=i.useMemo(function(){var S=function(w){bo(w),(on(w)?w.touches.length>0:w.buttons>0)&&o.current?l(xo(o.current,w,h.current)):(C(!1),u())},T=function(){C(!1),u()};function C(w){var R=m.current,k=_r(o.current),v=w?k.addEventListener:k.removeEventListener;v(R?"touchmove":"mousemove",S),v(R?"touchend":"mouseup",T)}return[function(w){var R=w.nativeEvent,k=o.current;if(k&&(bo(R),!function(z,D){return D&&!on(z)}(R,m.current)&&k)){if(on(R)){m.current=!0;var v=R.changedTouches||[];v.length&&(h.current=v[0].identifier)}k.focus(),l(xo(k,R,h.current)),C(!0)}},function(w){var R=w.which||w.keyCode;R<37||R>40||(w.preventDefault(),d({left:R===39?.05:R===37?-.05:0,top:R===40?.05:R===38?-.05:0}))},function(w){var R=w.which||w.keyCode;R>=37&&R<=40&&u()},C]},[d,l,u]),g=f[0],p=f[1],b=f[2],x=f[3];return i.useEffect(function(){return x},[x]),i.createElement("div",tr({},a,{onTouchStart:g,onMouseDown:g,className:"react-colorful__interactive",ref:o,onKeyDown:p,onKeyUp:b,tabIndex:0,role:"slider"}))}),as=function(e){return e.filter(Boolean).join(" ")},ia=function(e){var n=e.color,r=e.left,s=e.top,a=s===void 0?.5:s,o=as(["react-colorful__pointer",e.className]);return i.createElement("div",{className:o,style:{top:100*a+"%",left:100*r+"%"}},i.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:n}}))},Be=function(e,n,r){return n===void 0&&(n=0),r===void 0&&(r=Math.pow(10,n)),Math.round(r*e)/r},wd=function(e){return Ed(Pr(e))},Pr=function(e){return e[0]==="#"&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Be(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?Be(parseInt(e.substring(6,8),16)/255,2):1}},Sd=function(e){return Nd(kd(e))},Td=function(e){var n=e.s,r=e.v,s=e.a,a=(200-n)*r/100;return{h:Be(e.h),s:Be(a>0&&a<200?n*r/100/(a<=100?a:200-a)*100:0),l:Be(a/2),a:Be(s,2)}},$r=function(e){var n=Td(e);return"hsl("+n.h+", "+n.s+"%, "+n.l+"%)"},kd=function(e){var n=e.h,r=e.s,s=e.v,a=e.a;n=n/360*6,r/=100,s/=100;var o=Math.floor(n),l=s*(1-r),d=s*(1-(n-o)*r),u=s*(1-(1-n+o)*r),h=o%6;return{r:Be(255*[s,d,l,l,u,s][h]),g:Be(255*[u,s,s,d,l,l][h]),b:Be(255*[l,l,u,s,s,d][h]),a:Be(a,2)}},Mn=function(e){var n=e.toString(16);return n.length<2?"0"+n:n},Nd=function(e){var n=e.r,r=e.g,s=e.b,a=e.a,o=a<1?Mn(Be(255*a)):"";return"#"+Mn(n)+Mn(r)+Mn(s)+o},Ed=function(e){var n=e.r,r=e.g,s=e.b,a=e.a,o=Math.max(n,r,s),l=o-Math.min(n,r,s),d=l?o===n?(r-s)/l:o===r?2+(s-n)/l:4+(n-r)/l:0;return{h:Be(60*(d<0?d+6:d)),s:Be(o?l/o*100:0),v:Be(o/255*100),a}},Rd=i.memo(function(e){var n=e.hue,r=e.onChange,s=e.onChangeEnd,a=as(["react-colorful__hue",e.className]);return i.createElement("div",{className:a},i.createElement(aa,{onMove:function(o){r({h:360*o.left})},onKey:function(o){r({h:hn(n+360*o.left,0,360)})},onEnd:s,"aria-label":"Hue","aria-valuenow":Be(n),"aria-valuemax":"360","aria-valuemin":"0"},i.createElement(ia,{className:"react-colorful__hue-pointer",left:n/360,color:$r({h:n,s:100,v:100,a:1})})))}),Id=i.memo(function(e){var n=e.hsva,r=e.onChange,s=e.onChangeEnd,a={backgroundColor:$r({h:n.h,s:100,v:100,a:1})};return i.createElement("div",{className:"react-colorful__saturation",style:a},i.createElement(aa,{onMove:function(o){r({s:100*o.left,v:100-100*o.top})},onKey:function(o){r({s:hn(n.s+100*o.left,0,100),v:hn(n.v-100*o.top,0,100)})},onEnd:s,"aria-label":"Color","aria-valuetext":"Saturation "+Be(n.s)+"%, Brightness "+Be(n.v)+"%"},i.createElement(ia,{className:"react-colorful__saturation-pointer",top:1-n.v/100,left:n.s/100,color:$r(n)})))}),la=function(e,n){if(e===n)return!0;for(var r in e)if(e[r]!==n[r])return!1;return!0},Dd=function(e,n){return e.toLowerCase()===n.toLowerCase()||la(Pr(e),Pr(n))};function Ad(e,n,r,s){var a=sn(r),o=sn(s),l=i.useState(function(){return e.toHsva(n)}),d=l[0],u=l[1],h=i.useRef({color:n,hsva:d}),m=i.useRef(!1);i.useEffect(function(){if(!e.equal(n,h.current.color)){var p=e.toHsva(n);h.current={hsva:p,color:n},u(p),m.current=!1}},[n,e]),i.useEffect(function(){var p;la(d,h.current.hsva)||e.equal(p=e.fromHsva(d),h.current.color)||(h.current={hsva:d,color:p},a(p),m.current=!0)},[d,e,a]);var f=i.useCallback(function(p){u(function(b){return Object.assign({},b,p)})},[]),g=i.useCallback(function(){m.current&&(m.current=!1,o(h.current.color))},[o]);return[d,f,g]}var Md=typeof window<"u"?i.useLayoutEffect:i.useEffect,Fd=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},yo=new Map,Ld=function(e){Md(function(){var n=e.current?e.current.ownerDocument:document;if(n!==void 0&&!yo.has(n)){var r=n.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,yo.set(n,r);var s=Fd();s&&r.setAttribute("nonce",s),n.head.appendChild(r)}},[])},zd=function(e){var n=e.className,r=e.colorModel,s=e.color,a=s===void 0?r.defaultColor:s,o=e.onChange,l=e.onChangeEnd,d=oa(e,["className","colorModel","color","onChange","onChangeEnd"]),u=i.useRef(null);Ld(u);var h=Ad(r,a,o,l),m=h[0],f=h[1],g=h[2],p=as(["react-colorful",n]);return i.createElement("div",tr({},d,{ref:u,className:p}),i.createElement(Id,{hsva:m,onChange:f,onChangeEnd:g}),i.createElement(Rd,{hue:m.h,onChange:f,onChangeEnd:g,className:"react-colorful__last-control"}))},Od={defaultColor:"000",toHsva:wd,fromHsva:function(e){return Sd({h:e.h,s:e.s,v:e.v,a:1})},equal:Dd},ca=function(e){return i.createElement(zd,tr({},e,{colorModel:Od}))};const Bt=i.memo(({value:e,onChange:n,documentColors:r=[],imageColors:s=[],icon:a,showSquare:o=!1,allowTransparent:l=!1,isOpen:d,onOpenChange:u,embedded:h=!1})=>{const[m,f]=i.useState(!1),[g,p]=i.useState(e),[b,x]=i.useState(e),S=i.useRef(0),T=i.useRef(null),C=i.useRef(!1),w=i.useRef(n);w.current=n;const R=d!==void 0?d:m,k=u||f;i.useEffect(()=>{!C.current&&e!=="transparent"&&(p(e),x(e))},[e]);const v=U=>{C.current=!0,x(U),p(U);const W=Date.now(),F=W-S.current;F>=16?(w.current({target:{value:U}}),S.current=W,T.current&&(clearTimeout(T.current),T.current=null)):(T.current&&clearTimeout(T.current),T.current=setTimeout(()=>{w.current({target:{value:U}}),S.current=Date.now(),T.current=null,C.current=!1},16-F))},z=i.useRef(b);z.current=b,i.useEffect(()=>{const U=()=>{T.current&&(clearTimeout(T.current),T.current=null,w.current({target:{value:z.current}})),setTimeout(()=>{C.current=!1},50)};return window.addEventListener("pointerup",U),window.addEventListener("pointercancel",U),()=>{window.removeEventListener("pointerup",U),window.removeEventListener("pointercancel",U)}},[]),i.useEffect(()=>()=>{T.current&&clearTimeout(T.current)},[]);const D=U=>{const W=U.target.value;p(W);const F=/^#?([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})$/,H=W.startsWith("#")?W:`#${W}`;F.test(H)&&w.current({target:{value:H}})},O=U=>{v(U)},A=()=>{w.current({target:{value:"transparent"}})},P=e==="transparent",G=o?t.jsx("div",{className:`size-8 md:size-6 rounded-md border border-border-primary ${P?"transparent-pattern-small":""}`,style:P?{}:{backgroundColor:e}}):t.jsxs("div",{className:"relative flex items-center justify-center h-5 w-5",children:[a?t.jsx("span",{className:"flex items-center -translate-y-0.5",children:a}):t.jsx("span",{className:"font-bold text-lg leading-none -translate-y-0.5",children:"A"}),t.jsx("div",{className:`absolute bottom-0 left-1/2 -translate-x-1/2 h-[3px] w-4 rounded-sm ${P?"transparent-pattern-small":""}`,style:P?{}:{backgroundColor:e}})]}),Y=t.jsxs("div",{className:"space-y-4 min-w-[232px]",children:[l&&t.jsxs(c.Button,{variant:"ghost",className:`flex w-full cursor-pointer items-center justify-start gap-2 rounded-lg ${P?"bg-primary/10":""}`,onClick:A,children:[t.jsx("div",{className:"transparent-pattern-small h-6 w-6 rounded"}),t.jsx("span",{className:"text-sm font-medium",children:"Transparent"})]}),t.jsx("div",{className:"w-[200px]",children:t.jsx(ca,{color:P?"#ffffff":b,onChange:v})}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{htmlFor:"hex-input",className:"text-sm font-medium uppercase text-foreground/60",children:"HEX"}),t.jsx("input",{id:"hex-input",type:"text",className:"w-24 rounded-lg border border-divider bg-field px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none",value:g,onChange:D,placeholder:"#000000",maxLength:7})]}),r.length>0&&t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Document colors"}),t.jsx("div",{className:"grid grid-cols-8 gap-1",children:r.map((U,W)=>t.jsx("button",{className:`h-6 w-6 cursor-pointer rounded border-2 transition-all duration-150 hover:scale-110 ${U===e?"border-primary":"border-transparent"}`,style:{backgroundColor:U},onClick:()=>O(U),"aria-label":U},W))})]}),s.length>0&&t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Image colors"}),t.jsx("div",{className:"grid grid-cols-8 gap-1",children:s.map((U,W)=>t.jsx("button",{className:`h-6 w-6 cursor-pointer rounded border-2 transition-all duration-150 hover:scale-110 ${U===e?"border-primary":"border-transparent"}`,style:{backgroundColor:U},onClick:()=>O(U),"aria-label":U},`img-${W}`))})]})]});return h?Y:t.jsxs(c.Popover,{open:R,onOpenChange:k,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:o?"flex items-center justify-center bg-transparent border-0 p-0 cursor-pointer rounded-md hover:opacity-80 transition-opacity":"toolbar-btn","aria-label":"Color Picker",children:G})}),t.jsx(c.PopoverContent,{className:"w-auto",maxZIndex:!0,children:Y})]})});Bt.displayName="ColorPickerDropdown";const _d=({stroke:e,onChange:n})=>{const[r,s]=i.useState((e==null?void 0:e.enabled)||!1),a=(e==null?void 0:e.enabled)||!1,o=(e==null?void 0:e.color)||"#000000",l=(e==null?void 0:e.width)||5,d=(e==null?void 0:e.lineCap)||"butt",u=(e==null?void 0:e.lineJoin)||"miter",h=(e==null?void 0:e.opacity)!==void 0?e.opacity:1,m=S=>{n(S?{enabled:!0,color:o,width:l,lineCap:d,lineJoin:u,opacity:h}:void 0),s(S)},f=S=>{e&&n({...e,color:S.target.value})},g=S=>{e&&n({...e,width:S[0]})},p=S=>{e&&n({...e,opacity:S[0]})},b=S=>{e&&n({...e,lineCap:S})},x=S=>{e&&n({...e,lineJoin:S})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:s,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Stroke"}),t.jsx(c.Switch,{checked:a,onCheckedChange:m})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsx(c.Fieldset,{className:"flex flex-col gap-sm",children:t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{children:"Color"}),t.jsx(Bt,{value:o,onChange:f})]})}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Width"}),t.jsx(c.Slider,{value:[l],onValueChange:g,min:1,max:50,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[l,"px"]})]}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Opacity"}),t.jsx(c.Slider,{value:[h],onValueChange:p,min:0,max:1,step:.01}),t.jsxs("div",{className:"text-sm text-text-muted",children:[Math.round(h*100),"%"]})]}),t.jsxs(c.TooltipProvider,{delayDuration:300,children:[t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Line Cap"}),t.jsxs(c.RadioGroup,{value:d,onValueChange:b,orientation:"horizontal",children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"butt",id:"cap-butt",children:"Butt"})})}),t.jsx(c.TooltipContent,{children:"Butt - Flat edges"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"round",id:"cap-round",children:"Round"})})}),t.jsx(c.TooltipContent,{children:"Round - Rounded edges"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"square",id:"cap-square",children:"Square"})})}),t.jsx(c.TooltipContent,{children:"Square - Extended square edges"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Line Join"}),t.jsxs(c.RadioGroup,{value:u,onValueChange:x,orientation:"horizontal",children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"miter",id:"join-miter",children:"Miter"})})}),t.jsx(c.TooltipContent,{children:"Miter - Sharp corners"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"round",id:"join-round",children:"Round"})})}),t.jsx(c.TooltipContent,{children:"Round - Rounded corners"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"bevel",id:"join-bevel",children:"Bevel"})})}),t.jsx(c.TooltipContent,{children:"Bevel - Beveled corners"})]})]})]})]})]})]})},Pd=({mask:e,index:n,isFirst:r,isLast:s,onUpdate:a,onRemove:o,onReorder:l})=>{var R;const[d,u]=i.useState(!1),h=k=>{switch(k){case"clip":return"🎭";case"alpha":return"🌫️";case"luma":return"🌗";case"distress":return"⚡";default:return"🎭"}},m=k=>{switch(k){case"clip":return"Clip Mask";case"alpha":return"Alpha Mask";case"luma":return"Luma Mask";case"distress":return"Distress Mask";default:return"Unknown Mask"}},f=k=>{a({opacity:k})},g=k=>{a({feather:k})},p=()=>{a({inverted:!e.inverted})},b=k=>{const v=k.target.value;if(v==="image"){const z=e.maskElement.transformType==="image"&&e.maskElement.imageUrl||"";a({maskElement:{transformType:"image",imageUrl:z,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{type:"image",width:200,height:200,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}}})}else a(v==="shape"?{maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{type:"shape",shapeType:"star",width:200,height:200,fillColor:"#000000",fillOpacity:1,points:5,innerRadius:.4}}}:{maskElement:{transformType:"custom",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:"MASK",fontSize:80,fontFamily:"Anton",color:"#000000"}})},x=k=>{const v=k.target.value;e.maskElement.transformType==="shape"&&a({maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...e.maskElement.transformData,shapeType:v}}})},S=k=>{if(e.maskElement.transformType!=="shape"){const v=e.maskElement;a({maskElement:{transformType:e.maskElement.transformType,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:k.target.value,fontSize:v.fontSize||80,fontFamily:v.fontFamily||"Anton",color:v.color||"#000000"}})}},T=k=>{if(e.maskElement.transformType==="image"){const v=e.maskElement;a({maskElement:{transformType:"image",imageUrl:k.target.value,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:v.transformData||{type:"image",width:200,height:200,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}}})}},C=k=>{if(e.maskElement.transformType==="image"){const v=e.maskElement;a({maskElement:{transformType:"image",imageUrl:v.imageUrl||"",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...v.transformData,width:k,height:k}}})}else if(e.maskElement.transformType==="shape")a({maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...e.maskElement.transformData,width:k,height:k}}});else{const v=e.maskElement;a({maskElement:{transformType:e.maskElement.transformType,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:v.text||"MASK",fontSize:k,fontFamily:v.fontFamily||"Anton",color:v.color||"#000000"}})}},w=()=>{var k,v;return e.maskElement.transformType==="image"?((k=e.maskElement.transformData)==null?void 0:k.width)||200:e.maskElement.transformType==="shape"?((v=e.maskElement.transformData)==null?void 0:v.width)||200:e.maskElement.fontSize||80};return t.jsxs("div",{className:"rounded-md border border-border-secondary bg-bg-tertiary p-lg",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-lg",children:[t.jsx("span",{className:"text-lg",children:h(e.type)}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:m(e.type)}),t.jsxs("small",{className:"text-sm text-text-muted",children:["#",n+1]})]})]}),t.jsx("div",{className:"flex gap-1",children:t.jsxs(c.Tooltip,{delay:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{size:"icon",variant:"ghost","aria-label":"Toggle mask details","aria-expanded":d,onClick:()=>u(!d),children:d?"▼":"▶"})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:d?"Collapse":"Expand"})})]})})]}),d&&t.jsxs("div",{className:"mt-xl flex flex-col gap-xl border-t border-border-secondary pt-xl",children:[t.jsxs(c.Slider,{className:"slider-no-fill",value:[e.opacity||1],onValueChange:k=>f(k[0]),min:0,max:1,step:.01,children:[t.jsx(c.Label,{children:"Opacity"}),t.jsx(c.Slider.Output,{children:({state:k})=>`${Math.round(k.values[0]*100)}%`}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]}),t.jsxs(c.Slider,{className:"slider-no-fill",value:[e.feather||0],onValueChange:k=>g(k[0]),min:0,max:50,step:1,children:[t.jsx(c.Label,{children:"Feather"}),t.jsx(c.Slider.Output,{children:({state:k})=>`${k.values[0]}px`}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]}),t.jsxs("label",{className:"flex cursor-pointer items-center gap-md text-base text-text-secondary",children:[t.jsx("input",{type:"checkbox",checked:e.inverted||!1,onChange:p,className:"h-4 w-4 cursor-pointer"}),t.jsx("span",{children:"Invert Mask"})]}),t.jsxs("div",{className:"flex flex-col gap-lg rounded-md border border-border-dark bg-bg-secondary p-xl",children:[t.jsx("div",{className:"mb-xs text-md font-semibold uppercase tracking-wide text-accent-primary",children:"Mask Shape"}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-type-${e.id}`,className:"text-base text-text-secondary",children:"Type"}),t.jsxs("select",{id:`mask-type-${e.id}`,value:e.maskElement.transformType==="shape"?"shape":e.maskElement.transformType==="image"?"image":"custom",onChange:b,className:"w-full cursor-pointer rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",children:[t.jsx("option",{value:"custom",children:"Text"}),t.jsx("option",{value:"shape",children:"Shape"}),t.jsx("option",{value:"image",children:"Image"})]})]}),e.maskElement.transformType==="shape"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-shape-${e.id}`,className:"text-base text-text-secondary",children:"Shape"}),t.jsxs("select",{id:`mask-shape-${e.id}`,value:((R=e.maskElement.transformData)==null?void 0:R.shapeType)||"star",onChange:x,className:"w-full cursor-pointer rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",children:[t.jsx("option",{value:"rectangle",children:"Rectangle"}),t.jsx("option",{value:"circle",children:"Circle"}),t.jsx("option",{value:"ellipse",children:"Ellipse"}),t.jsx("option",{value:"star",children:"Star"})]})]}),e.maskElement.transformType==="image"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-image-${e.id}`,className:"text-base text-text-secondary",children:"Image URL"}),t.jsx("input",{id:`mask-image-${e.id}`,type:"text",value:e.maskElement.imageUrl||"",onChange:T,className:"w-full rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",placeholder:"https://... or data:image/..."})]}),e.maskElement.transformType!=="shape"&&e.maskElement.transformType!=="image"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-text-${e.id}`,className:"text-base text-text-secondary",children:"Text"}),t.jsx("input",{id:`mask-text-${e.id}`,type:"text",value:e.maskElement.text||"MASK",onChange:S,className:"w-full rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",placeholder:"Mask text"})]}),t.jsxs(c.Slider,{className:"slider-no-fill",value:[w()],onValueChange:k=>C(k[0]),min:20,max:500,step:10,children:[t.jsx(c.Label,{children:"Size"}),t.jsx(c.Slider.Output,{}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]})]}),t.jsxs("div",{className:"mt-md flex gap-sm",children:[t.jsx("button",{onClick:()=>l("up"),disabled:r,title:"Move Up","aria-label":"Move mask up",className:"flex-1 cursor-pointer rounded-md border border-border-dark bg-bg-hover px-md py-sm text-xl text-text-secondary transition-all duration-slow hover:border-accent-primary hover:bg-bg-dark-hover hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-disabled",children:"↑"}),t.jsx("button",{onClick:()=>l("down"),disabled:s,title:"Move Down","aria-label":"Move mask down",className:"flex-1 cursor-pointer rounded-md border border-border-dark bg-bg-hover px-md py-sm text-xl text-text-secondary transition-all duration-slow hover:border-accent-primary hover:bg-bg-dark-hover hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-disabled",children:"↓"}),t.jsx("button",{onClick:o,title:"Remove Mask","aria-label":"Remove mask",className:"flex-[2] cursor-pointer rounded-md border border-error-light bg-error px-md py-sm text-base font-semibold text-text-on-dark transition-all duration-slow hover:bg-error-light",children:"✕ Remove"})]})]})]})},$d=({masks:e=[],onChange:n})=>{const[r,s]=i.useState(e.length>0),[a,o]=i.useState(!1),l=m=>{const f={id:`mask-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:m,maskElement:Bd(m),inverted:!1,feather:0,opacity:1};n([...e,f]),o(!1)},d=m=>{n(e.filter(f=>f.id!==m))},u=(m,f)=>{n(e.map(g=>g.id===m?{...g,...f}:g))},h=(m,f)=>{const g=e.findIndex(b=>b.id===m);if(g===-1)return;const p=[...e];f==="up"&&g>0?[p[g],p[g-1]]=[p[g-1],p[g]]:f==="down"&&g<e.length-1&&([p[g],p[g+1]]=[p[g+1],p[g]]),n(p)};return t.jsxs("div",{className:"mb-xl rounded-xl border border-border-primary bg-bg-secondary p-xl",children:[t.jsxs("div",{className:"mb-md flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-md text-xl font-semibold text-text-primary",children:[t.jsxs("span",{children:["Masks (",e.length,")"]}),e.length>0&&t.jsx("button",{onClick:()=>s(!r),className:"rounded-lg border-none bg-transparent px-md py-xs text-base text-text-muted transition-colors duration-fast hover:text-text-primary",title:r?"Collapse":"Expand",children:r?"▼":"▶"})]}),t.jsx("div",{className:"flex gap-sm",children:t.jsx(c.Button,{variant:"default",onClick:()=>o(!a),className:"rounded-lg bg-accent px-xl py-sm font-semibold text-text-on-accent transition-all duration-medium hover:bg-accent-medium",children:"+ Add"})})]}),a&&t.jsxs("div",{className:"mb-md mt-md flex flex-col gap-sm rounded-lg border border-border-medium bg-surface p-md",children:[t.jsxs("button",{onClick:()=>l("clip"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🎭"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Clip Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Hard edge clipping (text, shapes)"})]})]}),t.jsxs("button",{onClick:()=>l("alpha"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🌫️"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Alpha Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Transparency-based masking"})]})]}),t.jsxs("button",{onClick:()=>l("luma"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🌗"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Luma Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Luminosity-based masking"})]})]}),t.jsxs("button",{onClick:()=>l("distress"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"⚡"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Distress Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Vintage/grunge texture effects"})]})]})]}),r&&e.length>0&&t.jsx("div",{className:"mt-xl flex flex-col gap-md",children:e.map((m,f)=>t.jsx(Pd,{mask:m,index:f,isFirst:f===0,isLast:f===e.length-1,onUpdate:g=>u(m.id,g),onRemove:()=>d(m.id),onReorder:g=>h(m.id,g)},m.id))}),e.length===0&&t.jsxs("div",{className:"p-3xl text-center text-text-secondary",children:[t.jsx("p",{className:"mb-xs text-lg",children:"No masks applied"}),t.jsx("small",{className:"text-base text-border-medium",children:'Click "+ Add" to add a mask'})]})]})};function Bd(e){switch(e){case"clip":return{transformType:"custom",text:"MASK",fontSize:80,fontFamily:"Anton",x:0,y:0,rotation:0,color:"#000000"};case"alpha":case"luma":return{transformType:"custom",text:"FADE",fontSize:100,fontFamily:"Arial",x:0,y:0,rotation:0,color:"#888888"};case"distress":return{transformType:"image",imageUrl:"",x:0,y:0,rotation:0,transformData:{type:"image",width:500,height:500,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}};default:return{transformType:"custom",text:"MASK",fontSize:80,x:0,y:0,rotation:0,color:"#000000"}}}const Ud={enabled:!0,style:"worn",intensity:30,fadeAmount:20,grainAmount:15,edgeWear:40,seed:void 0},Wd={enabled:!0,style:"worn",intensity:55,fadeAmount:35,grainAmount:25,edgeWear:60,seed:void 0},Hd={enabled:!0,style:"worn",intensity:75,fadeAmount:50,grainAmount:40,edgeWear:80,seed:void 0},Gd={enabled:!0,style:"cracked",intensity:25,scratchAmount:30,edgeWear:20,seed:void 0},Kd={enabled:!0,style:"cracked",intensity:50,scratchAmount:50,edgeWear:35,seed:void 0},Vd={enabled:!0,style:"cracked",intensity:80,scratchAmount:75,edgeWear:60,seed:void 0},Yd={enabled:!0,style:"grunge",intensity:35,grainAmount:40,fadeAmount:25,seed:void 0},Xd={enabled:!0,style:"grunge",intensity:60,grainAmount:60,fadeAmount:40,seed:void 0},qd={enabled:!0,style:"grunge",intensity:85,grainAmount:80,fadeAmount:55,seed:void 0},Jd={enabled:!0,style:"retro",intensity:30,fadeAmount:30,grainAmount:25,seed:void 0},Zd={enabled:!0,style:"retro",intensity:55,fadeAmount:45,grainAmount:40,seed:void 0},Qd={enabled:!0,style:"retro",intensity:75,fadeAmount:60,grainAmount:55,seed:void 0},eu={worn:{light:Ud,medium:Wd,heavy:Hd},cracked:{light:Gd,medium:Kd,heavy:Vd},grunge:{light:Yd,medium:Xd,heavy:qd},retro:{light:Jd,medium:Zd,heavy:Qd}};function tu(e,n){const r={...eu[e][n]};return r.seed=Date.now(),r}const nu=({distressEffect:e,onChange:n})=>{ye.ensureBuiltinTexturesReady();const[r,s]=i.useState(!1),a=(e==null?void 0:e.enabled)||!1,o=(e==null?void 0:e.style)||"worn",l=(e==null?void 0:e.intensity)||50,d=(e==null?void 0:e.fadeAmount)||30,u=(e==null?void 0:e.grainAmount)||30,h=(e==null?void 0:e.scratchAmount)||30,m=(e==null?void 0:e.edgeWear)||40,f=v=>{n(v?{enabled:!0,style:o,intensity:l,fadeAmount:d,grainAmount:u,scratchAmount:h,edgeWear:m,seed:Date.now()}:void 0)},g=(v,z)=>{const D=tu(v,z);n(D),s(!1)},p=v=>{if(e)if(v==="custom"){const z=e.textureUrl||ye.DISTRESS_TEXTURE_PRESETS[0].textureUrl;ye.preloadTexture(z),n({...e,style:"custom",textureUrl:z,textureOpacity:e.textureOpacity??e.intensity/100})}else n({...e,style:v,seed:Date.now()})},b=v=>{e&&(ye.preloadTexture(v),n({...e,style:"custom",textureUrl:v}))},x=v=>{e&&n({...e,textureOpacity:v[0]/100})},S=v=>{e&&n({...e,intensity:v[0]})},T=v=>{e&&n({...e,fadeAmount:v[0]})},C=v=>{e&&n({...e,grainAmount:v[0]})},w=v=>{e&&n({...e,scratchAmount:v[0]})},R=v=>{e&&n({...e,edgeWear:v[0]})},k=()=>{e&&n({...e,seed:Date.now()})};return t.jsxs(c.Disclosure,{open:a,onOpenChange:f,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Distress Effect"}),t.jsx(c.Switch,{checked:a,onCheckedChange:f,onClick:v=>v.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsx("div",{className:"flex gap-sm",children:t.jsx(c.Button,{variant:"outline",onClick:()=>s(!r),className:"flex-1",children:"Presets"})}),r&&t.jsxs("div",{className:"flex flex-col gap-xl rounded-md border border-border-primary bg-bg-tertiary p-xl",children:[t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Vintage Worn"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Cracked"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Grunge"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Retro Halftone"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","heavy"),className:"flex-1",children:"Heavy"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Style"}),t.jsxs(c.RadioGroup,{value:o,onValueChange:p,orientation:"horizontal",children:[t.jsx(c.Radio,{value:"worn",id:"style-worn",children:"Worn"}),t.jsx(c.Radio,{value:"cracked",id:"style-cracked",children:"Cracked"}),t.jsx(c.Radio,{value:"grunge",id:"style-grunge",children:"Grunge"}),t.jsx(c.Radio,{value:"retro",id:"style-retro",children:"Retro"}),t.jsx(c.Radio,{value:"custom",id:"style-custom",children:"Custom"})]})]}),o==="custom"&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"grid grid-cols-4 gap-1.5",children:ye.DISTRESS_TEXTURE_PRESETS.map(v=>t.jsx("button",{onClick:()=>b(v.textureUrl),className:`aspect-square rounded-md border-2 overflow-hidden transition-colors ${(e==null?void 0:e.textureUrl)===v.textureUrl?"border-accent-primary":"border-border-primary hover:border-border-focus"}`,title:v.name,children:t.jsx("img",{src:v.thumbnailUrl,alt:v.name,className:"w-full h-full object-cover",loading:"lazy"})},v.id))}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Texture Opacity"}),t.jsx(c.Slider,{value:[Math.round(((e==null?void 0:e.textureOpacity)??.5)*100)],onValueChange:x,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[Math.round(((e==null?void 0:e.textureOpacity)??.5)*100),"%"]})]})]}),o!=="custom"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Intensity"}),t.jsx(c.Slider,{value:[l],onValueChange:S,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[l,"%"]})]}),(o==="worn"||o==="grunge"||o==="retro")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Fade"}),t.jsx(c.Slider,{value:[d],onValueChange:T,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[d,"%"]})]}),(o==="worn"||o==="grunge"||o==="retro")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Grain"}),t.jsx(c.Slider,{value:[u],onValueChange:C,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[u,"%"]})]}),o==="cracked"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Scratches"}),t.jsx(c.Slider,{value:[h],onValueChange:w,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[h,"%"]})]}),(o==="worn"||o==="cracked")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Edge Wear"}),t.jsx(c.Slider,{value:[m],onValueChange:R,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[m,"%"]})]}),t.jsx(c.Button,{variant:"outline",onClick:k,className:"w-full",children:"Randomize Pattern"})]})]})};function da(e){return e?!!(e.fill||e.stroke):!1}function ru(e){if(!e)return[];const n=[];return e.fill&&n.push("fill"),e.stroke&&n.push("stroke"),n}function su(e,n="knockout"){if(!e||!da(e))return"No compositing";const r=ru(e),s=e.scope||"group",a=n==="clip"?"clip":"knockout";return r.length===0?"No compositing":r.length===1?`${r[0]} ${a} (${s})`:`${r.slice(0,-1).join(", ")+" & "+r[r.length-1]} ${a} (${s})`}function ou(e){return!e||!da(e)?"No knockout":su(e,"knockout")}const au=({blendMode:e="normal",knockoutParts:n,onChange:r})=>{const s=e==="knockout"||e==="clip",[a,o]=i.useState(s),l=s,d=(n==null?void 0:n.fill)||!1,u=(n==null?void 0:n.stroke)||!1,h=(n==null?void 0:n.scope)||"group",m=b=>{b==="knockout"||b==="clip"?(r(b,{fill:!1,stroke:!0,scope:"artboard"}),o(!0)):(r(b,void 0),o(!1))},f=()=>{n&&r(e,{...n,fill:!d})},g=()=>{n&&r(e,{...n,stroke:!u})},p=b=>{n&&r(e,{...n,scope:b})};return t.jsxs(c.Disclosure,{open:a,onOpenChange:l?o:void 0,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsx("div",{className:"flex items-center justify-between w-full",children:t.jsx(c.Label,{children:"Compositing"})})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Blend Mode"}),t.jsxs(c.RadioGroup,{value:e,onValueChange:m,orientation:"horizontal",children:[t.jsx(c.Radio,{value:"normal",id:"blend-normal",children:"Normal"}),t.jsx(c.Radio,{value:"knockout",id:"blend-knockout",children:"Knockout"})]})]}),l&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-col gap-md border-t border-border-primary pt-2xl",children:[t.jsx("label",{className:"text-base font-medium text-text-secondary",children:"Knockout Parts"}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsxs("label",{className:"flex cursor-pointer flex-col gap-xs rounded-lg border border-border-primary bg-bg-tertiary p-md transition-all duration-fast hover:border-border-secondary hover:bg-bg-hover",onClick:f,children:[t.jsxs("span",{className:"flex items-center gap-sm text-lg font-semibold text-text-primary",children:[t.jsx("span",{className:"text-base",children:d?"☑":"☐"}),"Fill"]}),t.jsx("small",{className:"ml-[22px] text-sm text-text-muted",children:"Element content cuts through"})]}),t.jsxs("label",{className:"flex cursor-pointer flex-col gap-xs rounded-lg border border-border-primary bg-bg-tertiary p-md transition-all duration-fast hover:border-border-secondary hover:bg-bg-hover",onClick:g,children:[t.jsxs("span",{className:"flex items-center gap-sm text-lg font-semibold text-text-primary",children:[t.jsx("span",{className:"text-base",children:u?"☑":"☐"}),"Stroke"]}),t.jsx("small",{className:"ml-[22px] text-sm text-text-muted",children:"Border/outline cuts through"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Knockout Scope"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsxs("button",{className:`flex flex-1 cursor-pointer flex-col gap-xs rounded-lg border p-lg text-center transition-all duration-fast ${h==="group"?"border-accent-primary bg-accent-primary":"border-border-primary bg-bg-tertiary hover:border-border-secondary hover:bg-bg-hover"}`,onClick:()=>p("group"),title:"Knockout within group siblings only",children:[t.jsx("strong",{className:`text-lg ${h==="group"?"text-text-on-accent":"text-text-primary"}`,children:"Group"}),t.jsx("small",{className:`text-sm ${h==="group"?"text-bg-tertiary":"text-text-muted"}`,children:"Affects siblings in group"})]}),t.jsxs("button",{className:`flex flex-1 cursor-pointer flex-col gap-xs rounded-lg border p-lg text-center transition-all duration-fast ${h==="artboard"?"border-accent-primary bg-accent-primary":"border-border-primary bg-bg-tertiary hover:border-border-secondary hover:bg-bg-hover"}`,onClick:()=>p("artboard"),title:"Knockout cuts through to artboard",children:[t.jsx("strong",{className:`text-lg ${h==="artboard"?"text-text-on-accent":"text-text-primary"}`,children:"Artboard"}),t.jsx("small",{className:`text-sm ${h==="artboard"?"text-bg-tertiary":"text-text-muted"}`,children:"Cuts to transparent background"})]})]})]}),t.jsxs("div",{className:"flex flex-col gap-md",children:[t.jsxs("div",{className:"rounded-lg border border-border-primary bg-bg-tertiary p-md",children:[t.jsx("strong",{className:"text-sm font-semibold uppercase tracking-wide text-accent-primary",children:"Effect:"}),t.jsx("p",{className:"mt-xs text-base text-text-secondary",children:ou(n)})]}),t.jsx("div",{className:"rounded-sm border-l-2 border-accent-primary bg-accent-light p-md",children:t.jsxs("small",{className:"text-sm leading-relaxed text-text-secondary",children:[t.jsx("strong",{children:"Tip:"})," Use ",t.jsx("em",{className:"font-semibold not-italic text-accent-primary",children:"Artboard"})," ","scope for t-shirt designs, ",t.jsx("em",{className:"font-semibold not-italic text-accent-primary",children:"Group"})," scope for pillow patterns."]})})]})]})]})]})},iu=$.createLogger("GlyphPicker"),lu=({isOpen:e,onClose:n,character:r,charIndex:s,fontFamily:a,fontWeight:o=400,currentGlyphOverride:l,onSelectGlyph:d,browseAll:u=!1})=>{const[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(null);i.useEffect(()=>{if(!e)return;g(!0),b(null),(u?$.FontAnalyzer.getAllGlyphs(a,o):$.FontAnalyzer.getGlyphAlternates(a,r,o)).then(C=>{C.length===0&&b(u?`No glyphs found in ${a}`:`No alternates found for "${r}" in ${a}`),m(C),g(!1)}).catch(C=>{iu.error("Error loading glyphs:",C),b(u?"Failed to load glyphs":"Failed to load glyph alternates"),g(!1)})},[e,r,a,o,u]);const x=T=>{!u&&T.category==="default"?d(null):d({charIndex:s,glyphIndex:T.glyphIndex,unicode:u?T.unicode:r,alternateName:T.name}),n()},S=u?`Browse All Glyphs - ${a}`:`Alternates for "${r}"`;return t.jsx(c.Drawer,{open:e,onOpenChange:T=>!T&&n(),children:t.jsxs(c.DrawerContent,{placement:"bottom",overlayOpacity:.4,className:"flex flex-col overflow-hidden",style:{zIndex:"var(--z-drawer, 10002)"},children:[t.jsx(c.DrawerTitle,{className:"sr-only",children:S}),t.jsxs("div",{className:"flex items-center justify-between px-3xl pb-2xl pt-2xl border-b border-border-primary",children:[t.jsxs("div",{className:"flex items-center gap-md",children:[t.jsx(Kn,{size:24,className:"text-text-muted"}),t.jsx("h3",{className:"m-0 text-3xl font-semibold text-text-primary",children:S})]}),t.jsx(c.Button,{size:"icon",variant:"ghost",onClick:n,children:t.jsx(L.Icon,{icon:X.close,className:"size-6"})})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-3xl",children:[f&&t.jsx("div",{className:"text-center py-6xl text-text-muted",children:"Loading alternates..."}),p&&t.jsxs("div",{className:"text-center px-3xl py-6xl text-text-placeholder text-xl",children:[p,t.jsx("div",{className:"mt-md text-base",children:"This font may not have alternate glyphs for this character."})]}),!f&&!p&&h.length>0&&t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-xl",children:h.map((T,C)=>{const w=(l==null?void 0:l.glyphIndex)===T.glyphIndex,R=T.category==="default";return t.jsxs("button",{onClick:()=>x(T),className:`
7
+ `},Ol={onDragStart(e){let{active:n}=e;return"Picked up draggable item "+n.id+"."},onDragOver(e){let{active:n,over:r}=e;return r?"Draggable item "+n.id+" was moved over droppable area "+r.id+".":"Draggable item "+n.id+" is no longer over a droppable area."},onDragEnd(e){let{active:n,over:r}=e;return r?"Draggable item "+n.id+" was dropped over droppable area "+r.id:"Draggable item "+n.id+" was dropped."},onDragCancel(e){let{active:n}=e;return"Dragging was cancelled. Draggable item "+n.id+" was dropped."}};function _l(e){let{announcements:n=Ol,container:r,hiddenTextDescribedById:s,screenReaderInstructions:a=zl}=e;const{announce:o,announcement:l}=Ml(),d=Xn("DndLiveRegion"),[u,h]=i.useState(!1);if(i.useEffect(()=>{h(!0)},[]),Fl(i.useMemo(()=>({onDragStart(f){let{active:g}=f;o(n.onDragStart({active:g}))},onDragMove(f){let{active:g,over:p}=f;n.onDragMove&&o(n.onDragMove({active:g,over:p}))},onDragOver(f){let{active:g,over:p}=f;o(n.onDragOver({active:g,over:p}))},onDragEnd(f){let{active:g,over:p}=f;o(n.onDragEnd({active:g,over:p}))},onDragCancel(f){let{active:g,over:p}=f;o(n.onDragCancel({active:g,over:p}))}}),[o,n])),!u)return null;const m=i.createElement(i.Fragment,null,i.createElement(Dl,{id:s,value:a.draggable}),i.createElement(Al,{id:d,announcement:l}));return r?$t.createPortal(m,r):m}var Me;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(Me||(Me={}));function Wn(){}function Qs(e,n){return i.useMemo(()=>({sensor:e,options:n??{}}),[e,n])}function Pl(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return i.useMemo(()=>[...n].filter(s=>s!=null),[...n])}const Et=Object.freeze({x:0,y:0});function Qr(e,n){return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function $l(e,n){const r=Un(e);if(!r)return"0 0";const s={x:(r.x-n.left)/n.width*100,y:(r.y-n.top)/n.height*100};return s.x+"% "+s.y+"%"}function es(e,n){let{data:{value:r}}=e,{data:{value:s}}=n;return r-s}function Bl(e,n){let{data:{value:r}}=e,{data:{value:s}}=n;return s-r}function Mr(e){let{left:n,top:r,height:s,width:a}=e;return[{x:n,y:r},{x:n+a,y:r},{x:n,y:r+s},{x:n+a,y:r+s}]}function Po(e,n){if(!e||e.length===0)return null;const[r]=e;return r[n]}function eo(e,n,r){return n===void 0&&(n=e.left),r===void 0&&(r=e.top),{x:n+e.width*.5,y:r+e.height*.5}}const Ul=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=eo(n,n.left,n.top),o=[];for(const l of s){const{id:d}=l,u=r.get(d);if(u){const h=Qr(eo(u),a);o.push({id:d,data:{droppableContainer:l,value:h}})}}return o.sort(es)},Wl=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=Mr(n),o=[];for(const l of s){const{id:d}=l,u=r.get(d);if(u){const h=Mr(u),m=a.reduce((g,p,b)=>g+Qr(h[b],p),0),f=Number((m/4).toFixed(4));o.push({id:d,data:{droppableContainer:l,value:f}})}}return o.sort(es)};function Hl(e,n){const r=Math.max(n.top,e.top),s=Math.max(n.left,e.left),a=Math.min(n.left+n.width,e.left+e.width),o=Math.min(n.top+n.height,e.top+e.height),l=a-s,d=o-r;if(s<a&&r<o){const u=n.width*n.height,h=e.width*e.height,m=l*d,f=m/(u+h-m);return Number(f.toFixed(4))}return 0}const Gl=e=>{let{collisionRect:n,droppableRects:r,droppableContainers:s}=e;const a=[];for(const o of s){const{id:l}=o,d=r.get(l);if(d){const u=Hl(d,n);u>0&&a.push({id:l,data:{droppableContainer:o,value:u}})}}return a.sort(Bl)};function Kl(e,n){const{top:r,left:s,bottom:a,right:o}=n;return r<=e.y&&e.y<=a&&s<=e.x&&e.x<=o}const Vl=e=>{let{droppableContainers:n,droppableRects:r,pointerCoordinates:s}=e;if(!s)return[];const a=[];for(const o of n){const{id:l}=o,d=r.get(l);if(d&&Kl(s,d)){const h=Mr(d).reduce((f,g)=>f+Qr(s,g),0),m=Number((h/4).toFixed(4));a.push({id:l,data:{droppableContainer:o,value:m}})}}return a.sort(es)};function Yl(e,n,r){return{...e,scaleX:n&&r?n.width/r.width:1,scaleY:n&&r?n.height/r.height:1}}function $o(e,n){return e&&n?{x:e.left-n.left,y:e.top-n.top}:Et}function Xl(e){return function(r){for(var s=arguments.length,a=new Array(s>1?s-1:0),o=1;o<s;o++)a[o-1]=arguments[o];return a.reduce((l,d)=>({...l,top:l.top+e*d.y,bottom:l.bottom+e*d.y,left:l.left+e*d.x,right:l.right+e*d.x}),{...r})}}const ql=Xl(1);function Bo(e){if(e.startsWith("matrix3d(")){const n=e.slice(9,-1).split(/, /);return{x:+n[12],y:+n[13],scaleX:+n[0],scaleY:+n[5]}}else if(e.startsWith("matrix(")){const n=e.slice(7,-1).split(/, /);return{x:+n[4],y:+n[5],scaleX:+n[0],scaleY:+n[3]}}return null}function Jl(e,n,r){const s=Bo(n);if(!s)return e;const{scaleX:a,scaleY:o,x:l,y:d}=s,u=e.left-l-(1-a)*parseFloat(r),h=e.top-d-(1-o)*parseFloat(r.slice(r.indexOf(" ")+1)),m=a?e.width/a:e.width,f=o?e.height/o:e.height;return{width:m,height:f,top:h,right:u+m,bottom:h+f,left:u}}const Zl={ignoreTransform:!1};function xn(e,n){n===void 0&&(n=Zl);let r=e.getBoundingClientRect();if(n.ignoreTransform){const{transform:h,transformOrigin:m}=Xe(e).getComputedStyle(e);h&&(r=Jl(r,h,m))}const{top:s,left:a,width:o,height:l,bottom:d,right:u}=r;return{top:s,left:a,width:o,height:l,bottom:d,right:u}}function to(e){return xn(e,{ignoreTransform:!0})}function Ql(e){const n=e.innerWidth,r=e.innerHeight;return{top:0,left:0,right:n,bottom:r,width:n,height:r}}function ec(e,n){return n===void 0&&(n=Xe(e).getComputedStyle(e)),n.position==="fixed"}function tc(e,n){n===void 0&&(n=Xe(e).getComputedStyle(e));const r=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(a=>{const o=n[a];return typeof o=="string"?r.test(o):!1})}function qn(e,n){const r=[];function s(a){if(n!=null&&r.length>=n||!a)return r;if(Jr(a)&&a.scrollingElement!=null&&!r.includes(a.scrollingElement))return r.push(a.scrollingElement),r;if(!mn(a)||zo(a)||r.includes(a))return r;const o=Xe(e).getComputedStyle(a);return a!==e&&tc(a,o)&&r.push(a),ec(a,o)?r:s(a.parentNode)}return e?s(e):r}function Uo(e){const[n]=qn(e,1);return n??null}function hr(e){return!Vn||!e?null:Vt(e)?e:qr(e)?Jr(e)||e===Yt(e).scrollingElement?window:mn(e)?e:null:null}function Wo(e){return Vt(e)?e.scrollX:e.scrollLeft}function Ho(e){return Vt(e)?e.scrollY:e.scrollTop}function Fr(e){return{x:Wo(e),y:Ho(e)}}var $e;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})($e||($e={}));function Go(e){return!Vn||!e?!1:e===document.scrollingElement}function Ko(e){const n={x:0,y:0},r=Go(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},s={x:e.scrollWidth-r.width,y:e.scrollHeight-r.height},a=e.scrollTop<=n.y,o=e.scrollLeft<=n.x,l=e.scrollTop>=s.y,d=e.scrollLeft>=s.x;return{isTop:a,isLeft:o,isBottom:l,isRight:d,maxScroll:s,minScroll:n}}const nc={x:.2,y:.2};function rc(e,n,r,s,a){let{top:o,left:l,right:d,bottom:u}=r;s===void 0&&(s=10),a===void 0&&(a=nc);const{isTop:h,isBottom:m,isLeft:f,isRight:g}=Ko(e),p={x:0,y:0},b={x:0,y:0},x={height:n.height*a.y,width:n.width*a.x};return!h&&o<=n.top+x.height?(p.y=$e.Backward,b.y=s*Math.abs((n.top+x.height-o)/x.height)):!m&&u>=n.bottom-x.height&&(p.y=$e.Forward,b.y=s*Math.abs((n.bottom-x.height-u)/x.height)),!g&&d>=n.right-x.width?(p.x=$e.Forward,b.x=s*Math.abs((n.right-x.width-d)/x.width)):!f&&l<=n.left+x.width&&(p.x=$e.Backward,b.x=s*Math.abs((n.left+x.width-l)/x.width)),{direction:p,speed:b}}function sc(e){if(e===document.scrollingElement){const{innerWidth:o,innerHeight:l}=window;return{top:0,left:0,right:o,bottom:l,width:o,height:l}}const{top:n,left:r,right:s,bottom:a}=e.getBoundingClientRect();return{top:n,left:r,right:s,bottom:a,width:e.clientWidth,height:e.clientHeight}}function Vo(e){return e.reduce((n,r)=>Kt(n,Fr(r)),Et)}function oc(e){return e.reduce((n,r)=>n+Wo(r),0)}function ac(e){return e.reduce((n,r)=>n+Ho(r),0)}function Yo(e,n){if(n===void 0&&(n=xn),!e)return;const{top:r,left:s,bottom:a,right:o}=n(e);Uo(e)&&(a<=0||o<=0||r>=window.innerHeight||s>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const ic=[["x",["left","right"],oc],["y",["top","bottom"],ac]];class ts{constructor(n,r){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const s=qn(r),a=Vo(s);this.rect={...n},this.width=n.width,this.height=n.height;for(const[o,l,d]of ic)for(const u of l)Object.defineProperty(this,u,{get:()=>{const h=d(s),m=a[o]-h;return this.rect[u]+m},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class tn{constructor(n){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(r=>{var s;return(s=this.target)==null?void 0:s.removeEventListener(...r)})},this.target=n}add(n,r,s){var a;(a=this.target)==null||a.addEventListener(n,r,s),this.listeners.push([n,r,s])}}function lc(e){const{EventTarget:n}=Xe(e);return e instanceof n?e:Yt(e)}function fr(e,n){const r=Math.abs(e.x),s=Math.abs(e.y);return typeof n=="number"?Math.sqrt(r**2+s**2)>n:"x"in n&&"y"in n?r>n.x&&s>n.y:"x"in n?r>n.x:"y"in n?s>n.y:!1}var yt;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(yt||(yt={}));function no(e){e.preventDefault()}function cc(e){e.stopPropagation()}var fe;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(fe||(fe={}));const Xo={start:[fe.Space,fe.Enter],cancel:[fe.Esc],end:[fe.Space,fe.Enter,fe.Tab]},dc=(e,n)=>{let{currentCoordinates:r}=n;switch(e.code){case fe.Right:return{...r,x:r.x+25};case fe.Left:return{...r,x:r.x-25};case fe.Down:return{...r,y:r.y+25};case fe.Up:return{...r,y:r.y-25}}};class ns{constructor(n){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=n;const{event:{target:r}}=n;this.props=n,this.listeners=new tn(Yt(r)),this.windowListeners=new tn(Xe(r)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(yt.Resize,this.handleCancel),this.windowListeners.add(yt.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(yt.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:n,onStart:r}=this.props,s=n.node.current;s&&Yo(s),r(Et)}handleKeyDown(n){if(Zr(n)){const{active:r,context:s,options:a}=this.props,{keyboardCodes:o=Xo,coordinateGetter:l=dc,scrollBehavior:d="smooth"}=a,{code:u}=n;if(o.end.includes(u)){this.handleEnd(n);return}if(o.cancel.includes(u)){this.handleCancel(n);return}const{collisionRect:h}=s.current,m=h?{x:h.left,y:h.top}:Et;this.referenceCoordinates||(this.referenceCoordinates=m);const f=l(n,{active:r,context:s.current,currentCoordinates:m});if(f){const g=cn(f,m),p={x:0,y:0},{scrollableAncestors:b}=s.current;for(const x of b){const S=n.code,{isTop:T,isRight:C,isLeft:w,isBottom:R,maxScroll:N,minScroll:v}=Ko(x),L=sc(x),D={x:Math.min(S===fe.Right?L.right-L.width/2:L.right,Math.max(S===fe.Right?L.left:L.left+L.width/2,f.x)),y:Math.min(S===fe.Down?L.bottom-L.height/2:L.bottom,Math.max(S===fe.Down?L.top:L.top+L.height/2,f.y))},O=S===fe.Right&&!C||S===fe.Left&&!w,A=S===fe.Down&&!R||S===fe.Up&&!T;if(O&&D.x!==f.x){const _=x.scrollLeft+g.x,G=S===fe.Right&&_<=N.x||S===fe.Left&&_>=v.x;if(G&&!g.y){x.scrollTo({left:_,behavior:d});return}G?p.x=x.scrollLeft-_:p.x=S===fe.Right?x.scrollLeft-N.x:x.scrollLeft-v.x,p.x&&x.scrollBy({left:-p.x,behavior:d});break}else if(A&&D.y!==f.y){const _=x.scrollTop+g.y,G=S===fe.Down&&_<=N.y||S===fe.Up&&_>=v.y;if(G&&!g.x){x.scrollTo({top:_,behavior:d});return}G?p.y=x.scrollTop-_:p.y=S===fe.Down?x.scrollTop-N.y:x.scrollTop-v.y,p.y&&x.scrollBy({top:-p.y,behavior:d});break}}this.handleMove(n,Kt(cn(f,this.referenceCoordinates),p))}}}handleMove(n,r){const{onMove:s}=this.props;n.preventDefault(),s(r)}handleEnd(n){const{onEnd:r}=this.props;n.preventDefault(),this.detach(),r()}handleCancel(n){const{onCancel:r}=this.props;n.preventDefault(),this.detach(),r()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}ns.activators=[{eventName:"onKeyDown",handler:(e,n,r)=>{let{keyboardCodes:s=Xo,onActivation:a}=n,{active:o}=r;const{code:l}=e.nativeEvent;if(s.start.includes(l)){const d=o.activatorNode.current;return d&&e.target!==d?!1:(e.preventDefault(),a==null||a({event:e.nativeEvent}),!0)}return!1}}];function ro(e){return!!(e&&"distance"in e)}function so(e){return!!(e&&"delay"in e)}class rs{constructor(n,r,s){var a;s===void 0&&(s=lc(n.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=n,this.events=r;const{event:o}=n,{target:l}=o;this.props=n,this.events=r,this.document=Yt(l),this.documentListeners=new tn(this.document),this.listeners=new tn(s),this.windowListeners=new tn(Xe(l)),this.initialCoordinates=(a=Un(o))!=null?a:Et,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:n,props:{options:{activationConstraint:r,bypassActivationConstraint:s}}}=this;if(this.listeners.add(n.move.name,this.handleMove,{passive:!1}),this.listeners.add(n.end.name,this.handleEnd),n.cancel&&this.listeners.add(n.cancel.name,this.handleCancel),this.windowListeners.add(yt.Resize,this.handleCancel),this.windowListeners.add(yt.DragStart,no),this.windowListeners.add(yt.VisibilityChange,this.handleCancel),this.windowListeners.add(yt.ContextMenu,no),this.documentListeners.add(yt.Keydown,this.handleKeydown),r){if(s!=null&&s({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(so(r)){this.timeoutId=setTimeout(this.handleStart,r.delay),this.handlePending(r);return}if(ro(r)){this.handlePending(r);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(n,r){const{active:s,onPending:a}=this.props;a(s,n,this.initialCoordinates,r)}handleStart(){const{initialCoordinates:n}=this,{onStart:r}=this.props;n&&(this.activated=!0,this.documentListeners.add(yt.Click,cc,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(yt.SelectionChange,this.removeTextSelection),r(n))}handleMove(n){var r;const{activated:s,initialCoordinates:a,props:o}=this,{onMove:l,options:{activationConstraint:d}}=o;if(!a)return;const u=(r=Un(n))!=null?r:Et,h=cn(a,u);if(!s&&d){if(ro(d)){if(d.tolerance!=null&&fr(h,d.tolerance))return this.handleCancel();if(fr(h,d.distance))return this.handleStart()}if(so(d)&&fr(h,d.tolerance))return this.handleCancel();this.handlePending(d,h);return}n.cancelable&&n.preventDefault(),l(u)}handleEnd(){const{onAbort:n,onEnd:r}=this.props;this.detach(),this.activated||n(this.props.active),r()}handleCancel(){const{onAbort:n,onCancel:r}=this.props;this.detach(),this.activated||n(this.props.active),r()}handleKeydown(n){n.code===fe.Esc&&this.handleCancel()}removeTextSelection(){var n;(n=this.document.getSelection())==null||n.removeAllRanges()}}const uc={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class ss extends rs{constructor(n){const{event:r}=n,s=Yt(r.target);super(n,uc,s)}}ss.activators=[{eventName:"onPointerDown",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;return!r.isPrimary||r.button!==0?!1:(s==null||s({event:r}),!0)}}];const hc={move:{name:"mousemove"},end:{name:"mouseup"}};var Lr;(function(e){e[e.RightClick=2]="RightClick"})(Lr||(Lr={}));class fc extends rs{constructor(n){super(n,hc,Yt(n.event.target))}}fc.activators=[{eventName:"onMouseDown",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;return r.button===Lr.RightClick?!1:(s==null||s({event:r}),!0)}}];const pr={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class pc extends rs{constructor(n){super(n,pr)}static setup(){return window.addEventListener(pr.move.name,n,{capture:!1,passive:!1}),function(){window.removeEventListener(pr.move.name,n)};function n(){}}}pc.activators=[{eventName:"onTouchStart",handler:(e,n)=>{let{nativeEvent:r}=e,{onActivation:s}=n;const{touches:a}=r;return a.length>1?!1:(s==null||s({event:r}),!0)}}];var nn;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(nn||(nn={}));var Hn;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Hn||(Hn={}));function mc(e){let{acceleration:n,activator:r=nn.Pointer,canScroll:s,draggingRect:a,enabled:o,interval:l=5,order:d=Hn.TreeOrder,pointerCoordinates:u,scrollableAncestors:h,scrollableAncestorRects:m,delta:f,threshold:g}=e;const p=xc({delta:f,disabled:!o}),[b,x]=kl(),S=i.useRef({x:0,y:0}),T=i.useRef({x:0,y:0}),C=i.useMemo(()=>{switch(r){case nn.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case nn.DraggableRect:return a}},[r,a,u]),w=i.useRef(null),R=i.useCallback(()=>{const v=w.current;if(!v)return;const L=S.current.x*T.current.x,D=S.current.y*T.current.y;v.scrollBy(L,D)},[]),N=i.useMemo(()=>d===Hn.TreeOrder?[...h].reverse():h,[d,h]);i.useEffect(()=>{if(!o||!h.length||!C){x();return}for(const v of N){if((s==null?void 0:s(v))===!1)continue;const L=h.indexOf(v),D=m[L];if(!D)continue;const{direction:O,speed:A}=rc(v,D,C,n,g);for(const _ of["x","y"])p[_][O[_]]||(A[_]=0,O[_]=0);if(A.x>0||A.y>0){x(),w.current=v,b(R,l),S.current=A,T.current=O;return}}S.current={x:0,y:0},T.current={x:0,y:0},x()},[n,R,s,x,o,l,JSON.stringify(C),JSON.stringify(p),b,h,N,m,JSON.stringify(g)])}const gc={x:{[$e.Backward]:!1,[$e.Forward]:!1},y:{[$e.Backward]:!1,[$e.Forward]:!1}};function xc(e){let{delta:n,disabled:r}=e;const s=Bn(n);return gn(a=>{if(r||!s||!a)return gc;const o={x:Math.sign(n.x-s.x),y:Math.sign(n.y-s.y)};return{x:{[$e.Backward]:a.x[$e.Backward]||o.x===-1,[$e.Forward]:a.x[$e.Forward]||o.x===1},y:{[$e.Backward]:a.y[$e.Backward]||o.y===-1,[$e.Forward]:a.y[$e.Forward]||o.y===1}}},[r,n,s])}function bc(e,n){const r=n!=null?e.get(n):void 0,s=r?r.node.current:null;return gn(a=>{var o;return n==null?null:(o=s??a)!=null?o:null},[s,n])}function yc(e,n){return i.useMemo(()=>e.reduce((r,s)=>{const{sensor:a}=s,o=a.activators.map(l=>({eventName:l.eventName,handler:n(l.handler,s)}));return[...r,...o]},[]),[e,n])}var un;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(un||(un={}));var zr;(function(e){e.Optimized="optimized"})(zr||(zr={}));const oo=new Map;function vc(e,n){let{dragging:r,dependencies:s,config:a}=n;const[o,l]=i.useState(null),{frequency:d,measure:u,strategy:h}=a,m=i.useRef(e),f=S(),g=ln(f),p=i.useCallback(function(T){T===void 0&&(T=[]),!g.current&&l(C=>C===null?T:C.concat(T.filter(w=>!C.includes(w))))},[g]),b=i.useRef(null),x=gn(T=>{if(f&&!r)return oo;if(!T||T===oo||m.current!==e||o!=null){const C=new Map;for(let w of e){if(!w)continue;if(o&&o.length>0&&!o.includes(w.id)&&w.rect.current){C.set(w.id,w.rect.current);continue}const R=w.node.current,N=R?new ts(u(R),R):null;w.rect.current=N,N&&C.set(w.id,N)}return C}return T},[e,o,r,f,u]);return i.useEffect(()=>{m.current=e},[e]),i.useEffect(()=>{f||p()},[r,f]),i.useEffect(()=>{o&&o.length>0&&l(null)},[JSON.stringify(o)]),i.useEffect(()=>{f||typeof d!="number"||b.current!==null||(b.current=setTimeout(()=>{p(),b.current=null},d))},[d,f,p,...s]),{droppableRects:x,measureDroppableContainers:p,measuringScheduled:o!=null};function S(){switch(h){case un.Always:return!1;case un.BeforeDragging:return r;default:return!r}}}function os(e,n){return gn(r=>e?r||(typeof n=="function"?n(e):e):null,[n,e])}function jc(e,n){return os(e,n)}function Cc(e){let{callback:n,disabled:r}=e;const s=Yn(n),a=i.useMemo(()=>{if(r||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:o}=window;return new o(s)},[s,r]);return i.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function Jn(e){let{callback:n,disabled:r}=e;const s=Yn(n),a=i.useMemo(()=>{if(r||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:o}=window;return new o(s)},[r]);return i.useEffect(()=>()=>a==null?void 0:a.disconnect(),[a]),a}function wc(e){return new ts(xn(e),e)}function ao(e,n,r){n===void 0&&(n=wc);const[s,a]=i.useState(null);function o(){a(u=>{if(!e)return null;if(e.isConnected===!1){var h;return(h=u??r)!=null?h:null}const m=n(e);return JSON.stringify(u)===JSON.stringify(m)?u:m})}const l=Cc({callback(u){if(e)for(const h of u){const{type:m,target:f}=h;if(m==="childList"&&f instanceof HTMLElement&&f.contains(e)){o();break}}}}),d=Jn({callback:o});return At(()=>{o(),e?(d==null||d.observe(e),l==null||l.observe(document.body,{childList:!0,subtree:!0})):(d==null||d.disconnect(),l==null||l.disconnect())},[e]),s}function Sc(e){const n=os(e);return $o(e,n)}const io=[];function Tc(e){const n=i.useRef(e),r=gn(s=>e?s&&s!==io&&e&&n.current&&e.parentNode===n.current.parentNode?s:qn(e):io,[e]);return i.useEffect(()=>{n.current=e},[e]),r}function kc(e){const[n,r]=i.useState(null),s=i.useRef(e),a=i.useCallback(o=>{const l=hr(o.target);l&&r(d=>d?(d.set(l,Fr(l)),new Map(d)):null)},[]);return i.useEffect(()=>{const o=s.current;if(e!==o){l(o);const d=e.map(u=>{const h=hr(u);return h?(h.addEventListener("scroll",a,{passive:!0}),[h,Fr(h)]):null}).filter(u=>u!=null);r(d.length?new Map(d):null),s.current=e}return()=>{l(e),l(o)};function l(d){d.forEach(u=>{const h=hr(u);h==null||h.removeEventListener("scroll",a)})}},[a,e]),i.useMemo(()=>e.length?n?Array.from(n.values()).reduce((o,l)=>Kt(o,l),Et):Vo(e):Et,[e,n])}function lo(e,n){n===void 0&&(n=[]);const r=i.useRef(null);return i.useEffect(()=>{r.current=null},n),i.useEffect(()=>{const s=e!==Et;s&&!r.current&&(r.current=e),!s&&r.current&&(r.current=null)},[e]),r.current?cn(e,r.current):Et}function Nc(e){i.useEffect(()=>{if(!Vn)return;const n=e.map(r=>{let{sensor:s}=r;return s.setup==null?void 0:s.setup()});return()=>{for(const r of n)r==null||r()}},e.map(n=>{let{sensor:r}=n;return r}))}function Ec(e,n){return i.useMemo(()=>e.reduce((r,s)=>{let{eventName:a,handler:o}=s;return r[a]=l=>{o(l,n)},r},{}),[e,n])}function qo(e){return i.useMemo(()=>e?Ql(e):null,[e])}const co=[];function Rc(e,n){n===void 0&&(n=xn);const[r]=e,s=qo(r?Xe(r):null),[a,o]=i.useState(co);function l(){o(()=>e.length?e.map(u=>Go(u)?s:new ts(n(u),u)):co)}const d=Jn({callback:l});return At(()=>{d==null||d.disconnect(),l(),e.forEach(u=>d==null?void 0:d.observe(u))},[e]),a}function Jo(e){if(!e)return null;if(e.children.length>1)return e;const n=e.children[0];return mn(n)?n:e}function Ic(e){let{measure:n}=e;const[r,s]=i.useState(null),a=i.useCallback(h=>{for(const{target:m}of h)if(mn(m)){s(f=>{const g=n(m);return f?{...f,width:g.width,height:g.height}:g});break}},[n]),o=Jn({callback:a}),l=i.useCallback(h=>{const m=Jo(h);o==null||o.disconnect(),m&&(o==null||o.observe(m)),s(m?n(m):null)},[n,o]),[d,u]=$n(l);return i.useMemo(()=>({nodeRef:d,rect:r,setRef:u}),[r,d,u])}const Dc=[{sensor:ss,options:{}},{sensor:ns,options:{}}],Ac={current:{}},zn={draggable:{measure:to},droppable:{measure:to,strategy:un.WhileDragging,frequency:zr.Optimized},dragOverlay:{measure:xn}};class rn extends Map{get(n){var r;return n!=null&&(r=super.get(n))!=null?r:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(n=>{let{disabled:r}=n;return!r})}getNodeFor(n){var r,s;return(r=(s=this.get(n))==null?void 0:s.node.current)!=null?r:void 0}}const Mc={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new rn,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Wn},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:zn,measureDroppableContainers:Wn,windowRect:null,measuringScheduled:!1},Zo={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Wn,draggableNodes:new Map,over:null,measureDroppableContainers:Wn},bn=i.createContext(Zo),Qo=i.createContext(Mc);function Fc(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new rn}}}function Lc(e,n){switch(n.type){case Me.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:n.initialCoordinates,active:n.active}};case Me.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:n.coordinates.x-e.draggable.initialCoordinates.x,y:n.coordinates.y-e.draggable.initialCoordinates.y}}};case Me.DragEnd:case Me.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Me.RegisterDroppable:{const{element:r}=n,{id:s}=r,a=new rn(e.droppable.containers);return a.set(s,r),{...e,droppable:{...e.droppable,containers:a}}}case Me.SetDroppableDisabled:{const{id:r,key:s,disabled:a}=n,o=e.droppable.containers.get(r);if(!o||s!==o.key)return e;const l=new rn(e.droppable.containers);return l.set(r,{...o,disabled:a}),{...e,droppable:{...e.droppable,containers:l}}}case Me.UnregisterDroppable:{const{id:r,key:s}=n,a=e.droppable.containers.get(r);if(!a||s!==a.key)return e;const o=new rn(e.droppable.containers);return o.delete(r),{...e,droppable:{...e.droppable,containers:o}}}default:return e}}function zc(e){let{disabled:n}=e;const{active:r,activatorEvent:s,draggableNodes:a}=i.useContext(bn),o=Bn(s),l=Bn(r==null?void 0:r.id);return i.useEffect(()=>{if(!n&&!s&&o&&l!=null){if(!Zr(o)||document.activeElement===o.target)return;const d=a.get(l);if(!d)return;const{activatorNode:u,node:h}=d;if(!u.current&&!h.current)return;requestAnimationFrame(()=>{for(const m of[u.current,h.current]){if(!m)continue;const f=Rl(m);if(f){f.focus();break}}})}},[s,n,a,l,o]),null}function ea(e,n){let{transform:r,...s}=n;return e!=null&&e.length?e.reduce((a,o)=>o({transform:a,...s}),r):r}function Oc(e){return i.useMemo(()=>({draggable:{...zn.draggable,...e==null?void 0:e.draggable},droppable:{...zn.droppable,...e==null?void 0:e.droppable},dragOverlay:{...zn.dragOverlay,...e==null?void 0:e.dragOverlay}}),[e==null?void 0:e.draggable,e==null?void 0:e.droppable,e==null?void 0:e.dragOverlay])}function _c(e){let{activeNode:n,measure:r,initialRect:s,config:a=!0}=e;const o=i.useRef(!1),{x:l,y:d}=typeof a=="boolean"?{x:a,y:a}:a;At(()=>{if(!l&&!d||!n){o.current=!1;return}if(o.current||!s)return;const h=n==null?void 0:n.node.current;if(!h||h.isConnected===!1)return;const m=r(h),f=$o(m,s);if(l||(f.x=0),d||(f.y=0),o.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const g=Uo(h);g&&g.scrollBy({top:f.y,left:f.x})}},[n,l,d,s,r])}const Zn=i.createContext({...Et,scaleX:1,scaleY:1});var Ft;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(Ft||(Ft={}));const Pc=i.memo(function(n){var r,s,a,o;let{id:l,accessibility:d,autoScroll:u=!0,children:h,sensors:m=Dc,collisionDetection:f=Gl,measuring:g,modifiers:p,...b}=n;const x=i.useReducer(Lc,void 0,Fc),[S,T]=x,[C,w]=Ll(),[R,N]=i.useState(Ft.Uninitialized),v=R===Ft.Initialized,{draggable:{active:L,nodes:D,translate:O},droppable:{containers:A}}=S,_=L!=null?D.get(L):null,G=i.useRef({initial:null,translated:null}),Y=i.useMemo(()=>{var we;return L!=null?{id:L,data:(we=_==null?void 0:_.data)!=null?we:Ac,rect:G}:null},[L,_]),B=i.useRef(null),[H,z]=i.useState(null),[W,Z]=i.useState(null),M=ln(b,Object.values(b)),J=Xn("DndDescribedBy",l),K=i.useMemo(()=>A.getEnabled(),[A]),q=Oc(g),{droppableRects:Q,measureDroppableContainers:ge,measuringScheduled:re}=vc(K,{dragging:v,dependencies:[O.x,O.y],config:q.droppable}),$=bc(D,L),P=i.useMemo(()=>W?Un(W):null,[W]),ee=It(),oe=jc($,q.draggable.measure);_c({activeNode:L!=null?D.get(L):null,config:ee.layoutShiftCompensation,initialRect:oe,measure:q.draggable.measure});const ue=ao($,q.draggable.measure,oe),Fe=ao($?$.parentElement:null),be=i.useRef({activatorEvent:null,active:null,activeNode:$,collisionRect:null,collisions:null,droppableRects:Q,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:A,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),xe=A.getNodeFor((r=be.current.over)==null?void 0:r.id),We=Ic({measure:q.dragOverlay.measure}),He=(s=We.nodeRef.current)!=null?s:$,qe=v?(a=We.rect)!=null?a:ue:null,vt=!!(We.nodeRef.current&&We.rect),Rt=Sc(vt?null:ue),dt=qo(He?Xe(He):null),Le=Tc(v?xe??$:null),Je=Rc(Le),Ze=ea(p,{transform:{x:O.x-Rt.x,y:O.y-Rt.y,scaleX:1,scaleY:1},activatorEvent:W,active:Y,activeNodeRect:ue,containerNodeRect:Fe,draggingNodeRect:qe,over:be.current.over,overlayNodeRect:We.rect,scrollableAncestors:Le,scrollableAncestorRects:Je,windowRect:dt}),k=P?Kt(P,O):null,de=kc(Le),ut=lo(de),Ae=lo(de,[ue]),Re=Kt(Ze,ut),Ce=qe?ql(qe,Ze):null,Ke=Y&&Ce?f({active:Y,collisionRect:Ce,droppableRects:Q,droppableContainers:K,pointerCoordinates:k}):null,ot=Po(Ke,"id"),[Ge,ke]=i.useState(null),Qe=vt?Ze:Kt(Ze,Ae),jt=Yl(Qe,(o=Ge==null?void 0:Ge.rect)!=null?o:null,ue),at=i.useRef(null),et=i.useCallback((we,ze)=>{let{sensor:Ie,options:it}=ze;if(B.current==null)return;const De=D.get(B.current);if(!De)return;const Oe=we.nativeEvent,Ve=new Ie({active:B.current,activeNode:De,event:Oe,options:it,context:be,onAbort(Se){if(!D.get(Se))return;const{onDragAbort:tt}=M.current,nt={id:Se};tt==null||tt(nt),C({type:"onDragAbort",event:nt})},onPending(Se,lt,tt,nt){if(!D.get(Se))return;const{onDragPending:I}=M.current,X={id:Se,constraint:lt,initialCoordinates:tt,offset:nt};I==null||I(X),C({type:"onDragPending",event:X})},onStart(Se){const lt=B.current;if(lt==null)return;const tt=D.get(lt);if(!tt)return;const{onDragStart:nt}=M.current,St={activatorEvent:Oe,active:{id:lt,data:tt.data,rect:G}};$t.unstable_batchedUpdates(()=>{nt==null||nt(St),N(Ft.Initializing),T({type:Me.DragStart,initialCoordinates:Se,active:lt}),C({type:"onDragStart",event:St}),z(at.current),Z(Oe)})},onMove(Se){T({type:Me.DragMove,coordinates:Se})},onEnd:wt(Me.DragEnd),onCancel:wt(Me.DragCancel)});at.current=Ve;function wt(Se){return async function(){const{active:tt,collisions:nt,over:St,scrollAdjustedTranslate:I}=be.current;let X=null;if(tt&&I){const{cancelDrop:ae}=M.current;X={activatorEvent:Oe,active:tt,collisions:nt,delta:I,over:St},Se===Me.DragEnd&&typeof ae=="function"&&await Promise.resolve(ae(X))&&(Se=Me.DragCancel)}B.current=null,$t.unstable_batchedUpdates(()=>{T({type:Se}),N(Ft.Uninitialized),ke(null),z(null),Z(null),at.current=null;const ae=Se===Me.DragEnd?"onDragEnd":"onDragCancel";if(X){const le=M.current[ae];le==null||le(X),C({type:ae,event:X})}})}}},[D]),ht=i.useCallback((we,ze)=>(Ie,it)=>{const De=Ie.nativeEvent,Oe=D.get(it);if(B.current!==null||!Oe||De.dndKit||De.defaultPrevented)return;const Ve={active:Oe};we(Ie,ze.options,Ve)===!0&&(De.dndKit={capturedBy:ze.sensor},B.current=it,et(Ie,ze))},[D,et]),Mt=yc(m,ht);Nc(m),At(()=>{ue&&R===Ft.Initializing&&N(Ft.Initialized)},[ue,R]),i.useEffect(()=>{const{onDragMove:we}=M.current,{active:ze,activatorEvent:Ie,collisions:it,over:De}=be.current;if(!ze||!Ie)return;const Oe={active:ze,activatorEvent:Ie,collisions:it,delta:{x:Re.x,y:Re.y},over:De};$t.unstable_batchedUpdates(()=>{we==null||we(Oe),C({type:"onDragMove",event:Oe})})},[Re.x,Re.y]),i.useEffect(()=>{const{active:we,activatorEvent:ze,collisions:Ie,droppableContainers:it,scrollAdjustedTranslate:De}=be.current;if(!we||B.current==null||!ze||!De)return;const{onDragOver:Oe}=M.current,Ve=it.get(ot),wt=Ve&&Ve.rect.current?{id:Ve.id,rect:Ve.rect.current,data:Ve.data,disabled:Ve.disabled}:null,Se={active:we,activatorEvent:ze,collisions:Ie,delta:{x:De.x,y:De.y},over:wt};$t.unstable_batchedUpdates(()=>{ke(wt),Oe==null||Oe(Se),C({type:"onDragOver",event:Se})})},[ot]),At(()=>{be.current={activatorEvent:W,active:Y,activeNode:$,collisionRect:Ce,collisions:Ke,droppableRects:Q,draggableNodes:D,draggingNode:He,draggingNodeRect:qe,droppableContainers:A,over:Ge,scrollableAncestors:Le,scrollAdjustedTranslate:Re},G.current={initial:qe,translated:Ce}},[Y,$,Ke,Ce,D,He,qe,Q,A,Ge,Le,Re]),mc({...ee,delta:O,draggingRect:Ce,pointerCoordinates:k,scrollableAncestors:Le,scrollableAncestorRects:Je});const Ct=i.useMemo(()=>({active:Y,activeNode:$,activeNodeRect:ue,activatorEvent:W,collisions:Ke,containerNodeRect:Fe,dragOverlay:We,draggableNodes:D,droppableContainers:A,droppableRects:Q,over:Ge,measureDroppableContainers:ge,scrollableAncestors:Le,scrollableAncestorRects:Je,measuringConfiguration:q,measuringScheduled:re,windowRect:dt}),[Y,$,ue,W,Ke,Fe,We,D,A,Q,Ge,ge,Le,Je,q,re,dt]),ft=i.useMemo(()=>({activatorEvent:W,activators:Mt,active:Y,activeNodeRect:ue,ariaDescribedById:{draggable:J},dispatch:T,draggableNodes:D,over:Ge,measureDroppableContainers:ge}),[W,Mt,Y,ue,T,J,D,Ge,ge]);return i.createElement(_o.Provider,{value:w},i.createElement(bn.Provider,{value:ft},i.createElement(Qo.Provider,{value:Ct},i.createElement(Zn.Provider,{value:jt},h)),i.createElement(zc,{disabled:(d==null?void 0:d.restoreFocus)===!1})),i.createElement(_l,{...d,hiddenTextDescribedById:J}));function It(){const we=(H==null?void 0:H.autoScrollEnabled)===!1,ze=typeof u=="object"?u.enabled===!1:u===!1,Ie=v&&!we&&!ze;return typeof u=="object"?{...u,enabled:Ie}:{enabled:Ie}}}),$c=i.createContext(null),uo="button",Bc="Draggable";function Uc(e){let{id:n,data:r,disabled:s=!1,attributes:a}=e;const o=Xn(Bc),{activators:l,activatorEvent:d,active:u,activeNodeRect:h,ariaDescribedById:m,draggableNodes:f,over:g}=i.useContext(bn),{role:p=uo,roleDescription:b="draggable",tabIndex:x=0}=a??{},S=(u==null?void 0:u.id)===n,T=i.useContext(S?Zn:$c),[C,w]=$n(),[R,N]=$n(),v=Ec(l,n),L=ln(r);At(()=>(f.set(n,{id:n,key:o,node:C,activatorNode:R,data:L}),()=>{const O=f.get(n);O&&O.key===o&&f.delete(n)}),[f,n]);const D=i.useMemo(()=>({role:p,tabIndex:x,"aria-disabled":s,"aria-pressed":S&&p===uo?!0:void 0,"aria-roledescription":b,"aria-describedby":m.draggable}),[s,p,x,S,b,m.draggable]);return{active:u,activatorEvent:d,activeNodeRect:h,attributes:D,isDragging:S,listeners:s?void 0:v,node:C,over:g,setNodeRef:w,setActivatorNodeRef:N,transform:T}}function Wc(){return i.useContext(Qo)}const Hc="Droppable",Gc={timeout:25};function ta(e){let{data:n,disabled:r=!1,id:s,resizeObserverConfig:a}=e;const o=Xn(Hc),{active:l,dispatch:d,over:u,measureDroppableContainers:h}=i.useContext(bn),m=i.useRef({disabled:r}),f=i.useRef(!1),g=i.useRef(null),p=i.useRef(null),{disabled:b,updateMeasurementsFor:x,timeout:S}={...Gc,...a},T=ln(x??s),C=i.useCallback(()=>{if(!f.current){f.current=!0;return}p.current!=null&&clearTimeout(p.current),p.current=setTimeout(()=>{h(Array.isArray(T.current)?T.current:[T.current]),p.current=null},S)},[S]),w=Jn({callback:C,disabled:b||!l}),R=i.useCallback((D,O)=>{w&&(O&&(w.unobserve(O),f.current=!1),D&&w.observe(D))},[w]),[N,v]=$n(R),L=ln(n);return i.useEffect(()=>{!w||!N.current||(w.disconnect(),f.current=!1,w.observe(N.current))},[N,w]),i.useEffect(()=>(d({type:Me.RegisterDroppable,element:{id:s,key:o,disabled:r,node:N,rect:g,data:L}}),()=>d({type:Me.UnregisterDroppable,key:o,id:s})),[s]),i.useEffect(()=>{r!==m.current.disabled&&(d({type:Me.SetDroppableDisabled,id:s,key:o,disabled:r}),m.current.disabled=r)},[s,o,r,d]),{active:l,rect:g,isOver:(u==null?void 0:u.id)===s,node:N,over:u,setNodeRef:v}}function Kc(e){let{animation:n,children:r}=e;const[s,a]=i.useState(null),[o,l]=i.useState(null),d=Bn(r);return!r&&!s&&d&&a(d),At(()=>{if(!o)return;const u=s==null?void 0:s.key,h=s==null?void 0:s.props.id;if(u==null||h==null){a(null);return}Promise.resolve(n(h,o)).then(()=>{a(null)})},[n,s,o]),i.createElement(i.Fragment,null,r,s?i.cloneElement(s,{ref:l}):null)}const Vc={x:0,y:0,scaleX:1,scaleY:1};function Yc(e){let{children:n}=e;return i.createElement(bn.Provider,{value:Zo},i.createElement(Zn.Provider,{value:Vc},n))}const Xc={position:"fixed",touchAction:"none"},qc=e=>Zr(e)?"transform 250ms ease":void 0,Jc=i.forwardRef((e,n)=>{let{as:r,activatorEvent:s,adjustScale:a,children:o,className:l,rect:d,style:u,transform:h,transition:m=qc}=e;if(!d)return null;const f=a?h:{...h,scaleX:1,scaleY:1},g={...Xc,width:d.width,height:d.height,top:d.top,left:d.left,transform:dn.Transform.toString(f),transformOrigin:a&&s?$l(s,d):void 0,transition:typeof m=="function"?m(s):m,...u};return i.createElement(r,{className:l,style:g,ref:n},o)}),Zc=e=>n=>{let{active:r,dragOverlay:s}=n;const a={},{styles:o,className:l}=e;if(o!=null&&o.active)for(const[d,u]of Object.entries(o.active))u!==void 0&&(a[d]=r.node.style.getPropertyValue(d),r.node.style.setProperty(d,u));if(o!=null&&o.dragOverlay)for(const[d,u]of Object.entries(o.dragOverlay))u!==void 0&&s.node.style.setProperty(d,u);return l!=null&&l.active&&r.node.classList.add(l.active),l!=null&&l.dragOverlay&&s.node.classList.add(l.dragOverlay),function(){for(const[u,h]of Object.entries(a))r.node.style.setProperty(u,h);l!=null&&l.active&&r.node.classList.remove(l.active)}},Qc=e=>{let{transform:{initial:n,final:r}}=e;return[{transform:dn.Transform.toString(n)},{transform:dn.Transform.toString(r)}]},ed={duration:250,easing:"ease",keyframes:Qc,sideEffects:Zc({styles:{active:{opacity:"0"}}})};function td(e){let{config:n,draggableNodes:r,droppableContainers:s,measuringConfiguration:a}=e;return Yn((o,l)=>{if(n===null)return;const d=r.get(o);if(!d)return;const u=d.node.current;if(!u)return;const h=Jo(l);if(!h)return;const{transform:m}=Xe(l).getComputedStyle(l),f=Bo(m);if(!f)return;const g=typeof n=="function"?n:nd(n);return Yo(u,a.draggable.measure),g({active:{id:o,data:d.data,node:u,rect:a.draggable.measure(u)},draggableNodes:r,dragOverlay:{node:l,rect:a.dragOverlay.measure(h)},droppableContainers:s,measuringConfiguration:a,transform:f})})}function nd(e){const{duration:n,easing:r,sideEffects:s,keyframes:a}={...ed,...e};return o=>{let{active:l,dragOverlay:d,transform:u,...h}=o;if(!n)return;const m={x:d.rect.left-l.rect.left,y:d.rect.top-l.rect.top},f={scaleX:u.scaleX!==1?l.rect.width*u.scaleX/d.rect.width:1,scaleY:u.scaleY!==1?l.rect.height*u.scaleY/d.rect.height:1},g={x:u.x-m.x,y:u.y-m.y,...f},p=a({...h,active:l,dragOverlay:d,transform:{initial:u,final:g}}),[b]=p,x=p[p.length-1];if(JSON.stringify(b)===JSON.stringify(x))return;const S=s==null?void 0:s({active:l,dragOverlay:d,...h}),T=d.node.animate(p,{duration:n,easing:r,fill:"forwards"});return new Promise(C=>{T.onfinish=()=>{S==null||S(),C()}})}}let ho=0;function rd(e){return i.useMemo(()=>{if(e!=null)return ho++,ho},[e])}const sd=i.memo(e=>{let{adjustScale:n=!1,children:r,dropAnimation:s,style:a,transition:o,modifiers:l,wrapperElement:d="div",className:u,zIndex:h=999}=e;const{activatorEvent:m,active:f,activeNodeRect:g,containerNodeRect:p,draggableNodes:b,droppableContainers:x,dragOverlay:S,over:T,measuringConfiguration:C,scrollableAncestors:w,scrollableAncestorRects:R,windowRect:N}=Wc(),v=i.useContext(Zn),L=rd(f==null?void 0:f.id),D=ea(l,{activatorEvent:m,active:f,activeNodeRect:g,containerNodeRect:p,draggingNodeRect:S.rect,over:T,overlayNodeRect:S.rect,scrollableAncestors:w,scrollableAncestorRects:R,transform:v,windowRect:N}),O=os(g),A=td({config:s,draggableNodes:b,droppableContainers:x,measuringConfiguration:C}),_=O?S.setRef:void 0;return i.createElement(Yc,null,i.createElement(Kc,{animation:A},f&&L?i.createElement(Jc,{key:L,id:f.id,ref:_,as:d,activatorEvent:m,adjustScale:n,className:u,transition:o,rect:O,style:{zIndex:h,...a},transform:D},r):null))});function Gn(e){if(!e)return!1;const n=e.data.current;return!!(n&&"sortable"in n&&typeof n.sortable=="object"&&"containerId"in n.sortable&&"items"in n.sortable&&"index"in n.sortable)}const od=[fe.Down,fe.Right,fe.Up,fe.Left],ad=(e,n)=>{let{context:{active:r,collisionRect:s,droppableRects:a,droppableContainers:o,over:l,scrollableAncestors:d}}=n;if(od.includes(e.code)){if(e.preventDefault(),!r||!s)return;const u=[];o.getEnabled().forEach(f=>{if(!f||f!=null&&f.disabled)return;const g=a.get(f.id);if(g)switch(e.code){case fe.Down:s.top<g.top&&u.push(f);break;case fe.Up:s.top>g.top&&u.push(f);break;case fe.Left:s.left>g.left&&u.push(f);break;case fe.Right:s.left<g.left&&u.push(f);break}});const h=Wl({collisionRect:s,droppableRects:a,droppableContainers:u});let m=Po(h,"id");if(m===(l==null?void 0:l.id)&&h.length>1&&(m=h[1].id),m!=null){const f=o.get(r.id),g=o.get(m),p=g?a.get(g.id):null,b=g==null?void 0:g.node.current;if(b&&p&&f&&g){const S=qn(b).some((v,L)=>d[L]!==v),T=na(f,g),C=id(f,g),w=S||!T?{x:0,y:0}:{x:C?s.width-p.width:0,y:C?s.height-p.height:0},R={x:p.left,y:p.top};return w.x&&w.y?R:cn(R,w)}}}};function na(e,n){return!Gn(e)||!Gn(n)?!1:e.data.current.sortable.containerId===n.data.current.sortable.containerId}function id(e,n){return!Gn(e)||!Gn(n)||!na(e,n)?!1:e.data.current.sortable.index<n.data.current.sortable.index}function fo(e){var r;if(!e||e.length===0)return null;const n=(r=e[0].data)==null?void 0:r.zone;return n==="before"||n==="after"||n==="into"?n:null}function ld(e){const{onReorder:n,onGroupReorder:r,onDropIntoGroup:s,onDropIntoGroupAtPosition:a,onRemoveFromGroup:o,findParentGroup:l}=e,[d,u]=i.useState(null),[h,m]=i.useState(null),[f,g]=i.useState(null),p=i.useRef(null),b=Pl(Qs(ss,{activationConstraint:{distance:5}}),Qs(ns,{coordinateGetter:ad})),x=i.useCallback(N=>{u(String(N.active.id))},[]),S=i.useCallback(N=>{const{over:v,collisions:L}=N;m(v?String(v.id):null);const D=fo(L);p.current=D,g(D)},[]),T=i.useCallback(N=>{const{collisions:v}=N,L=fo(v);p.current=L,g(L)},[]),C=i.useCallback(()=>{p.current=null,u(null),m(null),g(null)},[]),w=i.useCallback(N=>{const{active:v,over:L}=N,D=p.current;if(!L||v.id===L.id||!D){C();return}const O=String(v.id),A=String(L.id);if(A.startsWith("group-footer::")){const _=A.replace("group-footer::",""),G=l==null?void 0:l(O);G&&G.id===_?o==null||o(O):n(O,_,"before"),C();return}if(D==="into")s==null||s(O,A);else{const _=D==="before"?"after":"before",G=l==null?void 0:l(O),Y=l==null?void 0:l(A);G&&Y&&G.id===Y.id?r==null||r(O,A,_,G.id):!G&&Y&&a?a(O,Y.id,A,_):n(O,A,_)}C()},[n,r,s,a,o,l,C]),R=i.useCallback(()=>{C()},[C]);return{activeId:d,overId:h,dropPosition:f,sensors:b,onDragStart:x,onDragMove:T,onDragOver:S,onDragEnd:w,onDragCancel:R}}function Nt(...e){return gl.twMerge(ml.clsx(e))}const cd={"gravity-ui":1.2,lucide:1,hugeicons:1.05,mdi:.95,"fa6-solid":.7,heroicons:1,ph:1,"radix-icons":1,"material-symbols":.9,"simple-icons":.95,"eos-icons":1},dd=1,ud={"gravity-ui:arrow-rotate-left":{x:4,y:4},"gravity-ui:arrow-rotate-right":{x:-4,y:4},"gravity-ui:sparkles":{x:2,y:-2}},hd={xs:12,sm:16,md:20,lg:24,xl:32,toolbar:{mobile:24,desktop:20}};function fd(e){const n=e.indexOf(":");return n===-1?"":e.substring(0,n)}function pd(e){return cd[e]??dd}function md(e){return ud[e]??null}function mr(e,n){const r=pd(n);return Math.round(e*r)}const ra=({icon:e,size:n="md",className:r})=>{const s=fd(e),a=hd[n],o=md(e);if(typeof a=="object"){const u=mr(a.mobile,s),h=mr(a.desktop,s),m=o?{x:o.x*u/20,y:o.y*u/20}:null;return t.jsx("span",{className:Nt("normalized-icon-responsive inline-flex",r),style:{"--icon-size-mobile":`${u}px`,"--icon-size-desktop":`${h}px`,width:`${u}px`,height:`${u}px`},children:t.jsx(F.Icon,{icon:e,width:"100%",height:"100%",style:m?{transform:`translate(${m.x}px, ${m.y}px)`}:void 0})})}const l=mr(a,s),d=o?{x:o.x*l/20,y:o.y*l/20}:null;return t.jsx("span",{className:Nt("inline-flex",r),style:{width:`${l}px`,height:`${l}px`},children:t.jsx(F.Icon,{icon:e,width:"100%",height:"100%",style:d?{transform:`translate(${d.x}px, ${d.y}px)`}:void 0})})};ra.displayName="NormalizedIcon";const ie=i.forwardRef(({icon:e,onClick:n,active:r=!1,tooltip:s,tooltipDelay:a=300,tooltipDisabled:o=!1,"aria-label":l,disabled:d=!1,className:u,onMouseLeave:h},m)=>{const f=t.jsx(c.Button,{ref:m,variant:"ghost",size:"toolbar",onClick:n,disabled:d,"aria-label":l||s,"aria-pressed":r,"data-active":r,onMouseLeave:h,className:Nt(u),children:typeof e=="string"?t.jsx(ra,{icon:e,size:"toolbar"}):e});return!s||o?f:t.jsxs(c.Tooltip,{delay:a,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:f}),t.jsx(c.TooltipContent,{children:s})]})});ie.displayName="ToolbarButton";const Qn=({className:e,size:n=24})=>t.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",width:n,height:n,className:Nt("inline-block iconify",e),children:[t.jsx("path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"}),t.jsx("path",{d:"M3 3v5h5"})]}),Kn=({className:e,size:n=24})=>t.jsx("svg",{viewBox:"0 0 28 28",fill:"currentColor",width:n,height:n,className:Nt("inline-block",e),children:t.jsx("path",{d:"M10.06 18.701a1.628 1.628 0 0 0 2.43-.676l.77-2.34a3.82 3.82 0 0 1 2.416-2.418l2.238-.727a1.6 1.6 0 0 0 .786-.595a1.62 1.62 0 0 0-.849-2.489l-2.215-.72a3.82 3.82 0 0 1-2.42-2.414l-.727-2.237a1.62 1.62 0 0 0-.594-.785a1.655 1.655 0 0 0-1.879 0a1.63 1.63 0 0 0-.6.8L8.68 6.365a3.82 3.82 0 0 1-2.359 2.37l-2.24.726a1.626 1.626 0 0 0 .02 3.073l2.216.72a3.86 3.86 0 0 1 1.816 1.286c.266.343.471.728.606 1.14l.728 2.234c.112.318.32.593.595.787m-3.273-6.873l-2.22-.72s-.085-.038-.085-.108a.14.14 0 0 1 .084-.115L6.8 10.16a5.34 5.34 0 0 0 3.32-3.375l.721-2.219s.043-.084.114-.084s.113.084.113.084l.723 2.223a5.32 5.32 0 0 0 3.377 3.372l2.27.735a.13.13 0 0 1 .078.11a.15.15 0 0 1-.083.113l-2.225.722a5.32 5.32 0 0 0-3.374 3.374l-.715 2.2a.11.11 0 0 1-.115.093c-.104 0-.118-.075-.118-.075l-.723-2.22a5.32 5.32 0 0 0-3.376-3.385m13.017 12.954A1.2 1.2 0 0 0 20.5 25a1.2 1.2 0 0 0 .692-.216a1.2 1.2 0 0 0 .446-.6l.372-1.143a1.61 1.61 0 0 1 1.017-1.02l1.166-.378A1.21 1.21 0 0 0 25 20.505a1.2 1.2 0 0 0-.844-1.146l-1.144-.37a1.61 1.61 0 0 1-1.02-1.018l-.38-1.163a1.2 1.2 0 0 0-2.274.016l-.374 1.146a1.61 1.61 0 0 1-.993 1.017l-1.166.378a1.21 1.21 0 0 0-.807 1.139a1.2 1.2 0 0 0 .823 1.138l1.144.372a1.6 1.6 0 0 1 1.02 1.023l.379 1.163a1.2 1.2 0 0 0 .44.582m-1.371-4.194l-.27-.088l.283-.096a3.12 3.12 0 0 0 1.943-1.974l.088-.27l.089.272a3.11 3.11 0 0 0 1.974 1.975l.293.1l-.271.087a3.12 3.12 0 0 0-1.974 1.977l-.088.27l-.088-.272a3.12 3.12 0 0 0-1.98-1.98"})}),V={plus:"lucide:plus",minus:"lucide:minus",close:"lucide:x",check:"lucide:check",menu:"lucide:menu",moreHorizontal:"lucide:ellipsis",text:"lucide:type",image:"lucide:image",layers:"lucide:layers",shapes:"lucide:shapes",trash:"lucide:trash-2",copy:"lucide:copy",pencil:"lucide:pencil",scissors:"lucide:scissors",save:"lucide:save",folderOpen:"lucide:folder-open",download:"lucide:download",eye:"lucide:eye",eyeOff:"lucide:eye-off",lock:"lucide:lock",lockOpen:"lucide:lock-open",search:"lucide:search",link:"lucide:link",palette:"lucide:palette",rotateLeft:"lucide:rotate-ccw",rotateCcwSquare:"lucide:rotate-ccw-square",bold:"lucide:bold",italic:"lucide:italic",underline:"lucide:underline",alignLeft:"lucide:align-left",alignCenter:"lucide:align-center",alignRight:"lucide:align-right",play:"lucide:play",pause:"lucide:pause",grip:"lucide:grip-vertical",fileText:"lucide:file-text",group:"lucide:group",fitScreen:"lucide:scan",maximize:"lucide:maximize",alertCircle:"lucide:alert-circle",wand:"lucide:wand-2"},Or=({icon:e,label:n,onClose:r,className:s,closeButtonStyle:a="icon"})=>{const o=i.useRef(null),l=i.useRef({x:0,y:0});return i.useEffect(()=>{const d=o.current;if(!d)return;const u=m=>{l.current={x:m.touches[0].clientX,y:m.touches[0].clientY}},h=m=>{const f=Math.abs(m.touches[0].clientX-l.current.x),g=Math.abs(m.touches[0].clientY-l.current.y);f>10&&f>g&&m.preventDefault()};return d.addEventListener("touchstart",u,{passive:!0}),d.addEventListener("touchmove",h,{passive:!1}),()=>{d.removeEventListener("touchstart",u),d.removeEventListener("touchmove",h)}},[]),t.jsxs("div",{ref:o,className:Nt("flex w-full items-center justify-between",s),style:{touchAction:"pan-y"},children:[t.jsxs("div",{className:"flex items-center gap-3 md:gap-2",children:[typeof e=="string"?t.jsx(F.Icon,{icon:e,className:"text-primary size-7 md:size-5"}):e,t.jsx("span",{className:"text-foreground text-lg font-semibold md:text-sm md:font-medium",children:n})]}),a==="done"?t.jsx("button",{onClick:r,className:"bg-primary text-primary-foreground rounded-xl hover:bg-primary/90 shadow-sm px-8 py-3.5 text-xl font-bold transition-colors md:rounded-button md:shadow-none md:px-4 md:py-2 md:text-sm md:font-medium","aria-label":"Done",children:"Done"}):t.jsx("button",{onClick:r,className:"hover:bg-muted text-foreground/70 hover:text-foreground flex size-11 items-center justify-center rounded-md transition-colors md:size-7","aria-label":"Close panel",children:t.jsx(F.Icon,{icon:V.close,className:"size-7 md:size-4"})})]})};Or.displayName="CollapsedToolbarHeader";function po({children:e,className:n}){const r=i.useRef(null);return i.useEffect(()=>{const s=r.current;if(!s)return;const a=l=>{l.stopPropagation()},o=l=>{l.preventDefault(),l.stopPropagation()};return s.addEventListener("touchstart",a,{passive:!1}),s.addEventListener("touchmove",o,{passive:!1}),()=>{s.removeEventListener("touchstart",a),s.removeEventListener("touchmove",o)}},[]),t.jsx("div",{ref:r,className:n,style:{touchAction:"none"},children:e})}const Ue=({label:e,value:n,onChange:r,min:s,max:a,step:o=1,unit:l="",showInput:d=!1,inputWidth:u="56px",className:h,variant:m="inline"})=>{const f=Math.round(n);return m==="stacked"?t.jsxs("div",{className:Nt("flex flex-col gap-2.5 md:gap-1.5",h),children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-base md:text-xs",children:e}),d&&t.jsx("input",{type:"number",value:f,onChange:g=>r(Math.max(s,Math.min(a,Number(g.target.value)))),min:s,max:a,"aria-label":`${e} value`,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]",style:{width:u}})]}),t.jsx(po,{children:t.jsxs(c.Slider,{value:[n],onValueChange:g=>r(g[0]),min:s,max:a,step:o,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2.5 md:h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{className:"size-7 md:size-6"})]})})]}):t.jsxs("div",{className:Nt("flex items-center gap-3",h),children:[t.jsx("span",{className:"text-foreground/70 text-base md:text-[13px] whitespace-nowrap",children:e}),d?t.jsx("input",{type:"number",value:f,onChange:g=>r(Math.max(s,Math.min(a,Number(g.target.value)))),min:s,max:a,"aria-label":`${e} value`,className:"bg-transparent text-foreground rounded-md border-none px-2 py-2 text-right text-base md:py-1.5 md:text-[13px]",style:{width:u}}):null,t.jsx(po,{className:"flex-1",children:t.jsxs(c.Slider,{value:[n],onValueChange:g=>r(g[0]),min:s,max:a,step:o,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2.5 md:h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{className:"size-7 md:size-6"})]})}),t.jsxs("span",{className:"text-foreground text-base md:text-[13px] min-w-[44px] md:min-w-[32px] text-right",children:[f,l]})]})},mo="border-2 border-primary overflow-hidden",go="border-2 border-border-primary hover:border-border-focus overflow-hidden",er=({presets:e,selectedId:n,onSelect:r,showOff:s=!0,size:a=40,ariaLabel:o="Preset options"})=>{const l=i.useRef(null),d=i.useCallback(f=>{f.scrollIntoView({behavior:"smooth",block:"nearest",inline:"nearest"})},[]),u=i.useCallback(f=>{if(f.key!=="ArrowLeft"&&f.key!=="ArrowRight")return;f.preventDefault(),f.stopPropagation();const g=l.current;if(!g)return;const p=Array.from(g.querySelectorAll("button[data-preset-id]")),b=document.activeElement;let x=p.indexOf(b);x===-1&&(x=p.findIndex(w=>w.getAttribute("aria-selected")==="true"),x===-1&&(x=0));let S;f.key==="ArrowRight"?S=x<p.length-1?x+1:0:S=x>0?x-1:p.length-1;const T=p[S];T.focus(),d(T);const C=T.getAttribute("data-preset-id");C!==null&&r(C)},[d,r]),h=s&&!n,m=s?!0:e.some(f=>f.id===n);return t.jsxs("div",{ref:l,className:"flex gap-1.5 overflow-x-auto p-1 -m-1",style:{flexWrap:"nowrap"},role:"listbox","aria-label":o,onKeyDown:u,children:[s&&t.jsx("button",{"data-preset-id":"",role:"option","aria-selected":h,tabIndex:h||!m?0:-1,onClick:()=>r(""),className:`shrink-0 rounded-md transition-all flex items-center justify-center ${h?mo:go}`,style:{width:a,height:a},title:"None",children:t.jsx("span",{className:"text-xs text-muted-foreground",children:"Off"})}),e.map((f,g)=>{const p=n===f.id,b=p||!s&&!m&&g===0;return t.jsx("button",{"data-preset-id":f.id,role:"option","aria-selected":p,tabIndex:b?0:-1,onClick:()=>r(f.id),className:`shrink-0 rounded-md transition-all ${p?mo:go}`,style:{width:a,height:a},title:f.name,children:f.thumbnailUrl&&t.jsx("img",{src:f.thumbnailUrl,alt:f.name,className:"w-full h-full object-cover",loading:"lazy"})},f.id)})]})},gd=e=>{var g,p;const{pointerCoordinates:n,droppableContainers:r,droppableRects:s}=e;let a=Vl(e);if(a.length===0&&(a=Ul(e)),a.length===0||!n)return a;const o=a[0];if(String(o.id).startsWith("group-footer::"))return[{...o,data:{...o.data,zone:"after"}}];const l=s.get(o.id);if(!l)return a;const d=n.y-l.top,u=l.height,h=r.find(b=>b.id===o.id),m=((p=(g=h==null?void 0:h.data)==null?void 0:g.current)==null?void 0:p.isGroup)===!0;let f;return m?d<u*.25?f="before":d>u*.75?f="after":f="into":f=d<u/2?"before":"after",[{...o,data:{...o.data,zone:f}}]},xd=({layer:e,isOver:n,dropPosition:r,isDragActive:s,showPreviewImages:a,previewDisplaySize:o,onSelect:l,onToggleVisibility:d,onToggleLock:u,onDuplicate:h,onDelete:m})=>{const{attributes:f,listeners:g,setNodeRef:p,isDragging:b}=Uc({id:e.id}),{setNodeRef:x}=ta({id:e.id,data:{isGroup:!!e.isGroup}}),S=i.useCallback(D=>{p(D),x(D)},[p,x]),T=e.isGroup,C=e.depth>0,w=C?e.depth*24:0,R={opacity:b?.3:1,paddingLeft:w+8,paddingRight:8,paddingTop:T?6:8,paddingBottom:T?6:8,minHeight:T?32:36,display:"flex",alignItems:"center",gap:8,cursor:"pointer",position:"relative",touchAction:"manipulation"};(C||T)&&(R.backgroundColor="var(--surface-secondary, rgba(0,0,0,0.04))"),n&&!b&&(r==="before"?R.borderTop="2px solid var(--primary, var(--accent-primary, #007AFF))":r==="after"?R.borderBottom="2px solid var(--primary, var(--accent-primary, #007AFF))":r==="into"&&(R.outline="2px solid var(--primary, var(--accent-primary, #007AFF))",R.outlineOffset="-2px",R.backgroundColor="var(--accent-primary-alpha, rgba(0, 122, 255, 0.08))"));const N=e.isSelected?{outline:"3px solid var(--primary, var(--accent-primary, #007AFF))",outlineOffset:"2px"}:{},v=()=>l(e.id),L=t.jsx("span",{...g,"aria-label":"Drag to reorder",title:"Drag to reorder",style:{touchAction:"none",cursor:"grab",display:"flex",alignItems:"center",justifyContent:"center",width:36,alignSelf:"stretch",marginLeft:-4,marginRight:4,flexShrink:0,color:"var(--text-secondary, #888)",opacity:.6},children:t.jsx(F.Icon,{icon:"lucide:grip-vertical",style:{fontSize:24}})});return T?t.jsxs("div",{ref:S,style:R,...f,children:[L,t.jsx(F.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)",flexShrink:0}}),t.jsx("span",{onClick:v,style:{fontSize:13,fontWeight:600,color:"var(--foreground, #333)",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),!s&&(!e.children||e.children.length===0)&&t.jsx("div",{style:{display:"flex",gap:4,flexShrink:0},children:t.jsx(Dt,{title:"Delete Group",onClick:()=>m(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(F.Icon,{icon:V.trash,className:"size-6"})})})]}):t.jsxs("div",{ref:S,style:R,...f,children:[L,a&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,onClick:v,style:{width:o,height:o,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)",cursor:"pointer",flexShrink:0,...N}}):t.jsx("div",{style:{width:o,height:o,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4,cursor:"pointer",flexShrink:0,...N},onClick:v,children:t.jsx(F.Icon,{icon:V.fileText})}),t.jsx("div",{style:{flex:1,minWidth:0},onClick:v}),!s&&t.jsxs("div",{style:{display:"flex",gap:4,flexShrink:0},children:[t.jsx(Dt,{title:e.visible?"Hide":"Show",onClick:()=>d(e.id),style:{opacity:e.visible?1:.4},children:t.jsx(F.Icon,{icon:e.visible?V.eye:V.eyeOff,className:"size-6"})}),t.jsx(Dt,{title:e.locked?"Unlock":"Lock",onClick:()=>u(e.id),style:{opacity:e.locked?1:.4},children:t.jsx(F.Icon,{icon:e.locked?V.lock:V.lockOpen,className:"size-6"})}),t.jsx(Dt,{title:"Duplicate",onClick:()=>h(e.id),children:t.jsx(F.Icon,{icon:V.copy,className:"size-6"})}),t.jsx(Dt,{title:"Delete",onClick:()=>m(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(F.Icon,{icon:V.trash,className:"size-6"})})]})]})},Dt=({title:e,onClick:n,style:r,children:s})=>t.jsx("button",{onClick:a=>{a.stopPropagation(),n()},style:{background:"none",border:"none",cursor:"pointer",padding:4,opacity:.6,...r},title:e,children:s}),bd=({groupId:e,isOver:n,depth:r})=>{const{setNodeRef:s}=ta({id:`group-footer::${e}`}),a=(r+1)*24;return t.jsx("div",{ref:s,style:{height:8,marginLeft:a,position:"relative",...n?{borderBottom:"2px solid var(--primary, var(--accent-primary, #007AFF))"}:{}}})},yd=({layer:e,showPreviewImages:n,previewDisplaySize:r})=>t.jsxs("div",{style:{paddingLeft:8,paddingRight:8,paddingTop:8,paddingBottom:8,display:"flex",alignItems:"center",gap:8,backgroundColor:"var(--surface, #fff)",borderRadius:8,boxShadow:"0 4px 16px rgba(0,0,0,0.15)",opacity:.9},children:[e.isGroup?t.jsx(F.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)"}}):n&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,style:{width:r,height:r,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)"}}):t.jsx("div",{style:{width:r,height:r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4},children:t.jsx(F.Icon,{icon:V.fileText})}),t.jsx("span",{style:{fontSize:13,color:"var(--foreground, #333)"},children:e.name})]}),sa=({width:e=250,height:n,showPreviewImages:r=!0,enableDragReorder:s=!1,enableGrouping:a=!1,style:o={},className:l="",showHeader:d=!0,...u})=>{const{activeArtboard:h}=F.useArtboards(),m=(h==null?void 0:h.previewBackgroundColor)||(h==null?void 0:h.backgroundColor)||"transparent",f=80,g=160,{layers:p,flatLayers:b,selectLayer:x,toggleVisibility:S,toggleLock:T,deleteLayer:C,duplicateLayer:w,reorderById:R,reorderWithinGroup:N,addToGroup:v,removeFromGroup:L,createEmptyGroup:D,findElementById:O,findParentGroup:A,generateAllPreviews:_}=F.useLayers({...u,previewSize:g,previewBackgroundColor:m});i.useEffect(()=>{r&&b.length>0&&_()},[r,b.length,m,_]);const G=i.useMemo(()=>{const $=new Map,P=ee=>{for(const oe of ee)$.set(oe.id,oe),oe.children&&P(oe.children)};return P(p),$},[p]),Y=i.useCallback(($,P,ee)=>{const oe=A($),ue=A(P);oe&&!ue?L($,P,ee):R($,P,ee)},[A,L,R]),B=ld({onReorder:Y,onDropIntoGroup:v,onDropIntoGroupAtPosition:($,P)=>v($,P),onGroupReorder:N,onRemoveFromGroup:L,findParentGroup:A}),H=$=>[...$].reverse().map(ee=>t.jsxs(i.Fragment,{children:[t.jsx(xd,{layer:ee,isOver:B.overId===ee.id,dropPosition:B.overId===ee.id?B.dropPosition:null,isDragActive:!!B.activeId,showPreviewImages:r,previewDisplaySize:f,onSelect:x,onToggleVisibility:S,onToggleLock:T,onDuplicate:w,onDelete:C}),ee.children&&H(ee.children),ee.isGroup&&t.jsx(bd,{groupId:ee.id,isOver:B.overId===`group-footer::${ee.id}`,depth:ee.depth})]},ee.id)),z=$=>[...$].reverse().map(ee=>t.jsxs(i.Fragment,{children:[t.jsx(vd,{layer:ee,showPreviewImages:r,previewDisplaySize:f,onSelect:x,onToggleVisibility:S,onToggleLock:T,onDuplicate:w,onDelete:C}),ee.children&&z(ee.children)]},ee.id)),W=B.activeId?G.get(B.activeId):null,{width:Z,height:M,flex:J,...K}=o,q=Z||(l.includes("w-full")?"100%":e?`${e}px`:void 0),Q=n||M||void 0,re=J!==void 0?J:Q==="100%"||Q==="100vh"?1:void 0;return t.jsxs("div",{className:`layers-panel ${l}`,style:{width:q,height:Q,flex:re,display:"flex",flexDirection:"column",backgroundColor:"transparent",minHeight:0,...K},children:[(d||a)&&t.jsxs("div",{style:{padding:"10px 16px",borderBottom:"1px solid var(--border-primary, #e5e5e5)",fontWeight:500,fontSize:13,color:"var(--text-secondary, #666)",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"space-between"},children:[d&&t.jsxs("span",{children:["Layers (",b.length,")"]}),!d&&t.jsx("span",{}),a&&t.jsxs("button",{onClick:D,style:{background:"none",border:"none",cursor:"pointer",fontSize:13,fontWeight:500,color:"var(--primary, var(--accent-primary, #007AFF))",display:"flex",alignItems:"center",gap:4},children:[t.jsx(F.Icon,{icon:"lucide:folder-plus",style:{fontSize:16}}),"Add Group"]})]}),t.jsxs("div",{style:{flex:1,overflow:"auto",minHeight:0},children:[p.length>0?s?t.jsxs(Pc,{sensors:B.sensors,collisionDetection:gd,onDragStart:B.onDragStart,onDragMove:B.onDragMove,onDragOver:B.onDragOver,onDragEnd:B.onDragEnd,onDragCancel:B.onDragCancel,children:[H(p),t.jsx(sd,{dropAnimation:null,children:W?t.jsx(yd,{layer:W,showPreviewImages:r,previewDisplaySize:f}):null})]}):z(p):t.jsx("div",{style:{padding:24,textAlign:"center",color:"var(--text-secondary, #999)",fontSize:12},children:"No layers"}),s&&p.length>1&&t.jsx("div",{style:{padding:"12px 16px",textAlign:"center",color:"var(--text-secondary, #aaa)",fontSize:12},children:"Drag to reorder"})]})]})},vd=({layer:e,showPreviewImages:n,previewDisplaySize:r,onSelect:s,onToggleVisibility:a,onToggleLock:o,onDuplicate:l,onDelete:d})=>{const u=e.depth>0,h=u?e.depth*24:0,m=e.isSelected?{outline:"3px solid var(--primary, var(--accent-primary, #007AFF))",outlineOffset:"2px"}:{},f={paddingLeft:h+8,paddingRight:8,paddingTop:e.isGroup?6:8,paddingBottom:e.isGroup?6:8,minHeight:e.isGroup?32:36,display:"flex",alignItems:"center",gap:8,cursor:"pointer"};return(u||e.isGroup)&&(f.backgroundColor="var(--surface-secondary, rgba(0,0,0,0.04))"),e.isGroup?t.jsxs("div",{style:f,children:[t.jsx(F.Icon,{icon:"lucide:folder-open",style:{fontSize:18,color:"var(--text-secondary, #888)"}}),t.jsx("span",{onClick:()=>s(e.id),style:{fontSize:13,fontWeight:600,flex:1},children:e.name})]},e.id):t.jsxs("div",{style:f,children:[n&&e.previewUrl?t.jsx("img",{src:e.previewUrl,alt:e.name,onClick:()=>s(e.id),style:{width:r,height:r,objectFit:"contain",borderRadius:4,border:"1px solid var(--border-primary, #e5e5e5)",cursor:"pointer",...m}}):t.jsx("div",{style:{width:r,height:r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:24,opacity:.6,border:"1px solid var(--border-primary, #e5e5e5)",borderRadius:4,cursor:"pointer",...m},onClick:()=>s(e.id),children:t.jsx(F.Icon,{icon:V.fileText})}),t.jsx("div",{style:{flex:1},onClick:()=>s(e.id)}),t.jsxs("div",{style:{display:"flex",gap:4},children:[t.jsx(Dt,{title:e.visible?"Hide":"Show",onClick:()=>a(e.id),style:{opacity:e.visible?1:.4},children:t.jsx(F.Icon,{icon:e.visible?V.eye:V.eyeOff,className:"size-6"})}),t.jsx(Dt,{title:e.locked?"Unlock":"Lock",onClick:()=>o(e.id),style:{opacity:e.locked?1:.4},children:t.jsx(F.Icon,{icon:e.locked?V.lock:V.lockOpen,className:"size-6"})}),t.jsx(Dt,{title:"Duplicate",onClick:()=>l(e.id),children:t.jsx(F.Icon,{icon:V.copy,className:"size-6"})}),t.jsx(Dt,{title:"Delete",onClick:()=>d(e.id),style:{color:"var(--error, #ef4444)"},children:t.jsx(F.Icon,{icon:V.trash,className:"size-6"})})]})]},e.id)},jd=Object.freeze(Object.defineProperty({__proto__:null,LayersPanel:sa},Symbol.toStringTag,{value:"Module"}));function Cd(){const[e,n]=i.useState(!1);return i.useEffect(()=>{if(typeof document>"u")return;const r=()=>n(document.documentElement.classList.contains("dark"));r();const s=new MutationObserver(r);return s.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]}),()=>s.disconnect()},[]),e}const yn=({isOpen:e,onClose:n,title:r,description:s,children:a,placement:o="bottom",height:l,maxHeight:d="70vh",width:u,maxWidth:h="400px",showCloseButton:m=!0,headerActions:f,hideVisibleTitle:g=!1,hideHandle:p=!1,disableScrollWrapper:b=!1,disableOverflowHidden:x=!1,"data-testid":S})=>{const T=o==="bottom"?l||d:void 0,w=Cd()?.65:.4;return t.jsx(c.Drawer,{open:e,onOpenChange:R=>!R&&n(),children:t.jsxs(c.DrawerContent,{placement:o,width:u,maxWidth:h,hideHandle:p||o!=="bottom",showOverlay:!0,overlayOpacity:w,className:x?"":"overflow-hidden",style:{...T&&o==="bottom"?{height:T}:{},zIndex:"var(--z-drawer, 10002)"},"data-testid":S,"data-preserve-selection":!0,children:[t.jsx(c.DrawerTitle,{className:"sr-only",children:r}),s&&t.jsx(c.DrawerDescription,{className:"sr-only",children:s}),b?t.jsxs("div",{className:"flex flex-col flex-1 min-h-0",children:[(!g||f||m)&&t.jsxs("div",{className:"border-border-primary flex shrink-0 items-center justify-between gap-4 border-b px-6 py-4",children:[!g&&t.jsx("h2",{className:"text-foreground text-lg font-semibold",children:r}),t.jsxs("div",{className:"flex items-center gap-2",children:[f,m&&t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:n,className:"min-w-8 px-2","aria-label":"Close drawer",children:t.jsx(F.Icon,{icon:V.close,className:"size-6"})})]})]}),a]}):t.jsxs("div",{className:"flex-1 overflow-y-auto min-h-0",children:[(!g||f||m)&&t.jsxs("div",{className:"border-border-primary flex shrink-0 items-center justify-between gap-4 border-b px-6 py-4",children:[!g&&t.jsx("h2",{className:"text-foreground text-lg font-semibold",children:r}),t.jsxs("div",{className:"flex items-center gap-2",children:[f,m&&t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:n,className:"min-w-8 px-2","aria-label":"Close drawer",children:t.jsx(F.Icon,{icon:V.close,className:"size-6"})})]})]}),a]})]})})};function tr(){return(tr=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e}).apply(this,arguments)}function oa(e,n){if(e==null)return{};var r,s,a={},o=Object.keys(e);for(s=0;s<o.length;s++)n.indexOf(r=o[s])>=0||(a[r]=e[r]);return a}function sn(e){var n=i.useRef(e),r=i.useRef(function(s){n.current&&n.current(s)});return n.current=e,r.current}var hn=function(e,n,r){return n===void 0&&(n=0),r===void 0&&(r=1),e>r?r:e<n?n:e},on=function(e){return"touches"in e},_r=function(e){return e&&e.ownerDocument.defaultView||self},xo=function(e,n,r){var s=e.getBoundingClientRect(),a=on(n)?function(o,l){for(var d=0;d<o.length;d++)if(o[d].identifier===l)return o[d];return o[0]}(n.touches,r):n;return{left:hn((a.pageX-(s.left+_r(e).pageXOffset))/s.width),top:hn((a.pageY-(s.top+_r(e).pageYOffset))/s.height)}},bo=function(e){!on(e)&&e.preventDefault()},aa=i.memo(function(e){var n=e.onMove,r=e.onKey,s=e.onEnd,a=oa(e,["onMove","onKey","onEnd"]),o=i.useRef(null),l=sn(n),d=sn(r),u=sn(s),h=i.useRef(null),m=i.useRef(!1),f=i.useMemo(function(){var S=function(w){bo(w),(on(w)?w.touches.length>0:w.buttons>0)&&o.current?l(xo(o.current,w,h.current)):(C(!1),u())},T=function(){C(!1),u()};function C(w){var R=m.current,N=_r(o.current),v=w?N.addEventListener:N.removeEventListener;v(R?"touchmove":"mousemove",S),v(R?"touchend":"mouseup",T)}return[function(w){var R=w.nativeEvent,N=o.current;if(N&&(bo(R),!function(L,D){return D&&!on(L)}(R,m.current)&&N)){if(on(R)){m.current=!0;var v=R.changedTouches||[];v.length&&(h.current=v[0].identifier)}N.focus(),l(xo(N,R,h.current)),C(!0)}},function(w){var R=w.which||w.keyCode;R<37||R>40||(w.preventDefault(),d({left:R===39?.05:R===37?-.05:0,top:R===40?.05:R===38?-.05:0}))},function(w){var R=w.which||w.keyCode;R>=37&&R<=40&&u()},C]},[d,l,u]),g=f[0],p=f[1],b=f[2],x=f[3];return i.useEffect(function(){return x},[x]),i.createElement("div",tr({},a,{onTouchStart:g,onMouseDown:g,className:"react-colorful__interactive",ref:o,onKeyDown:p,onKeyUp:b,tabIndex:0,role:"slider"}))}),as=function(e){return e.filter(Boolean).join(" ")},ia=function(e){var n=e.color,r=e.left,s=e.top,a=s===void 0?.5:s,o=as(["react-colorful__pointer",e.className]);return i.createElement("div",{className:o,style:{top:100*a+"%",left:100*r+"%"}},i.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:n}}))},Be=function(e,n,r){return n===void 0&&(n=0),r===void 0&&(r=Math.pow(10,n)),Math.round(r*e)/r},wd=function(e){return Ed(Pr(e))},Pr=function(e){return e[0]==="#"&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Be(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?Be(parseInt(e.substring(6,8),16)/255,2):1}},Sd=function(e){return Nd(kd(e))},Td=function(e){var n=e.s,r=e.v,s=e.a,a=(200-n)*r/100;return{h:Be(e.h),s:Be(a>0&&a<200?n*r/100/(a<=100?a:200-a)*100:0),l:Be(a/2),a:Be(s,2)}},$r=function(e){var n=Td(e);return"hsl("+n.h+", "+n.s+"%, "+n.l+"%)"},kd=function(e){var n=e.h,r=e.s,s=e.v,a=e.a;n=n/360*6,r/=100,s/=100;var o=Math.floor(n),l=s*(1-r),d=s*(1-(n-o)*r),u=s*(1-(1-n+o)*r),h=o%6;return{r:Be(255*[s,d,l,l,u,s][h]),g:Be(255*[u,s,s,d,l,l][h]),b:Be(255*[l,l,u,s,s,d][h]),a:Be(a,2)}},Mn=function(e){var n=e.toString(16);return n.length<2?"0"+n:n},Nd=function(e){var n=e.r,r=e.g,s=e.b,a=e.a,o=a<1?Mn(Be(255*a)):"";return"#"+Mn(n)+Mn(r)+Mn(s)+o},Ed=function(e){var n=e.r,r=e.g,s=e.b,a=e.a,o=Math.max(n,r,s),l=o-Math.min(n,r,s),d=l?o===n?(r-s)/l:o===r?2+(s-n)/l:4+(n-r)/l:0;return{h:Be(60*(d<0?d+6:d)),s:Be(o?l/o*100:0),v:Be(o/255*100),a}},Rd=i.memo(function(e){var n=e.hue,r=e.onChange,s=e.onChangeEnd,a=as(["react-colorful__hue",e.className]);return i.createElement("div",{className:a},i.createElement(aa,{onMove:function(o){r({h:360*o.left})},onKey:function(o){r({h:hn(n+360*o.left,0,360)})},onEnd:s,"aria-label":"Hue","aria-valuenow":Be(n),"aria-valuemax":"360","aria-valuemin":"0"},i.createElement(ia,{className:"react-colorful__hue-pointer",left:n/360,color:$r({h:n,s:100,v:100,a:1})})))}),Id=i.memo(function(e){var n=e.hsva,r=e.onChange,s=e.onChangeEnd,a={backgroundColor:$r({h:n.h,s:100,v:100,a:1})};return i.createElement("div",{className:"react-colorful__saturation",style:a},i.createElement(aa,{onMove:function(o){r({s:100*o.left,v:100-100*o.top})},onKey:function(o){r({s:hn(n.s+100*o.left,0,100),v:hn(n.v-100*o.top,0,100)})},onEnd:s,"aria-label":"Color","aria-valuetext":"Saturation "+Be(n.s)+"%, Brightness "+Be(n.v)+"%"},i.createElement(ia,{className:"react-colorful__saturation-pointer",top:1-n.v/100,left:n.s/100,color:$r(n)})))}),la=function(e,n){if(e===n)return!0;for(var r in e)if(e[r]!==n[r])return!1;return!0},Dd=function(e,n){return e.toLowerCase()===n.toLowerCase()||la(Pr(e),Pr(n))};function Ad(e,n,r,s){var a=sn(r),o=sn(s),l=i.useState(function(){return e.toHsva(n)}),d=l[0],u=l[1],h=i.useRef({color:n,hsva:d}),m=i.useRef(!1);i.useEffect(function(){if(!e.equal(n,h.current.color)){var p=e.toHsva(n);h.current={hsva:p,color:n},u(p),m.current=!1}},[n,e]),i.useEffect(function(){var p;la(d,h.current.hsva)||e.equal(p=e.fromHsva(d),h.current.color)||(h.current={hsva:d,color:p},a(p),m.current=!0)},[d,e,a]);var f=i.useCallback(function(p){u(function(b){return Object.assign({},b,p)})},[]),g=i.useCallback(function(){m.current&&(m.current=!1,o(h.current.color))},[o]);return[d,f,g]}var Md=typeof window<"u"?i.useLayoutEffect:i.useEffect,Fd=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},yo=new Map,Ld=function(e){Md(function(){var n=e.current?e.current.ownerDocument:document;if(n!==void 0&&!yo.has(n)){var r=n.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,yo.set(n,r);var s=Fd();s&&r.setAttribute("nonce",s),n.head.appendChild(r)}},[])},zd=function(e){var n=e.className,r=e.colorModel,s=e.color,a=s===void 0?r.defaultColor:s,o=e.onChange,l=e.onChangeEnd,d=oa(e,["className","colorModel","color","onChange","onChangeEnd"]),u=i.useRef(null);Ld(u);var h=Ad(r,a,o,l),m=h[0],f=h[1],g=h[2],p=as(["react-colorful",n]);return i.createElement("div",tr({},d,{ref:u,className:p}),i.createElement(Id,{hsva:m,onChange:f,onChangeEnd:g}),i.createElement(Rd,{hue:m.h,onChange:f,onChangeEnd:g,className:"react-colorful__last-control"}))},Od={defaultColor:"000",toHsva:wd,fromHsva:function(e){return Sd({h:e.h,s:e.s,v:e.v,a:1})},equal:Dd},ca=function(e){return i.createElement(zd,tr({},e,{colorModel:Od}))};const Bt=i.memo(({value:e,onChange:n,documentColors:r=[],imageColors:s=[],icon:a,showSquare:o=!1,allowTransparent:l=!1,isOpen:d,onOpenChange:u,embedded:h=!1})=>{const[m,f]=i.useState(!1),[g,p]=i.useState(e),[b,x]=i.useState(e),S=i.useRef(0),T=i.useRef(null),C=i.useRef(!1),w=i.useRef(n);w.current=n;const R=d!==void 0?d:m,N=u||f;i.useEffect(()=>{!C.current&&e!=="transparent"&&(p(e),x(e))},[e]);const v=B=>{C.current=!0,x(B),p(B);const H=Date.now(),z=H-S.current;z>=16?(w.current({target:{value:B}}),S.current=H,T.current&&(clearTimeout(T.current),T.current=null)):(T.current&&clearTimeout(T.current),T.current=setTimeout(()=>{w.current({target:{value:B}}),S.current=Date.now(),T.current=null,C.current=!1},16-z))},L=i.useRef(b);L.current=b,i.useEffect(()=>{const B=()=>{T.current&&(clearTimeout(T.current),T.current=null,w.current({target:{value:L.current}})),setTimeout(()=>{C.current=!1},50)};return window.addEventListener("pointerup",B),window.addEventListener("pointercancel",B),()=>{window.removeEventListener("pointerup",B),window.removeEventListener("pointercancel",B)}},[]),i.useEffect(()=>()=>{T.current&&clearTimeout(T.current)},[]);const D=B=>{const H=B.target.value;p(H);const z=/^#?([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})$/,W=H.startsWith("#")?H:`#${H}`;z.test(W)&&w.current({target:{value:W}})},O=B=>{v(B)},A=()=>{w.current({target:{value:"transparent"}})},_=e==="transparent",G=o?t.jsx("div",{className:`size-8 md:size-6 rounded-md border border-border-primary ${_?"transparent-pattern-small":""}`,style:_?{}:{backgroundColor:e}}):t.jsxs("div",{className:"relative flex items-center justify-center h-5 w-5",children:[a?t.jsx("span",{className:"flex items-center -translate-y-0.5",children:a}):t.jsx("span",{className:"font-bold text-lg leading-none -translate-y-0.5",children:"A"}),t.jsx("div",{className:`absolute bottom-0 left-1/2 -translate-x-1/2 h-[3px] w-4 rounded-sm ${_?"transparent-pattern-small":""}`,style:_?{}:{backgroundColor:e}})]}),Y=t.jsxs("div",{className:"space-y-4 min-w-[232px]",children:[l&&t.jsxs(c.Button,{variant:"ghost",className:`flex w-full cursor-pointer items-center justify-start gap-2 rounded-lg ${_?"bg-primary/10":""}`,onClick:A,children:[t.jsx("div",{className:"transparent-pattern-small h-6 w-6 rounded"}),t.jsx("span",{className:"text-sm font-medium",children:"Transparent"})]}),t.jsx("div",{className:"w-[200px]",children:t.jsx(ca,{color:_?"#ffffff":b,onChange:v})}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{htmlFor:"hex-input",className:"text-sm font-medium uppercase text-foreground/60",children:"HEX"}),t.jsx("input",{id:"hex-input",type:"text",className:"w-24 rounded-lg border border-divider bg-field px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none",value:g,onChange:D,placeholder:"#000000",maxLength:7})]}),r.length>0&&t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Document colors"}),t.jsx("div",{className:"grid grid-cols-8 gap-1",children:r.map((B,H)=>t.jsx("button",{className:`h-6 w-6 cursor-pointer rounded border-2 transition-all duration-150 hover:scale-110 ${B===e?"border-primary":"border-transparent"}`,style:{backgroundColor:B},onClick:()=>O(B),"aria-label":B},H))})]}),s.length>0&&t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Image colors"}),t.jsx("div",{className:"grid grid-cols-8 gap-1",children:s.map((B,H)=>t.jsx("button",{className:`h-6 w-6 cursor-pointer rounded border-2 transition-all duration-150 hover:scale-110 ${B===e?"border-primary":"border-transparent"}`,style:{backgroundColor:B},onClick:()=>O(B),"aria-label":B},`img-${H}`))})]})]});return h?Y:t.jsxs(c.Popover,{open:R,onOpenChange:N,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:o?"flex items-center justify-center bg-transparent border-0 p-0 cursor-pointer rounded-md hover:opacity-80 transition-opacity":"toolbar-btn","aria-label":"Color Picker",children:G})}),t.jsx(c.PopoverContent,{className:"w-auto",maxZIndex:!0,children:Y})]})});Bt.displayName="ColorPickerDropdown";const _d=({stroke:e,onChange:n})=>{const[r,s]=i.useState((e==null?void 0:e.enabled)||!1),a=(e==null?void 0:e.enabled)||!1,o=(e==null?void 0:e.color)||"#000000",l=(e==null?void 0:e.width)||5,d=(e==null?void 0:e.lineCap)||"butt",u=(e==null?void 0:e.lineJoin)||"miter",h=(e==null?void 0:e.opacity)!==void 0?e.opacity:1,m=S=>{n(S?{enabled:!0,color:o,width:l,lineCap:d,lineJoin:u,opacity:h}:void 0),s(S)},f=S=>{e&&n({...e,color:S.target.value})},g=S=>{e&&n({...e,width:S[0]})},p=S=>{e&&n({...e,opacity:S[0]})},b=S=>{e&&n({...e,lineCap:S})},x=S=>{e&&n({...e,lineJoin:S})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:s,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Stroke"}),t.jsx(c.Switch,{checked:a,onCheckedChange:m})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsx(c.Fieldset,{className:"flex flex-col gap-sm",children:t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{children:"Color"}),t.jsx(Bt,{value:o,onChange:f})]})}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Width"}),t.jsx(c.Slider,{value:[l],onValueChange:g,min:1,max:50,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[l,"px"]})]}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Opacity"}),t.jsx(c.Slider,{value:[h],onValueChange:p,min:0,max:1,step:.01}),t.jsxs("div",{className:"text-sm text-text-muted",children:[Math.round(h*100),"%"]})]}),t.jsxs(c.TooltipProvider,{delayDuration:300,children:[t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Line Cap"}),t.jsxs(c.RadioGroup,{value:d,onValueChange:b,orientation:"horizontal",children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"butt",id:"cap-butt",children:"Butt"})})}),t.jsx(c.TooltipContent,{children:"Butt - Flat edges"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"round",id:"cap-round",children:"Round"})})}),t.jsx(c.TooltipContent,{children:"Round - Rounded edges"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"square",id:"cap-square",children:"Square"})})}),t.jsx(c.TooltipContent,{children:"Square - Extended square edges"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Line Join"}),t.jsxs(c.RadioGroup,{value:u,onValueChange:x,orientation:"horizontal",children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"miter",id:"join-miter",children:"Miter"})})}),t.jsx(c.TooltipContent,{children:"Miter - Sharp corners"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"round",id:"join-round",children:"Round"})})}),t.jsx(c.TooltipContent,{children:"Round - Rounded corners"})]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(c.Radio,{value:"bevel",id:"join-bevel",children:"Bevel"})})}),t.jsx(c.TooltipContent,{children:"Bevel - Beveled corners"})]})]})]})]})]})]})},Pd=({mask:e,index:n,isFirst:r,isLast:s,onUpdate:a,onRemove:o,onReorder:l})=>{var R;const[d,u]=i.useState(!1),h=N=>{switch(N){case"clip":return"🎭";case"alpha":return"🌫️";case"luma":return"🌗";case"distress":return"⚡";default:return"🎭"}},m=N=>{switch(N){case"clip":return"Clip Mask";case"alpha":return"Alpha Mask";case"luma":return"Luma Mask";case"distress":return"Distress Mask";default:return"Unknown Mask"}},f=N=>{a({opacity:N})},g=N=>{a({feather:N})},p=()=>{a({inverted:!e.inverted})},b=N=>{const v=N.target.value;if(v==="image"){const L=e.maskElement.transformType==="image"&&e.maskElement.imageUrl||"";a({maskElement:{transformType:"image",imageUrl:L,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{type:"image",width:200,height:200,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}}})}else a(v==="shape"?{maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{type:"shape",shapeType:"star",width:200,height:200,fillColor:"#000000",fillOpacity:1,points:5,innerRadius:.4}}}:{maskElement:{transformType:"custom",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:"MASK",fontSize:80,fontFamily:"Anton",color:"#000000"}})},x=N=>{const v=N.target.value;e.maskElement.transformType==="shape"&&a({maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...e.maskElement.transformData,shapeType:v}}})},S=N=>{if(e.maskElement.transformType!=="shape"){const v=e.maskElement;a({maskElement:{transformType:e.maskElement.transformType,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:N.target.value,fontSize:v.fontSize||80,fontFamily:v.fontFamily||"Anton",color:v.color||"#000000"}})}},T=N=>{if(e.maskElement.transformType==="image"){const v=e.maskElement;a({maskElement:{transformType:"image",imageUrl:N.target.value,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:v.transformData||{type:"image",width:200,height:200,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}}})}},C=N=>{if(e.maskElement.transformType==="image"){const v=e.maskElement;a({maskElement:{transformType:"image",imageUrl:v.imageUrl||"",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...v.transformData,width:N,height:N}}})}else if(e.maskElement.transformType==="shape")a({maskElement:{transformType:"shape",x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,transformData:{...e.maskElement.transformData,width:N,height:N}}});else{const v=e.maskElement;a({maskElement:{transformType:e.maskElement.transformType,x:e.maskElement.x||0,y:e.maskElement.y||0,rotation:e.maskElement.rotation||0,text:v.text||"MASK",fontSize:N,fontFamily:v.fontFamily||"Anton",color:v.color||"#000000"}})}},w=()=>{var N,v;return e.maskElement.transformType==="image"?((N=e.maskElement.transformData)==null?void 0:N.width)||200:e.maskElement.transformType==="shape"?((v=e.maskElement.transformData)==null?void 0:v.width)||200:e.maskElement.fontSize||80};return t.jsxs("div",{className:"rounded-md border border-border-secondary bg-bg-tertiary p-lg",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-lg",children:[t.jsx("span",{className:"text-lg",children:h(e.type)}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:m(e.type)}),t.jsxs("small",{className:"text-sm text-text-muted",children:["#",n+1]})]})]}),t.jsx("div",{className:"flex gap-1",children:t.jsxs(c.Tooltip,{delay:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{size:"icon",variant:"ghost","aria-label":"Toggle mask details","aria-expanded":d,onClick:()=>u(!d),children:d?"▼":"▶"})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:d?"Collapse":"Expand"})})]})})]}),d&&t.jsxs("div",{className:"mt-xl flex flex-col gap-xl border-t border-border-secondary pt-xl",children:[t.jsxs(c.Slider,{className:"slider-no-fill",value:[e.opacity||1],onValueChange:N=>f(N[0]),min:0,max:1,step:.01,children:[t.jsx(c.Label,{children:"Opacity"}),t.jsx(c.Slider.Output,{children:({state:N})=>`${Math.round(N.values[0]*100)}%`}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]}),t.jsxs(c.Slider,{className:"slider-no-fill",value:[e.feather||0],onValueChange:N=>g(N[0]),min:0,max:50,step:1,children:[t.jsx(c.Label,{children:"Feather"}),t.jsx(c.Slider.Output,{children:({state:N})=>`${N.values[0]}px`}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]}),t.jsxs("label",{className:"flex cursor-pointer items-center gap-md text-base text-text-secondary",children:[t.jsx("input",{type:"checkbox",checked:e.inverted||!1,onChange:p,className:"h-4 w-4 cursor-pointer"}),t.jsx("span",{children:"Invert Mask"})]}),t.jsxs("div",{className:"flex flex-col gap-lg rounded-md border border-border-dark bg-bg-secondary p-xl",children:[t.jsx("div",{className:"mb-xs text-md font-semibold uppercase tracking-wide text-accent-primary",children:"Mask Shape"}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-type-${e.id}`,className:"text-base text-text-secondary",children:"Type"}),t.jsxs("select",{id:`mask-type-${e.id}`,value:e.maskElement.transformType==="shape"?"shape":e.maskElement.transformType==="image"?"image":"custom",onChange:b,className:"w-full cursor-pointer rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",children:[t.jsx("option",{value:"custom",children:"Text"}),t.jsx("option",{value:"shape",children:"Shape"}),t.jsx("option",{value:"image",children:"Image"})]})]}),e.maskElement.transformType==="shape"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-shape-${e.id}`,className:"text-base text-text-secondary",children:"Shape"}),t.jsxs("select",{id:`mask-shape-${e.id}`,value:((R=e.maskElement.transformData)==null?void 0:R.shapeType)||"star",onChange:x,className:"w-full cursor-pointer rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",children:[t.jsx("option",{value:"rectangle",children:"Rectangle"}),t.jsx("option",{value:"circle",children:"Circle"}),t.jsx("option",{value:"ellipse",children:"Ellipse"}),t.jsx("option",{value:"star",children:"Star"})]})]}),e.maskElement.transformType==="image"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-image-${e.id}`,className:"text-base text-text-secondary",children:"Image URL"}),t.jsx("input",{id:`mask-image-${e.id}`,type:"text",value:e.maskElement.imageUrl||"",onChange:T,className:"w-full rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",placeholder:"https://... or data:image/..."})]}),e.maskElement.transformType!=="shape"&&e.maskElement.transformType!=="image"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx("label",{htmlFor:`mask-text-${e.id}`,className:"text-base text-text-secondary",children:"Text"}),t.jsx("input",{id:`mask-text-${e.id}`,type:"text",value:e.maskElement.text||"MASK",onChange:S,className:"w-full rounded-md border border-border-dark bg-bg-tertiary px-md py-sm text-base text-text-primary transition-all duration-base hover:border-accent-primary focus:border-accent-primary focus:outline-none",placeholder:"Mask text"})]}),t.jsxs(c.Slider,{className:"slider-no-fill",value:[w()],onValueChange:N=>C(N[0]),min:20,max:500,step:10,children:[t.jsx(c.Label,{children:"Size"}),t.jsx(c.Slider.Output,{}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]})]}),t.jsxs("div",{className:"mt-md flex gap-sm",children:[t.jsx("button",{onClick:()=>l("up"),disabled:r,title:"Move Up","aria-label":"Move mask up",className:"flex-1 cursor-pointer rounded-md border border-border-dark bg-bg-hover px-md py-sm text-xl text-text-secondary transition-all duration-slow hover:border-accent-primary hover:bg-bg-dark-hover hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-disabled",children:"↑"}),t.jsx("button",{onClick:()=>l("down"),disabled:s,title:"Move Down","aria-label":"Move mask down",className:"flex-1 cursor-pointer rounded-md border border-border-dark bg-bg-hover px-md py-sm text-xl text-text-secondary transition-all duration-slow hover:border-accent-primary hover:bg-bg-dark-hover hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-disabled",children:"↓"}),t.jsx("button",{onClick:o,title:"Remove Mask","aria-label":"Remove mask",className:"flex-[2] cursor-pointer rounded-md border border-error-light bg-error px-md py-sm text-base font-semibold text-text-on-dark transition-all duration-slow hover:bg-error-light",children:"✕ Remove"})]})]})]})},$d=({masks:e=[],onChange:n})=>{const[r,s]=i.useState(e.length>0),[a,o]=i.useState(!1),l=m=>{const f={id:`mask-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,type:m,maskElement:Bd(m),inverted:!1,feather:0,opacity:1};n([...e,f]),o(!1)},d=m=>{n(e.filter(f=>f.id!==m))},u=(m,f)=>{n(e.map(g=>g.id===m?{...g,...f}:g))},h=(m,f)=>{const g=e.findIndex(b=>b.id===m);if(g===-1)return;const p=[...e];f==="up"&&g>0?[p[g],p[g-1]]=[p[g-1],p[g]]:f==="down"&&g<e.length-1&&([p[g],p[g+1]]=[p[g+1],p[g]]),n(p)};return t.jsxs("div",{className:"mb-xl rounded-xl border border-border-primary bg-bg-secondary p-xl",children:[t.jsxs("div",{className:"mb-md flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-md text-xl font-semibold text-text-primary",children:[t.jsxs("span",{children:["Masks (",e.length,")"]}),e.length>0&&t.jsx("button",{onClick:()=>s(!r),className:"rounded-lg border-none bg-transparent px-md py-xs text-base text-text-muted transition-colors duration-fast hover:text-text-primary",title:r?"Collapse":"Expand",children:r?"▼":"▶"})]}),t.jsx("div",{className:"flex gap-sm",children:t.jsx(c.Button,{variant:"default",onClick:()=>o(!a),className:"rounded-lg bg-accent px-xl py-sm font-semibold text-text-on-accent transition-all duration-medium hover:bg-accent-medium",children:"+ Add"})})]}),a&&t.jsxs("div",{className:"mb-md mt-md flex flex-col gap-sm rounded-lg border border-border-medium bg-surface p-md",children:[t.jsxs("button",{onClick:()=>l("clip"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🎭"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Clip Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Hard edge clipping (text, shapes)"})]})]}),t.jsxs("button",{onClick:()=>l("alpha"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🌫️"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Alpha Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Transparency-based masking"})]})]}),t.jsxs("button",{onClick:()=>l("luma"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"🌗"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Luma Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Luminosity-based masking"})]})]}),t.jsxs("button",{onClick:()=>l("distress"),className:"flex cursor-pointer items-center gap-xl rounded-lg border border-border-light bg-bg-secondary p-lg text-left text-text-primary transition-all duration-medium hover:border-accent hover:bg-bg-hover",children:[t.jsx("span",{className:"shrink-0 text-xl",children:"⚡"}),t.jsxs("div",{className:"flex flex-col gap-xs",children:[t.jsx("strong",{className:"text-lg text-text-primary",children:"Distress Mask"}),t.jsx("small",{className:"text-base text-text-secondary",children:"Vintage/grunge texture effects"})]})]})]}),r&&e.length>0&&t.jsx("div",{className:"mt-xl flex flex-col gap-md",children:e.map((m,f)=>t.jsx(Pd,{mask:m,index:f,isFirst:f===0,isLast:f===e.length-1,onUpdate:g=>u(m.id,g),onRemove:()=>d(m.id),onReorder:g=>h(m.id,g)},m.id))}),e.length===0&&t.jsxs("div",{className:"p-3xl text-center text-text-secondary",children:[t.jsx("p",{className:"mb-xs text-lg",children:"No masks applied"}),t.jsx("small",{className:"text-base text-border-medium",children:'Click "+ Add" to add a mask'})]})]})};function Bd(e){switch(e){case"clip":return{transformType:"custom",text:"MASK",fontSize:80,fontFamily:"Anton",x:0,y:0,rotation:0,color:"#000000"};case"alpha":case"luma":return{transformType:"custom",text:"FADE",fontSize:100,fontFamily:"Arial",x:0,y:0,rotation:0,color:"#888888"};case"distress":return{transformType:"image",imageUrl:"",x:0,y:0,rotation:0,transformData:{type:"image",width:500,height:500,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}};default:return{transformType:"custom",text:"MASK",fontSize:80,x:0,y:0,rotation:0,color:"#000000"}}}const Ud={enabled:!0,style:"worn",intensity:30,fadeAmount:20,grainAmount:15,edgeWear:40,seed:void 0},Wd={enabled:!0,style:"worn",intensity:55,fadeAmount:35,grainAmount:25,edgeWear:60,seed:void 0},Hd={enabled:!0,style:"worn",intensity:75,fadeAmount:50,grainAmount:40,edgeWear:80,seed:void 0},Gd={enabled:!0,style:"cracked",intensity:25,scratchAmount:30,edgeWear:20,seed:void 0},Kd={enabled:!0,style:"cracked",intensity:50,scratchAmount:50,edgeWear:35,seed:void 0},Vd={enabled:!0,style:"cracked",intensity:80,scratchAmount:75,edgeWear:60,seed:void 0},Yd={enabled:!0,style:"grunge",intensity:35,grainAmount:40,fadeAmount:25,seed:void 0},Xd={enabled:!0,style:"grunge",intensity:60,grainAmount:60,fadeAmount:40,seed:void 0},qd={enabled:!0,style:"grunge",intensity:85,grainAmount:80,fadeAmount:55,seed:void 0},Jd={enabled:!0,style:"retro",intensity:30,fadeAmount:30,grainAmount:25,seed:void 0},Zd={enabled:!0,style:"retro",intensity:55,fadeAmount:45,grainAmount:40,seed:void 0},Qd={enabled:!0,style:"retro",intensity:75,fadeAmount:60,grainAmount:55,seed:void 0},eu={worn:{light:Ud,medium:Wd,heavy:Hd},cracked:{light:Gd,medium:Kd,heavy:Vd},grunge:{light:Yd,medium:Xd,heavy:qd},retro:{light:Jd,medium:Zd,heavy:Qd}};function tu(e,n){const r={...eu[e][n]};return r.seed=Date.now(),r}const nu=({distressEffect:e,onChange:n})=>{ye.ensureBuiltinTexturesReady();const[r,s]=i.useState(!1),a=(e==null?void 0:e.enabled)||!1,o=(e==null?void 0:e.style)||"worn",l=(e==null?void 0:e.intensity)||50,d=(e==null?void 0:e.fadeAmount)||30,u=(e==null?void 0:e.grainAmount)||30,h=(e==null?void 0:e.scratchAmount)||30,m=(e==null?void 0:e.edgeWear)||40,f=v=>{n(v?{enabled:!0,style:o,intensity:l,fadeAmount:d,grainAmount:u,scratchAmount:h,edgeWear:m,seed:Date.now()}:void 0)},g=(v,L)=>{const D=tu(v,L);n(D),s(!1)},p=v=>{if(e)if(v==="custom"){const L=e.textureUrl||ye.DISTRESS_TEXTURE_PRESETS[0].textureUrl;ye.preloadTexture(L),n({...e,style:"custom",textureUrl:L,textureOpacity:e.textureOpacity??e.intensity/100})}else n({...e,style:v,seed:Date.now()})},b=v=>{e&&(ye.preloadTexture(v),n({...e,style:"custom",textureUrl:v}))},x=v=>{e&&n({...e,textureOpacity:v[0]/100})},S=v=>{e&&n({...e,intensity:v[0]})},T=v=>{e&&n({...e,fadeAmount:v[0]})},C=v=>{e&&n({...e,grainAmount:v[0]})},w=v=>{e&&n({...e,scratchAmount:v[0]})},R=v=>{e&&n({...e,edgeWear:v[0]})},N=()=>{e&&n({...e,seed:Date.now()})};return t.jsxs(c.Disclosure,{open:a,onOpenChange:f,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Distress Effect"}),t.jsx(c.Switch,{checked:a,onCheckedChange:f,onClick:v=>v.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsx("div",{className:"flex gap-sm",children:t.jsx(c.Button,{variant:"outline",onClick:()=>s(!r),className:"flex-1",children:"Presets"})}),r&&t.jsxs("div",{className:"flex flex-col gap-xl rounded-md border border-border-primary bg-bg-tertiary p-xl",children:[t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Vintage Worn"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("worn","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Cracked"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("cracked","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Grunge"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("grunge","heavy"),className:"flex-1",children:"Heavy"})]})]}),t.jsxs("div",{children:[t.jsx("h4",{className:"mb-sm text-base font-semibold text-accent-primary",children:"Retro Halftone"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","light"),className:"flex-1",children:"Light"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","medium"),className:"flex-1",children:"Medium"}),t.jsx(c.Button,{variant:"outline",onClick:()=>g("retro","heavy"),className:"flex-1",children:"Heavy"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Style"}),t.jsxs(c.RadioGroup,{value:o,onValueChange:p,orientation:"horizontal",children:[t.jsx(c.Radio,{value:"worn",id:"style-worn",children:"Worn"}),t.jsx(c.Radio,{value:"cracked",id:"style-cracked",children:"Cracked"}),t.jsx(c.Radio,{value:"grunge",id:"style-grunge",children:"Grunge"}),t.jsx(c.Radio,{value:"retro",id:"style-retro",children:"Retro"}),t.jsx(c.Radio,{value:"custom",id:"style-custom",children:"Custom"})]})]}),o==="custom"&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"grid grid-cols-4 gap-1.5",children:ye.DISTRESS_TEXTURE_PRESETS.map(v=>t.jsx("button",{onClick:()=>b(v.textureUrl),className:`aspect-square rounded-md border-2 overflow-hidden transition-colors ${(e==null?void 0:e.textureUrl)===v.textureUrl?"border-accent-primary":"border-border-primary hover:border-border-focus"}`,title:v.name,children:t.jsx("img",{src:v.thumbnailUrl,alt:v.name,className:"w-full h-full object-cover",loading:"lazy"})},v.id))}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Texture Opacity"}),t.jsx(c.Slider,{value:[Math.round(((e==null?void 0:e.textureOpacity)??.5)*100)],onValueChange:x,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[Math.round(((e==null?void 0:e.textureOpacity)??.5)*100),"%"]})]})]}),o!=="custom"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Intensity"}),t.jsx(c.Slider,{value:[l],onValueChange:S,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[l,"%"]})]}),(o==="worn"||o==="grunge"||o==="retro")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Fade"}),t.jsx(c.Slider,{value:[d],onValueChange:T,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[d,"%"]})]}),(o==="worn"||o==="grunge"||o==="retro")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Grain"}),t.jsx(c.Slider,{value:[u],onValueChange:C,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[u,"%"]})]}),o==="cracked"&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Scratches"}),t.jsx(c.Slider,{value:[h],onValueChange:w,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[h,"%"]})]}),(o==="worn"||o==="cracked")&&t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Edge Wear"}),t.jsx(c.Slider,{value:[m],onValueChange:R,min:0,max:100,step:1}),t.jsxs("div",{className:"text-sm text-text-muted",children:[m,"%"]})]}),t.jsx(c.Button,{variant:"outline",onClick:N,className:"w-full",children:"Randomize Pattern"})]})]})};function da(e){return e?!!(e.fill||e.stroke):!1}function ru(e){if(!e)return[];const n=[];return e.fill&&n.push("fill"),e.stroke&&n.push("stroke"),n}function su(e,n="knockout"){if(!e||!da(e))return"No compositing";const r=ru(e),s=e.scope||"group",a=n==="clip"?"clip":"knockout";return r.length===0?"No compositing":r.length===1?`${r[0]} ${a} (${s})`:`${r.slice(0,-1).join(", ")+" & "+r[r.length-1]} ${a} (${s})`}function ou(e){return!e||!da(e)?"No knockout":su(e,"knockout")}const au=({blendMode:e="normal",knockoutParts:n,onChange:r})=>{const s=e==="knockout"||e==="clip",[a,o]=i.useState(s),l=s,d=(n==null?void 0:n.fill)||!1,u=(n==null?void 0:n.stroke)||!1,h=(n==null?void 0:n.scope)||"group",m=b=>{b==="knockout"||b==="clip"?(r(b,{fill:!1,stroke:!0,scope:"artboard"}),o(!0)):(r(b,void 0),o(!1))},f=()=>{n&&r(e,{...n,fill:!d})},g=()=>{n&&r(e,{...n,stroke:!u})},p=b=>{n&&r(e,{...n,scope:b})};return t.jsxs(c.Disclosure,{open:a,onOpenChange:l?o:void 0,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsx("div",{className:"flex items-center justify-between w-full",children:t.jsx(c.Label,{children:"Compositing"})})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg pt-lg",children:[t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Blend Mode"}),t.jsxs(c.RadioGroup,{value:e,onValueChange:m,orientation:"horizontal",children:[t.jsx(c.Radio,{value:"normal",id:"blend-normal",children:"Normal"}),t.jsx(c.Radio,{value:"knockout",id:"blend-knockout",children:"Knockout"})]})]}),l&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-col gap-md border-t border-border-primary pt-2xl",children:[t.jsx("label",{className:"text-base font-medium text-text-secondary",children:"Knockout Parts"}),t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsxs("label",{className:"flex cursor-pointer flex-col gap-xs rounded-lg border border-border-primary bg-bg-tertiary p-md transition-all duration-fast hover:border-border-secondary hover:bg-bg-hover",onClick:f,children:[t.jsxs("span",{className:"flex items-center gap-sm text-lg font-semibold text-text-primary",children:[t.jsx("span",{className:"text-base",children:d?"☑":"☐"}),"Fill"]}),t.jsx("small",{className:"ml-[22px] text-sm text-text-muted",children:"Element content cuts through"})]}),t.jsxs("label",{className:"flex cursor-pointer flex-col gap-xs rounded-lg border border-border-primary bg-bg-tertiary p-md transition-all duration-fast hover:border-border-secondary hover:bg-bg-hover",onClick:g,children:[t.jsxs("span",{className:"flex items-center gap-sm text-lg font-semibold text-text-primary",children:[t.jsx("span",{className:"text-base",children:u?"☑":"☐"}),"Stroke"]}),t.jsx("small",{className:"ml-[22px] text-sm text-text-muted",children:"Border/outline cuts through"})]})]})]}),t.jsxs(c.Fieldset,{className:"flex flex-col gap-sm",children:[t.jsx(c.Label,{children:"Knockout Scope"}),t.jsxs("div",{className:"flex gap-sm",children:[t.jsxs("button",{className:`flex flex-1 cursor-pointer flex-col gap-xs rounded-lg border p-lg text-center transition-all duration-fast ${h==="group"?"border-accent-primary bg-accent-primary":"border-border-primary bg-bg-tertiary hover:border-border-secondary hover:bg-bg-hover"}`,onClick:()=>p("group"),title:"Knockout within group siblings only",children:[t.jsx("strong",{className:`text-lg ${h==="group"?"text-text-on-accent":"text-text-primary"}`,children:"Group"}),t.jsx("small",{className:`text-sm ${h==="group"?"text-bg-tertiary":"text-text-muted"}`,children:"Affects siblings in group"})]}),t.jsxs("button",{className:`flex flex-1 cursor-pointer flex-col gap-xs rounded-lg border p-lg text-center transition-all duration-fast ${h==="artboard"?"border-accent-primary bg-accent-primary":"border-border-primary bg-bg-tertiary hover:border-border-secondary hover:bg-bg-hover"}`,onClick:()=>p("artboard"),title:"Knockout cuts through to artboard",children:[t.jsx("strong",{className:`text-lg ${h==="artboard"?"text-text-on-accent":"text-text-primary"}`,children:"Artboard"}),t.jsx("small",{className:`text-sm ${h==="artboard"?"text-bg-tertiary":"text-text-muted"}`,children:"Cuts to transparent background"})]})]})]}),t.jsxs("div",{className:"flex flex-col gap-md",children:[t.jsxs("div",{className:"rounded-lg border border-border-primary bg-bg-tertiary p-md",children:[t.jsx("strong",{className:"text-sm font-semibold uppercase tracking-wide text-accent-primary",children:"Effect:"}),t.jsx("p",{className:"mt-xs text-base text-text-secondary",children:ou(n)})]}),t.jsx("div",{className:"rounded-sm border-l-2 border-accent-primary bg-accent-light p-md",children:t.jsxs("small",{className:"text-sm leading-relaxed text-text-secondary",children:[t.jsx("strong",{children:"Tip:"})," Use ",t.jsx("em",{className:"font-semibold not-italic text-accent-primary",children:"Artboard"})," ","scope for t-shirt designs, ",t.jsx("em",{className:"font-semibold not-italic text-accent-primary",children:"Group"})," scope for pillow patterns."]})})]})]})]})]})},iu=U.createLogger("GlyphPicker"),lu=({isOpen:e,onClose:n,character:r,charIndex:s,fontFamily:a,fontWeight:o=400,currentGlyphOverride:l,onSelectGlyph:d,browseAll:u=!1})=>{const[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(null);i.useEffect(()=>{if(!e)return;g(!0),b(null),(u?U.FontAnalyzer.getAllGlyphs(a,o):U.FontAnalyzer.getGlyphAlternates(a,r,o)).then(C=>{C.length===0&&b(u?`No glyphs found in ${a}`:`No alternates found for "${r}" in ${a}`),m(C),g(!1)}).catch(C=>{iu.error("Error loading glyphs:",C),b(u?"Failed to load glyphs":"Failed to load glyph alternates"),g(!1)})},[e,r,a,o,u]);const x=T=>{!u&&T.category==="default"?d(null):d({charIndex:s,glyphIndex:T.glyphIndex,unicode:u?T.unicode:r,alternateName:T.name}),n()},S=u?`Browse All Glyphs - ${a}`:`Alternates for "${r}"`;return t.jsx(c.Drawer,{open:e,onOpenChange:T=>!T&&n(),children:t.jsxs(c.DrawerContent,{placement:"bottom",overlayOpacity:.4,className:"flex flex-col overflow-hidden",style:{zIndex:"var(--z-drawer, 10002)"},children:[t.jsx(c.DrawerTitle,{className:"sr-only",children:S}),t.jsxs("div",{className:"flex items-center justify-between px-3xl pb-2xl pt-2xl border-b border-border-primary",children:[t.jsxs("div",{className:"flex items-center gap-md",children:[t.jsx(Kn,{size:24,className:"text-text-muted"}),t.jsx("h3",{className:"m-0 text-3xl font-semibold text-text-primary",children:S})]}),t.jsx(c.Button,{size:"icon",variant:"ghost",onClick:n,children:t.jsx(F.Icon,{icon:V.close,className:"size-6"})})]}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-3xl",children:[f&&t.jsx("div",{className:"text-center py-6xl text-text-muted",children:"Loading alternates..."}),p&&t.jsxs("div",{className:"text-center px-3xl py-6xl text-text-placeholder text-xl",children:[p,t.jsx("div",{className:"mt-md text-base",children:"This font may not have alternate glyphs for this character."})]}),!f&&!p&&h.length>0&&t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-xl",children:h.map((T,C)=>{const w=(l==null?void 0:l.glyphIndex)===T.glyphIndex,R=T.category==="default";return t.jsxs("button",{onClick:()=>x(T),className:`
8
8
  flex flex-col items-center gap-md p-xl rounded-xl
9
9
  border-2 cursor-pointer transition-all duration-base
10
10
  relative aspect-square
@@ -13,28 +13,28 @@ ${s.errors.join(`
13
13
  text-sm text-center whitespace-nowrap overflow-hidden
14
14
  text-ellipsis w-full
15
15
  ${w?"text-text-on-dark":"text-text-muted"}
16
- `.trim(),children:R?"Default":T.name}),R&&t.jsx("div",{className:"absolute top-xs right-xs bg-accent-primary text-text-on-dark text-xs px-sm py-[2px] rounded-md font-semibold",children:"DEFAULT"})]},`${T.glyphIndex}-${C}`)})})]}),!f&&!p&&h.length>1&&t.jsxs("div",{className:"px-3xl py-xl border-t border-border-primary bg-bg-secondary text-base text-text-muted text-center",children:[h.length," alternate",h.length!==1?"s":""," available"]})]})})},gr=$.createLogger("OpenTypeFeaturesPanel"),cu=[{tag:"liga",label:"Standard Ligatures",description:"Common ligatures like fi, fl",category:"ligatures"},{tag:"dlig",label:"Discretionary Ligatures",description:"Optional ligatures like ct, st",category:"ligatures"},{tag:"calt",label:"Contextual Alternates",description:"Context-aware glyph substitution",category:"ligatures"},{tag:"ccmp",label:"Glyph Composition",description:"Combine glyphs for proper display",category:"ligatures"},{tag:"locl",label:"Localized Forms",description:"Language-specific glyph variants",category:"ligatures"},{tag:"swsh",label:"Swashes",description:"Decorative flourishes",category:"alternates"},{tag:"smcp",label:"Small Caps",description:"Small capital letters",category:"alternates"},{tag:"c2sc",label:"Caps to Small Caps",description:"Convert caps to small caps",category:"alternates"},{tag:"onum",label:"Old Style Figures",description:"Varying height numbers",category:"numerals"},{tag:"lnum",label:"Lining Figures",description:"Uniform height numbers",category:"numerals"},{tag:"tnum",label:"Tabular Figures",description:"Fixed-width numbers",category:"numerals"},{tag:"pnum",label:"Proportional Figures",description:"Variable-width numbers",category:"numerals"},{tag:"ss01",label:"Stylistic Set 1",description:"Alternate character set 1",category:"stylistic"},{tag:"ss02",label:"Stylistic Set 2",description:"Alternate character set 2",category:"stylistic"},{tag:"ss03",label:"Stylistic Set 3",description:"Alternate character set 3",category:"stylistic"},{tag:"ss04",label:"Stylistic Set 4",description:"Alternate character set 4",category:"stylistic"},{tag:"ss05",label:"Stylistic Set 5",description:"Alternate character set 5",category:"stylistic"},{tag:"ss06",label:"Stylistic Set 6",description:"Alternate character set 6",category:"stylistic"},{tag:"ss07",label:"Stylistic Set 7",description:"Alternate character set 7",category:"stylistic"},{tag:"ss08",label:"Stylistic Set 8",description:"Alternate character set 8",category:"stylistic"},{tag:"ss09",label:"Stylistic Set 9",description:"Alternate character set 9",category:"stylistic"},{tag:"ss10",label:"Stylistic Set 10",description:"Alternate character set 10",category:"stylistic"},{tag:"kern",label:"Kerning",description:"Adjust spacing between letter pairs",category:"stylistic"},{tag:"mark",label:"Mark Positioning",description:"Position diacritical marks",category:"stylistic"},{tag:"mkmk",label:"Mark to Mark",description:"Position marks relative to marks",category:"stylistic"}],du=({fontFamily:e,fontWeight:n=400,text:r="",openTypeFeatures:s,glyphOverrides:a=[],onChange:o,onGlyphOverridesChange:l})=>{const[d,u]=i.useState(!1),[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(!1),[x,S]=i.useState(0),[T,C]=i.useState(""),[w,R]=i.useState(!1),[k,v]=i.useState(new Map),[z,D]=i.useState(!1);i.useEffect(()=>{if(!e){m([]);return}g(!0),$.FontAnalyzer.getAvailableFeatures(e,n).then(F=>{m(F),g(!1)}).catch(F=>{gr.error("Error loading OpenType features:",F),m([]),g(!1)})},[e,n]),i.useEffect(()=>{if(!r||!e){v(new Map);return}const F=Array.from(new Set(Array.from(r).filter(K=>K!==" ")));if(F.length===0){v(new Map);return}D(!0),(async()=>{const K=new Map;for(const M of F)try{const Z=await $.FontAnalyzer.getGlyphAlternates(e,M,n),V=Z.length>0?Z.length-1:0;K.set(M,V)}catch(Z){gr.error(`Error loading alternates for '${M}':`,Z),K.set(M,0)}v(K),D(!1)})()},[r,e,n]);const O=F=>{const H=s==null?void 0:s[F],K={...s,[F]:!H};Object.keys(K).forEach(M=>{K[M]||delete K[M]}),e&&Object.keys(K).length>0&&$.FontAnalyzer.loadFont(e,n).catch(M=>{gr.error("Error pre-loading font for OpenType features:",M)}),o(Object.keys(K).length>0?K:void 0)},A=(F,H)=>{S(F),C(H),R(!1),b(!0)},P=()=>{R(!0),b(!0)},G=F=>{if(!l)return;let H=[...a];if(F){const K=H.findIndex(M=>M.charIndex===F.charIndex);K>=0?H[K]=F:H.push(F)}else H=H.filter(K=>K.charIndex!==x);l(H.length>0?H:void 0)},Y=s?Object.values(s).filter(Boolean).length:0,U=a.length,W=cu.reduce((F,H)=>(F[H.category]||(F[H.category]=[]),F[H.category].push(H),F),{});return t.jsxs("div",{className:"mb-lg",children:[t.jsxs("div",{className:`flex cursor-pointer items-center justify-between py-sm ${d?"border-b border-border-light":""}`,onClick:()=>u(!d),children:[t.jsxs("div",{className:"flex items-center gap-sm",children:[t.jsx(L.Icon,{icon:X.text,className:"size-4"}),t.jsx("span",{className:"text-xl font-medium",children:"OpenType Features"}),Y>0&&t.jsx("span",{className:"rounded-full bg-info px-xs py-[2px] text-2xs font-semibold text-info-foreground",children:Y})]}),t.jsx("button",{className:"cursor-pointer border-none bg-transparent p-xs text-xs",children:d?"▼":"▶"})]}),d&&t.jsxs("div",{className:"py-md",children:[f&&t.jsx("div",{className:"py-md text-sm text-text-secondary",children:"Loading available features..."}),!f&&!e&&t.jsx("div",{className:"py-md text-sm text-text-muted",children:"Select a text element to configure OpenType features"}),!f&&e&&h.length===0&&t.jsx("div",{className:"py-md text-sm text-text-muted",children:"This font does not support advanced OpenType features"}),!f&&e&&r&&l&&t.jsxs("div",{className:"mb-lg border-b border-border-light pb-lg",children:[t.jsx("div",{className:"mb-md flex items-center justify-between",children:t.jsxs("div",{className:"flex items-center gap-sm",children:[t.jsx(Kn,{size:14,className:"text-text-secondary"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wide text-text-secondary",children:"Alternate Glyphs"}),U>0&&t.jsx("span",{className:"rounded-full bg-success px-xs py-[2px] text-3xs font-semibold text-success-foreground",children:U})]})}),t.jsxs("div",{className:"mb-md flex items-center justify-between gap-md",children:[t.jsx("div",{className:"text-xs text-text-secondary",children:"Click on any letter to pick alternate glyphs"}),t.jsx(c.Button,{variant:"ghost",onClick:P,className:"whitespace-nowrap rounded-md border border-info bg-info/10 px-md py-xs text-xs font-medium text-info transition-all duration-fast hover:bg-info hover:text-info-foreground",children:"Browse All Glyphs"})]}),t.jsx("div",{className:"flex flex-wrap gap-xs rounded-md border border-border-medium bg-surface p-md",children:Array.from(r).map((F,H)=>{const K=a.some(V=>V.charIndex===H);if(F===" ")return t.jsx("div",{className:"h-4xl w-sm"},H);const Z=k.get(F)||0;return t.jsxs("button",{onClick:()=>A(H,F),className:`
16
+ `.trim(),children:R?"Default":T.name}),R&&t.jsx("div",{className:"absolute top-xs right-xs bg-accent-primary text-text-on-dark text-xs px-sm py-[2px] rounded-md font-semibold",children:"DEFAULT"})]},`${T.glyphIndex}-${C}`)})})]}),!f&&!p&&h.length>1&&t.jsxs("div",{className:"px-3xl py-xl border-t border-border-primary bg-bg-secondary text-base text-text-muted text-center",children:[h.length," alternate",h.length!==1?"s":""," available"]})]})})},gr=U.createLogger("OpenTypeFeaturesPanel"),cu=[{tag:"liga",label:"Standard Ligatures",description:"Common ligatures like fi, fl",category:"ligatures"},{tag:"dlig",label:"Discretionary Ligatures",description:"Optional ligatures like ct, st",category:"ligatures"},{tag:"calt",label:"Contextual Alternates",description:"Context-aware glyph substitution",category:"ligatures"},{tag:"ccmp",label:"Glyph Composition",description:"Combine glyphs for proper display",category:"ligatures"},{tag:"locl",label:"Localized Forms",description:"Language-specific glyph variants",category:"ligatures"},{tag:"swsh",label:"Swashes",description:"Decorative flourishes",category:"alternates"},{tag:"smcp",label:"Small Caps",description:"Small capital letters",category:"alternates"},{tag:"c2sc",label:"Caps to Small Caps",description:"Convert caps to small caps",category:"alternates"},{tag:"onum",label:"Old Style Figures",description:"Varying height numbers",category:"numerals"},{tag:"lnum",label:"Lining Figures",description:"Uniform height numbers",category:"numerals"},{tag:"tnum",label:"Tabular Figures",description:"Fixed-width numbers",category:"numerals"},{tag:"pnum",label:"Proportional Figures",description:"Variable-width numbers",category:"numerals"},{tag:"ss01",label:"Stylistic Set 1",description:"Alternate character set 1",category:"stylistic"},{tag:"ss02",label:"Stylistic Set 2",description:"Alternate character set 2",category:"stylistic"},{tag:"ss03",label:"Stylistic Set 3",description:"Alternate character set 3",category:"stylistic"},{tag:"ss04",label:"Stylistic Set 4",description:"Alternate character set 4",category:"stylistic"},{tag:"ss05",label:"Stylistic Set 5",description:"Alternate character set 5",category:"stylistic"},{tag:"ss06",label:"Stylistic Set 6",description:"Alternate character set 6",category:"stylistic"},{tag:"ss07",label:"Stylistic Set 7",description:"Alternate character set 7",category:"stylistic"},{tag:"ss08",label:"Stylistic Set 8",description:"Alternate character set 8",category:"stylistic"},{tag:"ss09",label:"Stylistic Set 9",description:"Alternate character set 9",category:"stylistic"},{tag:"ss10",label:"Stylistic Set 10",description:"Alternate character set 10",category:"stylistic"},{tag:"kern",label:"Kerning",description:"Adjust spacing between letter pairs",category:"stylistic"},{tag:"mark",label:"Mark Positioning",description:"Position diacritical marks",category:"stylistic"},{tag:"mkmk",label:"Mark to Mark",description:"Position marks relative to marks",category:"stylistic"}],du=({fontFamily:e,fontWeight:n=400,text:r="",openTypeFeatures:s,glyphOverrides:a=[],onChange:o,onGlyphOverridesChange:l})=>{const[d,u]=i.useState(!1),[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(!1),[x,S]=i.useState(0),[T,C]=i.useState(""),[w,R]=i.useState(!1),[N,v]=i.useState(new Map),[L,D]=i.useState(!1);i.useEffect(()=>{if(!e){m([]);return}g(!0),U.FontAnalyzer.getAvailableFeatures(e,n).then(z=>{m(z),g(!1)}).catch(z=>{gr.error("Error loading OpenType features:",z),m([]),g(!1)})},[e,n]),i.useEffect(()=>{if(!r||!e){v(new Map);return}const z=Array.from(new Set(Array.from(r).filter(Z=>Z!==" ")));if(z.length===0){v(new Map);return}D(!0),(async()=>{const Z=new Map;for(const M of z)try{const J=await U.FontAnalyzer.getGlyphAlternates(e,M,n),K=J.length>0?J.length-1:0;Z.set(M,K)}catch(J){gr.error(`Error loading alternates for '${M}':`,J),Z.set(M,0)}v(Z),D(!1)})()},[r,e,n]);const O=z=>{const W=s==null?void 0:s[z],Z={...s,[z]:!W};Object.keys(Z).forEach(M=>{Z[M]||delete Z[M]}),e&&Object.keys(Z).length>0&&U.FontAnalyzer.loadFont(e,n).catch(M=>{gr.error("Error pre-loading font for OpenType features:",M)}),o(Object.keys(Z).length>0?Z:void 0)},A=(z,W)=>{S(z),C(W),R(!1),b(!0)},_=()=>{R(!0),b(!0)},G=z=>{if(!l)return;let W=[...a];if(z){const Z=W.findIndex(M=>M.charIndex===z.charIndex);Z>=0?W[Z]=z:W.push(z)}else W=W.filter(Z=>Z.charIndex!==x);l(W.length>0?W:void 0)},Y=s?Object.values(s).filter(Boolean).length:0,B=a.length,H=cu.reduce((z,W)=>(z[W.category]||(z[W.category]=[]),z[W.category].push(W),z),{});return t.jsxs("div",{className:"mb-lg",children:[t.jsxs("div",{className:`flex cursor-pointer items-center justify-between py-sm ${d?"border-b border-border-light":""}`,onClick:()=>u(!d),children:[t.jsxs("div",{className:"flex items-center gap-sm",children:[t.jsx(F.Icon,{icon:V.text,className:"size-4"}),t.jsx("span",{className:"text-xl font-medium",children:"OpenType Features"}),Y>0&&t.jsx("span",{className:"rounded-full bg-info px-xs py-[2px] text-2xs font-semibold text-info-foreground",children:Y})]}),t.jsx("button",{className:"cursor-pointer border-none bg-transparent p-xs text-xs",children:d?"▼":"▶"})]}),d&&t.jsxs("div",{className:"py-md",children:[f&&t.jsx("div",{className:"py-md text-sm text-text-secondary",children:"Loading available features..."}),!f&&!e&&t.jsx("div",{className:"py-md text-sm text-text-muted",children:"Select a text element to configure OpenType features"}),!f&&e&&h.length===0&&t.jsx("div",{className:"py-md text-sm text-text-muted",children:"This font does not support advanced OpenType features"}),!f&&e&&r&&l&&t.jsxs("div",{className:"mb-lg border-b border-border-light pb-lg",children:[t.jsx("div",{className:"mb-md flex items-center justify-between",children:t.jsxs("div",{className:"flex items-center gap-sm",children:[t.jsx(Kn,{size:14,className:"text-text-secondary"}),t.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wide text-text-secondary",children:"Alternate Glyphs"}),B>0&&t.jsx("span",{className:"rounded-full bg-success px-xs py-[2px] text-3xs font-semibold text-success-foreground",children:B})]})}),t.jsxs("div",{className:"mb-md flex items-center justify-between gap-md",children:[t.jsx("div",{className:"text-xs text-text-secondary",children:"Click on any letter to pick alternate glyphs"}),t.jsx(c.Button,{variant:"ghost",onClick:_,className:"whitespace-nowrap rounded-md border border-info bg-info/10 px-md py-xs text-xs font-medium text-info transition-all duration-fast hover:bg-info hover:text-info-foreground",children:"Browse All Glyphs"})]}),t.jsx("div",{className:"flex flex-wrap gap-xs rounded-md border border-border-medium bg-surface p-md",children:Array.from(r).map((z,W)=>{const Z=a.some(K=>K.charIndex===W);if(z===" ")return t.jsx("div",{className:"h-4xl w-sm"},W);const J=N.get(z)||0;return t.jsxs("button",{onClick:()=>A(W,z),className:`
17
17
  relative min-w-4xl cursor-pointer rounded border-2 p-xs text-center text-3xl transition-all duration-fast
18
- ${K?"border-success bg-success text-success-foreground":"border-border-medium bg-surface text-text-primary hover:border-info hover:bg-info/10"}
19
- `,style:{fontFamily:e},children:[F,Z>0&&t.jsx("span",{className:`absolute -right-[4px] -top-[4px] min-w-lg rounded-full border-2 border-surface px-xs py-[2px] text-center text-3xs font-semibold leading-none shadow-md ${K?"bg-success text-success-foreground":"bg-info text-info-foreground"}`,children:Z})]},H)})})]}),!f&&e&&h.length>0&&t.jsx(t.Fragment,{children:Object.entries(W).map(([F,H])=>{const K=H.filter(M=>h.includes(M.tag));return K.length===0?null:t.jsxs("div",{className:"mb-lg",children:[t.jsx("div",{className:"mb-sm text-2xs font-semibold uppercase tracking-wide text-text-secondary",children:F}),t.jsx("div",{className:"flex flex-col gap-sm",children:K.map(M=>t.jsxs("label",{className:"flex cursor-pointer items-start gap-sm rounded p-xs transition-colors duration-fast hover:bg-surface",children:[t.jsx("input",{type:"checkbox",checked:(s==null?void 0:s[M.tag])||!1,onChange:()=>O(M.tag),className:"mt-[2px] h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"text-sm font-medium",children:M.label}),t.jsx("div",{className:"mt-[2px] text-2xs text-text-secondary",children:M.description})]})]},M.tag))})]},F)})})]}),e&&t.jsx(lu,{isOpen:p,onClose:()=>b(!1),character:T,charIndex:x,fontFamily:e,fontWeight:n,currentGlyphOverride:a.find(F=>F.charIndex===x),onSelectGlyph:G,browseAll:w})]})},uu=({element:e,onElementUpdate:n,isOpen:r,onClose:s})=>{var g,p;const[a,o]=i.useState("stroke");if(!e)return null;const l=(g=e.stroke)==null?void 0:g.enabled,d=e.masks&&e.masks.length>0,u=(p=e.distressEffect)==null?void 0:p.enabled,h=e.blendMode==="knockout"||e.blendMode==="clip",m=e instanceof $.TextElement,f=m&&(e.glyphOverrides&&e.glyphOverrides.length>0||e.openTypeFeatures&&Object.keys(e.openTypeFeatures).length>0);return t.jsx(yn,{isOpen:r,onClose:s,title:"Layer Effects",description:"Configure stroke, masks, distress, and knockout effects",maxHeight:"90vh",placement:"right",maxWidth:"600px",children:t.jsxs(c.Tabs,{value:a,onValueChange:b=>o(b),className:"flex flex-col h-full",children:[t.jsx(c.Tabs.ListContainer,{className:"px-6",children:t.jsxs(c.Tabs.List,{"aria-label":"Effect types",children:[t.jsxs(c.Tabs.Tab,{id:"stroke",children:[t.jsx(L.Icon,{icon:X.minus,className:"size-4"}),"Stroke",l&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"masks",children:[t.jsx(L.Icon,{icon:X.group,className:"size-4"}),"Masks",d&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"distress",children:[t.jsx(L.Icon,{icon:"lucide:cloud",className:"size-4"}),"Distress",u&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"compositing",children:[t.jsx(L.Icon,{icon:X.scissors,className:"size-4"}),"Knockout",h&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),m&&t.jsxs(c.Tabs.Tab,{id:"typography",children:[t.jsx(L.Icon,{icon:X.text,className:"size-4"}),"Typography",f&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]})]})}),t.jsxs(c.Tabs.Panel,{id:"stroke",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(_d,{stroke:e.stroke,onChange:b=>{const x=e.clone();x.stroke=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(L.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Add outlines to text and shapes"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"masks",className:"flex-1 overflow-y-auto p-6",children:[t.jsx($d,{masks:e.masks,onChange:b=>{const x=e.clone();x.masks=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(L.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Use masks to control visibility"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"distress",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(nu,{distressEffect:e.distressEffect,onChange:b=>{const x=e.clone();x.distressEffect=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(L.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Add vintage/grunge effects for t-shirt designs"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"compositing",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(au,{blendMode:e.blendMode,knockoutParts:e.knockoutParts,onChange:(b,x)=>{const S=e.clone();S.blendMode=b,S.knockoutParts=x,n(S)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(L.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Use Artboard scope for t-shirts, Group scope for patterns"})]})})]}),m&&t.jsxs(c.Tabs.Panel,{id:"typography",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(du,{fontFamily:e.fontFamily,fontWeight:e.bold?700:400,text:e.text,openTypeFeatures:e.openTypeFeatures,glyphOverrides:e.glyphOverrides,onChange:b=>{const x=e.clone();x.openTypeFeatures=b,n(x)},onGlyphOverridesChange:b=>{const x=e.clone();x.glyphOverrides=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(L.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Enable advanced OpenType features like ligatures and stylistic sets"})]})})]})]})})},ua=({isOpen:e,onClose:n,element:r,onElementUpdate:s,style:a,className:o})=>{const{selectedElement:l,executeElementUpdate:d}=je.useEditor(),u=r!==void 0?r:l||null,h=i.useCallback(m=>{s?s(m):u&&d(u,m)},[s,d,u]);return t.jsx("div",{style:a,className:o,children:t.jsx(uu,{element:u,onElementUpdate:h,isOpen:e,onClose:n})})},hu=Object.freeze(Object.defineProperty({__proto__:null,EffectsPanel:ua},Symbol.toStringTag,{value:"Module"})),vo=$.createLogger("ExportPanel"),ha=({showContinuousExport:e=!0,defaultScale:n=3,defaultFormat:r="png",onExportComplete:s,style:a={},className:o=""})=>{const{exportArtboard:l,exportAllArtboards:d,startContinuousExport:u,stopContinuousExport:h,isExporting:m,isContinuousExporting:f,progress:g,supportsWorkerExport:p,workerStats:b}=L.useExport(),{artboardsInfo:x,activeArtboardId:S}=L.useArtboards(),[T,C]=i.useState(n),[w,R]=i.useState(r),[k,v]=i.useState(500),z=async()=>{if(S)try{const A=await l(S,{scale:T,format:w}),P=document.createElement("a"),G=x.find(W=>W.id===S),Y=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),U=(G==null?void 0:G.name)||"artboard";P.download=`${U}-${Y}.${w}`,P.href=A,P.click(),s&&s({[S]:A})}catch(A){vo.error("Export failed:",A),alert("Export failed. Please try again.")}},D=async()=>{try{const A=await d({scale:T,format:w}),P=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19);Object.entries(A).forEach(([G,Y])=>{const U=x.find(H=>H.id===G),W=(U==null?void 0:U.name)||G,F=document.createElement("a");F.download=`${W}-${P}.${w}`,F.href=Y,F.click()}),s&&s(A)}catch(A){vo.error("Export all failed:",A),alert("Export failed. Please try again.")}},O=()=>{f?h():u({interval:k,scale:T,format:w,onChange:A=>{s&&s(A)}})};return t.jsxs("div",{className:`export-panel ${o}`,style:{width:300,padding:16,backgroundColor:"var(--bg-primary)",border:"1px solid var(--border-primary)",borderRadius:8,...a},children:[t.jsx("h3",{style:{margin:"0 0 16px 0",fontSize:16,fontWeight:600},children:"Export Settings"}),t.jsxs("div",{style:{marginBottom:16},children:[t.jsx("label",{htmlFor:"export-scale",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Scale"}),t.jsxs("select",{id:"export-scale",value:T,onChange:A=>C(Number(A.target.value)),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:1,children:"1x (Original)"}),t.jsx("option",{value:2,children:"2x (Retina)"}),t.jsx("option",{value:3,children:"3x (High-Res)"}),t.jsx("option",{value:4,children:"4x (Ultra)"})]}),t.jsx("label",{htmlFor:"export-format",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Format"}),t.jsxs("select",{id:"export-format",value:w,onChange:A=>R(A.target.value),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:"png",children:"PNG (Transparent)"}),t.jsx("option",{value:"jpg",children:"JPEG (Smaller)"})]}),e&&t.jsxs(t.Fragment,{children:[t.jsx("label",{htmlFor:"export-interval",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Continuous Export Interval"}),t.jsxs("select",{id:"export-interval",value:k,onChange:A=>v(Number(A.target.value)),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:250,children:"250ms (Fast)"}),t.jsx("option",{value:500,children:"500ms (Recommended)"}),t.jsx("option",{value:1e3,children:"1s (Slow)"}),t.jsx("option",{value:2e3,children:"2s (Very Slow)"})]})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8,marginBottom:16},children:[t.jsxs("button",{onClick:z,disabled:m||!S,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:"var(--accent-primary)",color:"var(--primary-foreground)",border:"none",borderRadius:6,cursor:m||!S?"not-allowed":"pointer",fontSize:14,fontWeight:500,opacity:m||!S?.5:1},children:[t.jsx(L.Icon,{icon:X.download,className:"size-4"}),m?"Exporting...":"Export Active Artboard"]}),t.jsxs("button",{onClick:D,disabled:m||x.length===0,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:"var(--bg-secondary)",color:"var(--text-primary)",border:"1px solid var(--border-primary)",borderRadius:6,cursor:m||x.length===0?"not-allowed":"pointer",fontSize:14,fontWeight:500,opacity:m||x.length===0?.5:1},children:[t.jsx(L.Icon,{icon:X.image,className:"size-4"}),m?"Exporting...":"Export All Artboards"]}),e&&t.jsxs("button",{onClick:O,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:f?"var(--danger)":"var(--success)",color:f?"var(--danger-foreground)":"var(--success-foreground)",border:"none",borderRadius:6,cursor:"pointer",fontSize:14,fontWeight:500},children:[f?t.jsx(L.Icon,{icon:X.pause,className:"size-4"}):t.jsx(L.Icon,{icon:X.play,className:"size-4"}),f?"Stop Continuous Export":"Start Continuous Export"]})]}),g.length>0&&t.jsxs("div",{style:{padding:12,backgroundColor:"var(--bg-secondary)",borderRadius:6,fontSize:12,marginBottom:16},children:[t.jsx("div",{style:{fontWeight:600,marginBottom:8},children:"Export Progress"}),g.slice(-3).map(A=>t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:4},children:[t.jsx("span",{children:A.artboardName}),t.jsx("span",{style:{color:A.status==="complete"?"var(--success)":"var(--text-secondary)"},children:A.status==="complete"?"✓":A.status==="error"?"✗":"..."})]},A.artboardId))]}),p&&t.jsxs("div",{style:{padding:12,backgroundColor:"var(--bg-secondary)",borderRadius:6,fontSize:11},children:[t.jsx("div",{style:{fontWeight:600,marginBottom:4},children:"Worker Export Enabled ✓"}),t.jsxs("div",{style:{opacity:.7},children:["Total Exports: ",b.totalExports,t.jsx("br",{}),"Avg Time: ",b.avgExportTime.toFixed(0),"ms"]})]})]})},fu=Object.freeze(Object.defineProperty({__proto__:null,ExportPanel:ha},Symbol.toStringTag,{value:"Module"})),xr={},pu=$.createLogger("nounProjectApi"),mu=(xr==null?void 0:xr.VITE_NOUN_PROJECT_PROXY_URL)||"http://localhost:3001",gu=mu,On=()=>!0,xu=e=>{var s,a,o;const n=(s=e.icon_url)==null?void 0:s.includes(".svg"),r=n?e.icon_url:void 0;return{id:`noun-${e.id}`,urls:{svg:r,png:e.icon_url&&!n?e.icon_url:e.thumbnail_url,preview:e.preview_url_200||e.preview_url_84||e.thumbnail_url,thumbnail:e.thumbnail_url},term:e.term,attribution:e.attribution||null,uploader:{name:((a=e.creator)==null?void 0:a.name)||"Unknown",username:((o=e.creator)==null?void 0:o.username)||"unknown"},source:"noun-project"}},Qt=async(e,n={})=>{if(!On())throw new Error("Noun Project API keys not configured");const{limit:r=30,includeSvg:s=!0,limitToPublicDomain:a=!0,nextPage:o}=n,l={query:e,limit:r.toString()};s&&(l.include_svg="1"),a&&(l.limit_to_public_domain="1"),o&&(l.next_page=o);const d=`${gu}/v2/icon`,u=Object.keys(l).map(g=>`${encodeURIComponent(g)}=${encodeURIComponent(l[g])}`).join("&"),h=`${d}?${u}`;let m;if(m=await fetch(h,{method:"GET",headers:{Accept:"application/json"}}),!m.ok){const g=await m.text();throw pu.error("Noun Project API error:",g),new Error(`Failed to search icons: ${m.status} ${m.statusText}`)}const f=await m.json();return{results:f.icons.map(xu),nextPage:f.next_page||null}},bu=async e=>{const n=["design","business","technology","nature","food"],r=n[Math.floor(Math.random()*n.length)],{results:s}=await Qt(r,e);return s},br={},fa=$.createLogger("recraftApi"),jo=[{value:"realistic_image",label:"Realistic Image",substyles:["b_and_w","enterprise","evening_light","faded_nostalgia","forest_life","hard_flash","hdr","motion_blur","mystic_naturalism","natural_light","natural_tones","organic_calm","real_life_glow","retro_realism","retro_snapshot","studio_portrait","urban_drama","village_realism","warm_folk"]},{value:"digital_illustration",label:"Digital Illustration",substyles:["2d_art_poster","2d_art_poster_2","antiquarian","bold_fantasy","child_book","cover","crosshatch","digital_engraving","engraving_color","expressionism","freehand_details","grain","grain_20","graphic_intensity","hand_drawn","hand_drawn_outline","handmade_3d","hard_comics","infantile_sketch","long_shadow","modern_folk","multicolor","neon_calm","noir","nostalgic_pastel","outline_details","pastel_gradient","pastel_sketch","pixel_art","plastic","pop_art","pop_renaissance","seamless","street_art","tablet_sketch","urban_glow","urban_sketching","young_adult_book","young_adult_book_2"]},{value:"vector_illustration",label:"Vector Illustration",substyles:["bold_stroke","chemistry","colored_stencil","cosmics","cutout","depressive","editorial","emotional_flat","engraving","line_art","line_circuit","linocut","marker_outline","mosaic","naivector","roundish_flat","seamless","segmented_colors","sharp_contrast","thin","vector_photo","vivid_shapes"]}],yu="https://external.api.recraft.ai/v1";function _n(){const e=(br==null?void 0:br.VITE_RECRAFT_API_TOKEN)||"";return e!==""&&e!=="YOUR_API_TOKEN_HERE"}async function vu(e,n,r,s={}){if(!_n())throw new Error("Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file.");const a=void 0,o={prompt:e.trim(),style:n,model:"recraftv3"};r&&(o.substyle=r),s.size&&(o.size=s.size),s.n&&(o.n=s.n);try{const l=await fetch(`${yu}/images/generations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(o)});if(!l.ok){const m=await l.text();throw new Error(`Recraft API error (${l.status}): ${m}`)}const d=await l.json();if(!d.data||d.data.length===0)throw new Error("No images returned from Recraft API");const u=d.data[0],h=n==="vector_illustration"||n==="digital_illustration"?"svg":"png";return{id:d.id,url:u.url,prompt:e,style:n,format:h,created:d.created}}catch(l){throw fa.error("Error generating image with Recraft:",l),l}}async function ju(e){try{const n=await fetch(e);if(!n.ok)throw new Error(`Failed to download image: ${n.status}`);if((n.headers.get("content-type")||"").includes("svg")){const s=await n.text();return`data:image/svg+xml;base64,${btoa(s)}`}else{const s=await n.blob();return URL.createObjectURL(s)}}catch(n){throw fa.error("Error downloading Recraft image:",n),n}}const yr={},Br=(yr==null?void 0:yr.VITE_FAL_API_KEY)||"";function en(){return Br!==""&&Br!=="YOUR_FAL_KEY_HERE"}async function Co(e,n={}){if(!en())throw new Error("fal.ai API key not configured. Set VITE_FAL_API_KEY in your .env file.");const r={image_url:e,sync_mode:n.syncMode??!1};try{const s=await fetch("https://fal.run/fal-ai/bria/background/remove",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Key ${Br}`},body:JSON.stringify(r)});if(!s.ok){const o=await s.text();throw new Error(`fal.ai API error (${s.status}): ${o}`)}const a=await s.json();if(!a.image||!a.image.url)throw new Error("Invalid response from fal.ai API");return a}catch(s){throw s instanceof Error?s:new Error("Failed to remove background")}}async function wo(e){const r=await(await fetch(e)).blob();return new Promise((s,a)=>{const o=new FileReader;o.onloadend=()=>s(o.result),o.onerror=a,o.readAsDataURL(r)})}function So(e){if(e.startsWith("data:"))return e.startsWith("data:image/svg+xml");const n=e.toLowerCase();return n.endsWith(".svg")||n.includes(".svg?")||n.includes(".svg#")}async function To(e,n=2048){return new Promise((r,s)=>{const a=new Image;a.crossOrigin="anonymous",a.onload=()=>{try{let o=a.width||a.naturalWidth,l=a.height||a.naturalHeight;if((o===0||l===0)&&(o=1024,l=1024),o>n){const m=n/o;o=n,l=l*m}const d=document.createElement("canvas");d.width=o,d.height=l;const u=d.getContext("2d");if(!u){s(new Error("Failed to get canvas context"));return}u.clearRect(0,0,o,l),u.drawImage(a,0,0,o,l);const h=d.toDataURL("image/png");r(h)}catch(o){s(o)}},a.onerror=()=>{s(new Error("Failed to load SVG image"))},a.src=e})}const vr={},Cu=$.createLogger("runwareApi"),Ur=(vr==null?void 0:vr.VITE_RUNWARE_API_KEY)||"",Wr=[{id:"runware:101@1",name:"Flux Dev",description:"High-quality generation with excellent detail and composition",supportsSteps:!0,supportsCFGScale:!0,supportsNegativePrompt:!0},{id:"google:4@2",name:"Nano Banana 2 Pro",description:"Advanced Google model for controlled visual creation",supportsSteps:!1,supportsCFGScale:!1,supportsNegativePrompt:!1}];let jr=null;function an(){return Ur!==""&&Ur!=="YOUR_RUNWARE_KEY_HERE"}async function wu(){if(!jr){if(!an())throw new Error("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");jr=await xl.Runware.initialize({apiKey:Ur,timeoutDuration:6e4})}return jr}async function Su(e){var n;if(!an())throw new Error("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");try{const r=await wu(),s=Wr.find(h=>h.id===e.model),a=(s==null?void 0:s.supportsSteps)??!0,o=(s==null?void 0:s.supportsCFGScale)??!0,l=(s==null?void 0:s.supportsNegativePrompt)??!0,d={positivePrompt:e.prompt,model:e.model,width:e.width||1024,height:e.height||1024,numberResults:1,outputFormat:"PNG"};a&&(d.steps=e.steps||25),o&&(d.CFGScale=e.cfgScale||7),l&&e.negativePrompt&&(d.negativePrompt=e.negativePrompt);const u=await r.requestImages(d);if(!u||u.length===0)throw new Error("No images generated from Runware API");return{images:u.map(h=>({imageURL:h.imageURL||"",imageUUID:h.imageUUID||"",width:e.width||1024,height:e.height||1024})),taskUUID:((n=u[0])==null?void 0:n.taskUUID)||""}}catch(r){throw Cu.error("Runware API error:",r),r instanceof Error?new Error(`Runware API error: ${r.message}`):new Error("Failed to generate image with Runware")}}async function Tu(e){const r=await(await fetch(e)).blob();return new Promise((s,a)=>{const o=new FileReader;o.onloadend=()=>s(o.result),o.onerror=a,o.readAsDataURL(r)})}const Ht={},Ot=$.createLogger("ImageBrowser"),ku="1px",Cr="1px",ko=i.memo(function({image:n,onImageSelect:r,fixedHeight:s=!1}){const[a,o]=i.useState(!1),[l,d]=i.useState(!1),[u,h]=i.useState("top"),m=i.useRef(null),f=i.useRef(null),g=i.useRef(null),p=i.useRef(!0),[b,x]=i.useState(!1),S=i.useRef(null),T=()=>{l||r(n)},C=G=>{if(!g.current)return"top";const Y=g.current.getBoundingClientRect(),U=G.clientX-Y.left,W=G.clientY-Y.top,F=Y.width,H=Y.height,K={top:W,bottom:H-W,left:U,right:F-U},M=Math.min(K.top,K.bottom,K.left,K.right);return M===K.top?"top":M===K.bottom?"bottom":M===K.left?"left":"right"},w=G=>{const Y=C(G);S.current&&(cancelAnimationFrame(S.current),S.current=null),Y!==u?(x(!0),h(Y),S.current=requestAnimationFrame(()=>{S.current=requestAnimationFrame(()=>{x(!1),o(!0),S.current=null})})):(h(Y),o(!0)),p.current=!1},R=G=>{S.current&&(cancelAnimationFrame(S.current),S.current=null);const Y=C(G);h(Y),x(!1),o(!1)},k=()=>{f.current&&(clearTimeout(f.current),f.current=null),m.current=setTimeout(()=>{d(!0)},400)},v=()=>{m.current&&(clearTimeout(m.current),m.current=null),d(!1)},z=()=>{m.current&&(clearTimeout(m.current),m.current=null),f.current&&(clearTimeout(f.current),f.current=null)},D=()=>{d(!1)},O=n.source==="unsplash"?"Unsplash":"Pixabay",A=a||l,P=()=>{if(!a)return`scale(${1.12})`;switch(u){case"top":return`scale(${1.12}) translateY(5%)`;case"bottom":return`scale(${1.12}) translateY(-5%)`;case"left":return`scale(${1.12}) translateX(5%)`;case"right":return`scale(${1.12}) translateX(-5%)`;default:return`scale(${1.12})`}};return t.jsxs("div",{ref:g,onClick:T,onMouseEnter:w,onMouseLeave:R,className:`group relative cursor-pointer overflow-hidden ${s?"h-full rounded-xs":"break-inside-avoid rounded-lg"}`,children:[t.jsx("img",{src:n.urls.small,alt:n.alt_description||"Image",className:`duration-500 ease-out ${b?"transition-none":"transition-transform"} ${s?"h-full w-full object-cover":"w-full object-cover"}`,style:{transform:P(),filter:a?"brightness(1)":"brightness(0.95)"}}),t.jsx("div",{className:"absolute top-2 right-2 z-10",children:t.jsx("button",{className:`relative flex h-6 w-6 items-center justify-center rounded-full bg-black/30 backdrop-blur-sm transition-all duration-300 ease-in-out hover:scale-110 ${A?"opacity-100":"pointer-events-none opacity-0"}`,"aria-label":"Image info",onMouseEnter:k,onMouseLeave:v,children:t.jsx(L.Icon,{icon:"lucide:aperture",className:"size-4 text-white/80"})})}),t.jsx("div",{className:`absolute inset-x-0 bottom-0 z-0 bg-linear-to-t from-black/80 via-black/60 to-transparent px-3 py-3 pt-8 transition-transform duration-300 ease-out ${l?"translate-y-0":"translate-y-full"}`,onMouseEnter:z,onMouseLeave:D,children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(L.Icon,{icon:n.source==="unsplash"?"simple-icons:unsplash":"simple-icons:pixabay",className:"size-3 text-white/80"}),t.jsx("span",{className:"text-xs font-medium text-white/80",children:O})]}),t.jsxs("div",{className:"flex flex-col gap-0.5",children:[t.jsx("span",{className:"text-xs text-white/60",children:"Photo by"}),t.jsx("span",{className:"text-sm font-medium text-white",children:n.user.name})]})]})})]})}),No=i.memo(function({vector:n,onVectorSelect:r,fixedHeight:s=!1}){const[a,o]=i.useState(!1),[l,d]=i.useState(!1),u=i.useRef(null),h=i.useRef(null),m=()=>{l||r(n)},f=()=>{h.current&&(clearTimeout(h.current),h.current=null),u.current=setTimeout(()=>{d(!0)},400)},g=()=>{u.current&&(clearTimeout(u.current),u.current=null),d(!1)},p=()=>{u.current&&(clearTimeout(u.current),u.current=null),h.current&&(clearTimeout(h.current),h.current=null)},b=()=>{d(!1)},x=a||l;return t.jsxs("div",{onClick:m,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),className:`group relative cursor-pointer overflow-hidden bg-white/10 transition-all duration-300 ${s?"h-full rounded-xs":"break-inside-avoid rounded-lg"} ${a?"scale-105 bg-white/20":""}`,children:[t.jsx("div",{className:`flex items-center justify-center p-6 transition-all duration-300 ${s?"h-full w-full":"aspect-square w-full"}`,children:t.jsx("img",{src:n.urls.preview,alt:n.term,className:`max-h-full max-w-full object-contain transition-all duration-300 ${a?"scale-110":"scale-100"}`,style:{filter:a?"brightness(1.1)":"brightness(0.95)"}})}),t.jsxs("div",{className:"absolute top-2 right-2 z-10 flex items-center gap-2",children:[!n.urls.svg&&t.jsx("span",{className:`rounded-xs bg-amber-500/90 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white shadow-sm transition-all duration-300 ease-in-out ${x?"opacity-100":"pointer-events-none opacity-0"}`,children:"PNG"}),t.jsx("button",{className:`relative flex h-6 w-6 items-center justify-center rounded-full bg-black/30 backdrop-blur-sm transition-all duration-300 ease-in-out hover:scale-110 ${x?"opacity-100":"pointer-events-none opacity-0"}`,"aria-label":"Vector info",onMouseEnter:f,onMouseLeave:g,children:t.jsx(L.Icon,{icon:"lucide:aperture",className:"size-4 text-white/80"})})]}),t.jsxs("div",{className:`absolute inset-x-0 bottom-0 z-0 bg-linear-to-t from-black/80 via-black/60 to-transparent px-3 py-3 pt-8 transition-transform duration-300 ease-out ${l?"translate-y-0":"translate-y-full"}`,onMouseEnter:p,onMouseLeave:b,children:[t.jsxs("div",{className:"mb-1",children:[t.jsx(L.Icon,{icon:"mdi:cube-outline",className:"mr-2 inline-block size-3 text-white/80"}),t.jsx("span",{className:"text-xs font-medium text-white/80",children:"Noun Project"})]}),t.jsx("div",{className:"text-xs text-white/60",children:"Icon by"}),t.jsx("div",{className:"text-sm font-medium text-white",children:n.uploader.name})]})]})}),Nu=({isOpen:e,onToggle:n,onImageSelect:r,currentImageUrl:s,placement:a="bottom"})=>{var St;const[o,l]=i.useState(""),[d,u]=i.useState(""),[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(null),[x,S]=i.useState("search"),[T,C]=i.useState(1),[w,R]=i.useState(1),[k,v]=i.useState(!0),[z,D]=i.useState([]),[O,A]=i.useState("masonry"),[P,G]=i.useState(""),[Y,U]=i.useState([]),[W,F]=i.useState(!1),[H,K]=i.useState(null),[M,Z]=i.useState(null),[V,J]=i.useState(!0),[ne,pe]=i.useState("grid"),[se,B]=i.useState(!1),[_,ae]=i.useState("runware"),[Q,le]=i.useState(""),[Re,be]=i.useState("vector_illustration"),[xe,We]=i.useState(""),[He,qe]=i.useState("runware:101@1"),[vt,Rt]=i.useState(!1),[dt,Le]=i.useState(null),[Je,Ze]=i.useState(null),[N,ue]=i.useState(null),[ut,Me]=i.useState(!1),[Ie,Ce]=i.useState(null),Ke=i.useRef(null),ot=i.useRef(null),Ge=i.useRef(null),ke=(Ht==null?void 0:Ht.VITE_UNSPLASH_ACCESS_KEY)||(typeof $.process$1<"u"?$.process$1.env.NEXT_PUBLIC_UNSPLASH_ACCESS_KEY:void 0)||"YOUR_ACCESS_KEY_HERE",Qe=(Ht==null?void 0:Ht.VITE_PIXABAY_API_KEY)||(typeof $.process$1<"u"?$.process$1.env.NEXT_PUBLIC_PIXABAY_API_KEY:void 0)||"YOUR_ACCESS_KEY_HERE",jt=["907841","LZDKIWvumJc","19740055","iTaneIvWKvE","8354123","2538204","8262349","6714897","uYpFBR3_CTc"],at=I=>({id:`pixabay-${I.id}`,urls:{raw:I.largeImageURL,full:I.largeImageURL,regular:I.largeImageURL,small:I.webformatURL,thumb:I.previewURL},alt_description:I.tags,user:{name:I.user,username:I.user},width:I.imageWidth,height:I.imageHeight,source:"pixabay"}),et=I=>({id:`unsplash-${I.id}`,urls:I.urls,alt_description:I.alt_description,user:I.user,width:I.width,height:I.height,source:"unsplash"});i.useEffect(()=>{e&&s&&(u(s),S("url"))},[e,s]),i.useEffect(()=>{e||(l(""),u(""),m([]),b(null),C(1),R(1),v(!0),D([]),G(""),U([]),K(null),Z(null),J(!0))},[e]),i.useEffect(()=>{e&&!o&&x==="search"&&h.length===0&&ht()},[e,x]);const ht=async()=>{g(!0),b(null);try{const I=[];if(ke!=="YOUR_ACCESS_KEY_HERE"){const he=jt.filter(Te=>!z.includes(Te)),me=[...he.length>=2?he:jt].sort(()=>Math.random()-.5).slice(0,2);me.forEach(Te=>{I.push(fetch(`https://api.unsplash.com/collections/${Te}/photos?per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}))}),D(Te=>{const _e=[...Te,...me];return _e.length>=jt.length?me:_e})}if(Qe!=="YOUR_ACCESS_KEY_HERE"&&I.push(fetch(`https://pixabay.com/api/?key=${Qe}&per_page=30&image_type=photo&order=popular`)),I.length===0)throw new Error("No API keys configured. Please set VITE_UNSPLASH_ACCESS_KEY or VITE_PIXABAY_API_KEY.");const q=await Promise.all(I);if(q.filter(he=>!he.ok).length===q.length)throw new Error("Failed to load images from all sources");const ce=[];for(let he=0;he<q.length;he++){if(!q[he].ok)continue;const de=await q[he].json();if("hits"in de){const ge=de.hits.map(at);ce.push(...ge)}else{const ge=de.map(et);ce.push(...ge)}}const j=ce.sort(()=>Math.random()-.5);m(j),v(!0)}catch(I){b(I instanceof Error?I.message:"Failed to load images"),Ot.error("Error loading featured images:",I)}finally{g(!1)}},Mt=async(I,q=1,oe=1)=>{if(!I.trim()){ht();return}g(!0),b(null);try{if(q===1&&oe===1){const ce=[];if(ke!=="YOUR_ACCESS_KEY_HERE"&&ce.push(fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=1&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}),fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=2&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}})),Qe!=="YOUR_ACCESS_KEY_HERE"&&ce.push(fetch(`https://pixabay.com/api/?key=${Qe}&q=${encodeURIComponent(I)}&page=1&per_page=30&image_type=photo`)),ce.length===0)throw new Error("No API keys configured. Please set VITE_UNSPLASH_ACCESS_KEY or VITE_PIXABAY_API_KEY.");const j=await Promise.all(ce);if(j.filter(me=>!me.ok).length===j.length)throw new Error("Failed to search images from all sources");const de=[];for(let me=0;me<j.length;me++){if(!j[me].ok)continue;const Te=await j[me].json();if("hits"in Te){const _e=Te.hits.map(at);de.push(..._e)}else{const _e=Te.results.map(et);de.push(..._e)}}const ge=de.sort(()=>Math.random()-.5);m(ge),v(de.length>0)}else{const ce=[];ke!=="YOUR_ACCESS_KEY_HERE"&&ce.push(fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=${q+2}&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}})),Qe!=="YOUR_ACCESS_KEY_HERE"&&ce.push(fetch(`https://pixabay.com/api/?key=${Qe}&q=${encodeURIComponent(I)}&page=${oe+1}&per_page=30&image_type=photo`));const j=await Promise.all(ce),he=[];for(let ge=0;ge<j.length;ge++){if(!j[ge].ok)continue;const me=await j[ge].json();if("hits"in me){const Te=me.hits.map(at);he.push(...Te)}else{const Te=me.results.map(et);he.push(...Te)}}const de=he.sort(()=>Math.random()-.5);m(ge=>[...ge,...de]),v(he.length>0)}}catch(ce){b(ce instanceof Error?ce.message:"Failed to search images"),Ot.error("Error searching images:",ce)}finally{g(!1)}},Ct=I=>{I.preventDefault(),C(1),R(1),Mt(o,1,1)},ft=i.useCallback(async()=>{if(!(f||!k)){if(o.trim()){const I=T+1,q=w+1;C(I),R(q),Mt(o,I,q);return}g(!0),b(null);try{const I=[];if(ke!=="YOUR_ACCESS_KEY_HERE"){const j=jt.filter(me=>!z.includes(me)),ge=[...j.length>=2?j:jt].sort(()=>Math.random()-.5).slice(0,2);ge.forEach(me=>{I.push(fetch(`https://api.unsplash.com/collections/${me}/photos?per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}))}),D(me=>{const Te=[...me,...ge];return Te.length>=jt.length?ge:Te})}if(Qe!=="YOUR_ACCESS_KEY_HERE"){const j=w+1;I.push(fetch(`https://pixabay.com/api/?key=${Qe}&page=${j}&per_page=30&image_type=photo&order=popular`)),R(j)}const q=await Promise.all(I),oe=[];for(let j=0;j<q.length;j++){if(!q[j].ok)continue;const he=await q[j].json();if("hits"in he){const de=he.hits.map(at);oe.push(...de)}else{const de=he.map(et);oe.push(...de)}}const ce=oe.sort(()=>Math.random()-.5);m(j=>[...j,...ce]),v(oe.length>0)}catch(I){b(I instanceof Error?I.message:"Failed to load more images"),Ot.error("Error loading more images:",I)}finally{g(!1)}}},[f,k,o,T,w,z,ke,Qe]);i.useEffect(()=>{const I=Ke.current;if(!I||!e||x!=="search")return;const q=new IntersectionObserver(oe=>{oe[0].isIntersecting&&k&&!f&&ft()},{root:null,rootMargin:"200px",threshold:0});return q.observe(I),()=>{q.disconnect()}},[e,x,k,f,ft]),i.useEffect(()=>{e&&!P&&x==="vector"&&Y.length===0&&On()&&It()},[e,x]);const It=async()=>{F(!0),K(null);try{const I=await bu({limit:30,includeSvg:!0});U(I),J(!0)}catch(I){const q=I instanceof Error?I.message:"Failed to load vectors";q.includes("Failed to fetch")||q.includes("NetworkError")?K('Cannot connect to proxy server. Make sure to run "npm run dev:proxy" in a separate terminal.'):K(q),Ot.error("Error loading featured vectors:",I)}finally{F(!1)}},we=async(I,q)=>{if(!I.trim()&&!q){It();return}F(!0),K(null);try{const oe=!se,{results:ce,nextPage:j}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:oe,nextPage:q});if(ce.length>0){if(q?U(he=>{const de=new Set(he.map(me=>me.id)),ge=ce.filter(me=>!de.has(me.id));return[...he,...ge]}):(U(ce),B(!1)),Z(j),J(j!==null),!q&&oe&&!j&&ce.length<30){B(!0);const{results:he,nextPage:de}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});U(ge=>{const me=new Set(ge.map(_e=>_e.id)),Te=he.filter(_e=>!me.has(_e.id));return[...ge,...Te]}),Z(de),J(de!==null)}}else if(!se&&!q){B(!0);const{results:he,nextPage:de}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});U(he),Z(de),J(de!==null)}else if(oe&&q&&!j){B(!0);const{results:he,nextPage:de}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});U(ge=>{const me=new Set(ge.map(_e=>_e.id)),Te=he.filter(_e=>!me.has(_e.id));return[...ge,...Te]}),Z(de),J(de!==null)}else J(!1),Z(null)}catch(oe){const ce=oe instanceof Error?oe.message:"Failed to search vectors";ce.includes("Failed to fetch")||ce.includes("NetworkError")?K('Cannot connect to proxy server. Make sure to run "npm run dev:proxy" in a separate terminal.'):K(ce),Ot.error("Error searching vectors:",oe)}finally{F(!1)}},ze=I=>{I.preventDefault(),we(P)},De=i.useCallback(async()=>{W||!V||!M||(P.trim()?we(P,M):It())},[W,V,M,P]);i.useEffect(()=>{const I=ot.current;if(!I||!e||x!=="vector")return;const q=new IntersectionObserver(oe=>{oe[0].isIntersecting&&V&&!W&&De()},{root:null,rootMargin:"200px",threshold:0});return q.observe(I),()=>{q.disconnect()}},[e,x,V,W,De]);const it=I=>{let q=I.urls.svg||I.urls.png;const ce=q.startsWith("http://localhost:3001")?q:`http://localhost:3001/proxy-image?url=${encodeURIComponent(q)}`;r(ce),n(!1)},Ae=I=>{r(I.urls.regular),n(!1)},Oe=I=>{I.preventDefault(),d.trim()&&(r(d.trim()),n(!1))},Ve=I=>{var oe;const q=(oe=I.target.files)==null?void 0:oe[0];if(q&&q.type.startsWith("image/")){const ce=new FileReader;ce.onload=j=>{var de;const he=(de=j.target)==null?void 0:de.result;u(he)},ce.readAsDataURL(q)}},wt=()=>{var I;(I=Ge.current)==null||I.click()},Se=async()=>{if(!d.trim()){Ce("No image URL provided");return}if(!en()){Ce("fal.ai API key not configured. Set VITE_FAL_API_KEY in your .env file.");return}Me(!0),Ce(null);try{let I=d;So(d)&&(I=await To(d));const q=await Co(I,{syncMode:!1}),oe=await wo(q.image.url);u(oe)}catch(I){const q=I instanceof Error?I.message:"Failed to remove background";Ce(q),Ot.error("Error removing background:",I)}finally{Me(!1)}},lt=async I=>{if(I.preventDefault(),!Q.trim()){Le("Please enter a prompt");return}if(_==="recraft"&&!_n()){Le("Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file.");return}if(_==="runware"&&!an()){Le("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");return}Rt(!0),Le(null),Ze(null),ue(null);try{if(_==="recraft"){const q=await vu(Q,Re,xe||void 0);Ze(q);const oe=await ju(q.url);ue(oe)}else{const q=await Su({prompt:Q,model:He,width:1024,height:1024,steps:25,cfgScale:7}),oe=await Tu(q.images[0].imageURL);ue(oe)}}catch(q){const oe=q instanceof Error?q.message:"Failed to generate image";Le(oe),Ot.error("Error generating AI image:",q)}finally{Rt(!1)}},tt=()=>{N&&(r(N),n(!1))},nt=(I,q)=>{const oe=I.width/I.height;return q%12===0&&oe>.8&&oe<1.2?"col-span-2 row-span-2":oe<.75?"row-span-2":oe>1.5?"col-span-2":""};return t.jsx(yn,{isOpen:e,onClose:()=>n(!1),title:"Image Browser",description:"Browse Unsplash images or enter a custom image URL",placement:a,height:a==="bottom"?"90vh":void 0,width:a!=="bottom"?"500px":void 0,hideHandle:!0,hideVisibleTitle:!0,showCloseButton:!1,"data-testid":"image-browser-drawer",children:t.jsxs(c.Tabs,{value:x,onValueChange:I=>S(I),className:"flex flex-col","data-testid":"image-browser-container",children:[t.jsx(c.Tabs.ListContainer,{className:"flex justify-center pt-4 pb-2",children:t.jsxs(c.Tabs.List,{className:"h-14 gap-1 px-1.5 md:h-12","aria-label":"Image source",children:[t.jsxs(c.Tabs.Tab,{id:"search",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-search",children:[t.jsx(L.Icon,{icon:X.image,className:"size-6"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"url",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-url",children:[t.jsx(L.Icon,{icon:X.link,className:"size-6"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"vector",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-vector",children:[t.jsx(L.Icon,{icon:"fa6-solid:icons",className:"size-5"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"ai",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-ai",children:[t.jsx(Kn,{size:24}),t.jsx(c.Tabs.Indicator,{})]})]})}),t.jsxs(c.Tabs.Panel,{id:"search",className:"flex flex-col",children:[t.jsxs("form",{onSubmit:Ct,className:"sticky top-0 z-9 flex gap-2 bg-surface px-6 pt-4 pb-3",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search for images",children:t.jsx(c.Input,{type:"text",placeholder:"Search for images...",value:o,onChange:I=>l(I.target.value),variant:"subtle","data-testid":"image-search-input"})}),t.jsx(c.Button,{type:"submit",size:"icon",variant:"secondary",disabled:f,"aria-label":"Search",children:t.jsx(L.Icon,{icon:X.search,className:"size-5"})}),t.jsx(c.Button,{size:"icon",variant:"secondary",onClick:()=>A(O==="grid"?"masonry":"grid"),"aria-label":O==="grid"?"Switch to masonry view":"Switch to grid view",children:O==="grid"?t.jsx(L.Icon,{icon:"lucide:layout-grid",className:"size-5"}):t.jsx(L.Icon,{icon:X.grip,className:"size-5"})})]}),p&&t.jsxs("div",{className:"border-danger bg-danger/10 text-danger mx-6 mb-3 rounded-2xl border-2 px-4 py-3 text-sm",children:[p,p.includes("Failed")&&ke==="YOUR_ACCESS_KEY_HERE"&&t.jsx("div",{className:"mt-2 text-sm opacity-75",children:"Set VITE_UNSPLASH_ACCESS_KEY in your .env file to enable Unsplash search"})]}),f&&h.length===0&&t.jsx("div",{className:"text-muted px-6 py-8 text-center text-sm",children:"Loading images..."}),h.length>0&&t.jsxs("div",{className:"mx-6 overflow-hidden rounded-t-2xl",children:[O==="masonry"?t.jsx("div",{className:"grid grid-flow-dense pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(200px, 1fr))":"repeat(3, 1fr)",gridAutoRows:a==="bottom"?"200px":"120px",gap:ku},children:h.map((I,q)=>t.jsx("div",{className:nt(I,q),children:t.jsx(ko,{image:I,onImageSelect:Ae,fixedHeight:!0})},I.id))}):t.jsx("div",{className:"pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(150px, 1fr))":"repeat(auto-fill, minmax(120px, 1fr))",gap:Cr},children:h.map(I=>t.jsx("div",{style:{aspectRatio:"1 / 1"},children:t.jsx(ko,{image:I,onImageSelect:Ae,fixedHeight:!0})},I.id))}),k&&t.jsx("div",{ref:Ke,className:"h-px"}),f&&t.jsx("div",{className:"text-muted py-4 text-center text-sm",children:"Loading more..."}),!k&&!f&&t.jsx("div",{className:"text-muted py-6 text-center text-sm",children:"No more images"})]}),!f&&h.length===0&&o&&t.jsxs("div",{className:"text-muted px-6 py-12 text-center text-sm",children:['No images found for "',o,'"']})]}),t.jsxs(c.Tabs.Panel,{id:"url",className:"flex flex-col gap-5 p-6",children:[t.jsx("input",{ref:Ge,type:"file",accept:"image/*",onChange:Ve,className:"hidden"}),t.jsxs("button",{type:"button",onClick:wt,className:"flex flex-col items-center justify-center gap-3 rounded-2xl border-2 border-dashed border-divider bg-muted/30 px-6 py-10 transition-colors hover:bg-muted/50 active:bg-muted/60","data-testid":"image-upload-btn",children:[t.jsx(L.Icon,{icon:"lucide:upload-cloud",className:"size-10 text-foreground/60"}),t.jsxs("div",{className:"flex flex-col items-center gap-1",children:[t.jsx("span",{className:"text-base font-medium text-foreground",children:"Upload from device"}),t.jsx("span",{className:"text-xs text-muted-foreground",children:"PNG · JPG · SVG · GIF"})]})]}),t.jsxs("div",{className:"relative flex items-center gap-3",children:[t.jsx("div",{className:"h-px flex-1 bg-divider"}),t.jsx("span",{className:"text-muted-foreground text-xs uppercase tracking-wider",children:"or paste a link"}),t.jsx("div",{className:"h-px flex-1 bg-divider"})]}),t.jsxs("form",{onSubmit:Oe,className:"flex flex-col gap-3",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{className:"sr-only",children:"Image URL"}),t.jsx(c.Input,{type:"url",placeholder:"https://example.com/image.jpg",value:d,onChange:I=>u(I.target.value),variant:"subtle","data-testid":"image-url-input"})]}),t.jsx(c.Button,{type:"submit",variant:"default",disabled:!d.trim(),className:"w-full","data-testid":"image-url-submit-btn",children:"Use This Image"})]}),d.trim()&&t.jsxs("div",{className:"flex flex-col gap-3 rounded-2xl border border-divider bg-muted/30 p-4",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Preview"}),en()&&t.jsx(c.Button,{onClick:Se,disabled:ut||!d.trim(),variant:"secondary",size:"sm",className:"gap-2","data-testid":"remove-background-btn",children:ut?t.jsxs(t.Fragment,{children:[t.jsx(L.Icon,{icon:"eos-icons:loading",className:"size-4 animate-spin"}),"Removing…"]}):t.jsxs(t.Fragment,{children:[t.jsx(L.Icon,{icon:"mdi:image-remove",className:"size-4"}),"Remove BG"]})})]}),Ie&&t.jsx("div",{className:"rounded-lg border border-danger bg-danger/10 px-3 py-2 text-xs text-danger",children:Ie}),t.jsx("img",{src:d,alt:"Preview",className:"max-h-[280px] w-full rounded-lg object-contain",onError:I=>{I.target.style.display="none"},onLoad:I=>{I.target.style.display="block"}}),!en()&&t.jsx("div",{className:"rounded-lg border border-warning bg-warning/10 px-3 py-2 text-xs text-warning",children:"Set VITE_FAL_API_KEY in your .env file to enable background removal."})]})]}),t.jsxs(c.Tabs.Panel,{id:"vector",className:"flex flex-col",children:[t.jsxs("form",{onSubmit:ze,className:"sticky top-0 z-9 flex gap-2 bg-surface px-6 pt-4 pb-3",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search for vector graphics",children:t.jsx(c.Input,{type:"text",placeholder:"Search for icons...",value:P,onChange:I=>G(I.target.value),variant:"subtle","data-testid":"vector-search-input"})}),t.jsx(c.Button,{type:"submit",size:"icon",variant:"secondary",disabled:W,"aria-label":"Search",children:t.jsx(L.Icon,{icon:X.search,className:"size-5"})}),t.jsx(c.Button,{size:"icon",variant:"secondary",onClick:()=>pe(ne==="grid"?"masonry":"grid"),"aria-label":ne==="grid"?"Switch to masonry view":"Switch to grid view",children:ne==="grid"?t.jsx(L.Icon,{icon:"lucide:layout-grid",className:"size-5"}):t.jsx(L.Icon,{icon:X.grip,className:"size-5"})})]}),H&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger mx-6 mb-3 rounded-2xl border-2 px-4 py-3 text-sm",children:H}),!On()&&t.jsx("div",{className:"bg-warning/10 text-warning mx-6 mb-3 rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Noun Project API keys not configured. Set VITE_NOUN_PROJECT_API_KEY and VITE_NOUN_PROJECT_API_SECRET in your .env file."}),W&&Y.length===0&&t.jsx("div",{className:"text-muted px-6 py-8 text-center text-sm",children:"Loading vectors..."}),Y.length>0&&t.jsxs("div",{className:"mx-6 overflow-hidden rounded-t-2xl",children:[ne==="masonry"?t.jsx("div",{className:"grid grid-flow-dense pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(150px, 1fr))":"repeat(3, 1fr)",gridAutoRows:a==="bottom"?"150px":"120px",gap:Cr},children:Y.map(I=>t.jsx("div",{children:t.jsx(No,{vector:I,onVectorSelect:it,fixedHeight:!0})},I.id))}):t.jsx("div",{className:"pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(120px, 1fr))":"repeat(auto-fill, minmax(100px, 1fr))",gap:Cr},children:Y.map(I=>t.jsx("div",{style:{aspectRatio:"1 / 1"},children:t.jsx(No,{vector:I,onVectorSelect:it,fixedHeight:!0})},I.id))}),V&&t.jsx("div",{ref:ot,className:"h-px"}),W&&t.jsx("div",{className:"text-muted py-4 text-center text-sm",children:"Loading more..."}),!V&&!W&&t.jsx("div",{className:"text-muted py-6 text-center text-sm",children:"No more vectors"})]}),!W&&Y.length===0&&P&&On()&&t.jsxs("div",{className:"text-muted px-6 py-12 text-center text-sm",children:['No vectors found for "',P,'"']})]}),t.jsxs(c.Tabs.Panel,{id:"ai",className:"flex flex-col gap-6 p-6",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"AI Provider"}),t.jsxs("select",{value:_,onChange:I=>ae(I.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:[t.jsx("option",{value:"runware",children:"Runware (Flux Dev / Nano Banana 2 Pro)"}),t.jsx("option",{value:"recraft",children:"Recraft (Vector Illustrations)"})]})]}),_==="runware"&&t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Model"}),t.jsx("select",{value:He,onChange:I=>qe(I.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:Wr.map(I=>t.jsxs("option",{value:I.id,children:[I.name," - ",I.description]},I.id))})]}),_==="recraft"&&t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Style"}),t.jsx("select",{value:Re,onChange:I=>{be(I.target.value),We("")},className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:jo.map(I=>t.jsx("option",{value:I.value,children:I.label},I.value))})]}),_==="recraft"&&(()=>{const I=jo.find(q=>q.value===Re);return I&&I.substyles.length>0?t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Substyle (Optional)"}),t.jsxs("select",{value:xe,onChange:q=>We(q.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:[t.jsx("option",{value:"",children:"None (Default)"}),I.substyles.map(q=>t.jsx("option",{value:q,children:q.replace(/_/g," ")},q))]})]}):null})(),t.jsxs("form",{onSubmit:lt,className:"flex flex-col gap-6",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Prompt"}),t.jsx(c.TextArea,{placeholder:"Describe the image you want to generate... (e.g., 'avocado, transparent background')",value:Q,onChange:I=>le(I.target.value),className:"min-h-[100px] resize-y",rows:4,"data-testid":"ai-prompt-input",disabled:vt})]}),t.jsx(c.Button,{type:"submit",variant:"default",disabled:!Q.trim()||vt||_==="recraft"&&!_n()||_==="runware"&&!an(),className:"w-full","data-testid":"ai-generate-btn",children:vt?t.jsxs(t.Fragment,{children:[t.jsx(L.Icon,{icon:"eos-icons:loading",className:"size-5 animate-spin"}),"Generating..."]}):t.jsxs(t.Fragment,{children:[t.jsx(Kn,{size:24}),"Generate Image"]})})]}),_==="recraft"&&!_n()&&t.jsx("div",{className:"bg-warning/10 text-warning rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file to enable AI generation."}),_==="runware"&&!an()&&t.jsx("div",{className:"bg-warning/10 text-warning rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file to enable AI generation."}),dt&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger rounded-2xl border-2 px-4 py-3 text-sm",children:dt}),N&&t.jsxs("div",{className:"flex flex-col gap-4 rounded-2xl border border-divider bg-muted/40 p-6",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-muted text-xs uppercase tracking-wide",children:"Generated Image"}),_==="recraft"&&Je&&t.jsx("span",{className:"rounded-xs bg-muted px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-foreground/80",children:Je.format.toUpperCase()}),_==="runware"&&t.jsx("span",{className:"rounded-xs bg-muted px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-foreground/80",children:(St=Wr.find(I=>I.id===He))==null?void 0:St.name})]}),t.jsx("div",{className:"flex w-fit items-center justify-center overflow-hidden rounded-lg bg-white/50 dark:bg-black/50",style:{maxHeight:"500px",maxWidth:"100%"},children:t.jsx("img",{src:N,alt:Q,className:"max-h-full max-w-full object-contain"})}),t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(c.Label,{className:"text-muted text-xs",children:"Prompt"}),t.jsx("p",{className:"text-sm",children:_==="recraft"&&Je?Je.prompt:Q})]}),t.jsxs("div",{className:"flex flex-col gap-3",children:[en()&&t.jsx(c.Button,{onClick:async()=>{if(N){Me(!0),Ce(null);try{let I=N;So(N)&&(I=await To(N));const q=await Co(I,{syncMode:!1}),oe=await wo(q.image.url);ue(oe)}catch(I){Ce(I instanceof Error?I.message:"Failed to remove background")}finally{Me(!1)}}},disabled:ut||!N,variant:"secondary",size:"sm",className:"w-full gap-2","data-testid":"ai-remove-background-btn",children:ut?t.jsxs(t.Fragment,{children:[t.jsx(L.Icon,{icon:"eos-icons:loading",className:"size-4 animate-spin"}),"Removing..."]}):t.jsxs(t.Fragment,{children:[t.jsx(L.Icon,{icon:"mdi:image-remove",className:"size-4"}),"Remove Background"]})}),Ie&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger rounded-xl border-2 px-3 py-2 text-xs",children:Ie}),t.jsx(c.Button,{onClick:tt,variant:"default",className:"w-full","data-testid":"ai-use-image-btn",children:"Use This Image"})]})]})]})]})})},pa=({isOpen:e,onOpenChange:n,onImageAdded:r,onImageChanged:s,changingElementId:a,onChangingElementIdChange:o})=>{var D;const{elements:l,setElements:d,canvasEditorRef:u,artboardManager:h,executeAddElement:m,executeElementUpdate:f}=je.useEditor(),{selectedId:g,setSelectedId:p}=je.useSelectionContext(),{activeArtboardId:b}=L.useArtboards(),x=i.useRef(l);x.current=l;const S=i.useRef(g);S.current=g;const[T,C]=i.useState(null),w=a??T,R=o??C,k=i.useCallback(O=>{var K,M;const A=x.current,P=S.current;if(w){const Z=A.find(V=>V.id===w);if(Z&&ye.isImageElement(Z)){const V=Z,J=Z.clone(),ne=((K=u.current)==null?void 0:K.getZoom())||1;J.imageUrl=O,J.transformData.width=300/ne,J.transformData.height=300/ne,J.transformData.cropX=0,J.transformData.cropY=0,J.transformData.cropWidth=1,J.transformData.cropHeight=1,J.transformData.flipHorizontal=!1,J.transformData.flipVertical=!1,J.transformData.borderRadius=0,J.imageLoaded=!1,J.imageElement=null,J.isCropping=!1,J.onLoadCallback=pe=>{const se=pe;d(B=>B.map(_=>_.id===se.id?se:_))},J.loadImage(O),f(V,J),s&&s(J)}R(null);return}if(!b){alert("Please create or select an artboard first");return}const G=`element-${Date.now()}`,Y=h.getActiveArtboard(),U=Y?Y.x+Y.width/2:window.innerWidth/2,W=Y?Y.y+Y.height/2:window.innerHeight/2,F=((M=u.current)==null?void 0:M.getZoom())||1,H=new $.ImageElement({id:G,x:U,y:W,imageUrl:O,transformData:{width:300/F,height:300/F},onLoadCallback:Z=>{const V=Z;d(J=>J.map(ne=>ne.id===V.id?V:ne))}});h.addElementToArtboard(G,b),m(H,b,P||void 0),p(G),r&&r(H)},[w,h,m,f,b,u,d,p,R,r,s]),v=i.useCallback(O=>{n(O),O||R(null)},[n,R]),z=w?(D=l.find(O=>O.id===w))==null?void 0:D.imageUrl:void 0;return t.jsx(Nu,{isOpen:e,onToggle:v,onImageSelect:k,currentImageUrl:z})},Eu=Object.freeze(Object.defineProperty({__proto__:null,ImagePanel:pa},Symbol.toStringTag,{value:"Module"})),Ru=$.createLogger("GlyphBrowserDrawer"),Iu=({isOpen:e,onClose:n,fontFamily:r,fontWeight:s=400,onInsertGlyph:a})=>{const[o,l]=i.useState([]),[d,u]=i.useState(!1),[h,m]=i.useState(null),[f,g]=i.useState("");i.useEffect(()=>{e&&(u(!0),m(null),g(""),$.FontAnalyzer.getAllGlyphs(r,s).then(x=>{x.length===0&&m(`No alternate glyphs found in ${r}`),l(x),u(!1)}).catch(x=>{Ru.error("Error loading glyphs:",x),m("Failed to load glyphs"),u(!1)}))},[e,r,s]);const p=x=>{let S=x.unicode;if(!S||S.length===0)S=String.fromCodePoint(983040+x.glyphIndex);else{const T=S.codePointAt(0);T&&T<57344&&(S=String.fromCodePoint(983040+x.glyphIndex))}a(S)},b=f?o.filter(x=>x.name.toLowerCase().includes(f.toLowerCase())||x.unicode.toLowerCase().includes(f.toLowerCase())):o;return t.jsxs(yn,{isOpen:e,onClose:n,title:`Browse Glyphs - ${r}`,description:`Browse and select alternate glyphs for the ${r} font`,maxHeight:"75vh",showCloseButton:!0,children:[t.jsx("div",{className:"px-6 py-4 border-b border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"relative",children:[t.jsx(L.Icon,{icon:X.search,className:"absolute left-3 top-1/2 -translate-y-1/2 text-muted pointer-events-none size-4 z-10"}),t.jsx(c.Input,{type:"text",placeholder:"Search glyphs...",value:f,onChange:x=>g(x.target.value),className:"pl-10"})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-6",children:[d&&t.jsxs("div",{className:"py-12 text-center text-muted",children:[t.jsx(c.Spinner,{size:"lg",className:"mx-auto mb-4"}),t.jsx("div",{className:"text-sm",children:"Loading glyphs..."})]}),h&&t.jsxs("div",{className:"py-12 text-center",children:[t.jsx(L.Icon,{icon:X.alertCircle,className:"size-12 mx-auto mb-4 text-danger"}),t.jsx("div",{className:"text-base font-medium mb-2",children:h}),t.jsx("div",{className:"text-sm text-muted",children:"This font may not have alternate glyphs."})]}),!d&&!h&&b.length===0&&f&&t.jsxs("div",{className:"py-12 text-center",children:[t.jsx(L.Icon,{icon:X.search,className:"size-12 mx-auto mb-4 text-muted"}),t.jsxs("div",{className:"text-base font-medium",children:['No glyphs found matching "',f,'"']})]}),!d&&!h&&b.length>0&&t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-4",children:b.map((x,S)=>t.jsxs("button",{onClick:()=>p(x),className:"group relative flex aspect-square cursor-pointer flex-col items-center gap-2 rounded-xl border-2 border-black/10 bg-black/5 p-3 transition-all hover:border-accent hover:bg-black/10 hover:shadow-lg dark:border-white/10 dark:bg-white/5 dark:hover:border-accent dark:hover:bg-white/10",children:[x.previewDataUrl?t.jsx("img",{src:x.previewDataUrl,alt:x.name,className:"h-auto w-full object-contain"}):t.jsx("div",{className:"text-5xl leading-none",style:{fontFamily:r},children:x.unicode}),t.jsx("div",{className:"w-full overflow-hidden text-ellipsis whitespace-nowrap text-center text-xs text-muted",children:x.name}),x.category!=="default"&&t.jsx(c.Badge,{size:"sm",color:x.category==="swash"?"warning":x.category==="stylistic"?"primary":"success",className:"absolute right-1 top-1 text-[10px] font-semibold uppercase",children:x.category==="swash"?"SW":x.category==="stylistic"?"ALT":x.category==="ligature"?"LIG":""})]},`${x.glyphIndex}-${S}`))}),!d&&!h&&b.length>0&&t.jsxs("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10 text-center text-sm text-muted",children:[b.length," glyph",b.length!==1?"s":""," available",f&&` matching "${f}"`]})]})]})},Eo=$.createLogger("GlyphPanel"),ma=({isOpen:e,onClose:n,fontFamily:r,fontWeight:s,onInsertGlyph:a,element:o})=>{const{selectedElement:l,executeElementUpdate:d}=je.useEditor(),u=o!==void 0?o:l||null,h=r||(u instanceof $.TextElement?u.fontFamily:"Arial"),m=s||(u instanceof $.TextElement&&u.bold?700:400),f=i.useCallback(async g=>{if(a){a(g);return}if(!u||!(u instanceof $.TextElement)){Eo.warn("No text element selected for glyph insertion");return}try{await $.FontAnalyzer.loadFont(h,m)}catch(b){Eo.error("Error pre-loading font for glyph rendering:",b)}const p=u.clone();p.text=p.text+g,d(u,p)},[a,u,h,m,d]);return t.jsx(Iu,{isOpen:e,onClose:n,fontFamily:h,fontWeight:m,onInsertGlyph:f})},Du=Object.freeze(Object.defineProperty({__proto__:null,GlyphPanel:ma},Symbol.toStringTag,{value:"Module"})),ga=({orientation:e="horizontal",showAddButton:n=!0,showCloseButtons:r=!1,maxTabWidth:s=200,style:a={},className:o="",onArtboardCreate:l,onArtboardDelete:d})=>{const{artboardsInfo:u,selectArtboard:h,createArtboard:m,deleteArtboard:f,renameArtboard:g}=L.useArtboards(),[p,b]=i.useState(null),[x,S]=i.useState(""),T=(D,O)=>{b(D),S(O)},C=()=>{p&&x.trim()&&g(p,x.trim()),b(null),S("")},w=()=>{b(null),S("")},R=()=>{m(1200,1200,{name:`Artboard ${u.length+1}`}),l&&setTimeout(()=>{const D=u[u.length];D&&l(D.id)},10)},k=(D,O)=>{if(O.stopPropagation(),u.length<=1){alert("Cannot delete the last artboard");return}confirm("Delete this artboard?")&&(f(D),d&&d(D))},v=e==="horizontal"?{display:"flex",flexDirection:"row",gap:4,padding:8,backgroundColor:"var(--bg-secondary)",borderBottom:"1px solid var(--border-primary)",overflowX:"auto",overflowY:"hidden",...a}:{display:"flex",flexDirection:"column",gap:4,padding:8,backgroundColor:"var(--bg-secondary)",borderRight:"1px solid var(--border-primary)",overflowY:"auto",overflowX:"hidden",minWidth:200,...a},z=D=>({display:"flex",alignItems:"center",gap:8,padding:"8px 12px",backgroundColor:D?"var(--accent-primary)":"var(--bg-primary)",color:D?"var(--primary-foreground)":"var(--text-primary)",border:D?"none":"1px solid var(--border-primary)",borderRadius:6,cursor:"pointer",fontSize:13,fontWeight:D?600:400,whiteSpace:"nowrap",maxWidth:e==="horizontal"?s:void 0,minWidth:e==="horizontal"?120:void 0,transition:"all 0.2s"});return t.jsxs("div",{className:`artboard-tabs ${o}`,style:v,children:[u.map(D=>{const O=p===D.id;return t.jsxs("div",{style:z(D.isActive),onClick:()=>!O&&h(D.id),onDoubleClick:()=>T(D.id,D.name),children:[O?t.jsx("input",{type:"text",value:x,onChange:A=>S(A.target.value),onBlur:C,onKeyDown:A=>{A.key==="Enter"&&C(),A.key==="Escape"&&w()},autoFocus:!0,onClick:A=>A.stopPropagation(),style:{flex:1,padding:"2px 4px",border:"1px solid var(--border-primary)",borderRadius:4,fontSize:13,minWidth:80}}):t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis"},children:D.name}),t.jsx("span",{style:{fontSize:11,opacity:.7,padding:"2px 6px",borderRadius:10,backgroundColor:D.isActive?"color-mix(in srgb, var(--primary-foreground) 20%, transparent)":"var(--bg-secondary)"},children:D.elementCount}),r&&t.jsx("button",{onClick:A=>k(D.id,A),style:{background:"none",border:"none",cursor:"pointer",padding:2,display:"flex",alignItems:"center",opacity:.7,transition:"opacity 0.2s"},onMouseEnter:A=>A.currentTarget.style.opacity="1",onMouseLeave:A=>A.currentTarget.style.opacity="0.7",title:"Delete artboard",children:t.jsx(L.Icon,{icon:X.close,className:"size-3.5"})})]},D.id)}),n&&t.jsxs("button",{onClick:R,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:"8px 12px",backgroundColor:"var(--bg-primary)",border:"1px dashed var(--border-primary)",borderRadius:6,cursor:"pointer",fontSize:13,color:"var(--text-secondary)",minWidth:e==="horizontal"?120:void 0,transition:"all 0.2s"},onMouseEnter:D=>{D.currentTarget.style.backgroundColor="var(--bg-tertiary)",D.currentTarget.style.borderColor="var(--accent-primary)"},onMouseLeave:D=>{D.currentTarget.style.backgroundColor="var(--bg-primary)",D.currentTarget.style.borderColor="var(--border-primary)"},title:"Add new artboard",children:[t.jsx(L.Icon,{icon:X.plus,className:"size-3.5"}),t.jsx("span",{children:"New Artboard"})]})]})},Au=Object.freeze(Object.defineProperty({__proto__:null,ArtboardTabs:ga},Symbol.toStringTag,{value:"Module"})),Mu=()=>t.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"shrink-0",children:t.jsx("path",{d:"M19 12H5M12 19l-7-7 7-7"})});function Fu({onClick:e}){return t.jsx(c.TooltipProvider,{delayDuration:300,children:t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"outline",onClick:e,className:"mr-sm border-r-border-primary pr-md","aria-label":"Back",children:t.jsx(Mu,{})})}),t.jsx(c.TooltipContent,{children:"Back"})]})})}const wr=.001;function nr(e){var r,s;if(!e)return{rotation:!1,opacity:!1,stroke:!1,knockout:!1,distress:!1,imageMask:!1,cornerRadius:!1,shapeTransparency:!1};const n=e.transformData;return{rotation:Math.abs(e.rotation??0)>wr,opacity:(e.opacity??1)<1-wr,stroke:((r=e.stroke)==null?void 0:r.enabled)===!0,knockout:e.blendMode==="knockout"||e.blendMode==="clip",distress:((s=e.distressEffect)==null?void 0:s.enabled)===!0,imageMask:!!e.masks&&e.masks.length>0,cornerRadius:((n==null?void 0:n.borderRadius)??0)>0,shapeTransparency:((n==null?void 0:n.fillOpacity)??1)<1-wr}}const xa=({element:e,onElementUpdate:n,showUngroupButton:r=!1,onUngroup:s,onMoveForward:a,onMoveBackward:o,onChangeImage:l,onDelete:d,cornerRadiusExpanded:u=!1,onCornerRadiusToggle:h,cropExpanded:m=!1,onCropToggle:f,rotationExpanded:g=!1,onRotationToggle:p,opacityExpanded:b=!1,onOpacityToggle:x,strokeExpanded:S=!1,onStrokeToggle:T,knockoutExpanded:C=!1,onKnockoutToggle:w,distressTextureExpanded:R=!1,onDistressTextureToggle:k,imageMaskExpanded:v=!1,onImageMaskToggle:z})=>{const[D,O]=i.useState(!1),[A,P]=i.useState(!1),[G,Y]=i.useState(!1),[U,W]=i.useState(!1),[F,H]=i.useState(!1),[K,M]=i.useState(!1),[Z,V]=i.useState(!1),[J,ne]=i.useState(!1),[pe,se]=i.useState(!1),[B,_]=i.useState(!1),ae=e.isCropping,Q=nr(e),le=()=>{if(W(!0),ae){const xe=e.clone();xe.exitCropMode(),n(xe)}else{const xe=e.clone();xe.enterCropMode(),n(xe)}f==null||f()},Re=()=>{const xe=e.clone();xe.transformData.flipHorizontal=!xe.transformData.flipHorizontal,n(xe)},be=()=>{const xe=e.clone();xe.transformData.flipVertical=!xe.transformData.flipVertical,n(xe)};return t.jsxs("div",{className:"toolbar-items",children:[l&&t.jsx(ie,{icon:"lucide:image",onClick:()=>{P(!0),l()},onMouseLeave:()=>P(!1),tooltip:"Change Image",tooltipDisabled:A}),t.jsx(ie,{icon:"lucide:crop",onClick:le,onMouseLeave:()=>W(!1),tooltip:ae?"Exit Crop Mode":"Crop",tooltipDisabled:U||m,active:ae||m}),t.jsx(ie,{icon:"lucide:flip-horizontal-2",onClick:Re,tooltip:"Flip Horizontal"}),t.jsx(ie,{icon:"lucide:flip-vertical-2",onClick:be,tooltip:"Flip Vertical"}),t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{H(!0),p==null||p()},onMouseLeave:()=>H(!1),tooltip:"Rotate",tooltipDisabled:F||g,active:g||Q.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{M(!0),x==null||x()},onMouseLeave:()=>M(!1),tooltip:"Transparency",tooltipDisabled:K||b,active:b||Q.opacity}),t.jsx(ie,{icon:"lucide:square-round-corner",onClick:()=>{Y(!0),h==null||h()},onMouseLeave:()=>Y(!1),tooltip:"Corner Radius",tooltipDisabled:G||u,active:u||Q.cornerRadius}),w&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{ne(!0),w()},onMouseLeave:()=>ne(!1),tooltip:"Clip / Knockout",tooltipDisabled:J||C,active:C||Q.knockout}),k&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{se(!0),k()},onMouseLeave:()=>se(!1),tooltip:"Distress Texture",tooltipDisabled:pe||R,active:R||Q.distress}),z&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{_(!0),z()},onMouseLeave:()=>_(!1),tooltip:"Image Mask",tooltipDisabled:B||v,active:v||Q.imageMask}),T&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{V(!0),T()},onMouseLeave:()=>V(!1),tooltip:"Stroke",tooltipDisabled:Z||S,active:S||Q.stroke}),(a||o||d)&&t.jsxs(c.Popover,{open:D,onOpenChange:O,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(L.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[a&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{a(),O(!1)},"aria-label":"Move Forward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),o&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{o(),O(!1)},"aria-label":"Move Backward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),d&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{O(!1),d()},"aria-label":"Delete",children:t.jsx(L.Icon,{icon:X.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]}),r&&s&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:s,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})},Hr=[{id:"white",name:"White",color:"#FFFFFF"},{id:"light-gray",name:"Light Gray",color:"#E5E5E5"},{id:"medium-gray",name:"Medium Gray",color:"#999999"},{id:"dark-gray",name:"Dark Gray",color:"#333333"},{id:"black",name:"Black",color:"#000000"},{id:"orange",name:"Orange",color:"#FF8800"},{id:"blue",name:"Blue",color:"#0074D9"},{id:"indigo",name:"Indigo",color:"#4B0082"},{id:"teal",name:"Teal",color:"#39CCCC"},{id:"coral",name:"Coral",color:"#FF6B6B"}],ba=({element:e,onElementUpdate:n,documentColors:r,imageColors:s,showUngroupButton:a=!1,onUngroup:o,onMoveForward:l,onMoveBackward:d,onOpenShapeTypeDrawer:u,onDelete:h,rotationExpanded:m=!1,onRotationToggle:f,cornerRadiusExpanded:g=!1,onCornerRadiusToggle:p,transparencyExpanded:b=!1,onTransparencyToggle:x,sidesExpanded:S=!1,onSidesToggle:T,pointsExpanded:C=!1,onPointsToggle:w,innerRadiusExpanded:R=!1,onInnerRadiusToggle:k,colorExpanded:v=!1,onColorToggle:z,strokeExpanded:D=!1,onStrokeToggle:O,knockoutExpanded:A=!1,onKnockoutToggle:P,distressTextureExpanded:G=!1,onDistressTextureToggle:Y,imageMaskExpanded:U=!1,onImageMaskToggle:W})=>{const[F,H]=i.useState(!1),[K,M]=i.useState(!1),[Z,V]=i.useState(!1),[J,ne]=i.useState(!1),[pe,se]=i.useState(!1),[B,_]=i.useState(!1),[ae,Q]=i.useState(!1),[le,Re]=i.useState(!1),[be,xe]=i.useState(!1),[We,He]=i.useState(!1),[qe,vt]=i.useState(!1),[Rt,dt]=i.useState(!1),[Le,Je]=i.useState(!1),Ze=i.useMemo(()=>Hr.map(Ke=>Ke.color),[]),N=i.useMemo(()=>r&&r.length>0?r:Ze,[r,Ze]),ue=nr(e),ut=Ke=>{const ot=e.clone();ot.transformData.fillColor=Ke.target.value,n(ot)},Me={rectangle:"Rectangle",circle:"Circle",ellipse:"Ellipse",triangle:"Triangle",polygon:"Polygon",star:"Star",line:"Line"},Ie=e.transformData.shapeType,Ce=Me[Ie]||"Shape";return t.jsxs("div",{className:"toolbar-items",children:[u&&t.jsx(ie,{icon:X.shapes,onClick:()=>{M(!0),u()},onMouseLeave:()=>M(!1),tooltip:`Change Shape (${Ce})`,tooltipDisabled:K}),z?t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn",onClick:()=>{xe(!0),z()},onMouseLeave:()=>xe(!1),"aria-label":"Fill Color","data-active":v,children:t.jsx("div",{className:"h-6 w-6 rounded-md border border-border-primary",style:{backgroundColor:e.transformData.fillColor||"#3b82f6"}})})}),!be&&!v&&t.jsx(c.TooltipContent,{children:"Fill Color"})]}):t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(Bt,{value:e.transformData.fillColor||"#3b82f6",onChange:ut,documentColors:N,imageColors:s,showSquare:!0})})}),t.jsx(c.TooltipContent,{children:"Fill Color"})]}),e.transformData.shapeType==="rectangle"&&p&&t.jsx(ie,{icon:"lucide:square-round-corner",onClick:()=>{ne(!0),p()},onMouseLeave:()=>ne(!1),tooltip:"Corner Radius",tooltipDisabled:J||g,active:g||ue.cornerRadius}),e.transformData.shapeType==="polygon"&&T&&t.jsx(ie,{icon:"healthicons:polygon",onClick:()=>{_(!0),T()},onMouseLeave:()=>_(!1),tooltip:"Sides",tooltipDisabled:B||S,active:S}),e.transformData.shapeType==="star"&&w&&t.jsx(ie,{icon:"material-symbols:award-star-outline",onClick:()=>{Q(!0),w()},onMouseLeave:()=>Q(!1),tooltip:"Points",tooltipDisabled:ae||C,active:C}),e.transformData.shapeType==="star"&&k&&t.jsx(ie,{icon:"lucide:circle-dashed",onClick:()=>{Re(!0),k()},onMouseLeave:()=>Re(!1),tooltip:"Inner Radius",tooltipDisabled:le||R,active:R}),x&&t.jsx(ie,{icon:"lucide:blend",onClick:()=>{se(!0),x()},onMouseLeave:()=>se(!1),tooltip:"Transparency",tooltipDisabled:pe||b,active:b||ue.shapeTransparency}),f&&t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{V(!0),f()},onMouseLeave:()=>V(!1),tooltip:"Rotate",tooltipDisabled:Z||m,active:m||ue.rotation}),P&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{vt(!0),P()},onMouseLeave:()=>vt(!1),tooltip:"Clip / Knockout",tooltipDisabled:qe||A,active:A||ue.knockout}),Y&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{dt(!0),Y()},onMouseLeave:()=>dt(!1),tooltip:"Distress Texture",tooltipDisabled:Rt||G,active:G||ue.distress}),W&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{Je(!0),W()},onMouseLeave:()=>Je(!1),tooltip:"Image Mask",tooltipDisabled:Le||U,active:U||ue.imageMask}),O&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{He(!0),O()},onMouseLeave:()=>He(!1),tooltip:"Stroke",tooltipDisabled:We||D,active:D||ue.stroke}),(l||d||h)&&t.jsxs(c.Popover,{open:F,onOpenChange:H,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(L.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[l&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{l(),H(!1)},"aria-label":"Move Forward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),d&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{d(),H(!1)},"aria-label":"Move Backward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),h&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{H(!1),h()},"aria-label":"Delete",children:t.jsx(L.Icon,{icon:X.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]}),a&&o&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:o,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})},Lu=({className:e})=>t.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:t.jsx("path",{d:"M12 2L21 8L18 19L6 19L3 8L12 2Z"})}),zu=({className:e})=>t.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:t.jsx("ellipse",{cx:"12",cy:"12",rx:"9",ry:"6"})}),Gr="size-10",Ou=[{id:"rectangle",label:"Rectangle",icon:"lucide:square"},{id:"circle",label:"Circle",icon:"lucide:circle"},{id:"ellipse",label:"Ellipse",reactIcon:t.jsx(zu,{className:Gr})},{id:"triangle",label:"Triangle",icon:"lucide:triangle"},{id:"polygon",label:"Polygon",reactIcon:t.jsx(Lu,{className:Gr})},{id:"star",label:"Star",icon:"lucide:star"},{id:"line",label:"Line",icon:"lucide:minus"}],is=({isOpen:e,onClose:n,onSelectType:r,currentType:s})=>{const a=s?"Change Shape":"Select Shape",o=s?"Select a new shape type":"Choose a shape to add",l=d=>{r(d),n()};return t.jsxs(yn,{isOpen:e,onClose:n,title:a,description:o,placement:"bottom",height:"auto",hideVisibleTitle:!0,showCloseButton:!1,"data-testid":"shape-type-drawer",children:[t.jsxs("div",{className:"px-6 pt-1 pb-2 flex items-center justify-between",children:[t.jsx("h3",{className:"text-lg font-semibold tracking-tight text-foreground",children:a}),t.jsx("button",{onClick:n,className:"size-11 rounded-full hover:bg-foreground/[0.06] flex items-center justify-center text-foreground/70 -mr-2","aria-label":"Close",children:t.jsx(L.Icon,{icon:X.close,className:"size-5"})})]}),t.jsx("div",{className:"grid grid-cols-3 gap-2 p-4","data-testid":"shape-type-list",children:Ou.map(d=>{const u=d.id===s;return t.jsxs("button",{type:"button",onClick:()=>l(d.id),"aria-pressed":u,"data-testid":`shape-type-${d.id}`,className:`aspect-square flex flex-col items-center justify-center gap-2.5 rounded-xl border transition-colors ${u?"bg-primary/10 border-primary/40":"bg-transparent border-transparent hover:bg-foreground/[0.04] active:bg-foreground/[0.06]"}`,children:[t.jsx("span",{className:u?"text-primary":"text-foreground/85",children:d.reactIcon?d.reactIcon:t.jsx(L.Icon,{icon:d.icon,className:Gr})}),t.jsx("span",{className:`text-xs ${u?"text-primary font-medium":"text-foreground/70"}`,children:d.label})]},d.id)})})]})},ya=({element:e,onElementUpdate:n,onMoveForward:r,onMoveBackward:s})=>{const[a,o]=i.useState(!1),[l,d]=i.useState(!1),[u,h]=i.useState(!1),m=v=>{const z=e.clone();z.transformData.strokeColor=v,n(z),o(!1)},f=v=>{const z=e.clone();z.transformData.fillColor=v,n(z),d(!1)},g=()=>{const v=e.clone();v.transformData.strokeEnabled=!v.transformData.strokeEnabled,n(v)},p=()=>{const v=e.clone();v.transformData.fillEnabled=!v.transformData.fillEnabled,n(v)},b=v=>{const z=e.clone();z.transformData.strokeWidth=v,n(z)},x=e.transformData.strokeColor||"#000000",S=e.transformData.fillColor||"#3b82f6",T=e.transformData.strokeEnabled??!0,C=e.transformData.fillEnabled??!1,w=e.transformData.strokeWidth??2,R=e.transformData.closed,k=e.transformData.points.length;return t.jsxs("div",{className:"fixed top-3xl left-1/2 -translate-x-1/2 flex items-center gap-md px-xl py-md bg-bg-primary rounded-xl shadow-md",style:{zIndex:"var(--z-dropdown)"},children:[t.jsxs("div",{className:"px-xl text-base text-text-muted border-r border-border-primary",children:[t.jsx("span",{className:"font-semibold",children:"Path"}),t.jsxs("span",{className:"ml-md text-text-placeholder",children:[k," ",k===1?"point":"points",R&&" • Closed"]})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:T?"default":"ghost",onClick:g,className:"px-xl text-base",children:"Stroke"})}),t.jsx(c.TooltipContent,{children:T?"Disable Stroke":"Enable Stroke"})]}),T&&t.jsxs(c.Popover,{open:a,onOpenChange:o,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"w-8 h-8 p-xs rounded-md border-2 border-border-primary cursor-pointer transition-transform hover:scale-105",style:{background:x},title:"Stroke Color"})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsxs("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[240px]",children:[t.jsx("div",{className:"grid grid-cols-6 gap-sm mb-md",children:Hr.map(v=>t.jsx(c.Button,{onClick:()=>m(v.color),"aria-label":v.name,className:`w-8 h-8 rounded-md cursor-pointer transition-all min-h-0 min-w-0 p-0 ${x===v.color?"border-2 border-accent-primary scale-110":"border border-border-primary hover:scale-105"}`,style:{background:v.color}},v.color))}),t.jsx("input",{type:"color",value:x,onChange:v=>m(v.target.value),className:"w-full h-8 cursor-pointer rounded-md border border-border-primary"})]})})]}),T&&t.jsxs(c.Popover,{open:u,onOpenChange:h,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsxs(c.Button,{variant:"ghost",className:"px-xl text-base",children:[w,"px"]})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsx("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[200px]",children:t.jsxs(c.Slider,{value:[w],onValueChange:v=>b(v[0]),min:1,max:20,step:.5,className:"slider-no-fill w-full",children:[t.jsx(c.Label,{children:"Width (px)"}),t.jsx(c.Slider.Output,{}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]})})})]}),t.jsx("div",{className:"w-px h-6 bg-border-primary mx-xs"}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:C?"default":"ghost",onClick:p,className:"px-xl text-base",children:"Fill"})}),t.jsx(c.TooltipContent,{children:C?"Disable Fill":"Enable Fill"})]}),C&&t.jsxs(c.Popover,{open:l,onOpenChange:d,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"w-8 h-8 p-xs rounded-md border-2 border-border-primary cursor-pointer transition-transform hover:scale-105",style:{background:S},title:"Fill Color"})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsxs("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[240px]",children:[t.jsx("div",{className:"grid grid-cols-6 gap-sm mb-md",children:Hr.map(v=>t.jsx(c.Button,{onClick:()=>f(v.color),"aria-label":v.name,className:`w-8 h-8 rounded-md cursor-pointer transition-all min-h-0 min-w-0 p-0 ${S===v.color?"border-2 border-accent-primary scale-110":"border border-border-primary hover:scale-105"}`,style:{background:v.color}},v.color))}),t.jsx("input",{type:"color",value:S,onChange:v=>f(v.target.value),className:"w-full h-8 cursor-pointer rounded-md border border-border-primary"})]})})]}),t.jsx("div",{className:"w-px h-6 bg-border-primary mx-xs"}),r&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:r,children:t.jsx(L.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-[18px]"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),s&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:s,children:t.jsx(L.Icon,{icon:"hugeicons:layer-send-backward",className:"size-[18px]"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]})]})},ls=i.memo(({backgroundType:e,backgroundColor:n,backgroundTexture:r,onBackgroundTypeChange:s,onColorChange:a,onTextureChange:o})=>{const[l,d]=i.useState(!1),[u,h]=i.useState("color"),[m,f]=i.useState(n);i.useEffect(()=>{h(e==="texture"?"texture":"color")},[e]),i.useEffect(()=>{n!=="transparent"&&f(n)},[n]);const g=C=>{f(C),a(C),s("color")},p=C=>{const w=C.target.value;f(w);const R=/^#?([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})$/,k=w.startsWith("#")?w:`#${w}`;R.test(k)&&(a(k),s("color"))},b=()=>{a("transparent"),s("transparent")},x=C=>{o(C),s("texture")},S=C=>{if(h(C),C==="color")s(n==="transparent"?"transparent":"color");else if(C==="texture"){if(!r){const w=ye.TextureManager.getAllTextures()[0];w&&o(w.id)}s("texture")}},T=n==="transparent";return t.jsxs(c.Popover,{open:l,onOpenChange:d,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:l?"default":"ghost","aria-label":"Background",children:t.jsx(L.Icon,{icon:X.palette,className:"size-[18px]"})})}),t.jsx(c.PopoverContent,{className:"w-auto p-3",children:t.jsxs("div",{className:"flex min-w-[220px] flex-col gap-3",children:[t.jsxs("div",{className:"flex gap-1 border-b border-divider pb-3",children:[t.jsx(c.Button,{variant:"ghost",size:"sm",className:`flex-1 ${u==="color"?"bg-primary text-primary-foreground":""}`,onClick:()=>S("color"),children:"Color"}),t.jsx(c.Button,{variant:"ghost",size:"sm",className:`flex-1 ${u==="texture"?"bg-primary text-primary-foreground":""}`,onClick:()=>S("texture"),children:"Texture"}),t.jsx(c.Button,{variant:"ghost",size:"sm",className:"flex-1 cursor-not-allowed opacity-50",disabled:!0,"aria-label":"Gradient (Coming soon)",children:"Gradient"})]}),u==="color"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs(c.Button,{variant:"ghost",className:`flex w-full cursor-pointer items-center justify-start gap-2 rounded-lg ${T?"bg-primary/10":""}`,onClick:b,children:[t.jsx("div",{className:"transparent-pattern-small h-6 w-6 rounded"}),t.jsx("span",{className:"text-sm font-medium",children:"Transparent"})]}),t.jsx(ca,{color:T?"#ffffff":n,onChange:g}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{htmlFor:"bg-hex-input",className:"text-sm font-medium uppercase text-foreground/60",children:"HEX"}),t.jsx("input",{id:"bg-hex-input",type:"text",className:"flex-1 rounded-lg border border-divider bg-field px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none",value:m,onChange:p,placeholder:"#000000",maxLength:7})]})]}),u==="texture"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Select a texture"}),t.jsx("div",{className:"grid grid-cols-4 gap-1.5",children:ye.TextureManager.getAllTextures().map(C=>t.jsx("button",{className:`flex items-center justify-center p-1 rounded-lg cursor-pointer transition-all border-2 ${r===C.id?"border-primary":"border-transparent hover:border-primary/50"}`,onClick:()=>x(C.id),"aria-label":C.name,children:t.jsx("img",{src:C.url,alt:C.name,className:"w-full h-full rounded"})},C.id))})]}),u==="gradient"&&t.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-8 text-foreground/60",children:[t.jsx("div",{className:"text-sm",children:"Gradient backgrounds"}),t.jsx("div",{className:"text-xs",children:"Coming soon"})]})]})})]})});ls.displayName="BackgroundPickerDropdown";const va=({distressTexture:e,onChange:n})=>{ye.ensureBuiltinTexturesReady();const r=(e==null?void 0:e.enabled)||!1,s=(e==null?void 0:e.textureUrl)||"",a=(e==null?void 0:e.intensity)??50,o=ye.DISTRESS_TEXTURE_PRESETS.map(h=>({id:h.textureUrl,name:h.name,thumbnailUrl:h.thumbnailUrl})),l=h=>{if(h){const m=s||ye.DISTRESS_TEXTURE_PRESETS[0].textureUrl;ye.preloadTexture(m),n({enabled:!0,textureUrl:m,intensity:a})}else n(void 0)},d=i.useCallback(h=>{ye.preloadTexture(h),n({enabled:!0,textureUrl:h,intensity:a})},[n,a]),u=h=>{e&&n({...e,intensity:h[0]})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:l,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Distress Texture"}),t.jsx(c.Switch,{checked:r,onCheckedChange:l,onClick:h=>h.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg py-lg",children:[t.jsx(er,{presets:o,selectedId:s,onSelect:d,showOff:!1,ariaLabel:"Distress texture presets"}),t.jsx(Ue,{label:"Intensity",value:a,onChange:h=>u([h]),min:0,max:100,step:1,unit:"%"})]})]})},ja=({imageMask:e,onChange:n})=>{ye.ensureMaskPresetsReady();const r=(e==null?void 0:e.enabled)||!1,s=(e==null?void 0:e.imageUrl)||"",a=(e==null?void 0:e.maskType)||"clip",o=(e==null?void 0:e.opacity)??100,l=(e==null?void 0:e.inverted)??!1,d=ye.MASK_IMAGE_PRESETS.map(p=>({id:p.imageUrl,name:p.name,thumbnailUrl:p.thumbnailUrl})),u=p=>{if(p){const b=s||ye.MASK_IMAGE_PRESETS[0].imageUrl;n({enabled:!0,imageUrl:b,maskType:a,opacity:o,inverted:l})}else n(void 0)},h=i.useCallback(p=>{n({enabled:!0,imageUrl:p,maskType:a,opacity:o,inverted:l})},[n,a,o,l]),m=p=>{e&&n({...e,maskType:p})},f=p=>{e&&n({...e,opacity:p[0]})},g=p=>{e&&n({...e,inverted:p})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:u,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Image Mask"}),t.jsx(c.Switch,{checked:r,onCheckedChange:u,onClick:p=>p.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg py-lg",children:[t.jsx(er,{presets:d,selectedId:s,onSelect:h,showOff:!1,ariaLabel:"Image mask presets"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(c.Label,{className:"text-sm",children:"Type"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["clip","alpha","luma"].map(p=>t.jsx("button",{className:`px-3 py-1 text-xs capitalize transition-colors ${a===p?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>m(p),children:p},p))})]}),t.jsx(Ue,{label:"Opacity",value:o,onChange:p=>f([p]),min:0,max:100,step:1,unit:"%"}),t.jsxs("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:l,onCheckedChange:p=>g(p===!0)}),"Invert Mask"]})]})]})},Ca=({artboard:e,artboards:n,onArtboardUpdate:r,onRenameArtboard:s,onDeleteArtboard:a,artboardScreenBounds:o})=>{const[l,d]=i.useState(!1),[u,h]=i.useState(""),[m,f]=i.useState(!1),g=i.useRef(null),p=D=>{const O=e.clone();O.backgroundType=D,r(O)},b=D=>{const O=e.clone();O.backgroundColor=D,r(O)},x=D=>{const O=e.clone();O.backgroundTexture=D,r(O)},S=D=>{const O=e.clone();O.exportBackground=D,r(O)},T=D=>{const O=e.clone();O.distressTexture=D,r(O)},C=D=>{const O=e.clone();O.imageMask=D,r(O)},w=()=>{d(!0),h(e.name)},R=()=>{u.trim()&&s(e.id,u.trim()),d(!1),h("")},k=()=>{d(!1),h("")},v=D=>{D.key==="Enter"?R():D.key==="Escape"&&k()},z=()=>{if(n.length<=1){alert("Cannot delete the last artboard");return}e.getElementCount()>0&&!confirm(`Delete "${e.name}" with ${e.getElementCount()} element(s)?`)||a(e.id)};return i.useEffect(()=>{l&&g.current&&(g.current.focus(),g.current.select())},[l]),t.jsxs(c.Surface,{className:"absolute px-4 py-2 flex items-center gap-2 shadow-lg z-50 rounded-full bg-bg-primary border border-border-primary",style:{left:"50%",top:o?`${o.top-68}px`:"32px",transform:"translateX(-50%)"},children:[l?t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("input",{ref:g,type:"text",value:u,onChange:D=>h(D.target.value),onKeyDown:v,className:"px-3 py-1 border border-border-primary rounded-lg text-base text-text-primary bg-bg-primary outline-none min-w-[120px] transition-colors focus:border-border-focus"}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:R,"aria-label":"Save",children:t.jsx(L.Icon,{icon:X.check,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Save"})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:k,"aria-label":"Cancel",children:t.jsx(L.Icon,{icon:X.close,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Cancel"})]})]}):t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-xl font-semibold text-text-primary",children:e.name}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:w,"aria-label":"Rename",children:t.jsx(L.Icon,{icon:X.pencil,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Rename"})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:z,disabled:n.length<=1,"aria-label":"Delete",children:t.jsx(L.Icon,{icon:X.trash,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsx(ls,{backgroundType:e.backgroundType,backgroundColor:e.backgroundColor,backgroundTexture:e.backgroundTexture,onBackgroundTypeChange:p,onColorChange:b,onTextureChange:x}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsxs("div",{className:"text-base font-mono text-text-muted uppercase",children:[Math.round(e.width)," × ",Math.round(e.height)]}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsxs(c.Popover,{open:m,onOpenChange:f,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:m?"default":"ghost","aria-label":"More options",children:t.jsx(L.Icon,{icon:X.menu,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",children:t.jsxs("div",{className:"flex flex-col gap-2 min-w-[240px]",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Switch,{checked:e.exportBackground,onCheckedChange:S}),t.jsx(c.Label,{children:"Export Background"})]}),t.jsx(c.Separator,{}),t.jsx(va,{distressTexture:e.distressTexture,onChange:T}),t.jsx(ja,{imageMask:e.imageMask,onChange:C})]})})]})]})},Ro=$.createLogger("GoogleFontsService");let Gt=[],Zt=null;async function _u(){return Gt.length>0?Gt:Zt||(Zt=fetch("/google-fonts.json").then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()}).then(e=>(Array.isArray(e)?Gt=e.map(n=>({family:n.family,category:n.category||"sans-serif",subsets:n.subsets||[],variants:n.variants||[],popularity:n.popularity})):Ro.error("Unexpected API response structure:",e),Gt)).catch(e=>(Ro.error("Error fetching Google Fonts:",e),Zt=null,[])),Zt)}function Sr(){return Gt}function Pu(){return Gt.length>0}function Io(e){return{"sans serif":"sans-serif",serif:"serif",display:"display",handwriting:"script",monospace:"monospace"}[e.toLowerCase()]||"display"}const wa=[{canonical:"slab-serif",monotypeClassifications:["SLAB SERIF","CLARENDON SERIF"],googleCategory:"serif",displayName:"Slab Serif",description:"Bold, chunky serifs perfect for t-shirt designs"},{canonical:"decorative",monotypeClassifications:["BLACKLETTER","SPECIALIZED","DESIGN","DINGBATS","SYMBOL","ORNATE"],googleCategory:"display",displayName:"Decorative",description:"Artistic and ornate fonts for special effects"},{canonical:"display",monotypeClassifications:["DISPLAY","HIGH CONTRAST","GRAPHIC STYLE"],googleCategory:"display",displayName:"Display",description:"Eye-catching fonts for headlines and logos"},{canonical:"script",monotypeClassifications:["SCRIPT","FORMAL SCRIPT","INFORMAL SCRIPT","CASUAL SCRIPT","HANDWRITING"],googleCategory:"handwriting",displayName:"Script & Handwriting",description:"Calligraphy and handwritten styles"},{canonical:"monospace",monotypeClassifications:["MONOSPACED"],googleCategory:"monospace",displayName:"Monospace",description:"Fixed-width fonts for coding and technical text"},{canonical:"serif",monotypeClassifications:["SERIF","OLD STYLE SERIF","TRANSITIONAL SERIF","MODERN SERIF","NEOCLASSICAL","TRANSITIONAL"],googleCategory:"serif",displayName:"Serif",description:"Traditional fonts with decorative strokes at letter ends"},{canonical:"sans-serif",monotypeClassifications:["SANS SERIF","GEOMETRIC SANS","HUMANIST SANS","GROTESQUE SANS"],googleCategory:"sans-serif",displayName:"Sans Serif",description:"Clean, modern fonts without decorative strokes"}];function $u(e){const n=["slab-serif","decorative","display","script","monospace","serif","sans-serif"];for(const r of n){const s=wa.find(a=>a.canonical===r);if(s&&e.some(o=>s.monotypeClassifications.includes(o)))return r}return"sans-serif"}function Sa(e){return wa.find(n=>n.canonical===e)}function Bu(e){const n=Sa(e);return(n==null?void 0:n.monotypeClassifications)||[]}const rt=$.createLogger("Monotype");class Uu{constructor(){this.accessToken=null,this.tokenExpiry=0,this.fonts=new Map,this.fontsLoaded=!1,this.webfontKits=new Map,this.searchCache=new Map,this.API_BASE="https://api.monotype.com",this.CACHE_TTL=24*60*60*1e3,this.monotypeEnabled=!1,this.loadCachesFromStorage(),this.monotypeEnabled=this.checkMonotypeEnabled()}checkMonotypeEnabled(){return!1}isMonotypeEnabled(){return this.monotypeEnabled}async authenticate(){}isAuthenticated(){return this.accessToken!==null&&Date.now()<this.tokenExpiry}async fetchAllFonts(){if(!this.monotypeEnabled){this.fontsLoaded=!0;return}const n=localStorage.getItem("monotype_fonts_cache");if(n)try{const{data:a,timestamp:o}=JSON.parse(n);if(Date.now()-o<this.CACHE_TTL){this.fonts=new Map(a),this.fontsLoaded=!0;return}}catch(a){rt.error("Failed to parse font cache:",a)}try{await this.authenticate()}catch(a){throw rt.error("Authentication failed, cannot fetch fonts:",a),a}if(!this.accessToken){const a=new Error("No access token available after authentication");throw rt.error(a.message),a}const r=["SANS SERIF","SERIF","SCRIPT","DISPLAY","SLAB SERIF","MONOSPACED","HANDWRITING","BLACKLETTER"],s=new Map;for(const a of r)try{let o=null,l=0;do{const d=await this.searchFontsRaw({classification:[a],pageSize:50,pageId:o||void 0});d.fonts.forEach(u=>{s.has(u.fontId)||s.set(u.fontId,u)}),o=d.nextPageId||null,l++}while(o)}catch(o){rt.error(`Failed to fetch ${a} fonts:`,o)}this.fonts=s,this.fontsLoaded=!0;try{localStorage.setItem("monotype_fonts_cache",JSON.stringify({data:Array.from(s.entries()),timestamp:Date.now()}))}catch(a){rt.error("Failed to cache fonts:",a)}}getAllFonts(){return Array.from(this.fonts.values())}isFontsLoaded(){return this.fontsLoaded}async searchFontsRaw(n){if(await this.authenticate(),!this.accessToken)return rt.warn("Cannot search fonts: No access token available"),{fonts:[]};try{const r=await fetch(`${this.API_BASE}/v1/fonts/search`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify(n)});if(!r.ok){const a=await r.text();let o;try{o=JSON.parse(a)}catch{o=a}throw rt.error("Font search failed:",{status:r.status,statusText:r.statusText,error:o,params:n}),new Error(`Search failed: ${r.status} ${r.statusText}`)}const s=await r.json();return{fonts:s.fonts||[],nextPageId:s.nextPageId,totalCount:s.totalCount}}catch(r){return rt.error("Font search failed:",r),{fonts:[]}}}async searchFonts(n){const r=JSON.stringify(n);if(this.searchCache.has(r))return this.searchCache.get(r);const s=await this.searchFontsRaw(n),a=this.groupMonotypeFontsByFamily(s.fonts);return this.searchCache.set(r,a),a}async searchFontsByName(n){return n.trim()?this.searchFonts({name:n,searchSettings:{fuzzy:["name"]},pageSize:50}):this.groupMonotypeFontsByFamily(this.getAllFonts())}async filterFontsByCategory(n){if(n==="system")return[];const r=Bu(n);return r.length===0?[]:this.searchFonts({classification:r,pageSize:50})}groupMonotypeFontsByFamily(n){const r=new Map;return n.forEach(s=>{const a=s.family||s.name;r.has(a)||r.set(a,[]),r.get(a).push(s)}),Array.from(r.entries()).map(([s,a])=>{const o=a[0];return{name:s.replace(/[™®]/g,"").trim(),category:$u(o.classification||[]),monotypeFont:!0,googleFont:!1,monotypeId:o.fontId,source:"monotype",foundry:o.foundry,weights:this.extractWeights(a),tags:o.tag||[],preview:o.sample}})}extractWeights(n){const r=new Set;return n.forEach(s=>{s.weightCSS&&r.add(s.weightCSS)}),Array.from(r).sort()}async getWebFontKit(n,r){var a;if(this.webfontKits.has(n))return this.webfontKits.get(n);const s=localStorage.getItem("monotype_webfont_kits");if(s)try{const o=new Map(JSON.parse(s));if(o.has(n)){const l=o.get(n);return this.webfontKits.set(n,l),l}}catch(o){rt.error("Failed to parse webfont kit cache:",o)}if(await this.authenticate(),!this.accessToken)throw new Error("Not authenticated - no access token available");try{const o=await fetch(`${this.API_BASE}/v1/webfonts/kit`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({kitName:`MonotypeFontKit_${n.substring(0,8)}`,kitType:"Embed",fontFormats:["WOFF2","WOFF"],fonts:[{fontId:n}],includeDefaultWordpressFiles:!1})});if(!o.ok){const u=await o.text();let h;try{h=JSON.parse(u)}catch{h=u}throw rt.error("WebFont kit generation failed:",{status:o.status,statusText:o.statusText,error:h,fontId:n,fontFamily:r}),new Error(`Kit generation failed: ${o.status} ${o.statusText}`)}const l=await o.json(),d={fontFamily:((a=l.webFonts[0])==null?void 0:a.fontFamily)||r,cssUrl:l.kitUrl,timestamp:Date.now()};return this.webfontKits.set(n,d),this.saveCachesToStorage(),d}catch(o){throw rt.error("Failed to generate WebFont kit:",o),o}}async loadMonotypeFont(n,r){try{const s=await this.getWebFontKit(n,r),a=`monotype-font-${n}`;if(document.getElementById(a))return;const o=document.createElement("link");o.id=a,o.rel="stylesheet",o.href=s.cssUrl,document.head.appendChild(o),await document.fonts.ready}catch(s){throw rt.error(`Failed to load Monotype font ${r}:`,s),s}}loadCachesFromStorage(){if(!(typeof window>"u"))try{const n=localStorage.getItem("monotype_webfont_kits");n&&(this.webfontKits=new Map(JSON.parse(n)))}catch(n){rt.error("Failed to load caches:",n)}}saveCachesToStorage(){if(!(typeof window>"u"))try{localStorage.setItem("monotype_webfont_kits",JSON.stringify(Array.from(this.webfontKits.entries())))}catch(n){rt.error("Failed to save caches:",n)}}clearCaches(){this.fonts.clear(),this.webfontKits.clear(),this.searchCache.clear(),this.fontsLoaded=!1,this.accessToken=null,this.tokenExpiry=0,localStorage.removeItem("monotype_fonts_cache"),localStorage.removeItem("monotype_webfont_kits")}getStats(){return{monotypeEnabled:this.monotypeEnabled,authenticated:this.isAuthenticated(),hasAccessToken:!!this.accessToken,tokenExpiry:this.tokenExpiry>0?new Date(this.tokenExpiry).toISOString():null,fontsLoaded:this.fontsLoaded,fontCount:this.fonts.size,familyCount:this.groupMonotypeFontsByFamily(this.getAllFonts()).length,webfontKitCount:this.webfontKits.size,searchCacheSize:this.searchCache.size}}}const bt=new Uu,Tr=$.createLogger("UnifiedFontService");class Wu{constructor(){this.searchCache=new Map,this.previewFontLinks=new Set}async initialize(){try{if(await _u(),bt.isMonotypeEnabled())try{await bt.authenticate(),await bt.fetchAllFonts()}catch(n){Tr.warn("Monotype fonts failed to load (continuing with Google Fonts only):",n)}}catch(n){Tr.error("Failed to initialize UnifiedFontService:",n)}}isFontsLoaded(){return Pu()||bt.isFontsLoaded()}isMonotypeEnabled(){return bt.isMonotypeEnabled()}getAllFonts(){const n=$.TSHIRT_FONTS.filter(a=>!a.googleFont&&!a.monotypeFont),r=this.mapGoogleFonts(Sr()),s=bt.groupMonotypeFontsByFamily(bt.getAllFonts());return this.mergeFonts([...n,...r,...s])}getRecommendedFonts(){return $.TSHIRT_FONTS}async searchFontsByName(n){if(!n.trim())return this.getAllFonts();const r=`search:${n.toLowerCase()}`;if(this.searchCache.has(r))return this.searchCache.get(r);const s=n.toLowerCase().trim(),a=Sr().filter(d=>d.family.toLowerCase().includes(s)).map(d=>this.mapGoogleFont(d)),o=await bt.searchFontsByName(n),l=this.mergeFonts([...a,...o]);return this.searchCache.set(r,l),l}async filterFontsByCategory(n){if(n==="system")return $.TSHIRT_FONTS.filter(d=>!d.googleFont&&!d.monotypeFont);const r=`category:${n}`;if(this.searchCache.has(r))return this.searchCache.get(r);if(!Sa(n))return[];const a=Sr().filter(d=>Io(d.category)===n).map(d=>this.mapGoogleFont(d)),o=await bt.filterFontsByCategory(n),l=this.mergeFonts([...a,...o]);return this.searchCache.set(r,l),l}async searchAndFilterFonts(n,r){return n.trim()?this.searchFontsByName(n):r!=="all"?this.filterFontsByCategory(r):this.getAllFonts()}async loadFont(n){try{n.googleFont&&!n.monotypeFont?this.loadGoogleFont(n.name):n.monotypeFont&&n.monotypeId&&await bt.loadMonotypeFont(n.monotypeId,n.name)}catch(r){Tr.error(`Failed to load font ${n.name}:`,r)}}loadGoogleFont(n){const r=`font-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(r))return;const s=document.createElement("link");s.id=r,s.rel="stylesheet",s.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}:wght@400;700&display=swap`,document.head.appendChild(s)}loadGoogleFontForPreview(n,r){const s=encodeURIComponent(r),a=`font-preview-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(a))return;const o=document.createElement("link");o.id=a,o.rel="stylesheet",o.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}&display=swap&text=${s}`,document.head.appendChild(o),this.previewFontLinks.add(a)}clearPreviewFonts(){this.previewFontLinks.forEach(n=>{const r=document.getElementById(n);r&&r.remove()}),this.previewFontLinks.clear()}getPreviewFontCount(){return this.previewFontLinks.size}mapGoogleFont(n){var r;return{name:n.family,category:Io(n.category),googleFont:!0,monotypeFont:!1,source:"google",weights:((r=n.variants)==null?void 0:r.map(s=>{const a=s.match(/\d+/);return a?parseInt(a[0],10):s==="regular"?400:null}).filter(s=>s!==null))||[400]}}mapGoogleFonts(n){return n.map(r=>this.mapGoogleFont(r))}mergeFonts(n){const r=new Map;return n.forEach(s=>{const a=s.name.toLowerCase().trim();if(!r.has(a))r.set(a,s);else{const o=r.get(a);s.monotypeFont&&!o.monotypeFont&&r.set(a,s)}}),Array.from(r.values()).sort((s,a)=>s.name.localeCompare(a.name))}clearSearchCache(){this.searchCache.clear()}clearAllCaches(){this.clearSearchCache(),bt.clearCaches()}getStats(){const n=this.getAllFonts(),r=n.filter(o=>o.googleFont&&!o.monotypeFont),s=n.filter(o=>o.monotypeFont),a=n.filter(o=>!o.googleFont&&!o.monotypeFont);return{initialized:this.isFontsLoaded(),monotypeEnabled:this.isMonotypeEnabled(),totalFonts:n.length,googleFontsCount:r.length,monotopeFontsCount:s.length,systemFontsCount:a.length,searchCacheSize:this.searchCache.size,monotypeStats:bt.getStats()}}}const kt=new Wu;function Hu(e){return Array.from(e).filter(n=>{const r=n.codePointAt(0);return!r||r<983040||r>1048573}).join("")}const kr=$.createLogger("FontBrowserDrawer"),Ta=({value:e,onChange:n,fontFamilies:r,isOpen:s,onToggle:a,showLabel:o,previewText:l,elements:d})=>{const u=i.useRef(null),[h,m]=i.useState(""),[f,g]=i.useState("all"),[p,b]=i.useState(0),[x,S]=i.useState("name"),[T,C]=i.useState("medium"),[w,R]=i.useState("masonry"),[k,v]=i.useState(new Set),z=i.useRef([]),D=i.useRef(!1),A=(M=>{switch(M){case"small":return 1;case"medium":return 1.8;case"large":return 3}})(T);i.useEffect(()=>{const M="font-preview-style";if(!document.getElementById(M)){const Z=document.createElement("style");Z.id=M,Z.textContent=".font-preview { font-family: var(--font-preview) !important; }",document.head.appendChild(Z)}},[]),i.useEffect(()=>{kt.isFontsLoaded()||kt.initialize().then(()=>{b(M=>M+1)}).catch(M=>{kr.error("Failed to load fonts:",M)})},[]);const P=async(M,Z=!1)=>{try{if(Z)await kt.loadFont(M);else if(M.googleFont&&!M.monotypeFont){const V=l?`${l}${M.name}`:M.name;kt.loadGoogleFontForPreview(M.name,V)}else await kt.loadFont(M);v(V=>new Set(V).add(M.name))}catch(V){kr.error(`Failed to load font ${M.name}:`,V)}};i.useEffect(()=>{(async()=>{if(D.current||z.current.length===0)return;D.current=!0;const Z=[...z.current];z.current=[];const V=kt.getAllFonts();await Promise.all(Z.map(async J=>{const ne=V.find(pe=>pe.name===J);ne&&!k.has(J)&&await P(ne)})),D.current=!1})()},[k]);const G=M=>{const Z=k.has(M),V=z.current.includes(M);!Z&&!V&&(z.current.push(M),!D.current&&z.current.length===1&&v(J=>new Set(J)))};i.useEffect(()=>{s&&setTimeout(()=>{u.current&&u.current.scrollIntoView({behavior:"smooth",block:"center"})},150),s||(m(""),g("all"),kt.clearPreviewFonts(),v(new Set))},[s,e]),i.useEffect(()=>{if(e&&!k.has(e)){const Z=kt.getAllFonts().find(V=>V.name===e);Z&&P(Z,!0)}},[e,k,p]),i.useEffect(()=>{h.trim()&&g("all")},[h]);const Y=async M=>{const V=kt.getAllFonts().find(J=>J.name===M);if(V)try{await P(V,!0)}catch{kr.warn(`Failed to load font ${M}, will use fallback`)}n({target:{value:M}}),setTimeout(()=>a(!1),0)},U=i.memo(({font:M,isUsedInDocument:Z=!1})=>{const V=i.useRef(null),J=e===M.name,ne=k.has(M.name),pe=M.monotypeFont===!0;i.useEffect(()=>{if(!V.current)return;const Q=new IntersectionObserver(le=>{le.forEach(Re=>{Re.isIntersecting&&!ne&&G(M.name)})},{rootMargin:"600px"});return Q.observe(V.current),()=>Q.disconnect()},[M.name,ne]);let se="",B=!1;x==="name"?(se=M.name,B=!1):x==="preview"?(se=l||M.name,B=Z):(se=l||M.name,B=!0);const _=x==="preview"&&!B,ae=t.jsxs(c.Surface,{ref:Q=>{J&&u&&(u.current=Q),V.current=Q},className:`relative flex cursor-pointer flex-col justify-center rounded-lg border-2 text-left ${w==="masonry"?"w-fit":"min-w-0"} ${J?"border-accent":"hover:border-muted border-transparent"}`,onClick:_?void 0:()=>Y(M.name),role:_?void 0:"button","aria-label":_?void 0:`Select ${M.name} font`,tabIndex:_?void 0:0,onKeyDown:_?void 0:Q=>{(Q.key==="Enter"||Q.key===" ")&&(Q.preventDefault(),Y(M.name))},style:{minHeight:`${B?48*A:36*A}px`,padding:`${6*A}px ${10*A}px`,gap:`${2*A}px`},children:[!ne&&t.jsx("div",{className:"absolute inset-0 rounded-lg bg-gray-100",style:{opacity:.5}}),t.jsx("div",{className:"font-preview text-foreground overflow-hidden leading-[1.1] font-medium text-ellipsis whitespace-nowrap",style:{"--font-preview":ne?`"${M.name}", sans-serif`:"sans-serif",fontSize:`${15*A}px`,opacity:ne?1:.4},children:se}),B&&t.jsx("div",{className:"text-muted overflow-hidden font-sans leading-[1.1] font-normal text-ellipsis whitespace-nowrap",style:{fontSize:`${7*A}px`,opacity:ne?1:.4},children:M.name}),pe&&t.jsx("div",{className:"absolute rounded-full bg-orange-500",style:{top:`${4*A}px`,right:`${4*A}px`,width:`${6*A}px`,height:`${6*A}px`},title:"Premium Monotype Font"})]});return _?t.jsxs(c.Tooltip,{delayDuration:200,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{className:"m-0 inline-block h-auto min-h-0 border-0 bg-transparent p-0 hover:bg-transparent",style:{width:w==="masonry"?"auto":"100%"},onClick:()=>Y(M.name),"aria-label":`Select ${M.name} font`,children:t.jsxs(c.Surface,{ref:Q=>{J&&u&&(u.current=Q),V.current=Q},className:`relative flex cursor-pointer flex-col justify-center rounded-lg border-2 text-left ${w==="masonry"?"w-fit":"min-w-0"} ${J?"border-accent":"hover:border-muted border-transparent"}`,style:{minHeight:`${B?48*A:36*A}px`,padding:`${6*A}px ${10*A}px`,gap:`${2*A}px`},children:[!ne&&t.jsx("div",{className:"absolute inset-0 rounded-lg bg-gray-100",style:{opacity:.5}}),t.jsx("div",{className:"font-preview text-foreground overflow-hidden leading-[1.1] font-medium text-ellipsis whitespace-nowrap",style:{"--font-preview":ne?`"${M.name}", sans-serif`:"sans-serif",fontSize:`${15*A}px`,opacity:ne?1:.4},children:se}),B&&t.jsx("div",{className:"text-muted overflow-hidden font-sans leading-[1.1] font-normal text-ellipsis whitespace-nowrap",style:{fontSize:`${7*A}px`,opacity:ne?1:.4},children:M.name}),pe&&t.jsx("div",{className:"absolute rounded-full bg-orange-500",style:{top:`${4*A}px`,right:`${4*A}px`,width:`${6*A}px`,height:`${6*A}px`},title:"Premium Monotype Font"})]})})}),t.jsx(c.TooltipContent,{side:"top",children:t.jsx("p",{children:M.name})})]},M.name):t.jsx(i.Fragment,{children:ae},M.name)},(M,Z)=>M.font.name===Z.font.name&&M.isUsedInDocument===Z.isUsedInDocument),W=i.useMemo(()=>{if(!d)return new Set;const M=new Set,Z=V=>{const J=V.fontFamily,ne=V.text;J&&ne&&Hu(ne).trim().length>0&&M.add(J)};return d.forEach(V=>{Z(V),V.children&&Array.isArray(V.children)&&V.children.forEach(J=>{Z(J)})}),M},[d]),F=i.useMemo(()=>{const M=kt.isFontsLoaded()?kt.getAllFonts():$.TSHIRT_FONTS,Z=new Set($.TSHIRT_FONTS.map(se=>se.name)),V=[];M.forEach(se=>{if(W.has(se.name))if(h){const B=h.toLowerCase();se.name.toLowerCase().includes(B)&&V.push(se)}else V.push(se)});let J=M.filter(se=>!W.has(se.name));if(f!=="all"&&(J=J.filter(se=>se.category===f)),h){const se=h.toLowerCase();J=J.filter(B=>B.name.toLowerCase().includes(se))}const ne=[],pe=[];return J.forEach(se=>{Z.has(se.name)?ne.push(se):pe.push(se)}),V.sort((se,B)=>se.name.localeCompare(B.name)),ne.sort((se,B)=>se.name.localeCompare(B.name)),pe.sort((se,B)=>se.name.localeCompare(B.name)),{usedFonts:V,recommendedFonts:ne,otherFonts:pe}},[h,f,p,W]),H=(M,Z=!1)=>w==="masonry"?t.jsx("div",{className:"flex flex-wrap content-start items-start gap-2 px-4 pb-4",children:M.map(V=>t.jsx(U,{font:V,isUsedInDocument:Z},V.name))}):t.jsx("div",{className:"px-4 pb-4",style:{display:"grid",gridTemplateColumns:`repeat(auto-fill, minmax(${140*A}px, 1fr))`,gap:"8px"},children:M.map(V=>t.jsx(U,{font:V,isUsedInDocument:Z},V.name))}),K=["all","system","display","sans-serif","script","serif","slab-serif","vintage","decorative","monospace"];return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:()=>a(!s),className:`h-11 md:h-9 w-[132px] md:w-[108px] flex items-center justify-center px-2 text-foreground cursor-pointer rounded-lg border border-transparent text-base font-medium transition-all hover:bg-black/5 dark:hover:bg-white/5 ${s?"bg-black/10 dark:bg-white/10":"bg-transparent"}`,"aria-label":s?"Close font browser":"Open font browser",title:e,children:t.jsx("span",{className:"font-preview overflow-hidden text-ellipsis whitespace-nowrap min-w-0",style:{"--font-preview":`"${e}", sans-serif`,fontWeight:400},children:e})}),t.jsx(yn,{isOpen:s,onClose:()=>a(!1),title:"Fonts",description:"",height:"85vh",placement:"bottom",showCloseButton:!1,hideVisibleTitle:!0,hideHandle:!0,disableScrollWrapper:!0,children:t.jsx("div",{className:"relative flex-1 overflow-hidden",children:t.jsx("div",{className:"h-full bg-white",children:t.jsxs("div",{className:"h-full overflow-y-auto",children:[t.jsx("div",{className:"px-4 pt-5",children:t.jsxs(c.Surface,{className:"flex gap-2",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search fonts",children:t.jsx(c.Input,{type:"text",className:"rounded-2xl pt-[10px] pb-[9px]",placeholder:"Search fonts...",value:h,onChange:M=>m(M.target.value),autoFocus:!0,"aria-label":"Search fonts"})}),t.jsx(c.Tabs,{value:T,onValueChange:M=>C(M),children:t.jsx(c.Tabs.ListContainer,{children:t.jsxs(c.Tabs.List,{"aria-label":"Card size",children:[t.jsxs(c.Tabs.Tab,{id:"small",className:"text-xs font-semibold","aria-label":"Small card size",children:["A",t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"medium",className:"text-base font-semibold","aria-label":"Medium card size",children:["A",t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"large",className:"text-xl font-semibold","aria-label":"Large card size",children:["A",t.jsx(c.Tabs.Indicator,{})]})]})})}),t.jsx(c.Button,{variant:"secondary",onClick:()=>{S(M=>M==="both"?"name":M==="name"?"preview":"both")},"aria-label":x==="both"?"Show font name only":x==="name"?"Show preview only":"Show preview with font name",className:"h-10 w-10 p-0",children:x==="both"?t.jsx(L.Icon,{icon:"lucide:credit-card",className:"size-[22px]"}):x==="name"?t.jsx(L.Icon,{icon:"lucide:type",className:"size-[22px]"}):t.jsx(L.Icon,{icon:"lucide:text-cursor",className:"size-[22px]"})}),t.jsx(c.Button,{variant:"secondary",onClick:()=>R(w==="grid"?"masonry":"grid"),"aria-label":w==="grid"?"Switch to masonry view":"Switch to grid view",className:"h-10 w-10 p-0",children:w==="grid"?t.jsx(L.Icon,{icon:"lucide:grid-2x2",className:"size-[22px]"}):t.jsx(L.Icon,{icon:"lucide:grid-3x3",className:"size-[22px]"})})]})}),t.jsxs("div",{className:"sticky top-0 z-20 shrink-0",children:[t.jsx("div",{className:"pointer-events-none absolute top-0 right-0 left-0",style:{height:"64px",background:"linear-gradient(to bottom, var(--background) 0%, color-mix(in srgb, var(--background) 80%, transparent) 40%, transparent 100%)",zIndex:16}}),t.jsx("div",{className:"relative z-20 px-4 py-4 pt-3",children:t.jsx("div",{className:"flex gap-2 overflow-x-auto",children:K.map(M=>{const Z=M==="all"?"All":$.CATEGORY_LABELS[M];return t.jsx(c.Button,{size:"sm",variant:f===M?"default":"secondary",onClick:()=>g(M),className:`shrink-0 ${f===M?"":"hover:brightness-95"}`,children:Z},M)})})})]}),t.jsxs("div",{className:"flex-1",children:[F.usedFonts.length>0&&t.jsxs("div",{className:"shrink-0 p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-2 pb-2 text-xs font-bold tracking-wider uppercase",children:"Used in Document"}),H(F.usedFonts,!0)]}),F.recommendedFonts.length===0&&F.otherFonts.length===0?t.jsx("div",{className:"text-muted col-span-full px-4 py-8 text-center text-sm",children:"No fonts found"}):t.jsxs(t.Fragment,{children:[F.recommendedFonts.length>0&&t.jsxs("div",{className:"p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-2 pb-2 text-xs font-bold tracking-wider uppercase",children:"Recommended"}),H(F.recommendedFonts)]}),F.otherFonts.length>0&&t.jsxs("div",{className:"p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-4 pb-2 text-xs font-bold tracking-wider uppercase",children:"All Fonts"}),H(F.otherFonts)]})]})]})]})})})})]})},Gu=$.createLogger("TransformControlPanel"),ka=({element:e,controls:n,onUpdate:r})=>{const[s,a]=i.useState({});return t.jsx("div",{className:"w-full space-y-4",children:n.map(o=>{const l=e.transformData[o.key]??o.defaultInternalValue??o.defaultValue;if(o.type==="checkbox")return t.jsxs("div",{className:"flex items-center space-x-2",children:[t.jsx(c.Switch,{id:`control-${o.key}`,checked:l,onCheckedChange:f=>{const g=e.clone();g.transformData[o.key]=f,r(g)}}),t.jsx(c.Label,{htmlFor:`control-${o.key}`,children:o.label})]},o.key);const d=typeof l=="number"&&!isNaN(l)?l:o.defaultInternalValue??0,u=s[o.key]!==void 0?s[o.key]:d,h=o.toSlider?o.toSlider(u):u,m=f=>{const g=o.fromSlider?o.fromSlider(f):f;return typeof g!="number"||isNaN(g)?(Gu.warn("Invalid internalValue:",g,"for control:",o.key),"0"):o.toDisplay?o.toDisplay(g):"isPercentage"in o&&o.isPercentage?`${(g*100).toFixed(0)}%`:g.toFixed(1)};return t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx(c.Label,{children:o.label}),t.jsx("span",{className:"text-sm text-foreground/60",children:m(h)})]}),t.jsx(c.Slider,{value:[h],onValueChange:f=>{const g=f[0],p=o.fromSlider?o.fromSlider(g):g;a(b=>({...b,[o.key]:p}))},onChangeEnd:f=>{const g=f[0],p=e.clone();p.transformData[o.key]=o.fromSlider?o.fromSlider(g):g,r(p),a(b=>{const x={...b};return delete x[o.key],x})},min:0,max:100,step:o.step??1,className:"slider-no-fill"})]},o.key)})})},Ku=({element:e,onTransformTypeChange:n,onElementUpdate:r,isOpen:s,onOpenChange:a})=>{const[o,l]=i.useState(!1),d=s!==void 0?s:o,u=a||l,h=e.transformType,m=$.getTransformControls(h),f=$.TRANSFORM_TYPES.filter(p=>p.Component&&p.id!=="image"&&p.id!=="group"&&p.id!=="shape"&&p.id!=="path"),g=p=>{p!==h&&n(p)};return t.jsxs(c.Popover,{open:d,onOpenChange:u,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"Text Effects",children:t.jsx(L.Icon,{icon:X.wand,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"start",className:"w-[280px] p-0",maxZIndex:!0,children:t.jsxs("div",{className:"space-y-4 p-6",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx(c.Label,{children:"Text Effect"}),t.jsxs(c.Select,{value:h,onValueChange:g,children:[t.jsx(c.SelectTrigger,{children:t.jsx(c.SelectValue,{placeholder:"Select effect"})}),t.jsx(c.SelectContent,{style:{zIndex:2147483647},children:f.map(p=>t.jsx(c.SelectItem,{value:p.id,children:p.label},p.id))})]})]}),m.length>0&&t.jsx(ka,{element:e,controls:m,onUpdate:r})]})})]})},Na=({items:e})=>{const[n,r]=i.useState(!1);return t.jsxs(c.Popover,{open:n,onOpenChange:r,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(L.Icon,{icon:X.moreHorizontal,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"start",className:"w-auto p-1",maxZIndex:!0,children:t.jsx("div",{className:"flex items-center gap-1",children:e.map((s,a)=>t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:s.active?"default":"ghost",size:"icon",onClick:()=>{s.onClick(),r(!1)},"aria-label":s.label,children:s.icon})}),t.jsx(c.TooltipContent,{children:s.label})]},a))})})]})};function Ea({colorPickerValue:e,isActive:n,onClick:r}){return t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn",onClick:r,"aria-label":"Font Color","data-active":n,children:t.jsxs("div",{className:"relative flex h-5 w-5 items-center justify-center",children:[t.jsx("span",{className:"-translate-y-0.5 text-lg leading-none font-bold",children:"A"}),t.jsx("div",{className:"absolute bottom-0 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:e}})]})})}),!n&&t.jsx(c.TooltipContent,{children:"Font Color"})]})}function Ra({toolbar:e}){return t.jsx(ie,{icon:X.bold,onClick:e.handleBoldToggle,active:e.getEffectiveStyle().bold,tooltip:"Bold"})}function Ia({toolbar:e}){return t.jsx(ie,{icon:X.italic,onClick:e.handleItalicToggle,active:e.getEffectiveStyle().italic,tooltip:"Italic"})}function Da({toolbar:e}){return t.jsx(ie,{icon:X.underline,onClick:e.handleUnderlineToggle,active:e.getEffectiveStyle().underline,tooltip:"Underline"})}function Aa({toolbar:e}){return t.jsx(ie,{icon:"lucide:case-upper",onClick:e.handleLetterCaseToggle,active:e.isLetterCaseActive(),tooltip:"Uppercase"})}function Ma({toolbar:e}){const{textAlign:n,handleTextAlignToggle:r}=e,s=n==="left"?X.alignLeft:n==="center"?X.alignCenter:X.alignRight;return t.jsx(ie,{icon:s,onClick:r,tooltip:`Align ${n.charAt(0).toUpperCase()+n.slice(1)}`})}function Fa({onMoveForward:e,onMoveBackward:n,onDelete:r,onOpenChange:s}){const[a,o]=i.useState(!1),l=d=>{o(d),s==null||s(d)};return t.jsxs(c.Popover,{open:a,onOpenChange:l,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(L.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{e(),l(!1)},"aria-label":"Move Forward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{n(),l(!1)},"aria-label":"Move Backward",children:t.jsx(L.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{l(!1),r()},"aria-label":"Delete",children:t.jsx(L.Icon,{icon:X.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]})}function La({toolbar:e,stableElementId:n,viewportWidth:r=window.innerWidth,colorPickerValue:s,isColorActive:a,onColorToggle:o,onOpenGlyphBrowser:l,hasGlyphs:d=!1,expandedPanel:u,onRotationToggle:h,onOpacityToggle:m,onFontSizeToggle:f,strokeExpanded:g=!1,onStrokeToggle:p,knockoutExpanded:b=!1,onKnockoutToggle:x,distressTextureExpanded:S=!1,onDistressTextureToggle:T,imageMaskExpanded:C=!1,onImageMaskToggle:w,getMoreMenuItems:R,onMoveForward:k,onMoveBackward:v,onDelete:z,elementForProperties:D,elements:O,isTransformMenuOpen:A,onTransformMenuOpenChange:P,elementUpdateHandler:G,showUngroupButton:Y=!1,onUngroup:U,isFontBrowserOpen:W=!1,onFontBrowserToggle:F,onTextMoreMenuOpenChange:H}){const[K,M]=i.useState(!1),[Z,V]=i.useState(!1),[J,ne]=i.useState(!1),[pe,se]=i.useState(!1),B=nr(D),[_,ae]=i.useState(!1),[Q,le]=i.useState(!1),[Re,be]=i.useState(!1),[xe,We]=i.useState(!1);return t.jsxs("div",{className:"toolbar-items",children:[t.jsx(Ta,{value:e.getEffectiveStyle().fontFamily||e.fontFamily,onChange:He=>e.handleFontFamilyChange(He.target.value),fontFamilies:$.FONT_FAMILIES,isOpen:W,onToggle:F,showLabel:r>700,previewText:"text"in D?D.text:void 0,elements:O}),t.jsx(ie,{icon:"lucide:a-large-small",onClick:()=>{se(!0),f()},onMouseLeave:()=>se(!1),tooltip:`Font Size · ${Math.round(e.fontSize)}`,tooltipDisabled:pe||(u==null?void 0:u.type)==="fontSize",active:(u==null?void 0:u.type)==="fontSize"}),t.jsx(Ea,{colorPickerValue:s,isActive:a,onClick:o}),t.jsx(Ra,{toolbar:e}),t.jsx(Ia,{toolbar:e}),t.jsx(Da,{toolbar:e}),t.jsx(Aa,{toolbar:e}),t.jsx(Ma,{toolbar:e}),t.jsx(Ku,{element:D,onTransformTypeChange:e.handleTransformTypeChange,onElementUpdate:G,isOpen:A,onOpenChange:P}),p&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{M(!0),p()},onMouseLeave:()=>M(!1),tooltip:"Stroke",tooltipDisabled:K||g,active:g||B.stroke}),t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{ne(!0),h()},onMouseLeave:()=>ne(!1),tooltip:"Rotate",tooltipDisabled:J||(u==null?void 0:u.type)==="rotation",active:(u==null?void 0:u.type)==="rotation"||B.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{ae(!0),m()},onMouseLeave:()=>ae(!1),tooltip:"Transparency",tooltipDisabled:_||(u==null?void 0:u.type)==="opacity",active:(u==null?void 0:u.type)==="opacity"||B.opacity}),x&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{le(!0),x()},onMouseLeave:()=>le(!1),tooltip:"Clip / Knockout",tooltipDisabled:Q||b,active:b||B.knockout}),T&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{be(!0),T()},onMouseLeave:()=>be(!1),tooltip:"Distress Texture",tooltipDisabled:Re||S,active:S||B.distress}),w&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{We(!0),w()},onMouseLeave:()=>We(!1),tooltip:"Image Mask",tooltipDisabled:xe||C,active:C||B.imageMask}),t.jsx(ie,{icon:"lucide:flag",onClick:()=>{V(!0),l==null||l()},onMouseLeave:()=>V(!1),tooltip:d?"Browse All Glyphs":"No alternate glyphs available",tooltipDisabled:Z,disabled:!d,className:d?"":"opacity-50"}),R&&t.jsx(Na,{items:R()}),t.jsx(Fa,{onMoveForward:k,onMoveBackward:v,onDelete:z,onOpenChange:H}),Y&&t.jsx("button",{className:"toolbar-btn",onClick:U,children:"Ungroup"})]},`text-toolbar-${n}`)}function Vu(e,n,r){const s=e.getRotationAnchor();let a;e.transformType==="circle"&&"getEffectiveFontSize"in e?a=e.getEffectiveFontSize():a=e.fontSize;const o=Yu(e,n,a,s);return new r({id:e.id,text:e.text,x:o.x,y:o.y,rotation:e.rotation,fontSize:o.fontSize,fontFamily:e.fontFamily,color:e.color,textAlign:e.textAlign,transformData:o.transformData})}function Yu(e,n,r,s){let a,o,l;const d=r;switch(n){case"circle":a={radius:r*1.2*2,scale:1},o=s.x,l=s.y;break;case"custom":const m=200,f=r*e.text.length*.6,g=Math.max(f,m);a={width:g};const p=r*1.2;o=s.x-g/2,l=s.y-p/2;break;case"arch":const b=200,x=r*e.text.length*.6;a={width:Math.max(x,b),archHeight:$.ARCH_DEFAULTS.archHeight},o=s.x,l=s.y;break;case"wave":const S=200,T=r*e.text.length*.6;a={width:Math.max(T,S),amplitude:$.WAVE_DEFAULTS.amplitude,frequency:$.WAVE_DEFAULTS.frequency},o=s.x,l=s.y;break;case"flag":const C=200,w=r*e.text.length*.6;a={width:Math.max(w,C),amplitude:$.FLAG_DEFAULTS.amplitude,frequency:$.FLAG_DEFAULTS.frequency},o=s.x,l=s.y;break;case"lean":const R=200,k=r*e.text.length*.6;a={width:Math.max(k,R),leanAmount:$.LEAN_DEFAULTS.leanAmount},o=s.x,l=s.y;break;default:a={width:200},o=s.x,l=s.y}return{x:o,y:l,fontSize:d,transformData:a}}function za(e={}){const{canvasEditorRef:n}=e,{selectedElement:r,activeChildElement:s,handleElementUpdate:a}=je.useEditor(),o=s||r,l=i.useCallback(B=>{if(r)if(s){if(!(r instanceof $.GroupElement))return;const _=r.clone(),ae=_.children.findIndex(Q=>Q.id===s.id);ae!==-1&&(_.children[ae]=B,a(_))}else a(B)},[r,s,a]),d=o==null?void 0:o.id,u=i.useRef(void 0),[h,m]=i.useState(32),[f,g]=i.useState("#333333"),[p,b]=i.useState("Arial"),[x,S]=i.useState("center");i.useEffect(()=>{d!==u.current&&(u.current=d,o&&o instanceof $.TextElement&&(o.transformType==="circle"&&"getEffectiveFontSize"in o?m(Math.round(o.getEffectiveFontSize())):o.fontSize!==void 0&&m(Math.round(o.fontSize)),o.color!==void 0&&g(o.color),o.fontFamily!==void 0&&b(o.fontFamily),S(o.textAlign||"center")))},[d,o]);const T=h,C=f,w=p,R=x,k=o instanceof $.TextElement?o:null,v=(k==null?void 0:k.bold)??!1,z=(k==null?void 0:k.italic)??!1,D=(k==null?void 0:k.underline)??!1,O=(k==null?void 0:k.letterCase)??"none",A=i.useCallback(B=>{if(m(B),!o||!(o instanceof $.TextElement))return;const _=o.clone();_.transformType==="circle"&&"setEffectiveFontSize"in _?_.setEffectiveFontSize(B):_.setFontSize(B),_.richText&&_.richText.clearStyleProperty("fontSize"),l(_)},[o,l]),P=i.useCallback(B=>{if(b(B),!o||!(o instanceof $.TextElement))return;const _=o.clone();_.fontFamily=B,_.richText&&_.richText.clearStyleProperty("fontFamily"),l(_)},[o,l]),G=i.useCallback(B=>{if(g(B),!o||!(o instanceof $.TextElement))return;const _=o.clone();_.color=B,_.richText&&_.richText.clearStyleProperty("color"),l(_)},[o,l]),Y=i.useCallback(B=>{if(S(B),!o||!(o instanceof $.TextElement))return;const _=o.clone();_.textAlign=B,l(_)},[o,l]),U=i.useCallback(B=>{var _;(_=n==null?void 0:n.current)!=null&&_.isEditingText()?n.current.applyTextFormatting({fontSize:B}):A(B)},[A,n]),W=i.useCallback(B=>{const _=T+B;_>=8&&_<=500&&U(_)},[T,U]),F=i.useCallback(B=>{var _;(_=n==null?void 0:n.current)!=null&&_.isEditingText()?n.current.applyTextFormatting({fontFamily:B}):P(B)},[P,n]),H=i.useCallback(B=>{var Q;const _=B.target.value;((Q=n==null?void 0:n.current)==null?void 0:Q.isEditingText())&&(n!=null&&n.current)?n.current.applyTextFormatting({color:_}):G(_)},[G,n]),K=i.useCallback(()=>{var B;if((B=n==null?void 0:n.current)!=null&&B.isEditingText())n.current.toggleFormattingProperty("bold");else{if(!o||!(o instanceof $.TextElement))return;const _=o.clone();_.bold=!v,_.richText&&_.richText.clearStyleProperty("bold"),l(_)}},[v,o,l,n]),M=i.useCallback(()=>{var B;if((B=n==null?void 0:n.current)!=null&&B.isEditingText())n.current.toggleFormattingProperty("italic");else{if(!o||!(o instanceof $.TextElement))return;const _=o.clone();_.italic=!z,_.richText&&_.richText.clearStyleProperty("italic"),l(_)}},[z,o,l,n]),Z=i.useCallback(()=>{var B;if((B=n==null?void 0:n.current)!=null&&B.isEditingText())n.current.toggleFormattingProperty("underline");else{if(!o||!(o instanceof $.TextElement))return;const _=o.clone();_.underline=!D,_.richText&&_.richText.clearStyleProperty("underline"),l(_)}},[D,o,l,n]),V=i.useCallback(()=>{if(!o)return;const B=O==="uppercase"?"none":"uppercase",_=o.clone();_.letterCase=B,l(_)},[O,o,l]),J=i.useCallback(()=>O==="uppercase",[O]),ne=i.useCallback(()=>{const B=["left","center","right"],_=B.indexOf(R),ae=B[(_+1)%B.length];Y(ae)},[R,Y]),pe=i.useCallback(()=>{var B,_,ae,Q;if((_=(B=n==null?void 0:n.current)==null?void 0:B.isEditingText)!=null&&_.call(B)){const le=(Q=(ae=n.current).getSelectionStyle)==null?void 0:Q.call(ae);if(le)return{fontFamily:le.fontFamily??w,fontSize:le.fontSize??T,color:le.color??C,bold:le.bold??v,italic:le.italic??z,underline:le.underline??D}}return{fontFamily:w,fontSize:T,color:C,bold:v,italic:z,underline:D}},[n,w,T,C,v,z,D]),se=i.useCallback(B=>{if(!o)return;const _=$.getTransformById(B);if(!(_!=null&&_.Component))return;const ae=Vu(o,B,_.Component);l(ae)},[o,l]);return{fontSize:T,fontColor:C,fontFamily:w,textAlign:R,bold:v,italic:z,underline:D,letterCase:O,handleFontSizeChange:U,handleFontSizeIncrement:W,handleFontFamilyChange:F,handleFontColorChange:H,handleBoldToggle:K,handleItalicToggle:M,handleUnderlineToggle:Z,handleLetterCaseToggle:V,isLetterCaseActive:J,handleTextAlignToggle:ne,getEffectiveStyle:pe,handleTransformTypeChange:se}}const Xu=$.createLogger("useLayerPreview");function Oa(e){var m,f,g,p;const{element:n,size:r=148,backgroundColor:s="transparent",enabled:a=!0}=e,[o,l]=i.useState(null),[d,u]=i.useState(!1),h=i.useRef(null);return i.useEffect(()=>{if(!a){l(null),u(!1);return}let b=!0;return u(!0),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{(async()=>{try{if(n instanceof $.ImageElement&&n.imageUrl){const T=new Image;if(T.crossOrigin="anonymous",await new Promise((C,w)=>{T.onload=()=>C(),T.onerror=()=>w(new Error("Failed to load image")),T.src=n.imageUrl}),!b)return}const S=L.generateElementPreview(n,{width:r,height:r,padding:8,backgroundColor:s});b&&(l(S),u(!1))}catch(S){if(Xu.warn("Failed to generate preview:",S),b){const T=L.generateElementPreview(n,{width:r,height:r,padding:8,backgroundColor:s});l(T),u(!1)}}})()},50),()=>{b=!1,h.current&&clearTimeout(h.current)}},[n.id,s,r,a,n.x,n.y,n.rotation,n.transformData,n instanceof $.TextElement?n.text:null,n instanceof $.TextElement?n.fontSize:null,n instanceof $.TextElement?n.fontFamily:null,n instanceof $.TextElement?n.color:null,n instanceof $.ImageElement?n.imageUrl:null,n instanceof $.ImageElement?n.imageLoaded:null,n instanceof $.ImageElement?n.isCropping:null,n instanceof $.ShapeElement?(m=n.transformData)==null?void 0:m.fillColor:null,n instanceof $.PathElement?(g=(f=n.transformData)==null?void 0:f.points)==null?void 0:g.length:null,n instanceof $.GroupElement?(p=n.children)==null?void 0:p.length:null]),{previewUrl:o,isLoading:d}}function qu({element:e,onToggleLock:n,onThumbnailClick:r}){if(!e)return null;const s=e.locked===!0;return t.jsxs(t.Fragment,{children:[t.jsx(Ju,{element:e,onClick:r}),t.jsx(ie,{icon:t.jsx(Zu,{locked:s}),onClick:n,active:s,tooltip:s?"Unlock layer":"Lock layer","aria-label":s?"Unlock layer":"Lock layer"})]})}function Ju({element:e,onClick:n}){const{previewUrl:r}=Oa({element:e,size:64,backgroundColor:"transparent"}),s=t.jsx("span",{className:"size-6 md:size-5 rounded-md shrink-0 flex items-center justify-center overflow-hidden",style:{background:"var(--color-muted, rgba(120,120,120,0.18))"},children:r?t.jsx("img",{src:r,alt:"",style:{width:"100%",height:"100%",objectFit:"contain"}}):null});return n?t.jsx("button",{type:"button",onClick:n,onPointerDown:a=>a.stopPropagation(),onPointerUp:a=>a.stopPropagation(),"aria-label":"Manage layers",title:"Manage layers",className:"size-11 md:size-9 shrink-0 flex items-center justify-center",children:s}):t.jsx("span",{"aria-hidden":!0,className:"size-11 md:size-9 shrink-0 flex items-center justify-center",children:s})}function Zu({locked:e}){return t.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":!0,children:[t.jsx("rect",{x:"4",y:"9",width:"12",height:"8.5",rx:"1.6",stroke:"currentColor",strokeWidth:"1.6",fill:e?"currentColor":"none",fillOpacity:e?.18:0}),e?t.jsx("path",{d:"M6.5 9V6.25a3.5 3.5 0 0 1 7 0V9",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}):t.jsx("path",{d:"M6.5 9V6.25a3.5 3.5 0 0 1 7 0",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})}const Qu=({element:e,rotationExpanded:n=!1,onRotationToggle:r,opacityExpanded:s=!1,onOpacityToggle:a,strokeExpanded:o=!1,onStrokeToggle:l,knockoutExpanded:d=!1,onKnockoutToggle:u,distressTextureExpanded:h=!1,onDistressTextureToggle:m,imageMaskExpanded:f=!1,onImageMaskToggle:g,onUngroup:p})=>{const[b,x]=i.useState(!1),[S,T]=i.useState(!1),[C,w]=i.useState(!1),[R,k]=i.useState(!1),[v,z]=i.useState(!1),[D,O]=i.useState(!1),A=nr(e??null);return t.jsxs("div",{className:"toolbar-items",children:[t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{x(!0),r()},onMouseLeave:()=>x(!1),tooltip:"Rotate",tooltipDisabled:b||n,active:n||A.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{T(!0),a()},onMouseLeave:()=>T(!1),tooltip:"Transparency",tooltipDisabled:S||s,active:s||A.opacity}),l&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{w(!0),l()},onMouseLeave:()=>w(!1),tooltip:"Stroke",tooltipDisabled:C||o,active:o||A.stroke}),u&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{k(!0),u()},onMouseLeave:()=>k(!1),tooltip:"Knockout",tooltipDisabled:R||d,active:d||A.knockout}),m&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{z(!0),m()},onMouseLeave:()=>z(!1),tooltip:"Distress Texture",tooltipDisabled:v||h,active:h||A.distress}),g&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{O(!0),g()},onMouseLeave:()=>O(!1),tooltip:"Image Mask",tooltipDisabled:D||f,active:f||A.imageMask}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:p,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})};function Do({children:e,className:n}){const r=i.useRef(null);return i.useEffect(()=>{const s=r.current;if(!s)return;const a=l=>{l.stopPropagation()},o=l=>{l.preventDefault(),l.stopPropagation()};return s.addEventListener("touchstart",a,{passive:!1}),s.addEventListener("touchmove",o,{passive:!1}),()=>{s.removeEventListener("touchstart",a),s.removeEventListener("touchmove",o)}},[]),t.jsx("div",{ref:r,className:n,style:{touchAction:"none"},children:e})}const fn=({element:e,onElementUpdate:n,className:r})=>{var p,b;const[s,a]=i.useState("center"),o=i.useRef(null),l=i.useRef({x:0,y:0});i.useEffect(()=>{const x=o.current;if(!x)return;const S=C=>{l.current={x:C.touches[0].clientX,y:C.touches[0].clientY}},T=C=>{const w=Math.abs(C.touches[0].clientX-l.current.x),R=Math.abs(C.touches[0].clientY-l.current.y);w>10&&w>R&&C.preventDefault()};return x.addEventListener("touchstart",S,{passive:!0}),x.addEventListener("touchmove",T,{passive:!1}),()=>{x.removeEventListener("touchstart",S),x.removeEventListener("touchmove",T)}},[]);const d=((p=e.transformData)==null?void 0:p.cropWidth)||1,u=((b=e.transformData)==null?void 0:b.cropHeight)||1,h=i.useCallback((x,S,T,C)=>{const w=e.clone();w.updateCrop(x,S,T,C,!0),n(w)},[e,n]),m=i.useCallback((x,S=s)=>{const T=e.transformData.cropWidth,C=e.transformData.cropX,w=x-T;let R=C;S.includes("center")?R=C-w/2:S.includes("right")&&(R=C-w),R=Math.max(0,Math.min(1-x,R)),h(R,e.transformData.cropY,x,e.transformData.cropHeight)},[e,h,s]),f=i.useCallback((x,S=s)=>{const T=e.transformData.cropHeight,C=e.transformData.cropY,w=x-T;let R=C;S.includes("middle")||S==="center"?R=C-w/2:S.includes("bottom")&&(R=C-w),R=Math.max(0,Math.min(1-x,R)),h(e.transformData.cropX,R,e.transformData.cropWidth,x)},[e,h,s]),g=["top-left","top-center","top-right","middle-left","center","middle-right","bottom-left","bottom-center","bottom-right"];return t.jsx("div",{ref:o,"data-preserve-selection":!0,className:Nt("flex min-h-0 flex-1 flex-col",r),style:{touchAction:"pan-y"},children:t.jsx("div",{className:"flex flex-col gap-5 px-5 pt-1 pb-[calc(env(safe-area-inset-bottom,0px)+20px)] md:gap-4 md:px-4 md:pt-0 md:pb-[calc(env(safe-area-inset-bottom,0px)+16px)]",children:t.jsxs("div",{className:"flex items-start gap-6 md:gap-5",children:[t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Anchor"}),t.jsx("div",{className:"grid grid-cols-3 gap-0.5 rounded-md p-1",children:g.map(x=>t.jsx("button",{onClick:()=>a(x),className:Nt("crop-anchor-btn size-8 rounded-md md:size-6 md:rounded",s===x&&"active"),title:x.replace("-"," "),children:t.jsx("div",{className:Nt("crop-anchor-dot size-2 md:size-1.5",s===x&&"active size-2.5 md:size-2")})},x))})]}),t.jsxs("div",{className:"flex flex-1 flex-col gap-4 md:gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-2.5 md:gap-1.5",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Width"}),t.jsx("input",{type:"number",value:Math.round(d*100),onChange:x=>m(Math.max(10,Math.min(100,Number(x.target.value)))/100),min:10,max:100,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]"})]}),t.jsx(Do,{children:t.jsxs(c.Slider,{value:[d*100],onValueChange:x=>m(x[0]/100),min:10,max:100,step:1,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{})]})})]}),t.jsxs("div",{className:"flex flex-col gap-2.5 md:gap-1.5",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Height"}),t.jsx("input",{type:"number",value:Math.round(u*100),onChange:x=>f(Math.max(10,Math.min(100,Number(x.target.value)))/100),min:10,max:100,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]"})]}),t.jsx(Do,{children:t.jsxs(c.Slider,{value:[u*100],onValueChange:x=>f(x[0]/100),min:10,max:100,step:1,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{})]})})]})]})]})})})},eh=Object.freeze(Object.defineProperty({__proto__:null,CropPanel:fn,default:fn},Symbol.toStringTag,{value:"Module"})),ct="flex flex-col gap-5 px-5 pt-4 pb-4 md:gap-4 md:px-4 md:pt-3 md:pb-3",_a="flex flex-col gap-5 px-5 pt-4 pb-[calc(env(safe-area-inset-bottom,0px)+20px)] md:gap-4 md:px-4 md:pt-2 md:pb-[calc(env(safe-area-inset-bottom,0px)+16px)]",th=({value:e,onChange:n})=>t.jsx("div",{className:"corner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Radius",value:e,onChange:n,min:0,max:50,unit:"%"})})}),nh=({value:e,onChange:n,onRotate90:r})=>t.jsx("div",{className:"rotation-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsxs("div",{className:"flex items-end gap-3",children:[t.jsx(Ue,{label:"Rotation",value:e,onChange:n,min:-180,max:180,unit:"°",showInput:!0,inputWidth:"56px",variant:"stacked",className:"flex-1"}),t.jsx("div",{className:"pb-0.5",children:t.jsx(ie,{icon:X.rotateCcwSquare,onClick:r,tooltip:"Rotate 90° CCW"})})]})})}),rh=({value:e,onChange:n,widthValue:r,onWidthChange:s})=>t.jsx("div",{className:"font-size-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(Ue,{label:"Font Size",value:Math.round(e),onChange:n,min:8,max:256,step:1,unit:"px",showInput:!0,inputWidth:"64px"}),r!=null&&s&&t.jsx(Ue,{label:"Width",value:Math.round(r),onChange:s,min:50,max:4e3,step:1,unit:"px",showInput:!0,inputWidth:"64px"})]})}),sh=({value:e,onChange:n})=>t.jsx("div",{className:"opacity-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Opacity",value:Math.round(e*100),onChange:r=>n(r/100),min:0,max:100,unit:"%"})})}),oh=({value:e,onChange:n})=>t.jsx("div",{className:"shape-corner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Radius",value:e,onChange:n,min:0,max:50,unit:"%"})})}),ah=({value:e,onChange:n})=>t.jsx("div",{className:"shape-transparency-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Opacity",value:Math.round(e*100),onChange:r=>n(r/100),min:0,max:100,unit:"%"})})}),ih=({value:e,onChange:n})=>t.jsx("div",{className:"shape-sides-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Sides",value:e,onChange:n,min:3,max:20})})}),lh=({value:e,onChange:n})=>t.jsx("div",{className:"shape-points-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Points",value:e,onChange:n,min:3,max:20})})}),ch=({value:e,onChange:n})=>t.jsx("div",{className:"shape-inner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Inner Radius",value:Math.round(e*100),onChange:r=>n(r/100),min:10,max:90,unit:"%"})})}),dh=({value:e,onChange:n,documentColors:r,imageColors:s})=>t.jsx("div",{className:"shape-color-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:_a,children:t.jsx(Bt,{value:e,onChange:a=>n(a.target.value),documentColors:r,imageColors:s,showSquare:!0,embedded:!0})})}),uh=({value:e,onChange:n,documentColors:r,imageColors:s})=>t.jsx("div",{className:"text-color-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:_a,children:t.jsx(Bt,{value:e,onChange:n,documentColors:r,imageColors:s,embedded:!0})})}),hh=({mode:e,fill:n,stroke:r,scope:s,onModeChange:a,onFillChange:o,onStrokeChange:l,onScopeChange:d})=>t.jsx("div",{className:"knockout-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Mode"}),t.jsxs("div",{className:"flex rounded-md border border-divider overflow-hidden",children:[t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${e==="clip"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>a("clip"),children:"Clip"}),t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${e==="knockout"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>a("knockout"),children:"Knockout"})]})]}),t.jsxs("div",{className:"flex items-center gap-5",children:[t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:n,onCheckedChange:u=>o(u===!0)}),"Fill"]}),t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:r,onCheckedChange:u=>l(u===!0)}),"Stroke"]})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Scope"}),t.jsxs("div",{className:"flex rounded-md border border-divider overflow-hidden",children:[t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${s==="group"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>d("group"),children:"Group"}),t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${s==="artboard"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>d("artboard"),children:"Artboard"})]})]})]})}),fh=({textureUrl:e,opacity:n,onTextureChange:r,onOpacityChange:s})=>{ye.ensureBuiltinTexturesReady();const a=ye.DISTRESS_TEXTURE_PRESETS.map(l=>({id:l.textureUrl,name:l.name,thumbnailUrl:l.thumbnailUrl})),o=i.useCallback(l=>{l&&ye.preloadTexture(l),r(l)},[r]);return t.jsx("div",{className:"distress-texture-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(er,{presets:a,selectedId:e,onSelect:o,ariaLabel:"Distress texture presets"}),t.jsx(Ue,{label:"Opacity",value:n,onChange:s,min:0,max:100,unit:"%"})]})})},ph=({imageUrl:e,maskType:n,opacity:r,inverted:s,onImageChange:a,onMaskTypeChange:o,onOpacityChange:l,onInvertedChange:d})=>{ye.ensureMaskPresetsReady();const u=ye.MASK_IMAGE_PRESETS.map(h=>({id:h.imageUrl,name:h.name,thumbnailUrl:h.thumbnailUrl}));return t.jsx("div",{className:"image-mask-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(er,{presets:u,selectedId:e,onSelect:a,ariaLabel:"Image mask presets"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Type"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["clip","alpha","luma"].map(h=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${n===h?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>o(h),children:h},h))})]}),t.jsx(Ue,{label:"Opacity",value:r,onChange:l,min:0,max:100,unit:"%"}),t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:s,onCheckedChange:h=>d(h===!0)}),"Invert Mask"]})]})})},mh=({stroke:e,onChange:n,documentColors:r,imageColors:s})=>{const[a,o]=i.useState(!1),l=(e==null?void 0:e.enabled)??!1,d=(e==null?void 0:e.color)??"#000000",u=(e==null?void 0:e.width)??5,h=(e==null?void 0:e.opacity)??1,m=(e==null?void 0:e.lineCap)??"butt",f=(e==null?void 0:e.lineJoin)??"miter",g=i.useCallback(b=>{n(b?{enabled:!0,color:d,width:u,lineCap:m,lineJoin:f,opacity:h}:void 0)},[n,d,u,m,f,h]),p=i.useCallback(b=>{e&&n({...e,...b})},[e,n]);return t.jsx("div",{className:"stroke-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Stroke"}),t.jsx(c.Switch,{checked:l,onCheckedChange:g})]}),l&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Color"}),t.jsx(Bt,{value:d,onChange:b=>p({color:b.target.value}),documentColors:r,imageColors:s,showSquare:!0})]}),t.jsx(Ue,{label:"Width",value:u,onChange:b=>p({width:b}),min:1,max:50,unit:"px"}),t.jsx(Ue,{label:"Opacity",value:Math.round(h*100),onChange:b=>p({opacity:b/100}),min:0,max:100,unit:"%"}),t.jsxs("button",{className:"flex items-center gap-1 text-base md:text-sm text-muted-foreground hover:text-foreground transition-colors py-1.5 md:py-0",onClick:()=>o(b=>!b),children:[a?"Hide":"Show"," Advanced"]}),a&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Line Cap"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["butt","round","square"].map(b=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${m===b?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>p({lineCap:b}),children:b},b))})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Line Join"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["miter","round","bevel"].map(b=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${f===b?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>p({lineJoin:b}),children:b},b))})]})]})]})]})})},gh=({element:e,onElementUpdate:n})=>t.jsx(fn,{element:e,onElementUpdate:n}),xh=({panelType:e,defaultIcon:n,textColorValue:r,shapeFillColor:s})=>e==="textColor"?t.jsxs("div",{className:"relative flex size-6 items-center justify-center md:size-5",children:[t.jsx("span",{className:"text-primary text-xl leading-none font-bold md:text-lg",children:"A"}),t.jsx("div",{className:"absolute bottom-0 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:r}})]}):e==="shapeColor"?t.jsxs("div",{className:"relative flex size-6 items-center justify-center md:size-5",children:[t.jsx(L.Icon,{icon:"mdi:format-color-fill",className:"text-primary size-5 md:size-4"}),t.jsx("div",{className:"absolute -bottom-0.5 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:s||"#3b82f6"}})]}):typeof n=="string"?t.jsx(L.Icon,{icon:n,className:"text-primary size-6 md:size-5"}):t.jsx(t.Fragment,{children:n}),st=({isOpen:e,children:n})=>t.jsx("div",{className:"secondary-toolbar-panel-wrapper",style:{display:"flex",flexDirection:"column",flex:e?1:0,minHeight:e?0:void 0,transition:"flex 300ms cubic-bezier(0.32, 0.72, 0, 1)"},children:t.jsx("div",{className:e?"secondary-panel-scroll-container":"",style:{flex:1,display:"flex",flexDirection:"column",overflowY:e?"auto":"hidden",overscrollBehaviorY:"contain",WebkitOverflowScrolling:"touch",transform:e?"translateY(0)":"translateY(100%)",opacity:e?1:0,transition:"transform 300ms cubic-bezier(0.32, 0.72, 0, 1), opacity 200ms ease-out"},children:n})}),Ao=({isOpen:e,children:n})=>t.jsx("div",{className:"secondary-toolbar-panel-wrapper",style:{display:"flex",flexDirection:"column",flex:e?1:0,minHeight:e?0:void 0,transition:"flex 300ms cubic-bezier(0.32, 0.72, 0, 1)"},children:t.jsx("div",{className:e?"secondary-panel-scroll-container":"",style:{flex:1,minHeight:0,overflowY:e?void 0:"hidden",overscrollBehaviorY:"contain",WebkitOverflowScrolling:"touch",transform:e?"translateY(0)":"translateY(100%)",opacity:e?1:0,transition:"transform 300ms cubic-bezier(0.32, 0.72, 0, 1), opacity 200ms ease-out"},children:n})}),bh=({toolbarContent:e,innerContentRef:n,shouldRender:r,isExiting:s,transitionHeight:a,emptyStateContent:o,isCornerRadiusPanelOpen:l,isCropPanelOpen:d,isRotationPanelOpen:u,isOpacityPanelOpen:h,isFontSizePanelOpen:m,isShapeCornerRadiusPanelOpen:f,isShapeTransparencyPanelOpen:g,isShapeSidesPanelOpen:p,isShapePointsPanelOpen:b,isShapeInnerRadiusPanelOpen:x,isShapeColorPanelOpen:S,isTextColorPanelOpen:T,isStrokePanelOpen:C,isKnockoutPanelOpen:w,isDistressTexturePanelOpen:R,isImageMaskPanelOpen:k,cornerRadiusPanel:v,cropPanelContent:z,rotationPanel:D,opacityPanel:O,fontSizePanel:A,shapeCornerRadiusPanel:P,shapeTransparencyPanel:G,shapeSidesPanel:Y,shapePointsPanel:U,shapeInnerRadiusPanel:W,shapeColorPanel:F,textColorPanel:H,strokePanel:K,knockoutPanel:M,distressTexturePanel:Z,imageMaskPanel:V})=>t.jsxs("div",{className:"toolbar-embedded-wrapper",style:{display:"flex",flexDirection:"column",flex:1,minHeight:0,overscrollBehaviorY:"contain"},children:[o,t.jsx("div",{className:"toolbar-height-wrapper",style:a!==null?{height:a,overflow:"hidden",transition:"height 200ms cubic-bezier(0.22, 1, 0.36, 1)"}:{display:"grid",gridTemplateRows:r&&!s?"1fr":"0fr",transition:"grid-template-rows 200ms cubic-bezier(0.22, 1, 0.36, 1)"},children:t.jsx("div",{ref:n,children:e})}),t.jsx(st,{isOpen:l,children:v}),t.jsx(st,{isOpen:d,children:z}),t.jsx(st,{isOpen:u,children:D}),t.jsx(st,{isOpen:h,children:O}),t.jsx(st,{isOpen:m,children:A}),t.jsx(st,{isOpen:f,children:P}),t.jsx(st,{isOpen:g,children:G}),t.jsx(st,{isOpen:p,children:Y}),t.jsx(st,{isOpen:b,children:U}),t.jsx(st,{isOpen:x,children:W}),t.jsx(Ao,{isOpen:S,children:F}),t.jsx(Ao,{isOpen:T,children:H}),t.jsx(st,{isOpen:C,children:K}),t.jsx(st,{isOpen:w,children:M}),t.jsx(st,{isOpen:R,children:Z}),t.jsx(st,{isOpen:k,children:V})]}),yh=({toolbarPosition:e,toolbarHeight:n,panelWidth:r,value:s,onChange:a})=>t.jsx("div",{className:"corner-radius-panel",style:{position:"fixed",top:`${e.top+n+8}px`,left:`${e.left}px`,transform:"translateX(-50%)",padding:"12px 24px",marginTop:"-12px",borderRadius:0,border:"1px solid var(--divider)",boxShadow:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",zIndex:"var(--z-tooltip)",width:`${r}px`,boxSizing:"border-box"},children:t.jsx(Ue,{label:"Radius",value:s,onChange:a,min:0,max:50,unit:"%"})}),vh=({toolbarPosition:e,toolbarHeight:n,element:r,onElementUpdate:s})=>t.jsx("div",{className:"crop-panel",style:{position:"fixed",top:`${e.top+n+8}px`,left:`${e.left}px`,transform:"translateX(-50%)",background:"var(--background)",border:"1px solid var(--divider)",borderRadius:"12px",boxShadow:"0 4px 12px 0 rgb(0 0 0 / 0.15)",zIndex:"var(--z-tooltip)",minWidth:"300px"},children:t.jsx(fn,{element:r,onElementUpdate:s})}),_t=e=>typeof e=="string"&&e.length>0&&e!=="transparent";function Pa(e,n){var s;const r=e.stroke;if(r!=null&&r.enabled&&_t(r.color)&&n.add(r.color),e instanceof $.TextElement){_t(e.color)&&n.add(e.color);const a=e.richText;if(a!=null&&a.spans)for(const o of a.spans)_t((s=o.style)==null?void 0:s.color)&&n.add(o.style.color);return}if(e instanceof $.ShapeElement){const a=e.transformData.fillColor;_t(a)&&n.add(a);return}if(e instanceof $.PathElement){const a=e.transformData;a.fillEnabled&&_t(a.fillColor)&&n.add(a.fillColor),a.strokeEnabled&&_t(a.strokeColor)&&n.add(a.strokeColor);return}if(e instanceof $.GroupElement){for(const a of e.children)Pa(a,n);return}}function jh(e,n){const r=new Set;for(const s of e)Pa(s,r);if(n)for(const s of n){const a=s.backgroundColor;_t(a)&&r.add(a)}return r}const Fn=new Map,Nr=new Map;function Kr(e){if(e.length===0)return{rRange:0,gRange:0,bRange:0};let n=255,r=0,s=255,a=0,o=255,l=0;for(const d of e)d.r<n&&(n=d.r),d.r>r&&(r=d.r),d.g<s&&(s=d.g),d.g>a&&(a=d.g),d.b<o&&(o=d.b),d.b>l&&(l=d.b);return{rRange:r-n,gRange:a-s,bRange:l-o}}function Ch(e){const n=Math.max(e.rRange,e.gRange,e.bRange);return e.rRange===n?"r":e.gRange===n?"g":"b"}function wh(e){return Math.max(e.rRange,e.gRange,e.bRange)}function Sh(e){const n=Ch(e),r=e.pixels.slice().sort((l,d)=>l[n]-d[n]),s=r.length>>1,a=r.slice(0,s),o=r.slice(s);return[{pixels:a,...Kr(a)},{pixels:o,...Kr(o)}]}function Th(e){let n=0,r=0,s=0;for(const o of e)n+=o.r,r+=o.g,s+=o.b;const a=e.length;return{r:Math.round(n/a),g:Math.round(r/a),b:Math.round(s/a)}}function kh(e,n){if(e.length===0)return[];const r=[{pixels:e,...Kr(e)}];for(;r.length<n;){let s=-1,a=0;for(let l=0;l<r.length;l++){const d=wh(r[l]);d>a&&r[l].pixels.length>=2&&(a=d,s=l)}if(s===-1)break;const o=r[s];r.splice(s,1),r.push(...Sh(o))}return r}function Nh(e,n){const r=(e.r+n.r)/2,s=e.r-n.r,a=e.g-n.g,o=e.b-n.b;return Math.sqrt((2+r/256)*s*s+4*a*a+(2+(255-r)/256)*o*o)}function Eh(e,n,r){if(e.length===0||n<=0)return[];const s=[e[0]],a=new Set([0]);for(;s.length<n;){let o=-1,l=-1;for(let d=1;d<e.length;d++){if(a.has(d))continue;let u=1/0;for(const h of s){const m=Nh(e[d],h);m<u&&(u=m)}u>l&&(l=u,o=d)}if(o===-1||l<=r)break;s.push(e[o]),a.add(o)}return s}const Er=e=>e.toString(16).padStart(2,"0");function Rh(e){return`#${Er(e.r)}${Er(e.g)}${Er(e.b)}`}async function Ih(e,n=5){if(!e)return[];const r=Fn.get(e);if(r)return r;const s=Nr.get(e);if(s)return s;const a=(async()=>{try{const o=await Dh(e),l=48,u=(typeof OffscreenCanvas<"u"?new OffscreenCanvas(l,l):(()=>{const x=document.createElement("canvas");return x.width=l,x.height=l,x})()).getContext("2d");if(!u)return[];u.drawImage(o,0,0,l,l);const{data:h}=u.getImageData(0,0,l,l),m=[];for(let x=0;x<h.length;x+=4){if(h[x+3]<128)continue;const T=h[x],C=h[x+1],w=h[x+2];T>240&&C>240&&w>240||m.push({r:T,g:C,b:w})}if(m.length===0)return Fn.set(e,[]),[];const f=Math.max(n*4,16),g=kh(m,f);g.sort((x,S)=>S.pixels.length-x.pixels.length);const p=g.map(x=>Th(x.pixels)),b=Eh(p,n,50).map(Rh);return Fn.set(e,b),b}catch{return Fn.set(e,[]),[]}finally{Nr.delete(e)}})();return Nr.set(e,a),a}function Dh(e){return new Promise((n,r)=>{const s=new Image;s.crossOrigin="anonymous",s.onload=()=>n(s),s.onerror=()=>r(new Error(`Failed to load image: ${e}`)),s.src=e})}async function Ah(e,n=5){const r=[],s=new Set,a=u=>{if(u instanceof $.ImageElement){const h=u.imageUrl;h&&!s.has(h)&&(s.add(h),r.push(h))}else if(u instanceof $.GroupElement)for(const h of u.children)a(h)};for(const u of e)a(u);if(r.length===0)return[];const o=await Promise.all(r.map(u=>Ih(u,n))),l=[],d=new Set;for(const u of o)for(const h of u)d.has(h)||(d.add(h),l.push(h));return l}const Mh=$.createLogger("ContextualToolbars"),Vr=({mode:e="floating",onOpenGlyphBrowser:n,onChangeImage:r,onOpenShapeTypeDrawer:s,documentColors:a=new Set,viewportWidth:o=window.innerWidth,breakpoints:l={},hasGlyphs:d=!1,getMoreMenuItems:u,onArtboardUpdate:h,artboardScreenBounds:m,maxWidth:f,transparent:g=!1,onPanelExpandChange:p,defaultExpandedPanel:b,onExpandedPanelTypeChange:x,onOpenCropDrawer:S,onOpenCornerRadiusDrawer:T,closeButtonStyle:C="icon",emptyStateMessage:w="Tap an element to select and edit",emptyStateRender:R,editArtboardMode:k=!1,onEditArtboardModeChange:v,onLayerThumbnailClick:z})=>{var As,Ms,Fs,Ls,zs,Os,_s,Ps,$s,Bs,Us,Ws,Hs,Gs,Ks,Vs;const{panOffset:D}=je.useViewportContext(),{multiSelection:O,setSelectedId:A}=je.useSelectionContext(),{expandedPanelType:P,setExpandedPanelType:G,setIsToolbarMenuOpen:Y,isRotating:U}=je.useToolStateContext(),{elements:W,selectedElement:F,activeChildElement:H,handleElementUpdate:K,artboardManager:M,artboards:Z,canvasEditorRef:V,canvasRef:J,executeRemoveElement:ne,executeAddElement:pe,executeReorderElement:se,refreshArtboards:B}=je.useEditor(),_=za({canvasEditorRef:V}),[ae,Q]=i.useState("root"),[le,Re]=i.useState(null),[be,xe]=i.useState(null),[We,He]=i.useState(!1),[qe,vt]=i.useState(!1),[Rt]=i.useState(!1),[dt,Le]=i.useState(!1),[Je,Ze]=i.useState(!1),[N,ue]=i.useState(()=>b&&{cornerRadius:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},crop:{type:"crop",icon:"lucide:crop",label:"Crop"},rotation:{type:"rotation",icon:X.rotateLeft,label:"Rotate"},opacity:{type:"opacity",icon:"lucide:blend",label:"Transparency"},effects:{type:"effects",icon:"lucide:sparkles",label:"Effects"}}[b]||null),[ut,Me]=i.useState(!1),[Ie,Ce]=i.useState(!1),[Ke,ot]=i.useState(!1),[Ge,ke]=i.useState(!1),[Qe,jt]=i.useState(null),[at,et]=i.useState(null),[ht,Mt]=i.useState({width:0,height:0}),Ct=i.useRef(null),ft=i.useRef(null),It=i.useRef(0),we=i.useRef(!1),ze=i.useRef(!1),De=i.useRef(null),it=i.useRef(void 0),Ae=i.useRef(null),Oe=i.useRef(P),Ve=i.useRef(void 0),wt=i.useRef(void 0),Se=i.useRef(!1),lt=i.useRef(!1),tt=i.useRef(!!b),nt=i.useRef(!1),St=i.useRef(N),I=i.useRef(null),q=i.useRef(()=>{}),oe=i.useRef(void 0),ce=i.useRef(void 0);lt.current=U;const j=H||F,he=j==null?void 0:j.id,de=F==null?void 0:F.id,ge=j==null?void 0:j.transformType,{fontColor:me,getEffectiveStyle:Te,handleFontColorChange:_e}=_,Xt=!!(F&&!U),ee=i.useCallback(y=>{if(F)if(H){const re=F.clone(),te=re.children.findIndex(Ne=>Ne.id===H.id);te!==-1&&(re.children[te]=y,K(re))}else K(y)},[F,H,K]),us=i.useCallback(y=>{if(!j||j.transformType!=="image")return;const E=j.clone();E.transformData.borderRadius=y,ee(E)},[j,ee]),Ha=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.borderRadius=y,ee(E)},[j,ee]),Ga=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.fillOpacity=y,ee(E)},[j,ee]),Ka=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.sides=y,ee(E)},[j,ee]),Va=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.points=y,ee(E)},[j,ee]),Ya=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.innerRadius=y,ee(E)},[j,ee]),Xa=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.fillColor=y,ee(E)},[j,ee]),qa=i.useCallback(()=>{T?T():ue(y=>(y==null?void 0:y.type)==="cornerRadius"?null:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"})},[T]),Ja=i.useCallback(()=>{S?S():ue(y=>(y==null?void 0:y.type)==="crop"?null:{type:"crop",icon:"lucide:crop",label:"Crop"})},[S]),vn=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="rotation"?null:{type:"rotation",icon:X.rotateLeft,label:"Rotate"})},[]),rr=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="opacity"?null:{type:"opacity",icon:"lucide:blend",label:"Transparency"})},[]),Za=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="fontSize"?null:{type:"fontSize",icon:"lucide:type",label:"Font Size"})},[]),Qa=i.useCallback(y=>{if(!j)return;const E=j.transformData;if(!E||E.width===void 0)return;const re=j.clone();re.transformData.width=y,ee(re)},[j,ee]),ei=((As=j==null?void 0:j.transformData)==null?void 0:As.width)??null,ti=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapeCornerRadius"?null:{type:"shapeCornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"})},[]),ni=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapeTransparency"?null:{type:"shapeTransparency",icon:"lucide:blend",label:"Transparency"})},[]),ri=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapeSides"?null:{type:"shapeSides",icon:"lucide:hexagon",label:"Sides"})},[]),si=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapePoints"?null:{type:"shapePoints",icon:"lucide:star",label:"Points"})},[]),oi=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapeInnerRadius"?null:{type:"shapeInnerRadius",icon:"lucide:circle-dashed",label:"Inner Radius"})},[]),ai=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="shapeColor"?null:{type:"shapeColor",icon:"lucide:paint-bucket",label:"Fill Color"})},[]),ii=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="textColor"?null:{type:"textColor",icon:X.palette,label:"Font Color"})},[]),jn=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="compositing"?null:{type:"compositing",icon:"lucide:scissors",label:"Clip / Knockout"})},[]),Cn=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="distressTexture"?null:{type:"distressTexture",icon:"lucide:stamp",label:"Distress Texture"})},[]),wn=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="imageMask"?null:{type:"imageMask",icon:"lucide:venetian-mask",label:"Image Mask"})},[]),Sn=i.useCallback(()=>{ue(y=>(y==null?void 0:y.type)==="stroke"?null:{type:"stroke",icon:"lucide:pen-line",label:"Stroke"})},[]),li=i.useCallback(()=>{if((N==null?void 0:N.type)==="crop"&&(j==null?void 0:j.transformType)==="image"){const y=j;if(y.isCropping){const E=y.clone();E.exitCropMode(),ee(E)}}ue(null)},[N,j,ee]),Tn=i.useCallback(()=>{if(!F)return;const y=W.findIndex(E=>E.id===F.id);if(y<W.length-1){const E=W[y+1];se(F.id,E.id,"after")}},[F,W,se]),kn=i.useCallback(()=>{if(!F)return;const y=W.findIndex(E=>E.id===F.id);if(y>0){const E=W[y-1];se(F.id,E.id,"before")}},[F,W,se]),sr=i.useCallback(()=>{const y=H||F;y&&(ne(y),A(null))},[H,F,ne,A]),ci=i.useCallback(()=>{if(!j)return;const y=j.clone();y.locked=!j.locked,ee(y)},[j,ee]),Nn=i.useCallback(()=>{if(!F||F.transformType!=="group")return;const y=F;if(!y.children||y.children.length===0)return;const E=M.getArtboardIdForElement(y.id);if(!E)return;const re=y.children.map(te=>{const Ne=te.clone();return Ne.x=te.x+y.x,Ne.y=te.y+y.y,Ne});ne(y),re.forEach(te=>pe(te,E)),A(re.length>0?re[0].id:null)},[F,M,ne,pe,A]),di=i.useCallback(y=>{if(!j)return;const E=j.clone();E.rotation=y,ee(E)},[j,ee]),ui=i.useCallback(()=>{if(!j)return;const y=j.clone();let E=Math.floor(y.rotation/90)*90+90;E=(E%360+360)%360,E>180&&(E-=360),y.rotation=E,ee(y)},[j,ee]),hi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.opacity=y,ee(E)},[j,ee]),fi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.blendMode=y,E.knockoutParts||(E.knockoutParts={fill:!0,scope:"group"}),ee(E)},[j,ee]),pi=i.useCallback(y=>{if(!j)return;const E=j.clone(),re=E.blendMode==="clip"?"clip":"knockout",te={...E.knockoutParts,fill:y};E.knockoutParts=te,E.blendMode=te.fill||te.stroke?re:"normal",ee(E)},[j,ee]),mi=i.useCallback(y=>{if(!j)return;const E=j.clone(),re=E.blendMode==="clip"?"clip":"knockout",te={...E.knockoutParts,stroke:y};E.knockoutParts=te,E.blendMode=te.fill||te.stroke?re:"normal",ee(E)},[j,ee]),gi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.knockoutParts={...E.knockoutParts,scope:y},ee(E)},[j,ee]),xi=i.useCallback(y=>{var re,te;if(!j)return;const E=j.clone();y?E.distressEffect={enabled:!0,style:"custom",intensity:((re=E.distressEffect)==null?void 0:re.intensity)??50,textureUrl:y,textureOpacity:((te=E.distressEffect)==null?void 0:te.textureOpacity)??.5}:E.distressEffect=void 0,ee(E)},[j,ee]),bi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.distressEffect&&(E.distressEffect={...E.distressEffect,textureOpacity:y/100}),ee(E)},[j,ee]),yi=i.useCallback(y=>{if(!j)return;const E=j.clone();if(!y)E.masks=(E.masks||[]).filter(re=>re.id!=="quick-image-mask");else{const te=()=>({transformType:"image",imageUrl:y,x:0,y:0,rotation:0,transformData:{type:"image",width:512,height:512,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}});if("transformData"in E&&E.transformData){const Pe=E.transformData;Pe.cropX=0,Pe.cropY=0,Pe.cropWidth=1,Pe.cropHeight=1}const Ne=(E.masks||[]).find(Pe=>Pe.id==="quick-image-mask");if(Ne)Ne.maskElement=te();else{const Pe=E.masks||[];Pe.push({id:"quick-image-mask",type:"clip",maskElement:te(),opacity:1,inverted:!1}),E.masks=Pe}}ee(E)},[j,ee]),vi=i.useCallback(y=>{if(!j)return;const E=j.clone(),re=(E.masks||[]).find(te=>te.id==="quick-image-mask");re&&(re.type=y,ee(E))},[j,ee]),ji=i.useCallback(y=>{if(!j)return;const E=j.clone(),re=(E.masks||[]).find(te=>te.id==="quick-image-mask");re&&(re.opacity=y/100,ee(E))},[j,ee]),Ci=i.useCallback(y=>{if(!j)return;const E=j.clone(),re=(E.masks||[]).find(te=>te.id==="quick-image-mask");re&&(re.inverted=y,ee(E))},[j,ee]),wi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.stroke=y,ee(E)},[j,ee]),Si=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const re=j.clone();re.transformData.shapeType=y,ee(re),Ze(!1)},[j,ee]),Ti=i.useCallback(()=>{s?s():Ze(!0)},[s]);i.useEffect(()=>{p==null||p(N!==null),x==null||x((N==null?void 0:N.type)??null)},[N,p,x]),i.useEffect(()=>{const y=(N==null?void 0:N.type)??null;y!==Ae.current&&(Ae.current=y,G(y))},[N,G]),i.useEffect(()=>{const y=Oe.current,E=P;if(y!==E){if(Oe.current=E,y!==null&&E===null&&N!==null){Ae.current=null,ue(null);return}if(E!==null&&(N==null?void 0:N.type)!==E){const te={crop:{type:"crop",icon:"lucide:crop",label:"Crop"},cornerRadius:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},rotation:{type:"rotation",icon:X.rotateLeft,label:"Rotate"},opacity:{type:"opacity",icon:"lucide:blend",label:"Transparency"},fontSize:{type:"fontSize",icon:"lucide:type",label:"Font Size"},effects:{type:"effects",icon:"lucide:sparkles",label:"Effects"},shapeCornerRadius:{type:"shapeCornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},shapeTransparency:{type:"shapeTransparency",icon:X.eye,label:"Transparency"},shapeSides:{type:"shapeSides",icon:"lucide:triangle",label:"Sides"},shapePoints:{type:"shapePoints",icon:"lucide:star",label:"Points"},shapeInnerRadius:{type:"shapeInnerRadius",icon:"lucide:circle-dashed",label:"Inner Radius"},shapeColor:{type:"shapeColor",icon:X.palette,label:"Color"},textColor:{type:"textColor",icon:X.palette,label:"Color"},stroke:{type:"stroke",icon:"lucide:pen-line",label:"Stroke"},compositing:{type:"compositing",icon:"lucide:scissors",label:"Clip / Knockout"},distressTexture:{type:"distressTexture",icon:"lucide:stamp",label:"Distress Texture"},imageMask:{type:"imageMask",icon:"lucide:venetian-mask",label:"Image Mask"}}[E];te&&(Ae.current=E,ue(te))}}},[P,N]),i.useEffect(()=>{Y(N!==null||le!==null||qe||Rt||dt||ae!=="root")},[N,le,qe,Rt,dt,ae,Y]),i.useEffect(()=>{b||(oe.current!==void 0&&oe.current!==de&&ue(null),oe.current=de)},[de,b]),i.useEffect(()=>{k&&F&&(v==null||v(!1))},[k,F,v]),i.useEffect(()=>{const y=(j==null?void 0:j.transformType)==="image"?j.isCropping:!1;(N==null?void 0:N.type)==="crop"&&ce.current===!0&&y===!1&&ue(null),ce.current=y},[j,N==null?void 0:N.type]),i.useEffect(()=>{St.current=N,I.current=j??null,q.current=ee}),i.useEffect(()=>{const y=setTimeout(()=>{nt.current=!0},0);return()=>{clearTimeout(y)}},[]),i.useEffect(()=>()=>{var y;if(nt.current&&tt.current&&((y=St.current)==null?void 0:y.type)==="crop"){const E=I.current;if((E==null?void 0:E.transformType)==="image"){const re=E;if(re.isCropping){const te=re.clone();te.exitCropMode(),q.current(te)}}}},[]),i.useEffect(()=>{let y=null,E=!1;const re=3,te=Ye=>{var Tt;const mt=Ye.target;(Tt=Ct.current)!=null&&Tt.contains(mt)||mt.closest('[data-slot="popover-content"]')||mt.closest('[data-slot="dialog"]')||mt.closest('[role="dialog"]')||mt.closest(".popover-content")||mt.closest("[data-slot]")||(ze.current=!0,y={x:Ye.clientX,y:Ye.clientY},E=!1)},Ne=Ye=>{if(y&&!E&&!lt.current){const mt=Ye.clientX-y.x,Tt=Ye.clientY-y.y;Math.sqrt(mt*mt+Tt*Tt)>re&&(E=!0,He(!0))}},Pe=()=>{ze.current=!1,y=null,E=!1,He(!1)};return window.addEventListener("mousedown",te),window.addEventListener("mousemove",Ne),window.addEventListener("mouseup",Pe),()=>{window.removeEventListener("mousedown",te),window.removeEventListener("mousemove",Ne),window.removeEventListener("mouseup",Pe)}},[]),i.useEffect(()=>{if(!Ct.current)return;let y=null;const E=new ResizeObserver(re=>{y!==null&&clearTimeout(y),y=window.setTimeout(()=>{for(const te of re){const Ne=te.contentRect.width,Pe=te.contentRect.height;Mt(Ye=>Ye.width===Ne&&Ye.height===Pe?Ye:{width:Ne,height:Pe})}},50)});return E.observe(Ct.current),()=>{E.disconnect(),y!==null&&clearTimeout(y)}},[F]),i.useEffect(()=>{var re;if(e==="embedded"||Ie)return;const y=(re=H||F)==null?void 0:re.rotation;if(it.current=y,!F){xe(null);return}const E=()=>{var te,Ne,Pe,Ye,mt;try{const Tt=((te=Ct.current)==null?void 0:te.offsetWidth)||ht.width||0,lr=((Ne=Ct.current)==null?void 0:Ne.offsetHeight)||ht.height||48,Ys=J==null?void 0:J.current,Lt=H||F,Ut=Lt.transformData,gt=((Pe=Lt.getBoundingBox)==null?void 0:Pe.call(Lt))||{x:Lt.x,y:Lt.y,width:(Ut==null?void 0:Ut.width)||100,height:(Ut==null?void 0:Ut.height)||50},Wt=M.getActiveArtboard(),Xs=(Wt==null?void 0:Wt.x)||0,qs=(Wt==null?void 0:Wt.y)||0,xt=((mt=(Ye=V==null?void 0:V.current)==null?void 0:Ye.getZoom)==null?void 0:mt.call(Ye))||1;let In,qt,Dn,An;if(Ys){const Jt=Ys.getBoundingClientRect();In=Jt.left+(gt.x-Xs)*xt,qt=Jt.top+(gt.y-qs)*xt,Dn=gt.width*xt,An=gt.height*xt}else if(m)In=m.left+(gt.x-Xs)*xt,qt=m.top+(gt.y-qs)*xt,Dn=gt.width*xt,An=gt.height*xt;else{const Jt=window.innerWidth/2,dr=window.innerHeight/2;In=Jt-gt.width*xt/2,qt=dr-gt.height*xt/2,Dn=gt.width*xt,An=gt.height*xt}const Js=12,ul=qt,hl=In+Dn/2;let zt=ul-lr-Js,cr=hl;if(Tt>0){const dr=Tt/2+20,pl=window.innerWidth-Tt/2-20;cr=Math.max(dr,Math.min(pl,cr))}zt<10&&(zt=qt+An+Js);const fl=window.innerHeight-lr-10;zt=Math.min(zt,fl),zt=Math.max(10,zt),xe({top:zt,left:cr}),jt(Lt.id)}catch(Tt){Mh.error("Error calculating toolbar position:",Tt),xe(null)}};return E(),window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E)}},[e,F,H,J,M,V,m,ht,Ie,D]);const or=Te().color||me,ki=i.useCallback(y=>_e(y),[_e]),hs=i.useMemo(()=>jh(W,Z),[W,Z]),fs=i.useMemo(()=>{const y=new Set(hs);for(const E of a)y.add(E);return y},[hs,a]),Ni=Array.from(fs).sort().join(","),En=i.useMemo(()=>Array.from(fs),[Ni]),ps=i.useMemo(()=>{const y=[],E=new Set,re=te=>{if(te instanceof $.ImageElement)te.imageUrl&&!E.has(te.imageUrl)&&(E.add(te.imageUrl),y.push(te.imageUrl));else if(te instanceof $.GroupElement)for(const Ne of te.children)re(Ne)};for(const te of W)re(te);return y.sort(),y.join("|")},[W]),[Rn,ms]=i.useState([]);i.useEffect(()=>{if(!ps){ms([]);return}let y=!1;return Ah(W).then(E=>{y||ms(E)}),()=>{y=!0}},[ps]);const Ei=i.useCallback(y=>{if(Ct&&(Ct.current=y,y)){const{width:E,height:re}=y.getBoundingClientRect();E>0&&re>0&&Mt({width:E,height:re})}},[]);i.useEffect(()=>{const y=Se.current,E=U;!y&&E&&be&&(De.current={...be}),y&&!E&&(De.current=null),Se.current=U},[U,be]),i.useEffect(()=>{const y=we.current,E=Ve.current;if(we.current=Xt,Ve.current=de,!y&&Xt){if(ot(!0),e==="embedded"){ke(!1),Me(!0),Ce(!1);const re=setTimeout(()=>{Me(!1)},200);return()=>clearTimeout(re)}ke(!0),Me(!1),Ce(!1);return}if(y&&Xt&&E!==de&&de!==void 0){if(e==="embedded"){Me(!1);return}ke(!0),Me(!1),Ce(!1);return}if(y&&!Xt){if(U){ot(!1),Me(!1),Ce(!1),ke(!1);return}if(e==="embedded"){if(Ce(!0),Me(!1),ft.current){const Ne=ft.current.offsetHeight;et(Ne),requestAnimationFrame(()=>{et(0)})}const te=setTimeout(()=>{ot(!1),Ce(!1),et(null)},200);return()=>clearTimeout(te)}Ce(!0),Me(!1),ke(!1);const re=setTimeout(()=>{ot(!1),Ce(!1),xe(null),jt(null)},150);return()=>clearTimeout(re)}},[Xt,U,de,e,ge]),i.useEffect(()=>{if(Ge&&be&&Qe===he){ke(!1),Me(!0);const y=setTimeout(()=>{Me(!1)},200);return()=>clearTimeout(y)}},[Ge,be,Qe,he]),i.useLayoutEffect(()=>{if(e!=="embedded")return;const y=wt.current;if(y!==void 0&&ge!==void 0&&y!==ge&&It.current>0&&at===null){const re=It.current;et(re),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(ft.current){const te=ft.current.scrollHeight;et(te),setTimeout(()=>{et(null)},200)}})})}ft.current&&at===null&&!ut&&!Ie&&(It.current=ft.current.offsetHeight),wt.current=ge},[e,ge,at,ut,Ie]);const Ri=i.useMemo(()=>{const y=f?typeof f=="number"?`${f}px`:f:void 0;if(e==="embedded")return{borderRadius:f?"16px":"9999px",visibility:"visible",position:"static",maxWidth:y,display:"flex",justifyContent:"flex-start"};const E=De.current||be;return E&&!Ge?{top:`${E.top}px`,left:`${E.left}px`,position:"fixed",transform:"translateX(-50%)",borderRadius:f?"16px":"9999px",visibility:"visible",maxWidth:y,zIndex:"var(--z-tooltip)"}:{borderRadius:f?"16px":"9999px",visibility:"hidden",maxWidth:y,position:"fixed",top:"-9999px",left:"-9999px",zIndex:"var(--z-tooltip)"}},[e,be,Ge,f]);if(O.length>0)return null;const Ii=t.jsxs(t.Fragment,{children:[ae==="root"&&j&&t.jsx(qu,{element:j,onToggleLock:ci,onThumbnailClick:z}),ae==="root"&&(j==null?void 0:j.transformType)==="image"&&t.jsx(xa,{element:j,onElementUpdate:ee,showUngroupButton:!!H&&(F==null?void 0:F.transformType)==="group",onUngroup:Nn,onMoveForward:Tn,onMoveBackward:kn,onChangeImage:r,onDelete:sr,cornerRadiusExpanded:(N==null?void 0:N.type)==="cornerRadius",onCornerRadiusToggle:qa,cropExpanded:(N==null?void 0:N.type)==="crop",onCropToggle:Ja,rotationExpanded:(N==null?void 0:N.type)==="rotation",onRotationToggle:vn,opacityExpanded:(N==null?void 0:N.type)==="opacity",onOpacityToggle:rr,strokeExpanded:(N==null?void 0:N.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(N==null?void 0:N.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(N==null?void 0:N.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(N==null?void 0:N.type)==="imageMask",onImageMaskToggle:wn}),ae==="root"&&(F==null?void 0:F.transformType)==="group"&&!H&&t.jsx(Qu,{element:F,rotationExpanded:(N==null?void 0:N.type)==="rotation",onRotationToggle:vn,opacityExpanded:(N==null?void 0:N.type)==="opacity",onOpacityToggle:rr,strokeExpanded:(N==null?void 0:N.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(N==null?void 0:N.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(N==null?void 0:N.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(N==null?void 0:N.type)==="imageMask",onImageMaskToggle:wn,onUngroup:Nn}),ae==="root"&&(j==null?void 0:j.transformType)==="shape"&&t.jsx(ba,{element:j,onElementUpdate:ee,documentColors:En,imageColors:Rn,showUngroupButton:!!H&&(F==null?void 0:F.transformType)==="group",onUngroup:Nn,onMoveForward:Tn,onMoveBackward:kn,onOpenShapeTypeDrawer:Ti,onDelete:sr,rotationExpanded:(N==null?void 0:N.type)==="rotation",onRotationToggle:vn,cornerRadiusExpanded:(N==null?void 0:N.type)==="shapeCornerRadius",onCornerRadiusToggle:ti,transparencyExpanded:(N==null?void 0:N.type)==="shapeTransparency",onTransparencyToggle:ni,sidesExpanded:(N==null?void 0:N.type)==="shapeSides",onSidesToggle:ri,pointsExpanded:(N==null?void 0:N.type)==="shapePoints",onPointsToggle:si,innerRadiusExpanded:(N==null?void 0:N.type)==="shapeInnerRadius",onInnerRadiusToggle:oi,colorExpanded:(N==null?void 0:N.type)==="shapeColor",onColorToggle:ai,strokeExpanded:(N==null?void 0:N.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(N==null?void 0:N.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(N==null?void 0:N.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(N==null?void 0:N.type)==="imageMask",onImageMaskToggle:wn}),ae==="root"&&(j==null?void 0:j.transformType)==="path"&&t.jsx(ya,{element:j,onElementUpdate:ee,onMoveForward:Tn,onMoveBackward:kn}),ae==="root"&&j&&j.transformType!=="image"&&j.transformType!=="group"&&j.transformType!=="shape"&&j.transformType!=="path"&&t.jsx(La,{toolbar:_,stableElementId:he,viewportWidth:o,colorPickerValue:or,isColorActive:(N==null?void 0:N.type)==="textColor",onColorToggle:ii,onOpenGlyphBrowser:n,strokeExpanded:(N==null?void 0:N.type)==="stroke",onStrokeToggle:Sn,hasGlyphs:d,expandedPanel:N,onRotationToggle:vn,onOpacityToggle:rr,onFontSizeToggle:Za,knockoutExpanded:(N==null?void 0:N.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(N==null?void 0:N.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(N==null?void 0:N.type)==="imageMask",onImageMaskToggle:wn,getMoreMenuItems:u,onMoveForward:Tn,onMoveBackward:kn,onDelete:sr,elementForProperties:j,elements:W,isTransformMenuOpen:qe,onTransformMenuOpenChange:vt,elementUpdateHandler:ee,showUngroupButton:!!H&&(F==null?void 0:F.transformType)==="group",onUngroup:Nn,isFontBrowserOpen:le==="fontFamily",onFontBrowserToggle:y=>Re(y?"fontFamily":null),onTextMoreMenuOpenChange:Le}),ae==="color"&&t.jsxs("div",{className:"toolbar-items",children:[t.jsx(Fu,{onClick:()=>Q("root")}),t.jsxs("div",{className:"toolbar-scroll",children:[t.jsx("input",{className:"toolbar-color",type:"color",value:me,onChange:y=>{_e(y)}}),t.jsx("span",{className:"toolbar-label",children:me})]})]})]}),ve=(j==null?void 0:j.transformType)==="shape"?j:null,gs=Ke?t.jsx("div",{ref:Ei,className:"toolbar","data-mode":e,"data-wrap":f?"":void 0,"data-transparent":g?"":void 0,"data-panel-expanded":N?"":void 0,"data-preserve-selection":!0,style:{...Ri,opacity:U?0:1,pointerEvents:U?"none":"auto",transition:"opacity 0.05s ease-out"},"data-entering":ut?"":void 0,"data-exiting":Ie?"":void 0,children:t.jsxs("div",{className:"toolbar-slide-container",children:[t.jsx("div",{className:"toolbar-regular-content","data-hidden":N?"":void 0,children:Ii}),t.jsx("div",{className:"toolbar-collapsed-header","data-visible":N?"":void 0,children:N&&t.jsx(Or,{icon:t.jsx(xh,{panelType:N.type,defaultIcon:N.icon,textColorValue:or,shapeFillColor:(Ms=ve==null?void 0:ve.transformData)==null?void 0:Ms.fillColor}),label:N.label,onClose:li,closeButtonStyle:C})})]})}):null,ar=(N==null?void 0:N.type)==="cornerRadius",ir=(N==null?void 0:N.type)==="crop",xs=(N==null?void 0:N.type)==="rotation",bs=(N==null?void 0:N.type)==="opacity",ys=(N==null?void 0:N.type)==="fontSize",vs=(N==null?void 0:N.type)==="shapeCornerRadius",js=(N==null?void 0:N.type)==="shapeTransparency",Cs=(N==null?void 0:N.type)==="shapeSides",ws=(N==null?void 0:N.type)==="shapePoints",Ss=(N==null?void 0:N.type)==="shapeInnerRadius",Ts=(N==null?void 0:N.type)==="shapeColor",ks=(N==null?void 0:N.type)==="textColor",Ns=(N==null?void 0:N.type)==="compositing",Es=(N==null?void 0:N.type)==="distressTexture",Rs=(N==null?void 0:N.type)==="stroke",Is=(N==null?void 0:N.type)==="imageMask",Ds=(j==null?void 0:j.transformType)==="image"&&((Fs=j.transformData)==null?void 0:Fs.borderRadius)||0,Di=(j==null?void 0:j.rotation)||0,Ai=(j==null?void 0:j.opacity)??1,Mi=((Ls=ve==null?void 0:ve.transformData)==null?void 0:Ls.borderRadius)||0,Fi=((zs=ve==null?void 0:ve.transformData)==null?void 0:zs.fillOpacity)??1,Li=((Os=ve==null?void 0:ve.transformData)==null?void 0:Os.sides)||5,zi=((_s=ve==null?void 0:ve.transformData)==null?void 0:_s.points)||5,Oi=((Ps=ve==null?void 0:ve.transformData)==null?void 0:Ps.innerRadius)||.4,_i=(($s=ve==null?void 0:ve.transformData)==null?void 0:$s.fillColor)||"#3b82f6",Pi=((Bs=j==null?void 0:j.knockoutParts)==null?void 0:Bs.fill)??!1,$i=((Us=j==null?void 0:j.knockoutParts)==null?void 0:Us.stroke)??!1,Bi=((Ws=j==null?void 0:j.knockoutParts)==null?void 0:Ws.scope)??"group",Ui=(j==null?void 0:j.blendMode)==="clip"?"clip":"knockout",Wi=ar&&(j==null?void 0:j.transformType)==="image"?t.jsx(th,{value:Ds,onChange:us}):null,Hi=ir&&(j==null?void 0:j.transformType)==="image"?t.jsx(gh,{element:j,onElementUpdate:ee}):null,Gi=xs&&j?t.jsx(nh,{value:Di,onChange:di,onRotate90:ui}):null,Ki=bs&&j?t.jsx(sh,{value:Ai,onChange:hi}):null,Vi=ys?t.jsx(rh,{value:_.fontSize,onChange:_.handleFontSizeChange,widthValue:ei,onWidthChange:Qa}):null,Yi=vs&&ve?t.jsx(oh,{value:Mi,onChange:Ha}):null,Xi=js&&ve?t.jsx(ah,{value:Fi,onChange:Ga}):null,qi=Cs&&ve?t.jsx(ih,{value:Li,onChange:Ka}):null,Ji=ws&&ve?t.jsx(lh,{value:zi,onChange:Va}):null,Zi=Ss&&ve?t.jsx(ch,{value:Oi,onChange:Ya}):null,Qi=Ts&&ve?t.jsx(dh,{value:_i,onChange:Xa,documentColors:En,imageColors:Rn}):null,el=ks&&j?t.jsx(uh,{value:or,onChange:ki,documentColors:En,imageColors:Rn}):null,tl=Ns&&j?t.jsx(hh,{mode:Ui,fill:Pi,stroke:$i,scope:Bi,onModeChange:fi,onFillChange:pi,onStrokeChange:mi,onScopeChange:gi}):null,nl=Rs&&j?t.jsx(mh,{stroke:j.stroke,onChange:wi,documentColors:En,imageColors:Rn}):null,rl=Es&&j?t.jsx(fh,{textureUrl:((Hs=j.distressEffect)==null?void 0:Hs.textureUrl)??"",opacity:Math.round((((Gs=j.distressEffect)==null?void 0:Gs.textureOpacity)??.5)*100),onTextureChange:xi,onOpacityChange:bi}):null,pt=(Ks=j==null?void 0:j.masks)==null?void 0:Ks.find(y=>y.id==="quick-image-mask"),sl=Is&&j?t.jsx(ph,{imageUrl:((Vs=pt==null?void 0:pt.maskElement)==null?void 0:Vs.imageUrl)??"",maskType:(pt==null?void 0:pt.type)??"clip",opacity:Math.round(((pt==null?void 0:pt.opacity)??1)*100),inverted:(pt==null?void 0:pt.inverted)??!1,onImageChange:yi,onMaskTypeChange:vi,onOpacityChange:ji,onInvertedChange:Ci}):null,ol=e==="embedded"&&!F&&!k?R?t.jsx("div",{className:"toolbar-empty-state",children:R}):w!==null?t.jsx("div",{className:"toolbar-empty-state",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"16px 24px",color:"var(--foreground)",opacity:.5,fontSize:"14px",textAlign:"center"},children:w}):null:null,al=e==="embedded"&&k&&!F&&M.getActiveArtboard()?t.jsxs("div",{className:"px-4 py-3 flex flex-col gap-3",children:[t.jsx(Or,{icon:"lucide:palette",label:"Artboard Properties",onClose:()=>v==null?void 0:v(!1),closeButtonStyle:"done"}),t.jsx(va,{distressTexture:M.getActiveArtboard().distressTexture,onChange:y=>{const E=M.getActiveArtboard();h?h(E.id,{distressTexture:E.distressTexture},{distressTexture:y}):(M.updateArtboard(E.id,{distressTexture:y}),B())}}),t.jsx(ja,{imageMask:M.getActiveArtboard().imageMask,onChange:y=>{const E=M.getActiveArtboard();h?h(E.id,{imageMask:E.imageMask},{imageMask:y}):(M.updateArtboard(E.id,{imageMask:y}),B())}})]}):null,il=e==="embedded"?t.jsx(bh,{toolbarContent:gs,innerContentRef:ft,shouldRender:Ke,isExiting:Ie,transitionHeight:at,emptyStateContent:al||ol,isCornerRadiusPanelOpen:ar,isCropPanelOpen:ir,isRotationPanelOpen:xs,isOpacityPanelOpen:bs,isFontSizePanelOpen:ys,isShapeCornerRadiusPanelOpen:vs,isShapeTransparencyPanelOpen:js,isShapeSidesPanelOpen:Cs,isShapePointsPanelOpen:ws,isShapeInnerRadiusPanelOpen:Ss,isShapeColorPanelOpen:Ts,isTextColorPanelOpen:ks,isStrokePanelOpen:Rs,isKnockoutPanelOpen:Ns,isDistressTexturePanelOpen:Es,isImageMaskPanelOpen:Is,cornerRadiusPanel:Wi,cropPanelContent:Hi,rotationPanel:Gi,opacityPanel:Ki,fontSizePanel:Vi,shapeCornerRadiusPanel:Yi,shapeTransparencyPanel:Xi,shapeSidesPanel:qi,shapePointsPanel:Ji,shapeInnerRadiusPanel:Zi,shapeColorPanel:Qi,textColorPanel:el,strokePanel:nl,knockoutPanel:tl,distressTexturePanel:rl,imageMaskPanel:sl}):null,ll=ht.width>0?Math.max(ht.width,200):280,cl=e==="floating"&&ar&&(j==null?void 0:j.transformType)==="image"&&be?t.jsx(yh,{toolbarPosition:be,toolbarHeight:ht.height||56,panelWidth:ll,value:Ds,onChange:us}):null,dl=e==="floating"&&ir&&(j==null?void 0:j.transformType)==="image"&&be?t.jsx(vh,{toolbarPosition:be,toolbarHeight:ht.height||56,element:j,onElementUpdate:ee}):null;return t.jsxs(t.Fragment,{children:[e==="floating"&&typeof document<"u"?$t.createPortal(t.jsxs(t.Fragment,{children:[gs,cl,dl]}),document.body):il,e!=="embedded"&&!F&&M.getActiveArtboard()&&h&&t.jsx(Ca,{artboard:M.getActiveArtboard(),artboards:Z,onArtboardUpdate:y=>{const E=M.getActiveArtboard();h(E.id,{backgroundColor:E.backgroundColor,backgroundType:E.backgroundType,backgroundTexture:E.backgroundTexture,exportBackground:E.exportBackground},{backgroundColor:y.backgroundColor,backgroundType:y.backgroundType,backgroundTexture:y.backgroundTexture,exportBackground:y.exportBackground})},onRenameArtboard:(y,E)=>{M.renameArtboard(y,E),B()},onDeleteArtboard:y=>{M.deleteArtboard(y),B()},artboardScreenBounds:m}),!s&&(j==null?void 0:j.transformType)==="shape"&&t.jsx(is,{isOpen:Je,onClose:()=>Ze(!1),onSelectType:Si,currentType:j.transformData.shapeType})]})},Fh=Object.freeze(Object.defineProperty({__proto__:null,ContextualToolbars:Vr,default:Vr},Symbol.toStringTag,{value:"Module"})),cs=({trigger:e,children:n,isOpen:r,onToggle:s,position:a="bottom",align:o="start",offset:l=8,protectClick:d=!0,className:u="",contentClassName:h=""})=>{const m=i.useRef(null),f=i.useRef(null),g=i.useRef(null),[p,b]=i.useState({}),[x,S]=i.useState(!1),T=w=>{w.stopPropagation(),!r&&d&&L.clickProtection.protectNextClick(),s(!r)};i.useEffect(()=>{if(!r)return;let w=()=>{};const R=setTimeout(()=>{const k=v=>{var A,P;const z=v.target,D=(A=m.current)==null?void 0:A.contains(z),O=(P=g.current)==null?void 0:P.contains(z);!D&&!O&&s(!1)};document.addEventListener("mousedown",k),w=()=>document.removeEventListener("mousedown",k)},0);return()=>{clearTimeout(R),w()}},[r,s]),i.useEffect(()=>{if(!r)return;const w=R=>{var k;if(R.key==="Escape"){R.stopPropagation(),R.preventDefault(),s(!1);const v=(k=f.current)==null?void 0:k.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');v==null||v.focus()}};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[r,s]),i.useEffect(()=>{r||S(!1)},[r]),i.useEffect(()=>{if(!r||!f.current||!g.current)return;requestAnimationFrame(()=>{const R=f.current,k=g.current;if(!R||!k)return;const v=R.getBoundingClientRect(),z=k.getBoundingClientRect(),D=window.innerWidth,O=window.innerHeight,A=16;let P=0,G=0;if(a==="bottom"||a==="top"?(a==="bottom"?P=v.bottom+l:P=v.top-z.height-l,o==="start"?G=v.left:o==="end"?G=v.right-z.width:o==="center"&&(G=v.left+(v.width-z.width)/2)):(a==="left"||a==="right")&&(a==="left"?G=v.left-z.width-l:G=v.right+l,o==="start"?P=v.top:o==="end"?P=v.bottom-z.height:o==="center"&&(P=v.top+(v.height-z.height)/2)),o!=="end"&&G+z.width>D-A&&(G=D-z.width-A),G<A&&(G=A),P+z.height>O-A){const U=v.top,W=O-v.bottom;U>W&&(P=v.top-z.height-l)}P<A&&(P=A);const Y=D-A*2;S(!0),b({position:"fixed",top:`${P}px`,left:`${G}px`,maxWidth:`${Y}px`,visibility:"visible"})})},[r,a,o,l]);const C=r&&t.jsx("div",{ref:g,className:`z-dropdown ${h}`.trim(),"data-preserve-selection":!0,style:x?p:{position:"fixed",visibility:"hidden",top:0,left:0},children:n});return t.jsxs("div",{className:`relative inline-flex ${u}`.trim(),ref:m,children:[t.jsx("div",{ref:f,onClick:T,children:e}),C&&$t.createPortal(C,document.body)]})},Yr=({children:e,className:n="",minWidth:r="160px",maxHeight:s})=>{const a=s?`max-h-[${s}]`:"",o={minWidth:r};return t.jsx("div",{role:"menu",className:`flex flex-col gap-px rounded-xl border border-border-primary bg-surface p-xs shadow-md ${a} ${n}`.trim(),style:o,children:e})},Pt=({icon:e,label:n,shortcut:r,active:s=!1,disabled:a=!1,onClick:o,className:l="",children:d,...u})=>{const h=["flex items-center gap-md","px-lg py-md","bg-transparent border-none","rounded-lg","text-text-primary text-base font-normal","cursor-pointer","transition-all duration-fast","text-left w-full"],m=[s?"bg-accent-light font-medium":"",a?"opacity-disabled cursor-not-allowed":"hover:bg-bg-hover"],f=[...h,...m,l].filter(Boolean).join(" "),g=()=>{!a&&o&&o()};return t.jsxs("button",{role:"menuitem",className:f,onClick:g,disabled:a,type:"button",...u,children:[e&&t.jsx("span",{className:"flex shrink-0 items-center",children:e}),t.jsx("span",{className:"flex-1",children:d||n}),r&&t.jsx("span",{className:"ml-auto text-sm text-text-muted",children:r}),s&&!r&&t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"ml-auto shrink-0",children:t.jsx("path",{d:"M13 4L6 11L3 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]})},Lh=({title:e,icon:n,children:r,enableable:s=!1,enabled:a=!1,onEnabledChange:o,collapsible:l=!1,expanded:d=!0,onExpandChange:u,className:h=""})=>{const m=s?a&&d:l?d:!0,f=s&&a||l,g=()=>{o&&o(!a)},p=()=>{u&&u(!d)};return t.jsxs("div",{className:`rounded-xl border border-border-primary bg-bg-secondary p-xl ${h}`,children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-md",children:[s&&t.jsx("label",{className:"flex cursor-pointer items-center",children:t.jsx("input",{type:"checkbox",checked:a,onChange:g,className:"h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary"})}),t.jsxs("div",{className:"flex items-center gap-md",children:[n&&t.jsx("span",{className:"flex items-center text-text-secondary",children:n}),t.jsx("h3",{className:"text-xl font-semibold text-text-primary",children:e})]})]}),f&&t.jsx("button",{onClick:p,className:"rounded-lg border-none bg-transparent px-md py-xs text-base text-text-muted transition-colors duration-fast hover:text-text-primary",title:d?"Collapse":"Expand",children:d?"▼":"▶"})]}),m&&t.jsx("div",{className:"mt-xl flex flex-col gap-xl",children:r})]})},zh=({label:e,labelSuffix:n,children:r,inline:s=!1,className:a=""})=>t.jsxs("div",{className:`flex ${s?"items-center justify-between":"flex-col"} gap-sm ${a}`,children:[t.jsxs("label",{className:"flex items-center justify-between text-base font-medium text-text-secondary",children:[t.jsx("span",{children:e}),n&&t.jsx("span",{className:"font-semibold text-accent-primary",children:n})]}),t.jsx("div",{className:s?"flex-shrink-0":"",children:r})]});function Oh({options:e,value:n,onChange:r,fullWidth:s=!0,className:a=""}){return t.jsx("div",{className:`flex gap-sm ${a}`,children:e.map(o=>{const l=o.value===n;return t.jsxs("button",{onClick:()=>!o.disabled&&r(o.value),disabled:o.disabled,title:o.tooltip,className:` ${s?"flex-1":""} flex items-center justify-center gap-xs rounded-lg border px-md py-sm text-base font-medium transition-all duration-fast ${l?"border-accent-primary bg-accent-primary text-text-on-accent":"border-border-primary bg-bg-tertiary text-text-secondary hover:border-border-secondary hover:bg-bg-hover hover:text-text-primary"} ${o.disabled?"cursor-not-allowed opacity-disabled":"cursor-pointer"} `,children:[o.icon&&t.jsx("span",{className:"flex items-center",children:o.icon}),t.jsx("span",{children:o.label})]},String(o.value))})})}const _h=({label:e,icon:n,checked:r,onChange:s,disabled:a=!1,className:o=""})=>{const l=d=>{s(d.target.checked)};return t.jsxs("label",{className:`flex cursor-pointer items-center gap-md ${a?"cursor-not-allowed opacity-disabled":""} ${o}`,children:[t.jsx("input",{type:"checkbox",checked:r,onChange:l,disabled:a,className:"h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary disabled:cursor-not-allowed"}),t.jsxs("span",{className:"flex items-center gap-sm text-base font-medium text-text-primary",children:[n&&t.jsx("span",{className:"flex items-center text-text-secondary",children:n}),t.jsx("span",{children:e})]})]})},Ph=({checked:e,onChange:n,label:r,disabled:s=!1,className:a=""})=>{const o=()=>{s||n(!e)};return t.jsxs("label",{className:`flex items-center gap-md cursor-pointer select-none ${s?"opacity-50 cursor-not-allowed":""} ${a}`.trim(),children:[t.jsx("input",{type:"checkbox",checked:e,onChange:o,disabled:s,className:"absolute opacity-0 w-0 h-0 peer"}),t.jsx("span",{className:`
18
+ ${Z?"border-success bg-success text-success-foreground":"border-border-medium bg-surface text-text-primary hover:border-info hover:bg-info/10"}
19
+ `,style:{fontFamily:e},children:[z,J>0&&t.jsx("span",{className:`absolute -right-[4px] -top-[4px] min-w-lg rounded-full border-2 border-surface px-xs py-[2px] text-center text-3xs font-semibold leading-none shadow-md ${Z?"bg-success text-success-foreground":"bg-info text-info-foreground"}`,children:J})]},W)})})]}),!f&&e&&h.length>0&&t.jsx(t.Fragment,{children:Object.entries(H).map(([z,W])=>{const Z=W.filter(M=>h.includes(M.tag));return Z.length===0?null:t.jsxs("div",{className:"mb-lg",children:[t.jsx("div",{className:"mb-sm text-2xs font-semibold uppercase tracking-wide text-text-secondary",children:z}),t.jsx("div",{className:"flex flex-col gap-sm",children:Z.map(M=>t.jsxs("label",{className:"flex cursor-pointer items-start gap-sm rounded p-xs transition-colors duration-fast hover:bg-surface",children:[t.jsx("input",{type:"checkbox",checked:(s==null?void 0:s[M.tag])||!1,onChange:()=>O(M.tag),className:"mt-[2px] h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary"}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"text-sm font-medium",children:M.label}),t.jsx("div",{className:"mt-[2px] text-2xs text-text-secondary",children:M.description})]})]},M.tag))})]},z)})})]}),e&&t.jsx(lu,{isOpen:p,onClose:()=>b(!1),character:T,charIndex:x,fontFamily:e,fontWeight:n,currentGlyphOverride:a.find(z=>z.charIndex===x),onSelectGlyph:G,browseAll:w})]})},uu=({element:e,onElementUpdate:n,isOpen:r,onClose:s})=>{var g,p;const[a,o]=i.useState("stroke");if(!e)return null;const l=(g=e.stroke)==null?void 0:g.enabled,d=e.masks&&e.masks.length>0,u=(p=e.distressEffect)==null?void 0:p.enabled,h=e.blendMode==="knockout"||e.blendMode==="clip",m=e instanceof U.TextElement,f=m&&(e.glyphOverrides&&e.glyphOverrides.length>0||e.openTypeFeatures&&Object.keys(e.openTypeFeatures).length>0);return t.jsx(yn,{isOpen:r,onClose:s,title:"Layer Effects",description:"Configure stroke, masks, distress, and knockout effects",maxHeight:"90vh",placement:"right",maxWidth:"600px",children:t.jsxs(c.Tabs,{value:a,onValueChange:b=>o(b),className:"flex flex-col h-full",children:[t.jsx(c.Tabs.ListContainer,{className:"px-6",children:t.jsxs(c.Tabs.List,{"aria-label":"Effect types",children:[t.jsxs(c.Tabs.Tab,{id:"stroke",children:[t.jsx(F.Icon,{icon:V.minus,className:"size-4"}),"Stroke",l&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"masks",children:[t.jsx(F.Icon,{icon:V.group,className:"size-4"}),"Masks",d&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"distress",children:[t.jsx(F.Icon,{icon:"lucide:cloud",className:"size-4"}),"Distress",u&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"compositing",children:[t.jsx(F.Icon,{icon:V.scissors,className:"size-4"}),"Knockout",h&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]}),m&&t.jsxs(c.Tabs.Tab,{id:"typography",children:[t.jsx(F.Icon,{icon:V.text,className:"size-4"}),"Typography",f&&t.jsx(c.Badge,{variant:"default",className:"ml-2 size-2 rounded-full p-0"}),t.jsx(c.Tabs.Indicator,{})]})]})}),t.jsxs(c.Tabs.Panel,{id:"stroke",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(_d,{stroke:e.stroke,onChange:b=>{const x=e.clone();x.stroke=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(F.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Add outlines to text and shapes"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"masks",className:"flex-1 overflow-y-auto p-6",children:[t.jsx($d,{masks:e.masks,onChange:b=>{const x=e.clone();x.masks=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(F.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Use masks to control visibility"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"distress",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(nu,{distressEffect:e.distressEffect,onChange:b=>{const x=e.clone();x.distressEffect=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(F.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Add vintage/grunge effects for t-shirt designs"})]})})]}),t.jsxs(c.Tabs.Panel,{id:"compositing",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(au,{blendMode:e.blendMode,knockoutParts:e.knockoutParts,onChange:(b,x)=>{const S=e.clone();S.blendMode=b,S.knockoutParts=x,n(S)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(F.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Use Artboard scope for t-shirts, Group scope for patterns"})]})})]}),m&&t.jsxs(c.Tabs.Panel,{id:"typography",className:"flex-1 overflow-y-auto p-6",children:[t.jsx(du,{fontFamily:e.fontFamily,fontWeight:e.bold?700:400,text:e.text,openTypeFeatures:e.openTypeFeatures,glyphOverrides:e.glyphOverrides,onChange:b=>{const x=e.clone();x.openTypeFeatures=b,n(x)},onGlyphOverridesChange:b=>{const x=e.clone();x.glyphOverrides=b,n(x)}}),t.jsx("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"flex items-start gap-2 text-xs text-muted",children:[t.jsx(F.Icon,{icon:"lucide:lightbulb",className:"size-4 shrink-0 mt-0.5"}),t.jsx("span",{children:"Enable advanced OpenType features like ligatures and stylistic sets"})]})})]})]})})},ua=({isOpen:e,onClose:n,element:r,onElementUpdate:s,style:a,className:o})=>{const{selectedElement:l,executeElementUpdate:d}=je.useEditor(),u=r!==void 0?r:l||null,h=i.useCallback(m=>{s?s(m):u&&d(u,m)},[s,d,u]);return t.jsx("div",{style:a,className:o,children:t.jsx(uu,{element:u,onElementUpdate:h,isOpen:e,onClose:n})})},hu=Object.freeze(Object.defineProperty({__proto__:null,EffectsPanel:ua},Symbol.toStringTag,{value:"Module"})),vo=U.createLogger("ExportPanel"),ha=({showContinuousExport:e=!0,defaultScale:n=3,defaultFormat:r="png",onExportComplete:s,style:a={},className:o=""})=>{const{exportArtboard:l,exportAllArtboards:d,startContinuousExport:u,stopContinuousExport:h,isExporting:m,isContinuousExporting:f,progress:g,supportsWorkerExport:p,workerStats:b}=F.useExport(),{artboardsInfo:x,activeArtboardId:S}=F.useArtboards(),[T,C]=i.useState(n),[w,R]=i.useState(r),[N,v]=i.useState(500),L=async()=>{if(S)try{const A=await l(S,{scale:T,format:w}),_=document.createElement("a"),G=x.find(H=>H.id===S),Y=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19),B=(G==null?void 0:G.name)||"artboard";_.download=`${B}-${Y}.${w}`,_.href=A,_.click(),s&&s({[S]:A})}catch(A){vo.error("Export failed:",A),alert("Export failed. Please try again.")}},D=async()=>{try{const A=await d({scale:T,format:w}),_=new Date().toISOString().replace(/[:.]/g,"-").slice(0,19);Object.entries(A).forEach(([G,Y])=>{const B=x.find(W=>W.id===G),H=(B==null?void 0:B.name)||G,z=document.createElement("a");z.download=`${H}-${_}.${w}`,z.href=Y,z.click()}),s&&s(A)}catch(A){vo.error("Export all failed:",A),alert("Export failed. Please try again.")}},O=()=>{f?h():u({interval:N,scale:T,format:w,onChange:A=>{s&&s(A)}})};return t.jsxs("div",{className:`export-panel ${o}`,style:{width:300,padding:16,backgroundColor:"var(--bg-primary)",border:"1px solid var(--border-primary)",borderRadius:8,...a},children:[t.jsx("h3",{style:{margin:"0 0 16px 0",fontSize:16,fontWeight:600},children:"Export Settings"}),t.jsxs("div",{style:{marginBottom:16},children:[t.jsx("label",{htmlFor:"export-scale",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Scale"}),t.jsxs("select",{id:"export-scale",value:T,onChange:A=>C(Number(A.target.value)),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:1,children:"1x (Original)"}),t.jsx("option",{value:2,children:"2x (Retina)"}),t.jsx("option",{value:3,children:"3x (High-Res)"}),t.jsx("option",{value:4,children:"4x (Ultra)"})]}),t.jsx("label",{htmlFor:"export-format",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Format"}),t.jsxs("select",{id:"export-format",value:w,onChange:A=>R(A.target.value),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:"png",children:"PNG (Transparent)"}),t.jsx("option",{value:"jpg",children:"JPEG (Smaller)"})]}),e&&t.jsxs(t.Fragment,{children:[t.jsx("label",{htmlFor:"export-interval",style:{display:"block",fontSize:13,marginBottom:4,fontWeight:500},children:"Continuous Export Interval"}),t.jsxs("select",{id:"export-interval",value:N,onChange:A=>v(Number(A.target.value)),style:{width:"100%",padding:8,fontSize:13,border:"1px solid var(--border-primary)",borderRadius:4,marginBottom:12},children:[t.jsx("option",{value:250,children:"250ms (Fast)"}),t.jsx("option",{value:500,children:"500ms (Recommended)"}),t.jsx("option",{value:1e3,children:"1s (Slow)"}),t.jsx("option",{value:2e3,children:"2s (Very Slow)"})]})]})]}),t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8,marginBottom:16},children:[t.jsxs("button",{onClick:L,disabled:m||!S,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:"var(--accent-primary)",color:"var(--primary-foreground)",border:"none",borderRadius:6,cursor:m||!S?"not-allowed":"pointer",fontSize:14,fontWeight:500,opacity:m||!S?.5:1},children:[t.jsx(F.Icon,{icon:V.download,className:"size-4"}),m?"Exporting...":"Export Active Artboard"]}),t.jsxs("button",{onClick:D,disabled:m||x.length===0,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:"var(--bg-secondary)",color:"var(--text-primary)",border:"1px solid var(--border-primary)",borderRadius:6,cursor:m||x.length===0?"not-allowed":"pointer",fontSize:14,fontWeight:500,opacity:m||x.length===0?.5:1},children:[t.jsx(F.Icon,{icon:V.image,className:"size-4"}),m?"Exporting...":"Export All Artboards"]}),e&&t.jsxs("button",{onClick:O,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:8,padding:12,backgroundColor:f?"var(--danger)":"var(--success)",color:f?"var(--danger-foreground)":"var(--success-foreground)",border:"none",borderRadius:6,cursor:"pointer",fontSize:14,fontWeight:500},children:[f?t.jsx(F.Icon,{icon:V.pause,className:"size-4"}):t.jsx(F.Icon,{icon:V.play,className:"size-4"}),f?"Stop Continuous Export":"Start Continuous Export"]})]}),g.length>0&&t.jsxs("div",{style:{padding:12,backgroundColor:"var(--bg-secondary)",borderRadius:6,fontSize:12,marginBottom:16},children:[t.jsx("div",{style:{fontWeight:600,marginBottom:8},children:"Export Progress"}),g.slice(-3).map(A=>t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:4},children:[t.jsx("span",{children:A.artboardName}),t.jsx("span",{style:{color:A.status==="complete"?"var(--success)":"var(--text-secondary)"},children:A.status==="complete"?"✓":A.status==="error"?"✗":"..."})]},A.artboardId))]}),p&&t.jsxs("div",{style:{padding:12,backgroundColor:"var(--bg-secondary)",borderRadius:6,fontSize:11},children:[t.jsx("div",{style:{fontWeight:600,marginBottom:4},children:"Worker Export Enabled ✓"}),t.jsxs("div",{style:{opacity:.7},children:["Total Exports: ",b.totalExports,t.jsx("br",{}),"Avg Time: ",b.avgExportTime.toFixed(0),"ms"]})]})]})},fu=Object.freeze(Object.defineProperty({__proto__:null,ExportPanel:ha},Symbol.toStringTag,{value:"Module"})),xr={},pu=U.createLogger("nounProjectApi"),mu=(xr==null?void 0:xr.VITE_NOUN_PROJECT_PROXY_URL)||"http://localhost:3001",gu=mu,On=()=>!0,xu=e=>{var s,a,o;const n=(s=e.icon_url)==null?void 0:s.includes(".svg"),r=n?e.icon_url:void 0;return{id:`noun-${e.id}`,urls:{svg:r,png:e.icon_url&&!n?e.icon_url:e.thumbnail_url,preview:e.preview_url_200||e.preview_url_84||e.thumbnail_url,thumbnail:e.thumbnail_url},term:e.term,attribution:e.attribution||null,uploader:{name:((a=e.creator)==null?void 0:a.name)||"Unknown",username:((o=e.creator)==null?void 0:o.username)||"unknown"},source:"noun-project"}},Qt=async(e,n={})=>{if(!On())throw new Error("Noun Project API keys not configured");const{limit:r=30,includeSvg:s=!0,limitToPublicDomain:a=!0,nextPage:o}=n,l={query:e,limit:r.toString()};s&&(l.include_svg="1"),a&&(l.limit_to_public_domain="1"),o&&(l.next_page=o);const d=`${gu}/v2/icon`,u=Object.keys(l).map(g=>`${encodeURIComponent(g)}=${encodeURIComponent(l[g])}`).join("&"),h=`${d}?${u}`;let m;if(m=await fetch(h,{method:"GET",headers:{Accept:"application/json"}}),!m.ok){const g=await m.text();throw pu.error("Noun Project API error:",g),new Error(`Failed to search icons: ${m.status} ${m.statusText}`)}const f=await m.json();return{results:f.icons.map(xu),nextPage:f.next_page||null}},bu=async e=>{const n=["design","business","technology","nature","food"],r=n[Math.floor(Math.random()*n.length)],{results:s}=await Qt(r,e);return s},br={},fa=U.createLogger("recraftApi"),jo=[{value:"realistic_image",label:"Realistic Image",substyles:["b_and_w","enterprise","evening_light","faded_nostalgia","forest_life","hard_flash","hdr","motion_blur","mystic_naturalism","natural_light","natural_tones","organic_calm","real_life_glow","retro_realism","retro_snapshot","studio_portrait","urban_drama","village_realism","warm_folk"]},{value:"digital_illustration",label:"Digital Illustration",substyles:["2d_art_poster","2d_art_poster_2","antiquarian","bold_fantasy","child_book","cover","crosshatch","digital_engraving","engraving_color","expressionism","freehand_details","grain","grain_20","graphic_intensity","hand_drawn","hand_drawn_outline","handmade_3d","hard_comics","infantile_sketch","long_shadow","modern_folk","multicolor","neon_calm","noir","nostalgic_pastel","outline_details","pastel_gradient","pastel_sketch","pixel_art","plastic","pop_art","pop_renaissance","seamless","street_art","tablet_sketch","urban_glow","urban_sketching","young_adult_book","young_adult_book_2"]},{value:"vector_illustration",label:"Vector Illustration",substyles:["bold_stroke","chemistry","colored_stencil","cosmics","cutout","depressive","editorial","emotional_flat","engraving","line_art","line_circuit","linocut","marker_outline","mosaic","naivector","roundish_flat","seamless","segmented_colors","sharp_contrast","thin","vector_photo","vivid_shapes"]}],yu="https://external.api.recraft.ai/v1";function _n(){const e=(br==null?void 0:br.VITE_RECRAFT_API_TOKEN)||"";return e!==""&&e!=="YOUR_API_TOKEN_HERE"}async function vu(e,n,r,s={}){if(!_n())throw new Error("Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file.");const a=void 0,o={prompt:e.trim(),style:n,model:"recraftv3"};r&&(o.substyle=r),s.size&&(o.size=s.size),s.n&&(o.n=s.n);try{const l=await fetch(`${yu}/images/generations`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(o)});if(!l.ok){const m=await l.text();throw new Error(`Recraft API error (${l.status}): ${m}`)}const d=await l.json();if(!d.data||d.data.length===0)throw new Error("No images returned from Recraft API");const u=d.data[0],h=n==="vector_illustration"||n==="digital_illustration"?"svg":"png";return{id:d.id,url:u.url,prompt:e,style:n,format:h,created:d.created}}catch(l){throw fa.error("Error generating image with Recraft:",l),l}}async function ju(e){try{const n=await fetch(e);if(!n.ok)throw new Error(`Failed to download image: ${n.status}`);if((n.headers.get("content-type")||"").includes("svg")){const s=await n.text();return`data:image/svg+xml;base64,${btoa(s)}`}else{const s=await n.blob();return URL.createObjectURL(s)}}catch(n){throw fa.error("Error downloading Recraft image:",n),n}}const yr={},Br=(yr==null?void 0:yr.VITE_FAL_API_KEY)||"";function en(){return Br!==""&&Br!=="YOUR_FAL_KEY_HERE"}async function Co(e,n={}){if(!en())throw new Error("fal.ai API key not configured. Set VITE_FAL_API_KEY in your .env file.");const r={image_url:e,sync_mode:n.syncMode??!1};try{const s=await fetch("https://fal.run/fal-ai/bria/background/remove",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Key ${Br}`},body:JSON.stringify(r)});if(!s.ok){const o=await s.text();throw new Error(`fal.ai API error (${s.status}): ${o}`)}const a=await s.json();if(!a.image||!a.image.url)throw new Error("Invalid response from fal.ai API");return a}catch(s){throw s instanceof Error?s:new Error("Failed to remove background")}}async function wo(e){const r=await(await fetch(e)).blob();return new Promise((s,a)=>{const o=new FileReader;o.onloadend=()=>s(o.result),o.onerror=a,o.readAsDataURL(r)})}function So(e){if(e.startsWith("data:"))return e.startsWith("data:image/svg+xml");const n=e.toLowerCase();return n.endsWith(".svg")||n.includes(".svg?")||n.includes(".svg#")}async function To(e,n=2048){return new Promise((r,s)=>{const a=new Image;a.crossOrigin="anonymous",a.onload=()=>{try{let o=a.width||a.naturalWidth,l=a.height||a.naturalHeight;if((o===0||l===0)&&(o=1024,l=1024),o>n){const m=n/o;o=n,l=l*m}const d=document.createElement("canvas");d.width=o,d.height=l;const u=d.getContext("2d");if(!u){s(new Error("Failed to get canvas context"));return}u.clearRect(0,0,o,l),u.drawImage(a,0,0,o,l);const h=d.toDataURL("image/png");r(h)}catch(o){s(o)}},a.onerror=()=>{s(new Error("Failed to load SVG image"))},a.src=e})}const vr={},Cu=U.createLogger("runwareApi"),Ur=(vr==null?void 0:vr.VITE_RUNWARE_API_KEY)||"",Wr=[{id:"runware:101@1",name:"Flux Dev",description:"High-quality generation with excellent detail and composition",supportsSteps:!0,supportsCFGScale:!0,supportsNegativePrompt:!0},{id:"google:4@2",name:"Nano Banana 2 Pro",description:"Advanced Google model for controlled visual creation",supportsSteps:!1,supportsCFGScale:!1,supportsNegativePrompt:!1}];let jr=null;function an(){return Ur!==""&&Ur!=="YOUR_RUNWARE_KEY_HERE"}async function wu(){if(!jr){if(!an())throw new Error("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");jr=await xl.Runware.initialize({apiKey:Ur,timeoutDuration:6e4})}return jr}async function Su(e){var n;if(!an())throw new Error("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");try{const r=await wu(),s=Wr.find(h=>h.id===e.model),a=(s==null?void 0:s.supportsSteps)??!0,o=(s==null?void 0:s.supportsCFGScale)??!0,l=(s==null?void 0:s.supportsNegativePrompt)??!0,d={positivePrompt:e.prompt,model:e.model,width:e.width||1024,height:e.height||1024,numberResults:1,outputFormat:"PNG"};a&&(d.steps=e.steps||25),o&&(d.CFGScale=e.cfgScale||7),l&&e.negativePrompt&&(d.negativePrompt=e.negativePrompt);const u=await r.requestImages(d);if(!u||u.length===0)throw new Error("No images generated from Runware API");return{images:u.map(h=>({imageURL:h.imageURL||"",imageUUID:h.imageUUID||"",width:e.width||1024,height:e.height||1024})),taskUUID:((n=u[0])==null?void 0:n.taskUUID)||""}}catch(r){throw Cu.error("Runware API error:",r),r instanceof Error?new Error(`Runware API error: ${r.message}`):new Error("Failed to generate image with Runware")}}async function Tu(e){const r=await(await fetch(e)).blob();return new Promise((s,a)=>{const o=new FileReader;o.onloadend=()=>s(o.result),o.onerror=a,o.readAsDataURL(r)})}const Ht={},Ot=U.createLogger("ImageBrowser"),ku="1px",Cr="1px",ko=i.memo(function({image:n,onImageSelect:r,fixedHeight:s=!1}){const[a,o]=i.useState(!1),[l,d]=i.useState(!1),[u,h]=i.useState("top"),m=i.useRef(null),f=i.useRef(null),g=i.useRef(null),p=i.useRef(!0),[b,x]=i.useState(!1),S=i.useRef(null),T=()=>{l||r(n)},C=G=>{if(!g.current)return"top";const Y=g.current.getBoundingClientRect(),B=G.clientX-Y.left,H=G.clientY-Y.top,z=Y.width,W=Y.height,Z={top:H,bottom:W-H,left:B,right:z-B},M=Math.min(Z.top,Z.bottom,Z.left,Z.right);return M===Z.top?"top":M===Z.bottom?"bottom":M===Z.left?"left":"right"},w=G=>{const Y=C(G);S.current&&(cancelAnimationFrame(S.current),S.current=null),Y!==u?(x(!0),h(Y),S.current=requestAnimationFrame(()=>{S.current=requestAnimationFrame(()=>{x(!1),o(!0),S.current=null})})):(h(Y),o(!0)),p.current=!1},R=G=>{S.current&&(cancelAnimationFrame(S.current),S.current=null);const Y=C(G);h(Y),x(!1),o(!1)},N=()=>{f.current&&(clearTimeout(f.current),f.current=null),m.current=setTimeout(()=>{d(!0)},400)},v=()=>{m.current&&(clearTimeout(m.current),m.current=null),d(!1)},L=()=>{m.current&&(clearTimeout(m.current),m.current=null),f.current&&(clearTimeout(f.current),f.current=null)},D=()=>{d(!1)},O=n.source==="unsplash"?"Unsplash":"Pixabay",A=a||l,_=()=>{if(!a)return`scale(${1.12})`;switch(u){case"top":return`scale(${1.12}) translateY(5%)`;case"bottom":return`scale(${1.12}) translateY(-5%)`;case"left":return`scale(${1.12}) translateX(5%)`;case"right":return`scale(${1.12}) translateX(-5%)`;default:return`scale(${1.12})`}};return t.jsxs("div",{ref:g,onClick:T,onMouseEnter:w,onMouseLeave:R,className:`group relative cursor-pointer overflow-hidden ${s?"h-full rounded-xs":"break-inside-avoid rounded-lg"}`,children:[t.jsx("img",{src:n.urls.small,alt:n.alt_description||"Image",className:`duration-500 ease-out ${b?"transition-none":"transition-transform"} ${s?"h-full w-full object-cover":"w-full object-cover"}`,style:{transform:_(),filter:a?"brightness(1)":"brightness(0.95)"}}),t.jsx("div",{className:"absolute top-2 right-2 z-10",children:t.jsx("button",{className:`relative flex h-6 w-6 items-center justify-center rounded-full bg-black/30 backdrop-blur-sm transition-all duration-300 ease-in-out hover:scale-110 ${A?"opacity-100":"pointer-events-none opacity-0"}`,"aria-label":"Image info",onMouseEnter:N,onMouseLeave:v,children:t.jsx(F.Icon,{icon:"lucide:aperture",className:"size-4 text-white/80"})})}),t.jsx("div",{className:`absolute inset-x-0 bottom-0 z-0 bg-linear-to-t from-black/80 via-black/60 to-transparent px-3 py-3 pt-8 transition-transform duration-300 ease-out ${l?"translate-y-0":"translate-y-full"}`,onMouseEnter:L,onMouseLeave:D,children:t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(F.Icon,{icon:n.source==="unsplash"?"simple-icons:unsplash":"simple-icons:pixabay",className:"size-3 text-white/80"}),t.jsx("span",{className:"text-xs font-medium text-white/80",children:O})]}),t.jsxs("div",{className:"flex flex-col gap-0.5",children:[t.jsx("span",{className:"text-xs text-white/60",children:"Photo by"}),t.jsx("span",{className:"text-sm font-medium text-white",children:n.user.name})]})]})})]})}),No=i.memo(function({vector:n,onVectorSelect:r,fixedHeight:s=!1}){const[a,o]=i.useState(!1),[l,d]=i.useState(!1),u=i.useRef(null),h=i.useRef(null),m=()=>{l||r(n)},f=()=>{h.current&&(clearTimeout(h.current),h.current=null),u.current=setTimeout(()=>{d(!0)},400)},g=()=>{u.current&&(clearTimeout(u.current),u.current=null),d(!1)},p=()=>{u.current&&(clearTimeout(u.current),u.current=null),h.current&&(clearTimeout(h.current),h.current=null)},b=()=>{d(!1)},x=a||l;return t.jsxs("div",{onClick:m,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),className:`group relative cursor-pointer overflow-hidden bg-white/10 transition-all duration-300 ${s?"h-full rounded-xs":"break-inside-avoid rounded-lg"} ${a?"scale-105 bg-white/20":""}`,children:[t.jsx("div",{className:`flex items-center justify-center p-6 transition-all duration-300 ${s?"h-full w-full":"aspect-square w-full"}`,children:t.jsx("img",{src:n.urls.preview,alt:n.term,className:`max-h-full max-w-full object-contain transition-all duration-300 ${a?"scale-110":"scale-100"}`,style:{filter:a?"brightness(1.1)":"brightness(0.95)"}})}),t.jsxs("div",{className:"absolute top-2 right-2 z-10 flex items-center gap-2",children:[!n.urls.svg&&t.jsx("span",{className:`rounded-xs bg-amber-500/90 px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-white shadow-sm transition-all duration-300 ease-in-out ${x?"opacity-100":"pointer-events-none opacity-0"}`,children:"PNG"}),t.jsx("button",{className:`relative flex h-6 w-6 items-center justify-center rounded-full bg-black/30 backdrop-blur-sm transition-all duration-300 ease-in-out hover:scale-110 ${x?"opacity-100":"pointer-events-none opacity-0"}`,"aria-label":"Vector info",onMouseEnter:f,onMouseLeave:g,children:t.jsx(F.Icon,{icon:"lucide:aperture",className:"size-4 text-white/80"})})]}),t.jsxs("div",{className:`absolute inset-x-0 bottom-0 z-0 bg-linear-to-t from-black/80 via-black/60 to-transparent px-3 py-3 pt-8 transition-transform duration-300 ease-out ${l?"translate-y-0":"translate-y-full"}`,onMouseEnter:p,onMouseLeave:b,children:[t.jsxs("div",{className:"mb-1",children:[t.jsx(F.Icon,{icon:"mdi:cube-outline",className:"mr-2 inline-block size-3 text-white/80"}),t.jsx("span",{className:"text-xs font-medium text-white/80",children:"Noun Project"})]}),t.jsx("div",{className:"text-xs text-white/60",children:"Icon by"}),t.jsx("div",{className:"text-sm font-medium text-white",children:n.uploader.name})]})]})}),Nu=({isOpen:e,onToggle:n,onImageSelect:r,currentImageUrl:s,placement:a="bottom"})=>{var St;const[o,l]=i.useState(""),[d,u]=i.useState(""),[h,m]=i.useState([]),[f,g]=i.useState(!1),[p,b]=i.useState(null),[x,S]=i.useState("search"),[T,C]=i.useState(1),[w,R]=i.useState(1),[N,v]=i.useState(!0),[L,D]=i.useState([]),[O,A]=i.useState("masonry"),[_,G]=i.useState(""),[Y,B]=i.useState([]),[H,z]=i.useState(!1),[W,Z]=i.useState(null),[M,J]=i.useState(null),[K,q]=i.useState(!0),[Q,ge]=i.useState("grid"),[re,$]=i.useState(!1),[P,ee]=i.useState("runware"),[oe,ue]=i.useState(""),[Fe,be]=i.useState("vector_illustration"),[xe,We]=i.useState(""),[He,qe]=i.useState("runware:101@1"),[vt,Rt]=i.useState(!1),[dt,Le]=i.useState(null),[Je,Ze]=i.useState(null),[k,de]=i.useState(null),[ut,Ae]=i.useState(!1),[Re,Ce]=i.useState(null),Ke=i.useRef(null),ot=i.useRef(null),Ge=i.useRef(null),ke=(Ht==null?void 0:Ht.VITE_UNSPLASH_ACCESS_KEY)||(typeof U.process$1<"u"?U.process$1.env.NEXT_PUBLIC_UNSPLASH_ACCESS_KEY:void 0)||"YOUR_ACCESS_KEY_HERE",Qe=(Ht==null?void 0:Ht.VITE_PIXABAY_API_KEY)||(typeof U.process$1<"u"?U.process$1.env.NEXT_PUBLIC_PIXABAY_API_KEY:void 0)||"YOUR_ACCESS_KEY_HERE",jt=["907841","LZDKIWvumJc","19740055","iTaneIvWKvE","8354123","2538204","8262349","6714897","uYpFBR3_CTc"],at=I=>({id:`pixabay-${I.id}`,urls:{raw:I.largeImageURL,full:I.largeImageURL,regular:I.largeImageURL,small:I.webformatURL,thumb:I.previewURL},alt_description:I.tags,user:{name:I.user,username:I.user},width:I.imageWidth,height:I.imageHeight,source:"pixabay"}),et=I=>({id:`unsplash-${I.id}`,urls:I.urls,alt_description:I.alt_description,user:I.user,width:I.width,height:I.height,source:"unsplash"});i.useEffect(()=>{e&&s&&(u(s),S("url"))},[e,s]),i.useEffect(()=>{e||(l(""),u(""),m([]),b(null),C(1),R(1),v(!0),D([]),G(""),B([]),Z(null),J(null),q(!0))},[e]),i.useEffect(()=>{e&&!o&&x==="search"&&h.length===0&&ht()},[e,x]);const ht=async()=>{g(!0),b(null);try{const I=[];if(ke!=="YOUR_ACCESS_KEY_HERE"){const he=jt.filter(Te=>!L.includes(Te)),pe=[...he.length>=2?he:jt].sort(()=>Math.random()-.5).slice(0,2);pe.forEach(Te=>{I.push(fetch(`https://api.unsplash.com/collections/${Te}/photos?per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}))}),D(Te=>{const _e=[...Te,...pe];return _e.length>=jt.length?pe:_e})}if(Qe!=="YOUR_ACCESS_KEY_HERE"&&I.push(fetch(`https://pixabay.com/api/?key=${Qe}&per_page=30&image_type=photo&order=popular`)),I.length===0)throw new Error("No API keys configured. Please set VITE_UNSPLASH_ACCESS_KEY or VITE_PIXABAY_API_KEY.");const X=await Promise.all(I);if(X.filter(he=>!he.ok).length===X.length)throw new Error("Failed to load images from all sources");const le=[];for(let he=0;he<X.length;he++){if(!X[he].ok)continue;const ce=await X[he].json();if("hits"in ce){const me=ce.hits.map(at);le.push(...me)}else{const me=ce.map(et);le.push(...me)}}const j=le.sort(()=>Math.random()-.5);m(j),v(!0)}catch(I){b(I instanceof Error?I.message:"Failed to load images"),Ot.error("Error loading featured images:",I)}finally{g(!1)}},Mt=async(I,X=1,ae=1)=>{if(!I.trim()){ht();return}g(!0),b(null);try{if(X===1&&ae===1){const le=[];if(ke!=="YOUR_ACCESS_KEY_HERE"&&le.push(fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=1&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}),fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=2&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}})),Qe!=="YOUR_ACCESS_KEY_HERE"&&le.push(fetch(`https://pixabay.com/api/?key=${Qe}&q=${encodeURIComponent(I)}&page=1&per_page=30&image_type=photo`)),le.length===0)throw new Error("No API keys configured. Please set VITE_UNSPLASH_ACCESS_KEY or VITE_PIXABAY_API_KEY.");const j=await Promise.all(le);if(j.filter(pe=>!pe.ok).length===j.length)throw new Error("Failed to search images from all sources");const ce=[];for(let pe=0;pe<j.length;pe++){if(!j[pe].ok)continue;const Te=await j[pe].json();if("hits"in Te){const _e=Te.hits.map(at);ce.push(..._e)}else{const _e=Te.results.map(et);ce.push(..._e)}}const me=ce.sort(()=>Math.random()-.5);m(me),v(ce.length>0)}else{const le=[];ke!=="YOUR_ACCESS_KEY_HERE"&&le.push(fetch(`https://api.unsplash.com/search/photos?query=${encodeURIComponent(I)}&page=${X+2}&per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}})),Qe!=="YOUR_ACCESS_KEY_HERE"&&le.push(fetch(`https://pixabay.com/api/?key=${Qe}&q=${encodeURIComponent(I)}&page=${ae+1}&per_page=30&image_type=photo`));const j=await Promise.all(le),he=[];for(let me=0;me<j.length;me++){if(!j[me].ok)continue;const pe=await j[me].json();if("hits"in pe){const Te=pe.hits.map(at);he.push(...Te)}else{const Te=pe.results.map(et);he.push(...Te)}}const ce=he.sort(()=>Math.random()-.5);m(me=>[...me,...ce]),v(he.length>0)}}catch(le){b(le instanceof Error?le.message:"Failed to search images"),Ot.error("Error searching images:",le)}finally{g(!1)}},Ct=I=>{I.preventDefault(),C(1),R(1),Mt(o,1,1)},ft=i.useCallback(async()=>{if(!(f||!N)){if(o.trim()){const I=T+1,X=w+1;C(I),R(X),Mt(o,I,X);return}g(!0),b(null);try{const I=[];if(ke!=="YOUR_ACCESS_KEY_HERE"){const j=jt.filter(pe=>!L.includes(pe)),me=[...j.length>=2?j:jt].sort(()=>Math.random()-.5).slice(0,2);me.forEach(pe=>{I.push(fetch(`https://api.unsplash.com/collections/${pe}/photos?per_page=30`,{headers:{Authorization:`Client-ID ${ke}`}}))}),D(pe=>{const Te=[...pe,...me];return Te.length>=jt.length?me:Te})}if(Qe!=="YOUR_ACCESS_KEY_HERE"){const j=w+1;I.push(fetch(`https://pixabay.com/api/?key=${Qe}&page=${j}&per_page=30&image_type=photo&order=popular`)),R(j)}const X=await Promise.all(I),ae=[];for(let j=0;j<X.length;j++){if(!X[j].ok)continue;const he=await X[j].json();if("hits"in he){const ce=he.hits.map(at);ae.push(...ce)}else{const ce=he.map(et);ae.push(...ce)}}const le=ae.sort(()=>Math.random()-.5);m(j=>[...j,...le]),v(ae.length>0)}catch(I){b(I instanceof Error?I.message:"Failed to load more images"),Ot.error("Error loading more images:",I)}finally{g(!1)}}},[f,N,o,T,w,L,ke,Qe]);i.useEffect(()=>{const I=Ke.current;if(!I||!e||x!=="search")return;const X=new IntersectionObserver(ae=>{ae[0].isIntersecting&&N&&!f&&ft()},{root:null,rootMargin:"200px",threshold:0});return X.observe(I),()=>{X.disconnect()}},[e,x,N,f,ft]),i.useEffect(()=>{e&&!_&&x==="vector"&&Y.length===0&&On()&&It()},[e,x]);const It=async()=>{z(!0),Z(null);try{const I=await bu({limit:30,includeSvg:!0});B(I),q(!0)}catch(I){const X=I instanceof Error?I.message:"Failed to load vectors";X.includes("Failed to fetch")||X.includes("NetworkError")?Z('Cannot connect to proxy server. Make sure to run "npm run dev:proxy" in a separate terminal.'):Z(X),Ot.error("Error loading featured vectors:",I)}finally{z(!1)}},we=async(I,X)=>{if(!I.trim()&&!X){It();return}z(!0),Z(null);try{const ae=!re,{results:le,nextPage:j}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:ae,nextPage:X});if(le.length>0){if(X?B(he=>{const ce=new Set(he.map(pe=>pe.id)),me=le.filter(pe=>!ce.has(pe.id));return[...he,...me]}):(B(le),$(!1)),J(j),q(j!==null),!X&&ae&&!j&&le.length<30){$(!0);const{results:he,nextPage:ce}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});B(me=>{const pe=new Set(me.map(_e=>_e.id)),Te=he.filter(_e=>!pe.has(_e.id));return[...me,...Te]}),J(ce),q(ce!==null)}}else if(!re&&!X){$(!0);const{results:he,nextPage:ce}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});B(he),J(ce),q(ce!==null)}else if(ae&&X&&!j){$(!0);const{results:he,nextPage:ce}=await Qt(I,{limit:30,includeSvg:!0,limitToPublicDomain:!1});B(me=>{const pe=new Set(me.map(_e=>_e.id)),Te=he.filter(_e=>!pe.has(_e.id));return[...me,...Te]}),J(ce),q(ce!==null)}else q(!1),J(null)}catch(ae){const le=ae instanceof Error?ae.message:"Failed to search vectors";le.includes("Failed to fetch")||le.includes("NetworkError")?Z('Cannot connect to proxy server. Make sure to run "npm run dev:proxy" in a separate terminal.'):Z(le),Ot.error("Error searching vectors:",ae)}finally{z(!1)}},ze=I=>{I.preventDefault(),we(_)},Ie=i.useCallback(async()=>{H||!K||!M||(_.trim()?we(_,M):It())},[H,K,M,_]);i.useEffect(()=>{const I=ot.current;if(!I||!e||x!=="vector")return;const X=new IntersectionObserver(ae=>{ae[0].isIntersecting&&K&&!H&&Ie()},{root:null,rootMargin:"200px",threshold:0});return X.observe(I),()=>{X.disconnect()}},[e,x,K,H,Ie]);const it=I=>{let X=I.urls.svg||I.urls.png;const le=X.startsWith("http://localhost:3001")?X:`http://localhost:3001/proxy-image?url=${encodeURIComponent(X)}`;r(le),n(!1)},De=I=>{r(I.urls.regular),n(!1)},Oe=I=>{I.preventDefault(),d.trim()&&(r(d.trim()),n(!1))},Ve=I=>{var ae;const X=(ae=I.target.files)==null?void 0:ae[0];if(X&&X.type.startsWith("image/")){const le=new FileReader;le.onload=j=>{var ce;const he=(ce=j.target)==null?void 0:ce.result;u(he)},le.readAsDataURL(X)}},wt=()=>{var I;(I=Ge.current)==null||I.click()},Se=async()=>{if(!d.trim()){Ce("No image URL provided");return}if(!en()){Ce("fal.ai API key not configured. Set VITE_FAL_API_KEY in your .env file.");return}Ae(!0),Ce(null);try{let I=d;So(d)&&(I=await To(d));const X=await Co(I,{syncMode:!1}),ae=await wo(X.image.url);u(ae)}catch(I){const X=I instanceof Error?I.message:"Failed to remove background";Ce(X),Ot.error("Error removing background:",I)}finally{Ae(!1)}},lt=async I=>{if(I.preventDefault(),!oe.trim()){Le("Please enter a prompt");return}if(P==="recraft"&&!_n()){Le("Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file.");return}if(P==="runware"&&!an()){Le("Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file.");return}Rt(!0),Le(null),Ze(null),de(null);try{if(P==="recraft"){const X=await vu(oe,Fe,xe||void 0);Ze(X);const ae=await ju(X.url);de(ae)}else{const X=await Su({prompt:oe,model:He,width:1024,height:1024,steps:25,cfgScale:7}),ae=await Tu(X.images[0].imageURL);de(ae)}}catch(X){const ae=X instanceof Error?X.message:"Failed to generate image";Le(ae),Ot.error("Error generating AI image:",X)}finally{Rt(!1)}},tt=()=>{k&&(r(k),n(!1))},nt=(I,X)=>{const ae=I.width/I.height;return X%12===0&&ae>.8&&ae<1.2?"col-span-2 row-span-2":ae<.75?"row-span-2":ae>1.5?"col-span-2":""};return t.jsx(yn,{isOpen:e,onClose:()=>n(!1),title:"Image Browser",description:"Browse Unsplash images or enter a custom image URL",placement:a,height:a==="bottom"?"90vh":void 0,width:a!=="bottom"?"500px":void 0,hideHandle:!0,hideVisibleTitle:!0,showCloseButton:!1,"data-testid":"image-browser-drawer",children:t.jsxs(c.Tabs,{value:x,onValueChange:I=>S(I),className:"flex flex-col","data-testid":"image-browser-container",children:[t.jsx(c.Tabs.ListContainer,{className:"flex justify-center pt-4 pb-2",children:t.jsxs(c.Tabs.List,{className:"h-14 gap-1 px-1.5 md:h-12","aria-label":"Image source",children:[t.jsxs(c.Tabs.Tab,{id:"search",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-search",children:[t.jsx(F.Icon,{icon:V.image,className:"size-6"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"url",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-url",children:[t.jsx(F.Icon,{icon:V.link,className:"size-6"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"vector",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-vector",children:[t.jsx(F.Icon,{icon:"fa6-solid:icons",className:"size-5"}),t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"ai",className:"h-11 w-14 px-0 md:h-9 md:w-11","data-testid":"image-tab-ai",children:[t.jsx(Kn,{size:24}),t.jsx(c.Tabs.Indicator,{})]})]})}),t.jsxs(c.Tabs.Panel,{id:"search",className:"flex flex-col",children:[t.jsxs("form",{onSubmit:Ct,className:"sticky top-0 z-9 flex gap-2 bg-surface px-6 pt-4 pb-3",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search for images",children:t.jsx(c.Input,{type:"text",placeholder:"Search for images...",value:o,onChange:I=>l(I.target.value),variant:"subtle","data-testid":"image-search-input"})}),t.jsx(c.Button,{type:"submit",size:"icon",variant:"secondary",disabled:f,"aria-label":"Search",children:t.jsx(F.Icon,{icon:V.search,className:"size-5"})}),t.jsx(c.Button,{size:"icon",variant:"secondary",onClick:()=>A(O==="grid"?"masonry":"grid"),"aria-label":O==="grid"?"Switch to masonry view":"Switch to grid view",children:O==="grid"?t.jsx(F.Icon,{icon:"lucide:layout-grid",className:"size-5"}):t.jsx(F.Icon,{icon:V.grip,className:"size-5"})})]}),p&&t.jsxs("div",{className:"border-danger bg-danger/10 text-danger mx-6 mb-3 rounded-2xl border-2 px-4 py-3 text-sm",children:[p,p.includes("Failed")&&ke==="YOUR_ACCESS_KEY_HERE"&&t.jsx("div",{className:"mt-2 text-sm opacity-75",children:"Set VITE_UNSPLASH_ACCESS_KEY in your .env file to enable Unsplash search"})]}),f&&h.length===0&&t.jsx("div",{className:"text-muted px-6 py-8 text-center text-sm",children:"Loading images..."}),h.length>0&&t.jsxs("div",{className:"mx-6 overflow-hidden rounded-t-2xl",children:[O==="masonry"?t.jsx("div",{className:"grid grid-flow-dense pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(200px, 1fr))":"repeat(3, 1fr)",gridAutoRows:a==="bottom"?"200px":"120px",gap:ku},children:h.map((I,X)=>t.jsx("div",{className:nt(I,X),children:t.jsx(ko,{image:I,onImageSelect:De,fixedHeight:!0})},I.id))}):t.jsx("div",{className:"pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(150px, 1fr))":"repeat(auto-fill, minmax(120px, 1fr))",gap:Cr},children:h.map(I=>t.jsx("div",{style:{aspectRatio:"1 / 1"},children:t.jsx(ko,{image:I,onImageSelect:De,fixedHeight:!0})},I.id))}),N&&t.jsx("div",{ref:Ke,className:"h-px"}),f&&t.jsx("div",{className:"text-muted py-4 text-center text-sm",children:"Loading more..."}),!N&&!f&&t.jsx("div",{className:"text-muted py-6 text-center text-sm",children:"No more images"})]}),!f&&h.length===0&&o&&t.jsxs("div",{className:"text-muted px-6 py-12 text-center text-sm",children:['No images found for "',o,'"']})]}),t.jsxs(c.Tabs.Panel,{id:"url",className:"flex flex-col gap-5 p-6",children:[t.jsx("input",{ref:Ge,type:"file",accept:"image/*",onChange:Ve,className:"hidden"}),t.jsxs("button",{type:"button",onClick:wt,className:"flex flex-col items-center justify-center gap-3 rounded-2xl border-2 border-dashed border-divider bg-muted/30 px-6 py-10 transition-colors hover:bg-muted/50 active:bg-muted/60","data-testid":"image-upload-btn",children:[t.jsx(F.Icon,{icon:"lucide:upload-cloud",className:"size-10 text-foreground/60"}),t.jsxs("div",{className:"flex flex-col items-center gap-1",children:[t.jsx("span",{className:"text-base font-medium text-foreground",children:"Upload from device"}),t.jsx("span",{className:"text-xs text-muted-foreground",children:"PNG · JPG · SVG · GIF"})]})]}),t.jsxs("div",{className:"relative flex items-center gap-3",children:[t.jsx("div",{className:"h-px flex-1 bg-divider"}),t.jsx("span",{className:"text-muted-foreground text-xs uppercase tracking-wider",children:"or paste a link"}),t.jsx("div",{className:"h-px flex-1 bg-divider"})]}),t.jsxs("form",{onSubmit:Oe,className:"flex flex-col gap-3",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{className:"sr-only",children:"Image URL"}),t.jsx(c.Input,{type:"url",placeholder:"https://example.com/image.jpg",value:d,onChange:I=>u(I.target.value),variant:"subtle","data-testid":"image-url-input"})]}),t.jsx(c.Button,{type:"submit",variant:"default",disabled:!d.trim(),className:"w-full","data-testid":"image-url-submit-btn",children:"Use This Image"})]}),d.trim()&&t.jsxs("div",{className:"flex flex-col gap-3 rounded-2xl border border-divider bg-muted/30 p-4",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("span",{className:"text-xs font-medium uppercase tracking-wider text-muted-foreground",children:"Preview"}),en()&&t.jsx(c.Button,{onClick:Se,disabled:ut||!d.trim(),variant:"secondary",size:"sm",className:"gap-2","data-testid":"remove-background-btn",children:ut?t.jsxs(t.Fragment,{children:[t.jsx(F.Icon,{icon:"eos-icons:loading",className:"size-4 animate-spin"}),"Removing…"]}):t.jsxs(t.Fragment,{children:[t.jsx(F.Icon,{icon:"mdi:image-remove",className:"size-4"}),"Remove BG"]})})]}),Re&&t.jsx("div",{className:"rounded-lg border border-danger bg-danger/10 px-3 py-2 text-xs text-danger",children:Re}),t.jsx("img",{src:d,alt:"Preview",className:"max-h-[280px] w-full rounded-lg object-contain",onError:I=>{I.target.style.display="none"},onLoad:I=>{I.target.style.display="block"}}),!en()&&t.jsx("div",{className:"rounded-lg border border-warning bg-warning/10 px-3 py-2 text-xs text-warning",children:"Set VITE_FAL_API_KEY in your .env file to enable background removal."})]})]}),t.jsxs(c.Tabs.Panel,{id:"vector",className:"flex flex-col",children:[t.jsxs("form",{onSubmit:ze,className:"sticky top-0 z-9 flex gap-2 bg-surface px-6 pt-4 pb-3",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search for vector graphics",children:t.jsx(c.Input,{type:"text",placeholder:"Search for icons...",value:_,onChange:I=>G(I.target.value),variant:"subtle","data-testid":"vector-search-input"})}),t.jsx(c.Button,{type:"submit",size:"icon",variant:"secondary",disabled:H,"aria-label":"Search",children:t.jsx(F.Icon,{icon:V.search,className:"size-5"})}),t.jsx(c.Button,{size:"icon",variant:"secondary",onClick:()=>ge(Q==="grid"?"masonry":"grid"),"aria-label":Q==="grid"?"Switch to masonry view":"Switch to grid view",children:Q==="grid"?t.jsx(F.Icon,{icon:"lucide:layout-grid",className:"size-5"}):t.jsx(F.Icon,{icon:V.grip,className:"size-5"})})]}),W&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger mx-6 mb-3 rounded-2xl border-2 px-4 py-3 text-sm",children:W}),!On()&&t.jsx("div",{className:"bg-warning/10 text-warning mx-6 mb-3 rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Noun Project API keys not configured. Set VITE_NOUN_PROJECT_API_KEY and VITE_NOUN_PROJECT_API_SECRET in your .env file."}),H&&Y.length===0&&t.jsx("div",{className:"text-muted px-6 py-8 text-center text-sm",children:"Loading vectors..."}),Y.length>0&&t.jsxs("div",{className:"mx-6 overflow-hidden rounded-t-2xl",children:[Q==="masonry"?t.jsx("div",{className:"grid grid-flow-dense pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(150px, 1fr))":"repeat(3, 1fr)",gridAutoRows:a==="bottom"?"150px":"120px",gap:Cr},children:Y.map(I=>t.jsx("div",{children:t.jsx(No,{vector:I,onVectorSelect:it,fixedHeight:!0})},I.id))}):t.jsx("div",{className:"pb-4",style:{display:"grid",gridTemplateColumns:a==="bottom"?"repeat(auto-fill, minmax(120px, 1fr))":"repeat(auto-fill, minmax(100px, 1fr))",gap:Cr},children:Y.map(I=>t.jsx("div",{style:{aspectRatio:"1 / 1"},children:t.jsx(No,{vector:I,onVectorSelect:it,fixedHeight:!0})},I.id))}),K&&t.jsx("div",{ref:ot,className:"h-px"}),H&&t.jsx("div",{className:"text-muted py-4 text-center text-sm",children:"Loading more..."}),!K&&!H&&t.jsx("div",{className:"text-muted py-6 text-center text-sm",children:"No more vectors"})]}),!H&&Y.length===0&&_&&On()&&t.jsxs("div",{className:"text-muted px-6 py-12 text-center text-sm",children:['No vectors found for "',_,'"']})]}),t.jsxs(c.Tabs.Panel,{id:"ai",className:"flex flex-col gap-6 p-6",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"AI Provider"}),t.jsxs("select",{value:P,onChange:I=>ee(I.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:[t.jsx("option",{value:"runware",children:"Runware (Flux Dev / Nano Banana 2 Pro)"}),t.jsx("option",{value:"recraft",children:"Recraft (Vector Illustrations)"})]})]}),P==="runware"&&t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Model"}),t.jsx("select",{value:He,onChange:I=>qe(I.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:Wr.map(I=>t.jsxs("option",{value:I.id,children:[I.name," - ",I.description]},I.id))})]}),P==="recraft"&&t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Style"}),t.jsx("select",{value:Fe,onChange:I=>{be(I.target.value),We("")},className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:jo.map(I=>t.jsx("option",{value:I.value,children:I.label},I.value))})]}),P==="recraft"&&(()=>{const I=jo.find(X=>X.value===Fe);return I&&I.substyles.length>0?t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Substyle (Optional)"}),t.jsxs("select",{value:xe,onChange:X=>We(X.target.value),className:"w-full rounded-xl border border-divider bg-field text-foreground px-4 py-3 text-sm",children:[t.jsx("option",{value:"",children:"None (Default)"}),I.substyles.map(X=>t.jsx("option",{value:X,children:X.replace(/_/g," ")},X))]})]}):null})(),t.jsxs("form",{onSubmit:lt,className:"flex flex-col gap-6",children:[t.jsxs(c.TextField,{children:[t.jsx(c.Label,{children:"Prompt"}),t.jsx(c.TextArea,{placeholder:"Describe the image you want to generate... (e.g., 'avocado, transparent background')",value:oe,onChange:I=>ue(I.target.value),className:"min-h-[100px] resize-y",rows:4,"data-testid":"ai-prompt-input",disabled:vt})]}),t.jsx(c.Button,{type:"submit",variant:"default",disabled:!oe.trim()||vt||P==="recraft"&&!_n()||P==="runware"&&!an(),className:"w-full","data-testid":"ai-generate-btn",children:vt?t.jsxs(t.Fragment,{children:[t.jsx(F.Icon,{icon:"eos-icons:loading",className:"size-5 animate-spin"}),"Generating..."]}):t.jsxs(t.Fragment,{children:[t.jsx(Kn,{size:24}),"Generate Image"]})})]}),P==="recraft"&&!_n()&&t.jsx("div",{className:"bg-warning/10 text-warning rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Recraft API token not configured. Set VITE_RECRAFT_API_TOKEN in your .env file to enable AI generation."}),P==="runware"&&!an()&&t.jsx("div",{className:"bg-warning/10 text-warning rounded-2xl border-2 border-warning px-4 py-3 text-sm",children:"Runware API key not configured. Set VITE_RUNWARE_API_KEY in your .env file to enable AI generation."}),dt&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger rounded-2xl border-2 px-4 py-3 text-sm",children:dt}),k&&t.jsxs("div",{className:"flex flex-col gap-4 rounded-2xl border border-divider bg-muted/40 p-6",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-muted text-xs uppercase tracking-wide",children:"Generated Image"}),P==="recraft"&&Je&&t.jsx("span",{className:"rounded-xs bg-muted px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-foreground/80",children:Je.format.toUpperCase()}),P==="runware"&&t.jsx("span",{className:"rounded-xs bg-muted px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-foreground/80",children:(St=Wr.find(I=>I.id===He))==null?void 0:St.name})]}),t.jsx("div",{className:"flex w-fit items-center justify-center overflow-hidden rounded-lg bg-white/50 dark:bg-black/50",style:{maxHeight:"500px",maxWidth:"100%"},children:t.jsx("img",{src:k,alt:oe,className:"max-h-full max-w-full object-contain"})}),t.jsxs("div",{className:"flex flex-col gap-1",children:[t.jsx(c.Label,{className:"text-muted text-xs",children:"Prompt"}),t.jsx("p",{className:"text-sm",children:P==="recraft"&&Je?Je.prompt:oe})]}),t.jsxs("div",{className:"flex flex-col gap-3",children:[en()&&t.jsx(c.Button,{onClick:async()=>{if(k){Ae(!0),Ce(null);try{let I=k;So(k)&&(I=await To(k));const X=await Co(I,{syncMode:!1}),ae=await wo(X.image.url);de(ae)}catch(I){Ce(I instanceof Error?I.message:"Failed to remove background")}finally{Ae(!1)}}},disabled:ut||!k,variant:"secondary",size:"sm",className:"w-full gap-2","data-testid":"ai-remove-background-btn",children:ut?t.jsxs(t.Fragment,{children:[t.jsx(F.Icon,{icon:"eos-icons:loading",className:"size-4 animate-spin"}),"Removing..."]}):t.jsxs(t.Fragment,{children:[t.jsx(F.Icon,{icon:"mdi:image-remove",className:"size-4"}),"Remove Background"]})}),Re&&t.jsx("div",{className:"border-danger bg-danger/10 text-danger rounded-xl border-2 px-3 py-2 text-xs",children:Re}),t.jsx(c.Button,{onClick:tt,variant:"default",className:"w-full","data-testid":"ai-use-image-btn",children:"Use This Image"})]})]})]})]})})},pa=({isOpen:e,onOpenChange:n,onImageAdded:r,onImageChanged:s,changingElementId:a,onChangingElementIdChange:o})=>{var D;const{elements:l,setElements:d,canvasEditorRef:u,artboardManager:h,executeAddElement:m,executeElementUpdate:f}=je.useEditor(),{selectedId:g,setSelectedId:p}=je.useSelectionContext(),{activeArtboardId:b}=F.useArtboards(),x=i.useRef(l);x.current=l;const S=i.useRef(g);S.current=g;const[T,C]=i.useState(null),w=a??T,R=o??C,N=i.useCallback(O=>{var Z,M;const A=x.current,_=S.current;if(w){const J=A.find(K=>K.id===w);if(J&&ye.isImageElement(J)){const K=J,q=J.clone(),Q=((Z=u.current)==null?void 0:Z.getZoom())||1;q.imageUrl=O,q.transformData.width=300/Q,q.transformData.height=300/Q,q.transformData.cropX=0,q.transformData.cropY=0,q.transformData.cropWidth=1,q.transformData.cropHeight=1,q.transformData.flipHorizontal=!1,q.transformData.flipVertical=!1,q.transformData.borderRadius=0,q.imageLoaded=!1,q.imageElement=null,q.isCropping=!1,q.onLoadCallback=ge=>{const re=ge;d($=>$.map(P=>P.id===re.id?re:P))},q.loadImage(O),f(K,q),s&&s(q)}R(null);return}if(!b){alert("Please create or select an artboard first");return}const G=`element-${Date.now()}`,Y=h.getActiveArtboard(),B=Y?Y.x+Y.width/2:window.innerWidth/2,H=Y?Y.y+Y.height/2:window.innerHeight/2,z=((M=u.current)==null?void 0:M.getZoom())||1,W=new U.ImageElement({id:G,x:B,y:H,imageUrl:O,transformData:{width:300/z,height:300/z},onLoadCallback:J=>{const K=J;d(q=>q.map(Q=>Q.id===K.id?K:Q))}});h.addElementToArtboard(G,b),m(W,b,_||void 0),p(G),r&&r(W)},[w,h,m,f,b,u,d,p,R,r,s]),v=i.useCallback(O=>{n(O),O||R(null)},[n,R]),L=w?(D=l.find(O=>O.id===w))==null?void 0:D.imageUrl:void 0;return t.jsx(Nu,{isOpen:e,onToggle:v,onImageSelect:N,currentImageUrl:L})},Eu=Object.freeze(Object.defineProperty({__proto__:null,ImagePanel:pa},Symbol.toStringTag,{value:"Module"})),Ru=U.createLogger("GlyphBrowserDrawer"),Iu=({isOpen:e,onClose:n,fontFamily:r,fontWeight:s=400,onInsertGlyph:a})=>{const[o,l]=i.useState([]),[d,u]=i.useState(!1),[h,m]=i.useState(null),[f,g]=i.useState("");i.useEffect(()=>{e&&(u(!0),m(null),g(""),U.FontAnalyzer.getAllGlyphs(r,s).then(x=>{x.length===0&&m(`No alternate glyphs found in ${r}`),l(x),u(!1)}).catch(x=>{Ru.error("Error loading glyphs:",x),m("Failed to load glyphs"),u(!1)}))},[e,r,s]);const p=x=>{let S=x.unicode;if(!S||S.length===0)S=String.fromCodePoint(983040+x.glyphIndex);else{const T=S.codePointAt(0);T&&T<57344&&(S=String.fromCodePoint(983040+x.glyphIndex))}a(S)},b=f?o.filter(x=>x.name.toLowerCase().includes(f.toLowerCase())||x.unicode.toLowerCase().includes(f.toLowerCase())):o;return t.jsxs(yn,{isOpen:e,onClose:n,title:`Browse Glyphs - ${r}`,description:`Browse and select alternate glyphs for the ${r} font`,maxHeight:"75vh",showCloseButton:!0,children:[t.jsx("div",{className:"px-6 py-4 border-b border-black/10 dark:border-white/10",children:t.jsxs("div",{className:"relative",children:[t.jsx(F.Icon,{icon:V.search,className:"absolute left-3 top-1/2 -translate-y-1/2 text-muted pointer-events-none size-4 z-10"}),t.jsx(c.Input,{type:"text",placeholder:"Search glyphs...",value:f,onChange:x=>g(x.target.value),className:"pl-10"})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-6",children:[d&&t.jsxs("div",{className:"py-12 text-center text-muted",children:[t.jsx(c.Spinner,{size:"lg",className:"mx-auto mb-4"}),t.jsx("div",{className:"text-sm",children:"Loading glyphs..."})]}),h&&t.jsxs("div",{className:"py-12 text-center",children:[t.jsx(F.Icon,{icon:V.alertCircle,className:"size-12 mx-auto mb-4 text-danger"}),t.jsx("div",{className:"text-base font-medium mb-2",children:h}),t.jsx("div",{className:"text-sm text-muted",children:"This font may not have alternate glyphs."})]}),!d&&!h&&b.length===0&&f&&t.jsxs("div",{className:"py-12 text-center",children:[t.jsx(F.Icon,{icon:V.search,className:"size-12 mx-auto mb-4 text-muted"}),t.jsxs("div",{className:"text-base font-medium",children:['No glyphs found matching "',f,'"']})]}),!d&&!h&&b.length>0&&t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(100px,1fr))] gap-4",children:b.map((x,S)=>t.jsxs("button",{onClick:()=>p(x),className:"group relative flex aspect-square cursor-pointer flex-col items-center gap-2 rounded-xl border-2 border-black/10 bg-black/5 p-3 transition-all hover:border-accent hover:bg-black/10 hover:shadow-lg dark:border-white/10 dark:bg-white/5 dark:hover:border-accent dark:hover:bg-white/10",children:[x.previewDataUrl?t.jsx("img",{src:x.previewDataUrl,alt:x.name,className:"h-auto w-full object-contain"}):t.jsx("div",{className:"text-5xl leading-none",style:{fontFamily:r},children:x.unicode}),t.jsx("div",{className:"w-full overflow-hidden text-ellipsis whitespace-nowrap text-center text-xs text-muted",children:x.name}),x.category!=="default"&&t.jsx(c.Badge,{size:"sm",color:x.category==="swash"?"warning":x.category==="stylistic"?"primary":"success",className:"absolute right-1 top-1 text-[10px] font-semibold uppercase",children:x.category==="swash"?"SW":x.category==="stylistic"?"ALT":x.category==="ligature"?"LIG":""})]},`${x.glyphIndex}-${S}`))}),!d&&!h&&b.length>0&&t.jsxs("div",{className:"mt-6 pt-4 border-t border-black/10 dark:border-white/10 text-center text-sm text-muted",children:[b.length," glyph",b.length!==1?"s":""," available",f&&` matching "${f}"`]})]})]})},Eo=U.createLogger("GlyphPanel"),ma=({isOpen:e,onClose:n,fontFamily:r,fontWeight:s,onInsertGlyph:a,element:o})=>{const{selectedElement:l,executeElementUpdate:d}=je.useEditor(),u=o!==void 0?o:l||null,h=r||(u instanceof U.TextElement?u.fontFamily:"Arial"),m=s||(u instanceof U.TextElement&&u.bold?700:400),f=i.useCallback(async g=>{if(a){a(g);return}if(!u||!(u instanceof U.TextElement)){Eo.warn("No text element selected for glyph insertion");return}try{await U.FontAnalyzer.loadFont(h,m)}catch(b){Eo.error("Error pre-loading font for glyph rendering:",b)}const p=u.clone();p.text=p.text+g,d(u,p)},[a,u,h,m,d]);return t.jsx(Iu,{isOpen:e,onClose:n,fontFamily:h,fontWeight:m,onInsertGlyph:f})},Du=Object.freeze(Object.defineProperty({__proto__:null,GlyphPanel:ma},Symbol.toStringTag,{value:"Module"})),ga=({orientation:e="horizontal",showAddButton:n=!0,showCloseButtons:r=!1,maxTabWidth:s=200,style:a={},className:o="",onArtboardCreate:l,onArtboardDelete:d})=>{const{artboardsInfo:u,selectArtboard:h,createArtboard:m,deleteArtboard:f,renameArtboard:g}=F.useArtboards(),[p,b]=i.useState(null),[x,S]=i.useState(""),T=(D,O)=>{b(D),S(O)},C=()=>{p&&x.trim()&&g(p,x.trim()),b(null),S("")},w=()=>{b(null),S("")},R=()=>{m(1200,1200,{name:`Artboard ${u.length+1}`}),l&&setTimeout(()=>{const D=u[u.length];D&&l(D.id)},10)},N=(D,O)=>{if(O.stopPropagation(),u.length<=1){alert("Cannot delete the last artboard");return}confirm("Delete this artboard?")&&(f(D),d&&d(D))},v=e==="horizontal"?{display:"flex",flexDirection:"row",gap:4,padding:8,backgroundColor:"var(--bg-secondary)",borderBottom:"1px solid var(--border-primary)",overflowX:"auto",overflowY:"hidden",...a}:{display:"flex",flexDirection:"column",gap:4,padding:8,backgroundColor:"var(--bg-secondary)",borderRight:"1px solid var(--border-primary)",overflowY:"auto",overflowX:"hidden",minWidth:200,...a},L=D=>({display:"flex",alignItems:"center",gap:8,padding:"8px 12px",backgroundColor:D?"var(--accent-primary)":"var(--bg-primary)",color:D?"var(--primary-foreground)":"var(--text-primary)",border:D?"none":"1px solid var(--border-primary)",borderRadius:6,cursor:"pointer",fontSize:13,fontWeight:D?600:400,whiteSpace:"nowrap",maxWidth:e==="horizontal"?s:void 0,minWidth:e==="horizontal"?120:void 0,transition:"all 0.2s"});return t.jsxs("div",{className:`artboard-tabs ${o}`,style:v,children:[u.map(D=>{const O=p===D.id;return t.jsxs("div",{style:L(D.isActive),onClick:()=>!O&&h(D.id),onDoubleClick:()=>T(D.id,D.name),children:[O?t.jsx("input",{type:"text",value:x,onChange:A=>S(A.target.value),onBlur:C,onKeyDown:A=>{A.key==="Enter"&&C(),A.key==="Escape"&&w()},autoFocus:!0,onClick:A=>A.stopPropagation(),style:{flex:1,padding:"2px 4px",border:"1px solid var(--border-primary)",borderRadius:4,fontSize:13,minWidth:80}}):t.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis"},children:D.name}),t.jsx("span",{style:{fontSize:11,opacity:.7,padding:"2px 6px",borderRadius:10,backgroundColor:D.isActive?"color-mix(in srgb, var(--primary-foreground) 20%, transparent)":"var(--bg-secondary)"},children:D.elementCount}),r&&t.jsx("button",{onClick:A=>N(D.id,A),style:{background:"none",border:"none",cursor:"pointer",padding:2,display:"flex",alignItems:"center",opacity:.7,transition:"opacity 0.2s"},onMouseEnter:A=>A.currentTarget.style.opacity="1",onMouseLeave:A=>A.currentTarget.style.opacity="0.7",title:"Delete artboard",children:t.jsx(F.Icon,{icon:V.close,className:"size-3.5"})})]},D.id)}),n&&t.jsxs("button",{onClick:R,style:{display:"flex",alignItems:"center",justifyContent:"center",gap:6,padding:"8px 12px",backgroundColor:"var(--bg-primary)",border:"1px dashed var(--border-primary)",borderRadius:6,cursor:"pointer",fontSize:13,color:"var(--text-secondary)",minWidth:e==="horizontal"?120:void 0,transition:"all 0.2s"},onMouseEnter:D=>{D.currentTarget.style.backgroundColor="var(--bg-tertiary)",D.currentTarget.style.borderColor="var(--accent-primary)"},onMouseLeave:D=>{D.currentTarget.style.backgroundColor="var(--bg-primary)",D.currentTarget.style.borderColor="var(--border-primary)"},title:"Add new artboard",children:[t.jsx(F.Icon,{icon:V.plus,className:"size-3.5"}),t.jsx("span",{children:"New Artboard"})]})]})},Au=Object.freeze(Object.defineProperty({__proto__:null,ArtboardTabs:ga},Symbol.toStringTag,{value:"Module"})),Mu=()=>t.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:"shrink-0",children:t.jsx("path",{d:"M19 12H5M12 19l-7-7 7-7"})});function Fu({onClick:e}){return t.jsx(c.TooltipProvider,{delayDuration:300,children:t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"outline",onClick:e,className:"mr-sm border-r-border-primary pr-md","aria-label":"Back",children:t.jsx(Mu,{})})}),t.jsx(c.TooltipContent,{children:"Back"})]})})}const wr=.001;function nr(e){var r,s;if(!e)return{rotation:!1,opacity:!1,stroke:!1,knockout:!1,distress:!1,imageMask:!1,cornerRadius:!1,shapeTransparency:!1};const n=e.transformData;return{rotation:Math.abs(e.rotation??0)>wr,opacity:(e.opacity??1)<1-wr,stroke:((r=e.stroke)==null?void 0:r.enabled)===!0,knockout:e.blendMode==="knockout"||e.blendMode==="clip",distress:((s=e.distressEffect)==null?void 0:s.enabled)===!0,imageMask:!!e.masks&&e.masks.length>0,cornerRadius:((n==null?void 0:n.borderRadius)??0)>0,shapeTransparency:((n==null?void 0:n.fillOpacity)??1)<1-wr}}const xa=({element:e,onElementUpdate:n,showUngroupButton:r=!1,onUngroup:s,onMoveForward:a,onMoveBackward:o,onChangeImage:l,onDelete:d,cornerRadiusExpanded:u=!1,onCornerRadiusToggle:h,cropExpanded:m=!1,onCropToggle:f,rotationExpanded:g=!1,onRotationToggle:p,opacityExpanded:b=!1,onOpacityToggle:x,strokeExpanded:S=!1,onStrokeToggle:T,knockoutExpanded:C=!1,onKnockoutToggle:w,distressTextureExpanded:R=!1,onDistressTextureToggle:N,imageMaskExpanded:v=!1,onImageMaskToggle:L})=>{const[D,O]=i.useState(!1),[A,_]=i.useState(!1),[G,Y]=i.useState(!1),[B,H]=i.useState(!1),[z,W]=i.useState(!1),[Z,M]=i.useState(!1),[J,K]=i.useState(!1),[q,Q]=i.useState(!1),[ge,re]=i.useState(!1),[$,P]=i.useState(!1),ee=e.isCropping,oe=nr(e),ue=()=>{if(H(!0),ee){const xe=e.clone();xe.exitCropMode(),n(xe)}else{const xe=e.clone();xe.enterCropMode(),n(xe)}f==null||f()},Fe=()=>{const xe=e.clone();xe.transformData.flipHorizontal=!xe.transformData.flipHorizontal,n(xe)},be=()=>{const xe=e.clone();xe.transformData.flipVertical=!xe.transformData.flipVertical,n(xe)};return t.jsxs("div",{className:"toolbar-items",children:[l&&t.jsx(ie,{icon:"lucide:image",onClick:()=>{_(!0),l()},onMouseLeave:()=>_(!1),tooltip:"Change Image",tooltipDisabled:A}),t.jsx(ie,{icon:"lucide:crop",onClick:ue,onMouseLeave:()=>H(!1),tooltip:ee?"Exit Crop Mode":"Crop",tooltipDisabled:B||m,active:ee||m}),t.jsx(ie,{icon:"lucide:flip-horizontal-2",onClick:Fe,tooltip:"Flip Horizontal"}),t.jsx(ie,{icon:"lucide:flip-vertical-2",onClick:be,tooltip:"Flip Vertical"}),t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{W(!0),p==null||p()},onMouseLeave:()=>W(!1),tooltip:"Rotate",tooltipDisabled:z||g,active:g||oe.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{M(!0),x==null||x()},onMouseLeave:()=>M(!1),tooltip:"Transparency",tooltipDisabled:Z||b,active:b||oe.opacity}),t.jsx(ie,{icon:"lucide:square-round-corner",onClick:()=>{Y(!0),h==null||h()},onMouseLeave:()=>Y(!1),tooltip:"Corner Radius",tooltipDisabled:G||u,active:u||oe.cornerRadius}),w&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{Q(!0),w()},onMouseLeave:()=>Q(!1),tooltip:"Clip / Knockout",tooltipDisabled:q||C,active:C||oe.knockout}),N&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{re(!0),N()},onMouseLeave:()=>re(!1),tooltip:"Distress Texture",tooltipDisabled:ge||R,active:R||oe.distress}),L&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{P(!0),L()},onMouseLeave:()=>P(!1),tooltip:"Image Mask",tooltipDisabled:$||v,active:v||oe.imageMask}),T&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{K(!0),T()},onMouseLeave:()=>K(!1),tooltip:"Stroke",tooltipDisabled:J||S,active:S||oe.stroke}),(a||o||d)&&t.jsxs(c.Popover,{open:D,onOpenChange:O,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(F.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[a&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{a(),O(!1)},"aria-label":"Move Forward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),o&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{o(),O(!1)},"aria-label":"Move Backward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),d&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{O(!1),d()},"aria-label":"Delete",children:t.jsx(F.Icon,{icon:V.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]}),r&&s&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:s,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})},Hr=[{id:"white",name:"White",color:"#FFFFFF"},{id:"light-gray",name:"Light Gray",color:"#E5E5E5"},{id:"medium-gray",name:"Medium Gray",color:"#999999"},{id:"dark-gray",name:"Dark Gray",color:"#333333"},{id:"black",name:"Black",color:"#000000"},{id:"orange",name:"Orange",color:"#FF8800"},{id:"blue",name:"Blue",color:"#0074D9"},{id:"indigo",name:"Indigo",color:"#4B0082"},{id:"teal",name:"Teal",color:"#39CCCC"},{id:"coral",name:"Coral",color:"#FF6B6B"}],ba=({element:e,onElementUpdate:n,documentColors:r,imageColors:s,showUngroupButton:a=!1,onUngroup:o,onMoveForward:l,onMoveBackward:d,onOpenShapeTypeDrawer:u,onDelete:h,rotationExpanded:m=!1,onRotationToggle:f,cornerRadiusExpanded:g=!1,onCornerRadiusToggle:p,transparencyExpanded:b=!1,onTransparencyToggle:x,sidesExpanded:S=!1,onSidesToggle:T,pointsExpanded:C=!1,onPointsToggle:w,innerRadiusExpanded:R=!1,onInnerRadiusToggle:N,colorExpanded:v=!1,onColorToggle:L,strokeExpanded:D=!1,onStrokeToggle:O,knockoutExpanded:A=!1,onKnockoutToggle:_,distressTextureExpanded:G=!1,onDistressTextureToggle:Y,imageMaskExpanded:B=!1,onImageMaskToggle:H})=>{const[z,W]=i.useState(!1),[Z,M]=i.useState(!1),[J,K]=i.useState(!1),[q,Q]=i.useState(!1),[ge,re]=i.useState(!1),[$,P]=i.useState(!1),[ee,oe]=i.useState(!1),[ue,Fe]=i.useState(!1),[be,xe]=i.useState(!1),[We,He]=i.useState(!1),[qe,vt]=i.useState(!1),[Rt,dt]=i.useState(!1),[Le,Je]=i.useState(!1),Ze=i.useMemo(()=>Hr.map(Ke=>Ke.color),[]),k=i.useMemo(()=>r&&r.length>0?r:Ze,[r,Ze]),de=nr(e),ut=Ke=>{const ot=e.clone();ot.transformData.fillColor=Ke.target.value,n(ot)},Ae={rectangle:"Rectangle",circle:"Circle",ellipse:"Ellipse",triangle:"Triangle",polygon:"Polygon",star:"Star",line:"Line"},Re=e.transformData.shapeType,Ce=Ae[Re]||"Shape";return t.jsxs("div",{className:"toolbar-items",children:[u&&t.jsx(ie,{icon:V.shapes,onClick:()=>{M(!0),u()},onMouseLeave:()=>M(!1),tooltip:`Change Shape (${Ce})`,tooltipDisabled:Z}),L?t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn",onClick:()=>{xe(!0),L()},onMouseLeave:()=>xe(!1),"aria-label":"Fill Color","data-active":v,children:t.jsx("div",{className:"h-6 w-6 rounded-md border border-border-primary",style:{backgroundColor:e.transformData.fillColor||"#3b82f6"}})})}),!be&&!v&&t.jsx(c.TooltipContent,{children:"Fill Color"})]}):t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("div",{children:t.jsx(Bt,{value:e.transformData.fillColor||"#3b82f6",onChange:ut,documentColors:k,imageColors:s,showSquare:!0})})}),t.jsx(c.TooltipContent,{children:"Fill Color"})]}),e.transformData.shapeType==="rectangle"&&p&&t.jsx(ie,{icon:"lucide:square-round-corner",onClick:()=>{Q(!0),p()},onMouseLeave:()=>Q(!1),tooltip:"Corner Radius",tooltipDisabled:q||g,active:g||de.cornerRadius}),e.transformData.shapeType==="polygon"&&T&&t.jsx(ie,{icon:"healthicons:polygon",onClick:()=>{P(!0),T()},onMouseLeave:()=>P(!1),tooltip:"Sides",tooltipDisabled:$||S,active:S}),e.transformData.shapeType==="star"&&w&&t.jsx(ie,{icon:"material-symbols:award-star-outline",onClick:()=>{oe(!0),w()},onMouseLeave:()=>oe(!1),tooltip:"Points",tooltipDisabled:ee||C,active:C}),e.transformData.shapeType==="star"&&N&&t.jsx(ie,{icon:"lucide:circle-dashed",onClick:()=>{Fe(!0),N()},onMouseLeave:()=>Fe(!1),tooltip:"Inner Radius",tooltipDisabled:ue||R,active:R}),x&&t.jsx(ie,{icon:"lucide:blend",onClick:()=>{re(!0),x()},onMouseLeave:()=>re(!1),tooltip:"Transparency",tooltipDisabled:ge||b,active:b||de.shapeTransparency}),f&&t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{K(!0),f()},onMouseLeave:()=>K(!1),tooltip:"Rotate",tooltipDisabled:J||m,active:m||de.rotation}),_&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{vt(!0),_()},onMouseLeave:()=>vt(!1),tooltip:"Clip / Knockout",tooltipDisabled:qe||A,active:A||de.knockout}),Y&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{dt(!0),Y()},onMouseLeave:()=>dt(!1),tooltip:"Distress Texture",tooltipDisabled:Rt||G,active:G||de.distress}),H&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{Je(!0),H()},onMouseLeave:()=>Je(!1),tooltip:"Image Mask",tooltipDisabled:Le||B,active:B||de.imageMask}),O&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{He(!0),O()},onMouseLeave:()=>He(!1),tooltip:"Stroke",tooltipDisabled:We||D,active:D||de.stroke}),(l||d||h)&&t.jsxs(c.Popover,{open:z,onOpenChange:W,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(F.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[l&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{l(),W(!1)},"aria-label":"Move Forward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),d&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{d(),W(!1)},"aria-label":"Move Backward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),h&&t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{W(!1),h()},"aria-label":"Delete",children:t.jsx(F.Icon,{icon:V.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]}),a&&o&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:o,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})},Lu=({className:e})=>t.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0,children:t.jsx("path",{d:"M12 2L21 8L18 19L6 19L3 8L12 2Z"})}),zu=({className:e})=>t.jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0,children:t.jsx("ellipse",{cx:"12",cy:"12",rx:"9",ry:"6"})}),Gr="size-10",Ou=[{id:"rectangle",label:"Rectangle",icon:"lucide:square"},{id:"circle",label:"Circle",icon:"lucide:circle"},{id:"ellipse",label:"Ellipse",reactIcon:t.jsx(zu,{className:Gr})},{id:"triangle",label:"Triangle",icon:"lucide:triangle"},{id:"polygon",label:"Polygon",reactIcon:t.jsx(Lu,{className:Gr})},{id:"star",label:"Star",icon:"lucide:star"},{id:"line",label:"Line",icon:"lucide:minus"}],is=({isOpen:e,onClose:n,onSelectType:r,currentType:s})=>{const a=s?"Change Shape":"Select Shape",o=s?"Select a new shape type":"Choose a shape to add",l=d=>{r(d),n()};return t.jsxs(yn,{isOpen:e,onClose:n,title:a,description:o,placement:"bottom",height:"auto",hideVisibleTitle:!0,showCloseButton:!1,"data-testid":"shape-type-drawer",children:[t.jsxs("div",{className:"px-6 pt-1 pb-2 flex items-center justify-between",children:[t.jsx("h3",{className:"text-lg font-semibold tracking-tight text-foreground",children:a}),t.jsx("button",{onClick:n,className:"size-11 rounded-full hover:bg-foreground/[0.06] flex items-center justify-center text-foreground/70 -mr-2","aria-label":"Close",children:t.jsx(F.Icon,{icon:V.close,className:"size-5"})})]}),t.jsx("div",{className:"grid grid-cols-3 gap-2 p-4","data-testid":"shape-type-list",children:Ou.map(d=>{const u=d.id===s;return t.jsxs("button",{type:"button",onClick:()=>l(d.id),"aria-pressed":u,"data-testid":`shape-type-${d.id}`,className:`aspect-square flex flex-col items-center justify-center gap-2.5 rounded-xl border transition-colors ${u?"bg-primary/10 border-primary/40":"bg-transparent border-transparent hover:bg-foreground/[0.04] active:bg-foreground/[0.06]"}`,children:[t.jsx("span",{className:u?"text-primary":"text-foreground/85",children:d.reactIcon?d.reactIcon:t.jsx(F.Icon,{icon:d.icon,className:Gr})}),t.jsx("span",{className:`text-xs ${u?"text-primary font-medium":"text-foreground/70"}`,children:d.label})]},d.id)})})]})},ya=({element:e,onElementUpdate:n,onMoveForward:r,onMoveBackward:s})=>{const[a,o]=i.useState(!1),[l,d]=i.useState(!1),[u,h]=i.useState(!1),m=v=>{const L=e.clone();L.transformData.strokeColor=v,n(L),o(!1)},f=v=>{const L=e.clone();L.transformData.fillColor=v,n(L),d(!1)},g=()=>{const v=e.clone();v.transformData.strokeEnabled=!v.transformData.strokeEnabled,n(v)},p=()=>{const v=e.clone();v.transformData.fillEnabled=!v.transformData.fillEnabled,n(v)},b=v=>{const L=e.clone();L.transformData.strokeWidth=v,n(L)},x=e.transformData.strokeColor||"#000000",S=e.transformData.fillColor||"#3b82f6",T=e.transformData.strokeEnabled??!0,C=e.transformData.fillEnabled??!1,w=e.transformData.strokeWidth??2,R=e.transformData.closed,N=e.transformData.points.length;return t.jsxs("div",{className:"fixed top-3xl left-1/2 -translate-x-1/2 flex items-center gap-md px-xl py-md bg-bg-primary rounded-xl shadow-md",style:{zIndex:"var(--z-dropdown)"},children:[t.jsxs("div",{className:"px-xl text-base text-text-muted border-r border-border-primary",children:[t.jsx("span",{className:"font-semibold",children:"Path"}),t.jsxs("span",{className:"ml-md text-text-placeholder",children:[N," ",N===1?"point":"points",R&&" • Closed"]})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:T?"default":"ghost",onClick:g,className:"px-xl text-base",children:"Stroke"})}),t.jsx(c.TooltipContent,{children:T?"Disable Stroke":"Enable Stroke"})]}),T&&t.jsxs(c.Popover,{open:a,onOpenChange:o,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"w-8 h-8 p-xs rounded-md border-2 border-border-primary cursor-pointer transition-transform hover:scale-105",style:{background:x},title:"Stroke Color"})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsxs("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[240px]",children:[t.jsx("div",{className:"grid grid-cols-6 gap-sm mb-md",children:Hr.map(v=>t.jsx(c.Button,{onClick:()=>m(v.color),"aria-label":v.name,className:`w-8 h-8 rounded-md cursor-pointer transition-all min-h-0 min-w-0 p-0 ${x===v.color?"border-2 border-accent-primary scale-110":"border border-border-primary hover:scale-105"}`,style:{background:v.color}},v.color))}),t.jsx("input",{type:"color",value:x,onChange:v=>m(v.target.value),className:"w-full h-8 cursor-pointer rounded-md border border-border-primary"})]})})]}),T&&t.jsxs(c.Popover,{open:u,onOpenChange:h,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsxs(c.Button,{variant:"ghost",className:"px-xl text-base",children:[w,"px"]})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsx("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[200px]",children:t.jsxs(c.Slider,{value:[w],onValueChange:v=>b(v[0]),min:1,max:20,step:.5,className:"slider-no-fill w-full",children:[t.jsx(c.Label,{children:"Width (px)"}),t.jsx(c.Slider.Output,{}),t.jsx(c.Slider.Track,{}),t.jsx(c.Slider.Thumb,{})]})})})]}),t.jsx("div",{className:"w-px h-6 bg-border-primary mx-xs"}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:C?"default":"ghost",onClick:p,className:"px-xl text-base",children:"Fill"})}),t.jsx(c.TooltipContent,{children:C?"Disable Fill":"Enable Fill"})]}),C&&t.jsxs(c.Popover,{open:l,onOpenChange:d,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"w-8 h-8 p-xs rounded-md border-2 border-border-primary cursor-pointer transition-transform hover:scale-105",style:{background:S},title:"Fill Color"})}),t.jsx(c.PopoverContent,{align:"start",className:"p-0",children:t.jsxs("div",{className:"bg-bg-primary rounded-xl shadow-lg p-6 min-w-[240px]",children:[t.jsx("div",{className:"grid grid-cols-6 gap-sm mb-md",children:Hr.map(v=>t.jsx(c.Button,{onClick:()=>f(v.color),"aria-label":v.name,className:`w-8 h-8 rounded-md cursor-pointer transition-all min-h-0 min-w-0 p-0 ${S===v.color?"border-2 border-accent-primary scale-110":"border border-border-primary hover:scale-105"}`,style:{background:v.color}},v.color))}),t.jsx("input",{type:"color",value:S,onChange:v=>f(v.target.value),className:"w-full h-8 cursor-pointer rounded-md border border-border-primary"})]})})]}),t.jsx("div",{className:"w-px h-6 bg-border-primary mx-xs"}),r&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:r,children:t.jsx(F.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-[18px]"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),s&&t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:s,children:t.jsx(F.Icon,{icon:"hugeicons:layer-send-backward",className:"size-[18px]"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]})]})},ls=i.memo(({backgroundType:e,backgroundColor:n,backgroundTexture:r,onBackgroundTypeChange:s,onColorChange:a,onTextureChange:o})=>{const[l,d]=i.useState(!1),[u,h]=i.useState("color"),[m,f]=i.useState(n);i.useEffect(()=>{h(e==="texture"?"texture":"color")},[e]),i.useEffect(()=>{n!=="transparent"&&f(n)},[n]);const g=C=>{f(C),a(C),s("color")},p=C=>{const w=C.target.value;f(w);const R=/^#?([0-9A-Fa-f]{6}|[0-9A-Fa-f]{3})$/,N=w.startsWith("#")?w:`#${w}`;R.test(N)&&(a(N),s("color"))},b=()=>{a("transparent"),s("transparent")},x=C=>{o(C),s("texture")},S=C=>{if(h(C),C==="color")s(n==="transparent"?"transparent":"color");else if(C==="texture"){if(!r){const w=ye.TextureManager.getAllTextures()[0];w&&o(w.id)}s("texture")}},T=n==="transparent";return t.jsxs(c.Popover,{open:l,onOpenChange:d,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:l?"default":"ghost","aria-label":"Background",children:t.jsx(F.Icon,{icon:V.palette,className:"size-[18px]"})})}),t.jsx(c.PopoverContent,{className:"w-auto p-3",children:t.jsxs("div",{className:"flex min-w-[220px] flex-col gap-3",children:[t.jsxs("div",{className:"flex gap-1 border-b border-divider pb-3",children:[t.jsx(c.Button,{variant:"ghost",size:"sm",className:`flex-1 ${u==="color"?"bg-primary text-primary-foreground":""}`,onClick:()=>S("color"),children:"Color"}),t.jsx(c.Button,{variant:"ghost",size:"sm",className:`flex-1 ${u==="texture"?"bg-primary text-primary-foreground":""}`,onClick:()=>S("texture"),children:"Texture"}),t.jsx(c.Button,{variant:"ghost",size:"sm",className:"flex-1 cursor-not-allowed opacity-50",disabled:!0,"aria-label":"Gradient (Coming soon)",children:"Gradient"})]}),u==="color"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs(c.Button,{variant:"ghost",className:`flex w-full cursor-pointer items-center justify-start gap-2 rounded-lg ${T?"bg-primary/10":""}`,onClick:b,children:[t.jsx("div",{className:"transparent-pattern-small h-6 w-6 rounded"}),t.jsx("span",{className:"text-sm font-medium",children:"Transparent"})]}),t.jsx(ca,{color:T?"#ffffff":n,onChange:g}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("label",{htmlFor:"bg-hex-input",className:"text-sm font-medium uppercase text-foreground/60",children:"HEX"}),t.jsx("input",{id:"bg-hex-input",type:"text",className:"flex-1 rounded-lg border border-divider bg-field px-2 py-1.5 text-sm text-foreground focus:border-primary focus:outline-none",value:m,onChange:p,placeholder:"#000000",maxLength:7})]})]}),u==="texture"&&t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx("div",{className:"text-sm font-medium text-foreground/60",children:"Select a texture"}),t.jsx("div",{className:"grid grid-cols-4 gap-1.5",children:ye.TextureManager.getAllTextures().map(C=>t.jsx("button",{className:`flex items-center justify-center p-1 rounded-lg cursor-pointer transition-all border-2 ${r===C.id?"border-primary":"border-transparent hover:border-primary/50"}`,onClick:()=>x(C.id),"aria-label":C.name,children:t.jsx("img",{src:C.url,alt:C.name,className:"w-full h-full rounded"})},C.id))})]}),u==="gradient"&&t.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 py-8 text-foreground/60",children:[t.jsx("div",{className:"text-sm",children:"Gradient backgrounds"}),t.jsx("div",{className:"text-xs",children:"Coming soon"})]})]})})]})});ls.displayName="BackgroundPickerDropdown";const va=({distressTexture:e,onChange:n})=>{ye.ensureBuiltinTexturesReady();const r=(e==null?void 0:e.enabled)||!1,s=(e==null?void 0:e.textureUrl)||"",a=(e==null?void 0:e.intensity)??50,o=ye.DISTRESS_TEXTURE_PRESETS.map(h=>({id:h.textureUrl,name:h.name,thumbnailUrl:h.thumbnailUrl})),l=h=>{if(h){const m=s||ye.DISTRESS_TEXTURE_PRESETS[0].textureUrl;ye.preloadTexture(m),n({enabled:!0,textureUrl:m,intensity:a})}else n(void 0)},d=i.useCallback(h=>{ye.preloadTexture(h),n({enabled:!0,textureUrl:h,intensity:a})},[n,a]),u=h=>{e&&n({...e,intensity:h[0]})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:l,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Distress Texture"}),t.jsx(c.Switch,{checked:r,onCheckedChange:l,onClick:h=>h.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg py-lg",children:[t.jsx(er,{presets:o,selectedId:s,onSelect:d,showOff:!1,ariaLabel:"Distress texture presets"}),t.jsx(Ue,{label:"Intensity",value:a,onChange:h=>u([h]),min:0,max:100,step:1,unit:"%"})]})]})},ja=({imageMask:e,onChange:n})=>{ye.ensureMaskPresetsReady();const r=(e==null?void 0:e.enabled)||!1,s=(e==null?void 0:e.imageUrl)||"",a=(e==null?void 0:e.maskType)||"clip",o=(e==null?void 0:e.opacity)??100,l=(e==null?void 0:e.inverted)??!1,d=ye.MASK_IMAGE_PRESETS.map(p=>({id:p.imageUrl,name:p.name,thumbnailUrl:p.thumbnailUrl})),u=p=>{if(p){const b=s||ye.MASK_IMAGE_PRESETS[0].imageUrl;n({enabled:!0,imageUrl:b,maskType:a,opacity:o,inverted:l})}else n(void 0)},h=i.useCallback(p=>{n({enabled:!0,imageUrl:p,maskType:a,opacity:o,inverted:l})},[n,a,o,l]),m=p=>{e&&n({...e,maskType:p})},f=p=>{e&&n({...e,opacity:p[0]})},g=p=>{e&&n({...e,inverted:p})};return t.jsxs(c.Disclosure,{open:r,onOpenChange:u,className:"mb-xl",children:[t.jsx(c.DisclosureTrigger,{className:"w-full",children:t.jsxs("div",{className:"flex items-center justify-between w-full",children:[t.jsx(c.Label,{children:"Image Mask"}),t.jsx(c.Switch,{checked:r,onCheckedChange:u,onClick:p=>p.stopPropagation()})]})}),t.jsxs(c.DisclosureContent,{className:"flex flex-col gap-lg py-lg",children:[t.jsx(er,{presets:d,selectedId:s,onSelect:h,showOff:!1,ariaLabel:"Image mask presets"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(c.Label,{className:"text-sm",children:"Type"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["clip","alpha","luma"].map(p=>t.jsx("button",{className:`px-3 py-1 text-xs capitalize transition-colors ${a===p?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>m(p),children:p},p))})]}),t.jsx(Ue,{label:"Opacity",value:o,onChange:p=>f([p]),min:0,max:100,step:1,unit:"%"}),t.jsxs("label",{className:"flex items-center gap-2 text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:l,onCheckedChange:p=>g(p===!0)}),"Invert Mask"]})]})]})},Ca=({artboard:e,artboards:n,onArtboardUpdate:r,onRenameArtboard:s,onDeleteArtboard:a,artboardScreenBounds:o})=>{const[l,d]=i.useState(!1),[u,h]=i.useState(""),[m,f]=i.useState(!1),g=i.useRef(null),p=D=>{const O=e.clone();O.backgroundType=D,r(O)},b=D=>{const O=e.clone();O.backgroundColor=D,r(O)},x=D=>{const O=e.clone();O.backgroundTexture=D,r(O)},S=D=>{const O=e.clone();O.exportBackground=D,r(O)},T=D=>{const O=e.clone();O.distressTexture=D,r(O)},C=D=>{const O=e.clone();O.imageMask=D,r(O)},w=()=>{d(!0),h(e.name)},R=()=>{u.trim()&&s(e.id,u.trim()),d(!1),h("")},N=()=>{d(!1),h("")},v=D=>{D.key==="Enter"?R():D.key==="Escape"&&N()},L=()=>{if(n.length<=1){alert("Cannot delete the last artboard");return}e.getElementCount()>0&&!confirm(`Delete "${e.name}" with ${e.getElementCount()} element(s)?`)||a(e.id)};return i.useEffect(()=>{l&&g.current&&(g.current.focus(),g.current.select())},[l]),t.jsxs(c.Surface,{className:"absolute px-4 py-2 flex items-center gap-2 shadow-lg z-50 rounded-full bg-bg-primary border border-border-primary",style:{left:"50%",top:o?`${o.top-68}px`:"32px",transform:"translateX(-50%)"},children:[l?t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("input",{ref:g,type:"text",value:u,onChange:D=>h(D.target.value),onKeyDown:v,className:"px-3 py-1 border border-border-primary rounded-lg text-base text-text-primary bg-bg-primary outline-none min-w-[120px] transition-colors focus:border-border-focus"}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:R,"aria-label":"Save",children:t.jsx(F.Icon,{icon:V.check,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Save"})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:N,"aria-label":"Cancel",children:t.jsx(F.Icon,{icon:V.close,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Cancel"})]})]}):t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"text-xl font-semibold text-text-primary",children:e.name}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:w,"aria-label":"Rename",children:t.jsx(F.Icon,{icon:V.pencil,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Rename"})]}),t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",onClick:L,disabled:n.length<=1,"aria-label":"Delete",children:t.jsx(F.Icon,{icon:V.trash,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsx(ls,{backgroundType:e.backgroundType,backgroundColor:e.backgroundColor,backgroundTexture:e.backgroundTexture,onBackgroundTypeChange:p,onColorChange:b,onTextureChange:x}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsxs("div",{className:"text-base font-mono text-text-muted uppercase",children:[Math.round(e.width)," × ",Math.round(e.height)]}),t.jsx(c.Separator,{orientation:"vertical",className:"h-6"}),t.jsxs(c.Popover,{open:m,onOpenChange:f,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:m?"default":"ghost","aria-label":"More options",children:t.jsx(F.Icon,{icon:V.menu,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",children:t.jsxs("div",{className:"flex flex-col gap-2 min-w-[240px]",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Switch,{checked:e.exportBackground,onCheckedChange:S}),t.jsx(c.Label,{children:"Export Background"})]}),t.jsx(c.Separator,{}),t.jsx(va,{distressTexture:e.distressTexture,onChange:T}),t.jsx(ja,{imageMask:e.imageMask,onChange:C})]})})]})]})},Ro=U.createLogger("GoogleFontsService");let Gt=[],Zt=null;async function _u(){return Gt.length>0?Gt:Zt||(Zt=fetch("/google-fonts.json").then(e=>{if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return e.json()}).then(e=>(Array.isArray(e)?Gt=e.map(n=>({family:n.family,category:n.category||"sans-serif",subsets:n.subsets||[],variants:n.variants||[],popularity:n.popularity})):Ro.error("Unexpected API response structure:",e),Gt)).catch(e=>(Ro.error("Error fetching Google Fonts:",e),Zt=null,[])),Zt)}function Sr(){return Gt}function Pu(){return Gt.length>0}function Io(e){return{"sans serif":"sans-serif",serif:"serif",display:"display",handwriting:"script",monospace:"monospace"}[e.toLowerCase()]||"display"}const wa=[{canonical:"slab-serif",monotypeClassifications:["SLAB SERIF","CLARENDON SERIF"],googleCategory:"serif",displayName:"Slab Serif",description:"Bold, chunky serifs perfect for t-shirt designs"},{canonical:"decorative",monotypeClassifications:["BLACKLETTER","SPECIALIZED","DESIGN","DINGBATS","SYMBOL","ORNATE"],googleCategory:"display",displayName:"Decorative",description:"Artistic and ornate fonts for special effects"},{canonical:"display",monotypeClassifications:["DISPLAY","HIGH CONTRAST","GRAPHIC STYLE"],googleCategory:"display",displayName:"Display",description:"Eye-catching fonts for headlines and logos"},{canonical:"script",monotypeClassifications:["SCRIPT","FORMAL SCRIPT","INFORMAL SCRIPT","CASUAL SCRIPT","HANDWRITING"],googleCategory:"handwriting",displayName:"Script & Handwriting",description:"Calligraphy and handwritten styles"},{canonical:"monospace",monotypeClassifications:["MONOSPACED"],googleCategory:"monospace",displayName:"Monospace",description:"Fixed-width fonts for coding and technical text"},{canonical:"serif",monotypeClassifications:["SERIF","OLD STYLE SERIF","TRANSITIONAL SERIF","MODERN SERIF","NEOCLASSICAL","TRANSITIONAL"],googleCategory:"serif",displayName:"Serif",description:"Traditional fonts with decorative strokes at letter ends"},{canonical:"sans-serif",monotypeClassifications:["SANS SERIF","GEOMETRIC SANS","HUMANIST SANS","GROTESQUE SANS"],googleCategory:"sans-serif",displayName:"Sans Serif",description:"Clean, modern fonts without decorative strokes"}];function $u(e){const n=["slab-serif","decorative","display","script","monospace","serif","sans-serif"];for(const r of n){const s=wa.find(a=>a.canonical===r);if(s&&e.some(o=>s.monotypeClassifications.includes(o)))return r}return"sans-serif"}function Sa(e){return wa.find(n=>n.canonical===e)}function Bu(e){const n=Sa(e);return(n==null?void 0:n.monotypeClassifications)||[]}const rt=U.createLogger("Monotype");class Uu{constructor(){this.accessToken=null,this.tokenExpiry=0,this.fonts=new Map,this.fontsLoaded=!1,this.webfontKits=new Map,this.searchCache=new Map,this.API_BASE="https://api.monotype.com",this.CACHE_TTL=24*60*60*1e3,this.monotypeEnabled=!1,this.loadCachesFromStorage(),this.monotypeEnabled=this.checkMonotypeEnabled()}checkMonotypeEnabled(){return!1}isMonotypeEnabled(){return this.monotypeEnabled}async authenticate(){}isAuthenticated(){return this.accessToken!==null&&Date.now()<this.tokenExpiry}async fetchAllFonts(){if(!this.monotypeEnabled){this.fontsLoaded=!0;return}const n=localStorage.getItem("monotype_fonts_cache");if(n)try{const{data:a,timestamp:o}=JSON.parse(n);if(Date.now()-o<this.CACHE_TTL){this.fonts=new Map(a),this.fontsLoaded=!0;return}}catch(a){rt.error("Failed to parse font cache:",a)}try{await this.authenticate()}catch(a){throw rt.error("Authentication failed, cannot fetch fonts:",a),a}if(!this.accessToken){const a=new Error("No access token available after authentication");throw rt.error(a.message),a}const r=["SANS SERIF","SERIF","SCRIPT","DISPLAY","SLAB SERIF","MONOSPACED","HANDWRITING","BLACKLETTER"],s=new Map;for(const a of r)try{let o=null,l=0;do{const d=await this.searchFontsRaw({classification:[a],pageSize:50,pageId:o||void 0});d.fonts.forEach(u=>{s.has(u.fontId)||s.set(u.fontId,u)}),o=d.nextPageId||null,l++}while(o)}catch(o){rt.error(`Failed to fetch ${a} fonts:`,o)}this.fonts=s,this.fontsLoaded=!0;try{localStorage.setItem("monotype_fonts_cache",JSON.stringify({data:Array.from(s.entries()),timestamp:Date.now()}))}catch(a){rt.error("Failed to cache fonts:",a)}}getAllFonts(){return Array.from(this.fonts.values())}isFontsLoaded(){return this.fontsLoaded}async searchFontsRaw(n){if(await this.authenticate(),!this.accessToken)return rt.warn("Cannot search fonts: No access token available"),{fonts:[]};try{const r=await fetch(`${this.API_BASE}/v1/fonts/search`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify(n)});if(!r.ok){const a=await r.text();let o;try{o=JSON.parse(a)}catch{o=a}throw rt.error("Font search failed:",{status:r.status,statusText:r.statusText,error:o,params:n}),new Error(`Search failed: ${r.status} ${r.statusText}`)}const s=await r.json();return{fonts:s.fonts||[],nextPageId:s.nextPageId,totalCount:s.totalCount}}catch(r){return rt.error("Font search failed:",r),{fonts:[]}}}async searchFonts(n){const r=JSON.stringify(n);if(this.searchCache.has(r))return this.searchCache.get(r);const s=await this.searchFontsRaw(n),a=this.groupMonotypeFontsByFamily(s.fonts);return this.searchCache.set(r,a),a}async searchFontsByName(n){return n.trim()?this.searchFonts({name:n,searchSettings:{fuzzy:["name"]},pageSize:50}):this.groupMonotypeFontsByFamily(this.getAllFonts())}async filterFontsByCategory(n){if(n==="system")return[];const r=Bu(n);return r.length===0?[]:this.searchFonts({classification:r,pageSize:50})}groupMonotypeFontsByFamily(n){const r=new Map;return n.forEach(s=>{const a=s.family||s.name;r.has(a)||r.set(a,[]),r.get(a).push(s)}),Array.from(r.entries()).map(([s,a])=>{const o=a[0];return{name:s.replace(/[™®]/g,"").trim(),category:$u(o.classification||[]),monotypeFont:!0,googleFont:!1,monotypeId:o.fontId,source:"monotype",foundry:o.foundry,weights:this.extractWeights(a),tags:o.tag||[],preview:o.sample}})}extractWeights(n){const r=new Set;return n.forEach(s=>{s.weightCSS&&r.add(s.weightCSS)}),Array.from(r).sort()}async getWebFontKit(n,r){var a;if(this.webfontKits.has(n))return this.webfontKits.get(n);const s=localStorage.getItem("monotype_webfont_kits");if(s)try{const o=new Map(JSON.parse(s));if(o.has(n)){const l=o.get(n);return this.webfontKits.set(n,l),l}}catch(o){rt.error("Failed to parse webfont kit cache:",o)}if(await this.authenticate(),!this.accessToken)throw new Error("Not authenticated - no access token available");try{const o=await fetch(`${this.API_BASE}/v1/webfonts/kit`,{method:"POST",headers:{Authorization:`Bearer ${this.accessToken}`,"Content-Type":"application/json"},body:JSON.stringify({kitName:`MonotypeFontKit_${n.substring(0,8)}`,kitType:"Embed",fontFormats:["WOFF2","WOFF"],fonts:[{fontId:n}],includeDefaultWordpressFiles:!1})});if(!o.ok){const u=await o.text();let h;try{h=JSON.parse(u)}catch{h=u}throw rt.error("WebFont kit generation failed:",{status:o.status,statusText:o.statusText,error:h,fontId:n,fontFamily:r}),new Error(`Kit generation failed: ${o.status} ${o.statusText}`)}const l=await o.json(),d={fontFamily:((a=l.webFonts[0])==null?void 0:a.fontFamily)||r,cssUrl:l.kitUrl,timestamp:Date.now()};return this.webfontKits.set(n,d),this.saveCachesToStorage(),d}catch(o){throw rt.error("Failed to generate WebFont kit:",o),o}}async loadMonotypeFont(n,r){try{const s=await this.getWebFontKit(n,r),a=`monotype-font-${n}`;if(document.getElementById(a))return;const o=document.createElement("link");o.id=a,o.rel="stylesheet",o.href=s.cssUrl,document.head.appendChild(o),await document.fonts.ready}catch(s){throw rt.error(`Failed to load Monotype font ${r}:`,s),s}}loadCachesFromStorage(){if(!(typeof window>"u"))try{const n=localStorage.getItem("monotype_webfont_kits");n&&(this.webfontKits=new Map(JSON.parse(n)))}catch(n){rt.error("Failed to load caches:",n)}}saveCachesToStorage(){if(!(typeof window>"u"))try{localStorage.setItem("monotype_webfont_kits",JSON.stringify(Array.from(this.webfontKits.entries())))}catch(n){rt.error("Failed to save caches:",n)}}clearCaches(){this.fonts.clear(),this.webfontKits.clear(),this.searchCache.clear(),this.fontsLoaded=!1,this.accessToken=null,this.tokenExpiry=0,localStorage.removeItem("monotype_fonts_cache"),localStorage.removeItem("monotype_webfont_kits")}getStats(){return{monotypeEnabled:this.monotypeEnabled,authenticated:this.isAuthenticated(),hasAccessToken:!!this.accessToken,tokenExpiry:this.tokenExpiry>0?new Date(this.tokenExpiry).toISOString():null,fontsLoaded:this.fontsLoaded,fontCount:this.fonts.size,familyCount:this.groupMonotypeFontsByFamily(this.getAllFonts()).length,webfontKitCount:this.webfontKits.size,searchCacheSize:this.searchCache.size}}}const bt=new Uu,Tr=U.createLogger("UnifiedFontService");class Wu{constructor(){this.searchCache=new Map,this.previewFontLinks=new Set}async initialize(){try{if(await _u(),bt.isMonotypeEnabled())try{await bt.authenticate(),await bt.fetchAllFonts()}catch(n){Tr.warn("Monotype fonts failed to load (continuing with Google Fonts only):",n)}}catch(n){Tr.error("Failed to initialize UnifiedFontService:",n)}}isFontsLoaded(){return Pu()||bt.isFontsLoaded()}isMonotypeEnabled(){return bt.isMonotypeEnabled()}getAllFonts(){const n=U.TSHIRT_FONTS.filter(a=>!a.googleFont&&!a.monotypeFont),r=this.mapGoogleFonts(Sr()),s=bt.groupMonotypeFontsByFamily(bt.getAllFonts());return this.mergeFonts([...n,...r,...s])}getRecommendedFonts(){return U.TSHIRT_FONTS}async searchFontsByName(n){if(!n.trim())return this.getAllFonts();const r=`search:${n.toLowerCase()}`;if(this.searchCache.has(r))return this.searchCache.get(r);const s=n.toLowerCase().trim(),a=Sr().filter(d=>d.family.toLowerCase().includes(s)).map(d=>this.mapGoogleFont(d)),o=await bt.searchFontsByName(n),l=this.mergeFonts([...a,...o]);return this.searchCache.set(r,l),l}async filterFontsByCategory(n){if(n==="system")return U.TSHIRT_FONTS.filter(d=>!d.googleFont&&!d.monotypeFont);const r=`category:${n}`;if(this.searchCache.has(r))return this.searchCache.get(r);if(!Sa(n))return[];const a=Sr().filter(d=>Io(d.category)===n).map(d=>this.mapGoogleFont(d)),o=await bt.filterFontsByCategory(n),l=this.mergeFonts([...a,...o]);return this.searchCache.set(r,l),l}async searchAndFilterFonts(n,r){return n.trim()?this.searchFontsByName(n):r!=="all"?this.filterFontsByCategory(r):this.getAllFonts()}async loadFont(n){try{n.googleFont&&!n.monotypeFont?this.loadGoogleFont(n.name):n.monotypeFont&&n.monotypeId&&await bt.loadMonotypeFont(n.monotypeId,n.name)}catch(r){Tr.error(`Failed to load font ${n.name}:`,r)}}loadGoogleFont(n){const r=`font-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(r))return;const s=document.createElement("link");s.id=r,s.rel="stylesheet",s.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}:wght@400;700&display=swap`,document.head.appendChild(s)}loadGoogleFontForPreview(n,r){const s=encodeURIComponent(r),a=`font-preview-${n.replace(/\s+/g,"-").toLowerCase()}`;if(document.getElementById(a))return;const o=document.createElement("link");o.id=a,o.rel="stylesheet",o.href=`https://fonts.googleapis.com/css2?family=${n.replace(/\s+/g,"+")}&display=swap&text=${s}`,document.head.appendChild(o),this.previewFontLinks.add(a)}clearPreviewFonts(){this.previewFontLinks.forEach(n=>{const r=document.getElementById(n);r&&r.remove()}),this.previewFontLinks.clear()}getPreviewFontCount(){return this.previewFontLinks.size}mapGoogleFont(n){var r;return{name:n.family,category:Io(n.category),googleFont:!0,monotypeFont:!1,source:"google",weights:((r=n.variants)==null?void 0:r.map(s=>{const a=s.match(/\d+/);return a?parseInt(a[0],10):s==="regular"?400:null}).filter(s=>s!==null))||[400]}}mapGoogleFonts(n){return n.map(r=>this.mapGoogleFont(r))}mergeFonts(n){const r=new Map;return n.forEach(s=>{const a=s.name.toLowerCase().trim();if(!r.has(a))r.set(a,s);else{const o=r.get(a);s.monotypeFont&&!o.monotypeFont&&r.set(a,s)}}),Array.from(r.values()).sort((s,a)=>s.name.localeCompare(a.name))}clearSearchCache(){this.searchCache.clear()}clearAllCaches(){this.clearSearchCache(),bt.clearCaches()}getStats(){const n=this.getAllFonts(),r=n.filter(o=>o.googleFont&&!o.monotypeFont),s=n.filter(o=>o.monotypeFont),a=n.filter(o=>!o.googleFont&&!o.monotypeFont);return{initialized:this.isFontsLoaded(),monotypeEnabled:this.isMonotypeEnabled(),totalFonts:n.length,googleFontsCount:r.length,monotopeFontsCount:s.length,systemFontsCount:a.length,searchCacheSize:this.searchCache.size,monotypeStats:bt.getStats()}}}const kt=new Wu;function Hu(e){return Array.from(e).filter(n=>{const r=n.codePointAt(0);return!r||r<983040||r>1048573}).join("")}const kr=U.createLogger("FontBrowserDrawer"),Ta=({value:e,onChange:n,fontFamilies:r,isOpen:s,onToggle:a,showLabel:o,previewText:l,elements:d})=>{const u=i.useRef(null),[h,m]=i.useState(""),[f,g]=i.useState("all"),[p,b]=i.useState(0),[x,S]=i.useState("name"),[T,C]=i.useState("medium"),[w,R]=i.useState("masonry"),[N,v]=i.useState(new Set),L=i.useRef([]),D=i.useRef(!1),A=(M=>{switch(M){case"small":return 1;case"medium":return 1.8;case"large":return 3}})(T);i.useEffect(()=>{const M="font-preview-style";if(!document.getElementById(M)){const J=document.createElement("style");J.id=M,J.textContent=".font-preview { font-family: var(--font-preview) !important; }",document.head.appendChild(J)}},[]),i.useEffect(()=>{kt.isFontsLoaded()||kt.initialize().then(()=>{b(M=>M+1)}).catch(M=>{kr.error("Failed to load fonts:",M)})},[]);const _=async(M,J=!1)=>{try{if(J)await kt.loadFont(M);else if(M.googleFont&&!M.monotypeFont){const K=l?`${l}${M.name}`:M.name;kt.loadGoogleFontForPreview(M.name,K)}else await kt.loadFont(M);v(K=>new Set(K).add(M.name))}catch(K){kr.error(`Failed to load font ${M.name}:`,K)}};i.useEffect(()=>{(async()=>{if(D.current||L.current.length===0)return;D.current=!0;const J=[...L.current];L.current=[];const K=kt.getAllFonts();await Promise.all(J.map(async q=>{const Q=K.find(ge=>ge.name===q);Q&&!N.has(q)&&await _(Q)})),D.current=!1})()},[N]);const G=M=>{const J=N.has(M),K=L.current.includes(M);!J&&!K&&(L.current.push(M),!D.current&&L.current.length===1&&v(q=>new Set(q)))};i.useEffect(()=>{s&&setTimeout(()=>{u.current&&u.current.scrollIntoView({behavior:"smooth",block:"center"})},150),s||(m(""),g("all"),kt.clearPreviewFonts(),v(new Set))},[s,e]),i.useEffect(()=>{if(e&&!N.has(e)){const J=kt.getAllFonts().find(K=>K.name===e);J&&_(J,!0)}},[e,N,p]),i.useEffect(()=>{h.trim()&&g("all")},[h]);const Y=async M=>{const K=kt.getAllFonts().find(q=>q.name===M);if(K)try{await _(K,!0)}catch{kr.warn(`Failed to load font ${M}, will use fallback`)}n({target:{value:M}}),setTimeout(()=>a(!1),0)},B=i.memo(({font:M,isUsedInDocument:J=!1})=>{const K=i.useRef(null),q=e===M.name,Q=N.has(M.name),ge=M.monotypeFont===!0;i.useEffect(()=>{if(!K.current)return;const oe=new IntersectionObserver(ue=>{ue.forEach(Fe=>{Fe.isIntersecting&&!Q&&G(M.name)})},{rootMargin:"600px"});return oe.observe(K.current),()=>oe.disconnect()},[M.name,Q]);let re="",$=!1;x==="name"?(re=M.name,$=!1):x==="preview"?(re=l||M.name,$=J):(re=l||M.name,$=!0);const P=x==="preview"&&!$,ee=t.jsxs(c.Surface,{ref:oe=>{q&&u&&(u.current=oe),K.current=oe},className:`relative flex cursor-pointer flex-col justify-center rounded-lg border-2 text-left ${w==="masonry"?"w-fit":"min-w-0"} ${q?"border-accent":"hover:border-muted border-transparent"}`,onClick:P?void 0:()=>Y(M.name),role:P?void 0:"button","aria-label":P?void 0:`Select ${M.name} font`,tabIndex:P?void 0:0,onKeyDown:P?void 0:oe=>{(oe.key==="Enter"||oe.key===" ")&&(oe.preventDefault(),Y(M.name))},style:{minHeight:`${$?48*A:36*A}px`,padding:`${6*A}px ${10*A}px`,gap:`${2*A}px`},children:[!Q&&t.jsx("div",{className:"absolute inset-0 rounded-lg bg-gray-100",style:{opacity:.5}}),t.jsx("div",{className:"font-preview text-foreground overflow-hidden leading-[1.1] font-medium text-ellipsis whitespace-nowrap",style:{"--font-preview":Q?`"${M.name}", sans-serif`:"sans-serif",fontSize:`${15*A}px`,opacity:Q?1:.4},children:re}),$&&t.jsx("div",{className:"text-muted overflow-hidden font-sans leading-[1.1] font-normal text-ellipsis whitespace-nowrap",style:{fontSize:`${7*A}px`,opacity:Q?1:.4},children:M.name}),ge&&t.jsx("div",{className:"absolute rounded-full bg-orange-500",style:{top:`${4*A}px`,right:`${4*A}px`,width:`${6*A}px`,height:`${6*A}px`},title:"Premium Monotype Font"})]});return P?t.jsxs(c.Tooltip,{delayDuration:200,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{className:"m-0 inline-block h-auto min-h-0 border-0 bg-transparent p-0 hover:bg-transparent",style:{width:w==="masonry"?"auto":"100%"},onClick:()=>Y(M.name),"aria-label":`Select ${M.name} font`,children:t.jsxs(c.Surface,{ref:oe=>{q&&u&&(u.current=oe),K.current=oe},className:`relative flex cursor-pointer flex-col justify-center rounded-lg border-2 text-left ${w==="masonry"?"w-fit":"min-w-0"} ${q?"border-accent":"hover:border-muted border-transparent"}`,style:{minHeight:`${$?48*A:36*A}px`,padding:`${6*A}px ${10*A}px`,gap:`${2*A}px`},children:[!Q&&t.jsx("div",{className:"absolute inset-0 rounded-lg bg-gray-100",style:{opacity:.5}}),t.jsx("div",{className:"font-preview text-foreground overflow-hidden leading-[1.1] font-medium text-ellipsis whitespace-nowrap",style:{"--font-preview":Q?`"${M.name}", sans-serif`:"sans-serif",fontSize:`${15*A}px`,opacity:Q?1:.4},children:re}),$&&t.jsx("div",{className:"text-muted overflow-hidden font-sans leading-[1.1] font-normal text-ellipsis whitespace-nowrap",style:{fontSize:`${7*A}px`,opacity:Q?1:.4},children:M.name}),ge&&t.jsx("div",{className:"absolute rounded-full bg-orange-500",style:{top:`${4*A}px`,right:`${4*A}px`,width:`${6*A}px`,height:`${6*A}px`},title:"Premium Monotype Font"})]})})}),t.jsx(c.TooltipContent,{side:"top",children:t.jsx("p",{children:M.name})})]},M.name):t.jsx(i.Fragment,{children:ee},M.name)},(M,J)=>M.font.name===J.font.name&&M.isUsedInDocument===J.isUsedInDocument),H=i.useMemo(()=>{if(!d)return new Set;const M=new Set,J=K=>{const q=K.fontFamily,Q=K.text;q&&Q&&Hu(Q).trim().length>0&&M.add(q)};return d.forEach(K=>{J(K),K.children&&Array.isArray(K.children)&&K.children.forEach(q=>{J(q)})}),M},[d]),z=i.useMemo(()=>{const M=kt.isFontsLoaded()?kt.getAllFonts():U.TSHIRT_FONTS,J=new Set(U.TSHIRT_FONTS.map(re=>re.name)),K=[];M.forEach(re=>{if(H.has(re.name))if(h){const $=h.toLowerCase();re.name.toLowerCase().includes($)&&K.push(re)}else K.push(re)});let q=M.filter(re=>!H.has(re.name));if(f!=="all"&&(q=q.filter(re=>re.category===f)),h){const re=h.toLowerCase();q=q.filter($=>$.name.toLowerCase().includes(re))}const Q=[],ge=[];return q.forEach(re=>{J.has(re.name)?Q.push(re):ge.push(re)}),K.sort((re,$)=>re.name.localeCompare($.name)),Q.sort((re,$)=>re.name.localeCompare($.name)),ge.sort((re,$)=>re.name.localeCompare($.name)),{usedFonts:K,recommendedFonts:Q,otherFonts:ge}},[h,f,p,H]),W=(M,J=!1)=>w==="masonry"?t.jsx("div",{className:"flex flex-wrap content-start items-start gap-2 px-4 pb-4",children:M.map(K=>t.jsx(B,{font:K,isUsedInDocument:J},K.name))}):t.jsx("div",{className:"px-4 pb-4",style:{display:"grid",gridTemplateColumns:`repeat(auto-fill, minmax(${140*A}px, 1fr))`,gap:"8px"},children:M.map(K=>t.jsx(B,{font:K,isUsedInDocument:J},K.name))}),Z=["all","system","display","sans-serif","script","serif","slab-serif","vintage","decorative","monospace"];return t.jsxs(t.Fragment,{children:[t.jsx("button",{onClick:()=>a(!s),className:`h-11 md:h-9 w-[132px] md:w-[108px] flex items-center justify-center px-2 text-foreground cursor-pointer rounded-lg border border-transparent text-base font-medium transition-all hover:bg-black/5 dark:hover:bg-white/5 ${s?"bg-black/10 dark:bg-white/10":"bg-transparent"}`,"aria-label":s?"Close font browser":"Open font browser",title:e,children:t.jsx("span",{className:"font-preview overflow-hidden text-ellipsis whitespace-nowrap min-w-0",style:{"--font-preview":`"${e}", sans-serif`,fontWeight:400},children:e})}),t.jsx(yn,{isOpen:s,onClose:()=>a(!1),title:"Fonts",description:"",height:"85vh",placement:"bottom",showCloseButton:!1,hideVisibleTitle:!0,hideHandle:!0,disableScrollWrapper:!0,children:t.jsx("div",{className:"relative flex-1 overflow-hidden",children:t.jsx("div",{className:"h-full bg-white",children:t.jsxs("div",{className:"h-full overflow-y-auto",children:[t.jsx("div",{className:"px-4 pt-5",children:t.jsxs(c.Surface,{className:"flex gap-2",children:[t.jsx(c.TextField,{className:"flex-1","aria-label":"Search fonts",children:t.jsx(c.Input,{type:"text",className:"rounded-2xl pt-[10px] pb-[9px]",placeholder:"Search fonts...",value:h,onChange:M=>m(M.target.value),autoFocus:!0,"aria-label":"Search fonts"})}),t.jsx(c.Tabs,{value:T,onValueChange:M=>C(M),children:t.jsx(c.Tabs.ListContainer,{children:t.jsxs(c.Tabs.List,{"aria-label":"Card size",children:[t.jsxs(c.Tabs.Tab,{id:"small",className:"text-xs font-semibold","aria-label":"Small card size",children:["A",t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"medium",className:"text-base font-semibold","aria-label":"Medium card size",children:["A",t.jsx(c.Tabs.Indicator,{})]}),t.jsxs(c.Tabs.Tab,{id:"large",className:"text-xl font-semibold","aria-label":"Large card size",children:["A",t.jsx(c.Tabs.Indicator,{})]})]})})}),t.jsx(c.Button,{variant:"secondary",onClick:()=>{S(M=>M==="both"?"name":M==="name"?"preview":"both")},"aria-label":x==="both"?"Show font name only":x==="name"?"Show preview only":"Show preview with font name",className:"h-10 w-10 p-0",children:x==="both"?t.jsx(F.Icon,{icon:"lucide:credit-card",className:"size-[22px]"}):x==="name"?t.jsx(F.Icon,{icon:"lucide:type",className:"size-[22px]"}):t.jsx(F.Icon,{icon:"lucide:text-cursor",className:"size-[22px]"})}),t.jsx(c.Button,{variant:"secondary",onClick:()=>R(w==="grid"?"masonry":"grid"),"aria-label":w==="grid"?"Switch to masonry view":"Switch to grid view",className:"h-10 w-10 p-0",children:w==="grid"?t.jsx(F.Icon,{icon:"lucide:grid-2x2",className:"size-[22px]"}):t.jsx(F.Icon,{icon:"lucide:grid-3x3",className:"size-[22px]"})})]})}),t.jsxs("div",{className:"sticky top-0 z-20 shrink-0",children:[t.jsx("div",{className:"pointer-events-none absolute top-0 right-0 left-0",style:{height:"64px",background:"linear-gradient(to bottom, var(--background) 0%, color-mix(in srgb, var(--background) 80%, transparent) 40%, transparent 100%)",zIndex:16}}),t.jsx("div",{className:"relative z-20 px-4 py-4 pt-3",children:t.jsx("div",{className:"flex gap-2 overflow-x-auto",children:Z.map(M=>{const J=M==="all"?"All":U.CATEGORY_LABELS[M];return t.jsx(c.Button,{size:"sm",variant:f===M?"default":"secondary",onClick:()=>g(M),className:`shrink-0 ${f===M?"":"hover:brightness-95"}`,children:J},M)})})})]}),t.jsxs("div",{className:"flex-1",children:[z.usedFonts.length>0&&t.jsxs("div",{className:"shrink-0 p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-2 pb-2 text-xs font-bold tracking-wider uppercase",children:"Used in Document"}),W(z.usedFonts,!0)]}),z.recommendedFonts.length===0&&z.otherFonts.length===0?t.jsx("div",{className:"text-muted col-span-full px-4 py-8 text-center text-sm",children:"No fonts found"}):t.jsxs(t.Fragment,{children:[z.recommendedFonts.length>0&&t.jsxs("div",{className:"p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-2 pb-2 text-xs font-bold tracking-wider uppercase",children:"Recommended"}),W(z.recommendedFonts)]}),z.otherFonts.length>0&&t.jsxs("div",{className:"p-0",children:[t.jsx("div",{className:"text-muted bg-white px-4 pt-4 pb-2 text-xs font-bold tracking-wider uppercase",children:"All Fonts"}),W(z.otherFonts)]})]})]})]})})})})]})},Gu=U.createLogger("TransformControlPanel"),ka=({element:e,controls:n,onUpdate:r})=>{const[s,a]=i.useState({});return t.jsx("div",{className:"w-full space-y-4",children:n.map(o=>{const l=e.transformData[o.key]??o.defaultInternalValue??o.defaultValue;if(o.type==="checkbox")return t.jsxs("div",{className:"flex items-center space-x-2",children:[t.jsx(c.Switch,{id:`control-${o.key}`,checked:l,onCheckedChange:f=>{const g=e.clone();g.transformData[o.key]=f,r(g)}}),t.jsx(c.Label,{htmlFor:`control-${o.key}`,children:o.label})]},o.key);const d=typeof l=="number"&&!isNaN(l)?l:o.defaultInternalValue??0,u=s[o.key]!==void 0?s[o.key]:d,h=o.toSlider?o.toSlider(u):u,m=f=>{const g=o.fromSlider?o.fromSlider(f):f;return typeof g!="number"||isNaN(g)?(Gu.warn("Invalid internalValue:",g,"for control:",o.key),"0"):o.toDisplay?o.toDisplay(g):"isPercentage"in o&&o.isPercentage?`${(g*100).toFixed(0)}%`:g.toFixed(1)};return t.jsxs("div",{className:"flex flex-col gap-sm",children:[t.jsxs("div",{className:"flex justify-between",children:[t.jsx(c.Label,{children:o.label}),t.jsx("span",{className:"text-sm text-foreground/60",children:m(h)})]}),t.jsx(c.Slider,{value:[h],onValueChange:f=>{const g=f[0],p=o.fromSlider?o.fromSlider(g):g;a(b=>({...b,[o.key]:p}))},onChangeEnd:f=>{const g=f[0],p=e.clone();p.transformData[o.key]=o.fromSlider?o.fromSlider(g):g,r(p),a(b=>{const x={...b};return delete x[o.key],x})},min:0,max:100,step:o.step??1,className:"slider-no-fill"})]},o.key)})})},Ku=({element:e,onTransformTypeChange:n,onElementUpdate:r,isOpen:s,onOpenChange:a})=>{const[o,l]=i.useState(!1),d=s!==void 0?s:o,u=a||l,h=e.transformType,m=U.getTransformControls(h),f=U.TRANSFORM_TYPES.filter(p=>p.Component&&p.id!=="image"&&p.id!=="group"&&p.id!=="shape"&&p.id!=="path"),g=p=>{p!==h&&n(p)};return t.jsxs(c.Popover,{open:d,onOpenChange:u,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"Text Effects",children:t.jsx(F.Icon,{icon:V.wand,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"start",className:"w-[280px] p-0",maxZIndex:!0,children:t.jsxs("div",{className:"space-y-4 p-6",children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx(c.Label,{children:"Text Effect"}),t.jsxs(c.Select,{value:h,onValueChange:g,children:[t.jsx(c.SelectTrigger,{children:t.jsx(c.SelectValue,{placeholder:"Select effect"})}),t.jsx(c.SelectContent,{style:{zIndex:2147483647},children:f.map(p=>t.jsx(c.SelectItem,{value:p.id,children:p.label},p.id))})]})]}),m.length>0&&t.jsx(ka,{element:e,controls:m,onUpdate:r})]})})]})},Na=({items:e})=>{const[n,r]=i.useState(!1);return t.jsxs(c.Popover,{open:n,onOpenChange:r,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(F.Icon,{icon:V.moreHorizontal,className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"start",className:"w-auto p-1",maxZIndex:!0,children:t.jsx("div",{className:"flex items-center gap-1",children:e.map((s,a)=>t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:s.active?"default":"ghost",size:"icon",onClick:()=>{s.onClick(),r(!1)},"aria-label":s.label,children:s.icon})}),t.jsx(c.TooltipContent,{children:s.label})]},a))})})]})};function Ea({colorPickerValue:e,isActive:n,onClick:r}){return t.jsxs(c.Tooltip,{delay:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn",onClick:r,"aria-label":"Font Color","data-active":n,children:t.jsxs("div",{className:"relative flex h-5 w-5 items-center justify-center",children:[t.jsx("span",{className:"-translate-y-0.5 text-lg leading-none font-bold",children:"A"}),t.jsx("div",{className:"absolute bottom-0 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:e}})]})})}),!n&&t.jsx(c.TooltipContent,{children:"Font Color"})]})}function Ra({toolbar:e}){return t.jsx(ie,{icon:V.bold,onClick:e.handleBoldToggle,active:e.getEffectiveStyle().bold,tooltip:"Bold"})}function Ia({toolbar:e}){return t.jsx(ie,{icon:V.italic,onClick:e.handleItalicToggle,active:e.getEffectiveStyle().italic,tooltip:"Italic"})}function Da({toolbar:e}){return t.jsx(ie,{icon:V.underline,onClick:e.handleUnderlineToggle,active:e.getEffectiveStyle().underline,tooltip:"Underline"})}function Aa({toolbar:e}){return t.jsx(ie,{icon:"lucide:case-upper",onClick:e.handleLetterCaseToggle,active:e.isLetterCaseActive(),tooltip:"Uppercase"})}function Ma({toolbar:e}){const{textAlign:n,handleTextAlignToggle:r}=e,s=n==="left"?V.alignLeft:n==="center"?V.alignCenter:V.alignRight;return t.jsx(ie,{icon:s,onClick:r,tooltip:`Align ${n.charAt(0).toUpperCase()+n.slice(1)}`})}function Fa({onMoveForward:e,onMoveBackward:n,onDelete:r,onOpenChange:s}){const[a,o]=i.useState(!1),l=d=>{o(d),s==null||s(d)};return t.jsxs(c.Popover,{open:a,onOpenChange:l,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"More options",children:t.jsx(F.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.PopoverContent,{align:"end",className:"w-auto p-1",maxZIndex:!0,children:t.jsxs("div",{className:"flex items-center gap-1",children:[t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{e(),l(!1)},"aria-label":"Move Forward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-bring-forward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Forward"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{n(),l(!1)},"aria-label":"Move Backward",children:t.jsx(F.Icon,{icon:"hugeicons:layer-send-backward",className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Move Backward"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:()=>{l(!1),r()},"aria-label":"Delete",children:t.jsx(F.Icon,{icon:V.trash,className:"size-5"})})}),t.jsx(c.TooltipContent,{children:"Delete"})]})]})})]})}function La({toolbar:e,stableElementId:n,viewportWidth:r=window.innerWidth,colorPickerValue:s,isColorActive:a,onColorToggle:o,onOpenGlyphBrowser:l,hasGlyphs:d=!1,expandedPanel:u,onRotationToggle:h,onOpacityToggle:m,onFontSizeToggle:f,strokeExpanded:g=!1,onStrokeToggle:p,knockoutExpanded:b=!1,onKnockoutToggle:x,distressTextureExpanded:S=!1,onDistressTextureToggle:T,imageMaskExpanded:C=!1,onImageMaskToggle:w,getMoreMenuItems:R,onMoveForward:N,onMoveBackward:v,onDelete:L,elementForProperties:D,elements:O,isTransformMenuOpen:A,onTransformMenuOpenChange:_,elementUpdateHandler:G,showUngroupButton:Y=!1,onUngroup:B,isFontBrowserOpen:H=!1,onFontBrowserToggle:z,onTextMoreMenuOpenChange:W}){const[Z,M]=i.useState(!1),[J,K]=i.useState(!1),[q,Q]=i.useState(!1),[ge,re]=i.useState(!1),$=nr(D),[P,ee]=i.useState(!1),[oe,ue]=i.useState(!1),[Fe,be]=i.useState(!1),[xe,We]=i.useState(!1);return t.jsxs("div",{className:"toolbar-items",children:[t.jsx(Ta,{value:e.getEffectiveStyle().fontFamily||e.fontFamily,onChange:He=>e.handleFontFamilyChange(He.target.value),fontFamilies:U.FONT_FAMILIES,isOpen:H,onToggle:z,showLabel:r>700,previewText:"text"in D?D.text:void 0,elements:O}),t.jsx(ie,{icon:"lucide:a-large-small",onClick:()=>{re(!0),f()},onMouseLeave:()=>re(!1),tooltip:`Font Size · ${Math.round(e.fontSize)}`,tooltipDisabled:ge||(u==null?void 0:u.type)==="fontSize",active:(u==null?void 0:u.type)==="fontSize"}),t.jsx(Ea,{colorPickerValue:s,isActive:a,onClick:o}),t.jsx(Ra,{toolbar:e}),t.jsx(Ia,{toolbar:e}),t.jsx(Da,{toolbar:e}),t.jsx(Aa,{toolbar:e}),t.jsx(Ma,{toolbar:e}),t.jsx(Ku,{element:D,onTransformTypeChange:e.handleTransformTypeChange,onElementUpdate:G,isOpen:A,onOpenChange:_}),p&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{M(!0),p()},onMouseLeave:()=>M(!1),tooltip:"Stroke",tooltipDisabled:Z||g,active:g||$.stroke}),t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{Q(!0),h()},onMouseLeave:()=>Q(!1),tooltip:"Rotate",tooltipDisabled:q||(u==null?void 0:u.type)==="rotation",active:(u==null?void 0:u.type)==="rotation"||$.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{ee(!0),m()},onMouseLeave:()=>ee(!1),tooltip:"Transparency",tooltipDisabled:P||(u==null?void 0:u.type)==="opacity",active:(u==null?void 0:u.type)==="opacity"||$.opacity}),x&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{ue(!0),x()},onMouseLeave:()=>ue(!1),tooltip:"Clip / Knockout",tooltipDisabled:oe||b,active:b||$.knockout}),T&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{be(!0),T()},onMouseLeave:()=>be(!1),tooltip:"Distress Texture",tooltipDisabled:Fe||S,active:S||$.distress}),w&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{We(!0),w()},onMouseLeave:()=>We(!1),tooltip:"Image Mask",tooltipDisabled:xe||C,active:C||$.imageMask}),t.jsx(ie,{icon:"lucide:flag",onClick:()=>{K(!0),l==null||l()},onMouseLeave:()=>K(!1),tooltip:d?"Browse All Glyphs":"No alternate glyphs available",tooltipDisabled:J,disabled:!d,className:d?"":"opacity-50"}),R&&t.jsx(Na,{items:R()}),t.jsx(Fa,{onMoveForward:N,onMoveBackward:v,onDelete:L,onOpenChange:W}),Y&&t.jsx("button",{className:"toolbar-btn",onClick:B,children:"Ungroup"})]},`text-toolbar-${n}`)}function Vu(e,n,r){const s=e.getRotationAnchor();let a;e.transformType==="circle"&&"getEffectiveFontSize"in e?a=e.getEffectiveFontSize():a=e.fontSize;const o=Yu(e,n,a,s);return new r({id:e.id,text:e.text,x:o.x,y:o.y,rotation:e.rotation,fontSize:o.fontSize,fontFamily:e.fontFamily,color:e.color,textAlign:e.textAlign,transformData:o.transformData})}function Yu(e,n,r,s){let a,o,l;const d=r;switch(n){case"circle":a={radius:r*1.2*2,scale:1},o=s.x,l=s.y;break;case"custom":const m=200,f=r*e.text.length*.6,g=Math.max(f,m);a={width:g};const p=r*1.2;o=s.x-g/2,l=s.y-p/2;break;case"arch":const b=200,x=r*e.text.length*.6;a={width:Math.max(x,b),archHeight:U.ARCH_DEFAULTS.archHeight},o=s.x,l=s.y;break;case"wave":const S=200,T=r*e.text.length*.6;a={width:Math.max(T,S),amplitude:U.WAVE_DEFAULTS.amplitude,frequency:U.WAVE_DEFAULTS.frequency},o=s.x,l=s.y;break;case"flag":const C=200,w=r*e.text.length*.6;a={width:Math.max(w,C),amplitude:U.FLAG_DEFAULTS.amplitude,frequency:U.FLAG_DEFAULTS.frequency},o=s.x,l=s.y;break;case"lean":const R=200,N=r*e.text.length*.6;a={width:Math.max(N,R),leanAmount:U.LEAN_DEFAULTS.leanAmount},o=s.x,l=s.y;break;default:a={width:200},o=s.x,l=s.y}return{x:o,y:l,fontSize:d,transformData:a}}function za(e={}){const{canvasEditorRef:n}=e,{selectedElement:r,activeChildElement:s,handleElementUpdate:a}=je.useEditor(),o=s||r,l=i.useCallback($=>{if(r)if(s){if(!(r instanceof U.GroupElement))return;const P=r.clone(),ee=P.children.findIndex(oe=>oe.id===s.id);ee!==-1&&(P.children[ee]=$,a(P))}else a($)},[r,s,a]),d=o==null?void 0:o.id,u=i.useRef(void 0),[h,m]=i.useState(32),[f,g]=i.useState("#333333"),[p,b]=i.useState("Arial"),[x,S]=i.useState("center");i.useEffect(()=>{d!==u.current&&(u.current=d,o&&o instanceof U.TextElement&&(o.transformType==="circle"&&"getEffectiveFontSize"in o?m(Math.round(o.getEffectiveFontSize())):o.fontSize!==void 0&&m(Math.round(o.fontSize)),o.color!==void 0&&g(o.color),o.fontFamily!==void 0&&b(o.fontFamily),S(o.textAlign||"center")))},[d,o]);const T=h,C=f,w=p,R=x,N=o instanceof U.TextElement?o:null,v=(N==null?void 0:N.bold)??!1,L=(N==null?void 0:N.italic)??!1,D=(N==null?void 0:N.underline)??!1,O=(N==null?void 0:N.letterCase)??"none",A=i.useCallback($=>{if(m($),!o||!(o instanceof U.TextElement))return;const P=o.clone();P.transformType==="circle"&&"setEffectiveFontSize"in P?P.setEffectiveFontSize($):P.setFontSize($),P.richText&&P.richText.clearStyleProperty("fontSize"),l(P)},[o,l]),_=i.useCallback($=>{if(b($),!o||!(o instanceof U.TextElement))return;const P=o.clone();P.fontFamily=$,P.richText&&P.richText.clearStyleProperty("fontFamily"),l(P)},[o,l]),G=i.useCallback($=>{if(g($),!o||!(o instanceof U.TextElement))return;const P=o.clone();P.color=$,P.richText&&P.richText.clearStyleProperty("color"),l(P)},[o,l]),Y=i.useCallback($=>{if(S($),!o||!(o instanceof U.TextElement))return;const P=o.clone();P.textAlign=$,l(P)},[o,l]),B=i.useCallback($=>{var P;(P=n==null?void 0:n.current)!=null&&P.isEditingText()?n.current.applyTextFormatting({fontSize:$}):A($)},[A,n]),H=i.useCallback($=>{const P=T+$;P>=8&&P<=500&&B(P)},[T,B]),z=i.useCallback($=>{var P;(P=n==null?void 0:n.current)!=null&&P.isEditingText()?n.current.applyTextFormatting({fontFamily:$}):_($)},[_,n]),W=i.useCallback($=>{var oe;const P=$.target.value;((oe=n==null?void 0:n.current)==null?void 0:oe.isEditingText())&&(n!=null&&n.current)?n.current.applyTextFormatting({color:P}):G(P)},[G,n]),Z=i.useCallback(()=>{var $;if(($=n==null?void 0:n.current)!=null&&$.isEditingText())n.current.toggleFormattingProperty("bold");else{if(!o||!(o instanceof U.TextElement))return;const P=o.clone();P.bold=!v,P.richText&&P.richText.clearStyleProperty("bold"),l(P)}},[v,o,l,n]),M=i.useCallback(()=>{var $;if(($=n==null?void 0:n.current)!=null&&$.isEditingText())n.current.toggleFormattingProperty("italic");else{if(!o||!(o instanceof U.TextElement))return;const P=o.clone();P.italic=!L,P.richText&&P.richText.clearStyleProperty("italic"),l(P)}},[L,o,l,n]),J=i.useCallback(()=>{var $;if(($=n==null?void 0:n.current)!=null&&$.isEditingText())n.current.toggleFormattingProperty("underline");else{if(!o||!(o instanceof U.TextElement))return;const P=o.clone();P.underline=!D,P.richText&&P.richText.clearStyleProperty("underline"),l(P)}},[D,o,l,n]),K=i.useCallback(()=>{if(!o)return;const $=O==="uppercase"?"none":"uppercase",P=o.clone();P.letterCase=$,l(P)},[O,o,l]),q=i.useCallback(()=>O==="uppercase",[O]),Q=i.useCallback(()=>{const $=["left","center","right"],P=$.indexOf(R),ee=$[(P+1)%$.length];Y(ee)},[R,Y]),ge=i.useCallback(()=>{var $,P,ee,oe;if((P=($=n==null?void 0:n.current)==null?void 0:$.isEditingText)!=null&&P.call($)){const ue=(oe=(ee=n.current).getSelectionStyle)==null?void 0:oe.call(ee);if(ue)return{fontFamily:ue.fontFamily??w,fontSize:ue.fontSize??T,color:ue.color??C,bold:ue.bold??v,italic:ue.italic??L,underline:ue.underline??D}}return{fontFamily:w,fontSize:T,color:C,bold:v,italic:L,underline:D}},[n,w,T,C,v,L,D]),re=i.useCallback($=>{if(!o)return;const P=U.getTransformById($);if(!(P!=null&&P.Component))return;const ee=Vu(o,$,P.Component);l(ee)},[o,l]);return{fontSize:T,fontColor:C,fontFamily:w,textAlign:R,bold:v,italic:L,underline:D,letterCase:O,handleFontSizeChange:B,handleFontSizeIncrement:H,handleFontFamilyChange:z,handleFontColorChange:W,handleBoldToggle:Z,handleItalicToggle:M,handleUnderlineToggle:J,handleLetterCaseToggle:K,isLetterCaseActive:q,handleTextAlignToggle:Q,getEffectiveStyle:ge,handleTransformTypeChange:re}}const Xu=U.createLogger("useLayerPreview");function Oa(e){var m,f,g,p;const{element:n,size:r=148,backgroundColor:s="transparent",enabled:a=!0}=e,[o,l]=i.useState(null),[d,u]=i.useState(!1),h=i.useRef(null);return i.useEffect(()=>{if(!a){l(null),u(!1);return}let b=!0;return u(!0),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{(async()=>{try{if(n instanceof U.ImageElement&&n.imageUrl){const T=new Image;if(T.crossOrigin="anonymous",await new Promise((C,w)=>{T.onload=()=>C(),T.onerror=()=>w(new Error("Failed to load image")),T.src=n.imageUrl}),!b)return}const S=F.generateElementPreview(n,{width:r,height:r,padding:8,backgroundColor:s});b&&(l(S),u(!1))}catch(S){if(Xu.warn("Failed to generate preview:",S),b){const T=F.generateElementPreview(n,{width:r,height:r,padding:8,backgroundColor:s});l(T),u(!1)}}})()},50),()=>{b=!1,h.current&&clearTimeout(h.current)}},[n.id,s,r,a,n.x,n.y,n.rotation,n.transformData,n instanceof U.TextElement?n.text:null,n instanceof U.TextElement?n.fontSize:null,n instanceof U.TextElement?n.fontFamily:null,n instanceof U.TextElement?n.color:null,n instanceof U.ImageElement?n.imageUrl:null,n instanceof U.ImageElement?n.imageLoaded:null,n instanceof U.ImageElement?n.isCropping:null,n instanceof U.ShapeElement?(m=n.transformData)==null?void 0:m.fillColor:null,n instanceof U.PathElement?(g=(f=n.transformData)==null?void 0:f.points)==null?void 0:g.length:null,n instanceof U.GroupElement?(p=n.children)==null?void 0:p.length:null]),{previewUrl:o,isLoading:d}}function qu({element:e,onToggleLock:n,onThumbnailClick:r}){if(!e)return null;const s=e.locked===!0;return t.jsxs(t.Fragment,{children:[t.jsx(Ju,{element:e,onClick:r}),t.jsx(ie,{icon:t.jsx(Zu,{locked:s}),onClick:n,active:s,tooltip:s?"Unlock layer":"Lock layer","aria-label":s?"Unlock layer":"Lock layer"})]})}function Ju({element:e,onClick:n}){const{previewUrl:r}=Oa({element:e,size:64,backgroundColor:"transparent"}),s=t.jsx("span",{className:"size-6 md:size-5 rounded-md shrink-0 flex items-center justify-center overflow-hidden",style:{background:"var(--color-muted, rgba(120,120,120,0.18))"},children:r?t.jsx("img",{src:r,alt:"",style:{width:"100%",height:"100%",objectFit:"contain"}}):null});return n?t.jsx("button",{type:"button",onClick:n,onPointerDown:a=>a.stopPropagation(),onPointerUp:a=>a.stopPropagation(),"aria-label":"Manage layers",title:"Manage layers",className:"size-11 md:size-9 shrink-0 flex items-center justify-center",children:s}):t.jsx("span",{"aria-hidden":!0,className:"size-11 md:size-9 shrink-0 flex items-center justify-center",children:s})}function Zu({locked:e}){return t.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none","aria-hidden":!0,children:[t.jsx("rect",{x:"4",y:"9",width:"12",height:"8.5",rx:"1.6",stroke:"currentColor",strokeWidth:"1.6",fill:e?"currentColor":"none",fillOpacity:e?.18:0}),e?t.jsx("path",{d:"M6.5 9V6.25a3.5 3.5 0 0 1 7 0V9",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"}):t.jsx("path",{d:"M6.5 9V6.25a3.5 3.5 0 0 1 7 0",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round"})]})}const Qu=({element:e,rotationExpanded:n=!1,onRotationToggle:r,opacityExpanded:s=!1,onOpacityToggle:a,strokeExpanded:o=!1,onStrokeToggle:l,knockoutExpanded:d=!1,onKnockoutToggle:u,distressTextureExpanded:h=!1,onDistressTextureToggle:m,imageMaskExpanded:f=!1,onImageMaskToggle:g,onUngroup:p})=>{const[b,x]=i.useState(!1),[S,T]=i.useState(!1),[C,w]=i.useState(!1),[R,N]=i.useState(!1),[v,L]=i.useState(!1),[D,O]=i.useState(!1),A=nr(e??null);return t.jsxs("div",{className:"toolbar-items",children:[t.jsx(ie,{icon:t.jsx(Qn,{size:20,className:"md:size-5"}),onClick:()=>{x(!0),r()},onMouseLeave:()=>x(!1),tooltip:"Rotate",tooltipDisabled:b||n,active:n||A.rotation}),t.jsx(ie,{icon:"lucide:blend",onClick:()=>{T(!0),a()},onMouseLeave:()=>T(!1),tooltip:"Transparency",tooltipDisabled:S||s,active:s||A.opacity}),l&&t.jsx(ie,{icon:"lucide:pen-line",onClick:()=>{w(!0),l()},onMouseLeave:()=>w(!1),tooltip:"Stroke",tooltipDisabled:C||o,active:o||A.stroke}),u&&t.jsx(ie,{icon:"lucide:scissors",onClick:()=>{N(!0),u()},onMouseLeave:()=>N(!1),tooltip:"Knockout",tooltipDisabled:R||d,active:d||A.knockout}),m&&t.jsx(ie,{icon:"lucide:stamp",onClick:()=>{L(!0),m()},onMouseLeave:()=>L(!1),tooltip:"Distress Texture",tooltipDisabled:v||h,active:h||A.distress}),g&&t.jsx(ie,{icon:"lucide:venetian-mask",onClick:()=>{O(!0),g()},onMouseLeave:()=>O(!1),tooltip:"Image Mask",tooltipDisabled:D||f,active:f||A.imageMask}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"sm",onClick:p,children:"Ungroup"})}),t.jsx(c.TooltipContent,{children:"Ungroup this group"})]})]})};function Do({children:e,className:n}){const r=i.useRef(null);return i.useEffect(()=>{const s=r.current;if(!s)return;const a=l=>{l.stopPropagation()},o=l=>{l.preventDefault(),l.stopPropagation()};return s.addEventListener("touchstart",a,{passive:!1}),s.addEventListener("touchmove",o,{passive:!1}),()=>{s.removeEventListener("touchstart",a),s.removeEventListener("touchmove",o)}},[]),t.jsx("div",{ref:r,className:n,style:{touchAction:"none"},children:e})}const fn=({element:e,onElementUpdate:n,className:r})=>{var p,b;const[s,a]=i.useState("center"),o=i.useRef(null),l=i.useRef({x:0,y:0});i.useEffect(()=>{const x=o.current;if(!x)return;const S=C=>{l.current={x:C.touches[0].clientX,y:C.touches[0].clientY}},T=C=>{const w=Math.abs(C.touches[0].clientX-l.current.x),R=Math.abs(C.touches[0].clientY-l.current.y);w>10&&w>R&&C.preventDefault()};return x.addEventListener("touchstart",S,{passive:!0}),x.addEventListener("touchmove",T,{passive:!1}),()=>{x.removeEventListener("touchstart",S),x.removeEventListener("touchmove",T)}},[]);const d=((p=e.transformData)==null?void 0:p.cropWidth)||1,u=((b=e.transformData)==null?void 0:b.cropHeight)||1,h=i.useCallback((x,S,T,C)=>{const w=e.clone();w.updateCrop(x,S,T,C,!0),n(w)},[e,n]),m=i.useCallback((x,S=s)=>{const T=e.transformData.cropWidth,C=e.transformData.cropX,w=x-T;let R=C;S.includes("center")?R=C-w/2:S.includes("right")&&(R=C-w),R=Math.max(0,Math.min(1-x,R)),h(R,e.transformData.cropY,x,e.transformData.cropHeight)},[e,h,s]),f=i.useCallback((x,S=s)=>{const T=e.transformData.cropHeight,C=e.transformData.cropY,w=x-T;let R=C;S.includes("middle")||S==="center"?R=C-w/2:S.includes("bottom")&&(R=C-w),R=Math.max(0,Math.min(1-x,R)),h(e.transformData.cropX,R,e.transformData.cropWidth,x)},[e,h,s]),g=["top-left","top-center","top-right","middle-left","center","middle-right","bottom-left","bottom-center","bottom-right"];return t.jsx("div",{ref:o,"data-preserve-selection":!0,className:Nt("flex min-h-0 flex-1 flex-col",r),style:{touchAction:"pan-y"},children:t.jsx("div",{className:"flex flex-col gap-5 px-5 pt-1 pb-[calc(env(safe-area-inset-bottom,0px)+20px)] md:gap-4 md:px-4 md:pt-0 md:pb-[calc(env(safe-area-inset-bottom,0px)+16px)]",children:t.jsxs("div",{className:"flex items-start gap-6 md:gap-5",children:[t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Anchor"}),t.jsx("div",{className:"grid grid-cols-3 gap-0.5 rounded-md p-1",children:g.map(x=>t.jsx("button",{onClick:()=>a(x),className:Nt("crop-anchor-btn size-8 rounded-md md:size-6 md:rounded",s===x&&"active"),title:x.replace("-"," "),children:t.jsx("div",{className:Nt("crop-anchor-dot size-2 md:size-1.5",s===x&&"active size-2.5 md:size-2")})},x))})]}),t.jsxs("div",{className:"flex flex-1 flex-col gap-4 md:gap-3",children:[t.jsxs("div",{className:"flex flex-col gap-2.5 md:gap-1.5",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Width"}),t.jsx("input",{type:"number",value:Math.round(d*100),onChange:x=>m(Math.max(10,Math.min(100,Number(x.target.value)))/100),min:10,max:100,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]"})]}),t.jsx(Do,{children:t.jsxs(c.Slider,{value:[d*100],onValueChange:x=>m(x[0]/100),min:10,max:100,step:1,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{})]})})]}),t.jsxs("div",{className:"flex flex-col gap-2.5 md:gap-1.5",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx("span",{className:"text-foreground/60 text-sm md:text-xs",children:"Height"}),t.jsx("input",{type:"number",value:Math.round(u*100),onChange:x=>f(Math.max(10,Math.min(100,Number(x.target.value)))/100),min:10,max:100,className:"bg-transparent text-foreground w-14 rounded-md border-none px-2.5 py-2 text-right text-base md:w-14 md:rounded md:px-1.5 md:py-1 md:text-[13px]"})]}),t.jsx(Do,{children:t.jsxs(c.Slider,{value:[u*100],onValueChange:x=>f(x[0]/100),min:10,max:100,step:1,children:[t.jsx(c.Slider.Track,{className:"bg-foreground/10 h-2",children:t.jsx(c.Slider.Fill,{className:"bg-primary"})}),t.jsx(c.Slider.Thumb,{})]})})]})]})]})})})},eh=Object.freeze(Object.defineProperty({__proto__:null,CropPanel:fn,default:fn},Symbol.toStringTag,{value:"Module"})),ct="flex flex-col gap-5 px-5 pt-4 pb-4 md:gap-4 md:px-4 md:pt-3 md:pb-3",_a="flex flex-col gap-5 px-5 pt-4 pb-[calc(env(safe-area-inset-bottom,0px)+20px)] md:gap-4 md:px-4 md:pt-2 md:pb-[calc(env(safe-area-inset-bottom,0px)+16px)]",th=({value:e,onChange:n})=>t.jsx("div",{className:"corner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Radius",value:e,onChange:n,min:0,max:50,unit:"%"})})}),nh=({value:e,onChange:n,onRotate90:r})=>t.jsx("div",{className:"rotation-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsxs("div",{className:"flex items-end gap-3",children:[t.jsx(Ue,{label:"Rotation",value:e,onChange:n,min:-180,max:180,unit:"°",showInput:!0,inputWidth:"56px",variant:"stacked",className:"flex-1"}),t.jsx("div",{className:"pb-0.5",children:t.jsx(ie,{icon:V.rotateCcwSquare,onClick:r,tooltip:"Rotate 90° CCW"})})]})})}),rh=({value:e,onChange:n,widthValue:r,onWidthChange:s})=>t.jsx("div",{className:"font-size-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(Ue,{label:"Font Size",value:Math.round(e),onChange:n,min:8,max:256,step:1,unit:"px",showInput:!0,inputWidth:"64px"}),r!=null&&s&&t.jsx(Ue,{label:"Width",value:Math.round(r),onChange:s,min:50,max:4e3,step:1,unit:"px",showInput:!0,inputWidth:"64px"})]})}),sh=({value:e,onChange:n})=>t.jsx("div",{className:"opacity-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Opacity",value:Math.round(e*100),onChange:r=>n(r/100),min:0,max:100,unit:"%"})})}),oh=({value:e,onChange:n})=>t.jsx("div",{className:"shape-corner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Radius",value:e,onChange:n,min:0,max:50,unit:"%"})})}),ah=({value:e,onChange:n})=>t.jsx("div",{className:"shape-transparency-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Opacity",value:Math.round(e*100),onChange:r=>n(r/100),min:0,max:100,unit:"%"})})}),ih=({value:e,onChange:n})=>t.jsx("div",{className:"shape-sides-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Sides",value:e,onChange:n,min:3,max:20})})}),lh=({value:e,onChange:n})=>t.jsx("div",{className:"shape-points-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Points",value:e,onChange:n,min:3,max:20})})}),ch=({value:e,onChange:n})=>t.jsx("div",{className:"shape-inner-radius-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:ct,children:t.jsx(Ue,{label:"Inner Radius",value:Math.round(e*100),onChange:r=>n(r/100),min:10,max:90,unit:"%"})})}),dh=({value:e,onChange:n,documentColors:r,imageColors:s})=>t.jsx("div",{className:"shape-color-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:_a,children:t.jsx(Bt,{value:e,onChange:a=>n(a.target.value),documentColors:r,imageColors:s,showSquare:!0,embedded:!0})})}),uh=({value:e,onChange:n,documentColors:r,imageColors:s})=>t.jsx("div",{className:"text-color-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsx("div",{className:_a,children:t.jsx(Bt,{value:e,onChange:n,documentColors:r,imageColors:s,embedded:!0})})}),hh=({mode:e,fill:n,stroke:r,scope:s,onModeChange:a,onFillChange:o,onStrokeChange:l,onScopeChange:d})=>t.jsx("div",{className:"knockout-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Mode"}),t.jsxs("div",{className:"flex rounded-md border border-divider overflow-hidden",children:[t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${e==="clip"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>a("clip"),children:"Clip"}),t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${e==="knockout"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>a("knockout"),children:"Knockout"})]})]}),t.jsxs("div",{className:"flex items-center gap-5",children:[t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:n,onCheckedChange:u=>o(u===!0)}),"Fill"]}),t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:r,onCheckedChange:u=>l(u===!0)}),"Stroke"]})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Scope"}),t.jsxs("div",{className:"flex rounded-md border border-divider overflow-hidden",children:[t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${s==="group"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>d("group"),children:"Group"}),t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm transition-colors ${s==="artboard"?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>d("artboard"),children:"Artboard"})]})]})]})}),fh=({textureUrl:e,opacity:n,onTextureChange:r,onOpacityChange:s})=>{ye.ensureBuiltinTexturesReady();const a=ye.DISTRESS_TEXTURE_PRESETS.map(l=>({id:l.textureUrl,name:l.name,thumbnailUrl:l.thumbnailUrl})),o=i.useCallback(l=>{l&&ye.preloadTexture(l),r(l)},[r]);return t.jsx("div",{className:"distress-texture-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(er,{presets:a,selectedId:e,onSelect:o,ariaLabel:"Distress texture presets"}),t.jsx(Ue,{label:"Opacity",value:n,onChange:s,min:0,max:100,unit:"%"})]})})},ph=({imageUrl:e,maskType:n,opacity:r,inverted:s,onImageChange:a,onMaskTypeChange:o,onOpacityChange:l,onInvertedChange:d})=>{ye.ensureMaskPresetsReady();const u=ye.MASK_IMAGE_PRESETS.map(h=>({id:h.imageUrl,name:h.name,thumbnailUrl:h.thumbnailUrl}));return t.jsx("div",{className:"image-mask-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsx(er,{presets:u,selectedId:e,onSelect:a,ariaLabel:"Image mask presets"}),t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(c.Label,{className:"text-base md:text-sm font-medium",children:"Type"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["clip","alpha","luma"].map(h=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${n===h?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>o(h),children:h},h))})]}),t.jsx(Ue,{label:"Opacity",value:r,onChange:l,min:0,max:100,unit:"%"}),t.jsxs("label",{className:"flex items-center gap-2 text-base md:text-sm text-foreground",children:[t.jsx(c.Checkbox,{checked:s,onCheckedChange:h=>d(h===!0)}),"Invert Mask"]})]})})},mh=({stroke:e,onChange:n,documentColors:r,imageColors:s})=>{const[a,o]=i.useState(!1),l=(e==null?void 0:e.enabled)??!1,d=(e==null?void 0:e.color)??"#000000",u=(e==null?void 0:e.width)??5,h=(e==null?void 0:e.opacity)??1,m=(e==null?void 0:e.lineCap)??"butt",f=(e==null?void 0:e.lineJoin)??"miter",g=i.useCallback(b=>{n(b?{enabled:!0,color:d,width:u,lineCap:m,lineJoin:f,opacity:h}:void 0)},[n,d,u,m,f,h]),p=i.useCallback(b=>{e&&n({...e,...b})},[e,n]);return t.jsx("div",{className:"stroke-panel flex flex-col","data-preserve-selection":!0,style:{touchAction:"pan-y"},children:t.jsxs("div",{className:ct,children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Stroke"}),t.jsx(c.Switch,{checked:l,onCheckedChange:g})]}),l&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Color"}),t.jsx(Bt,{value:d,onChange:b=>p({color:b.target.value}),documentColors:r,imageColors:s,showSquare:!0})]}),t.jsx(Ue,{label:"Width",value:u,onChange:b=>p({width:b}),min:1,max:50,unit:"px"}),t.jsx(Ue,{label:"Opacity",value:Math.round(h*100),onChange:b=>p({opacity:b/100}),min:0,max:100,unit:"%"}),t.jsxs("button",{className:"flex items-center gap-1 text-base md:text-sm text-muted-foreground hover:text-foreground transition-colors py-1.5 md:py-0",onClick:()=>o(b=>!b),children:[a?"Hide":"Show"," Advanced"]}),a&&t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Line Cap"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["butt","round","square"].map(b=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${m===b?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>p({lineCap:b}),children:b},b))})]}),t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx(c.Label,{className:"text-foreground/70 text-base md:text-[13px]",children:"Line Join"}),t.jsx("div",{className:"flex rounded-md border border-divider overflow-hidden",children:["miter","round","bevel"].map(b=>t.jsx("button",{className:`px-4 py-2.5 text-base md:px-3 md:py-1.5 md:text-sm capitalize transition-colors ${f===b?"bg-primary text-primary-foreground":"text-foreground hover:bg-muted"}`,onClick:()=>p({lineJoin:b}),children:b},b))})]})]})]})]})})},gh=({element:e,onElementUpdate:n})=>t.jsx(fn,{element:e,onElementUpdate:n}),xh=({panelType:e,defaultIcon:n,textColorValue:r,shapeFillColor:s})=>e==="textColor"?t.jsxs("div",{className:"relative flex size-6 items-center justify-center md:size-5",children:[t.jsx("span",{className:"text-primary text-xl leading-none font-bold md:text-lg",children:"A"}),t.jsx("div",{className:"absolute bottom-0 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:r}})]}):e==="shapeColor"?t.jsxs("div",{className:"relative flex size-6 items-center justify-center md:size-5",children:[t.jsx(F.Icon,{icon:"mdi:format-color-fill",className:"text-primary size-5 md:size-4"}),t.jsx("div",{className:"absolute -bottom-0.5 left-1/2 h-[3px] w-4 -translate-x-1/2 rounded-sm",style:{backgroundColor:s||"#3b82f6"}})]}):typeof n=="string"?t.jsx(F.Icon,{icon:n,className:"text-primary size-6 md:size-5"}):t.jsx(t.Fragment,{children:n}),st=({isOpen:e,children:n})=>t.jsx("div",{className:"secondary-toolbar-panel-wrapper",style:{display:"flex",flexDirection:"column",flex:e?1:0,minHeight:e?0:void 0,transition:"flex 300ms cubic-bezier(0.32, 0.72, 0, 1)"},children:t.jsx("div",{className:e?"secondary-panel-scroll-container":"",style:{flex:1,display:"flex",flexDirection:"column",overflowY:e?"auto":"hidden",overscrollBehaviorY:"contain",WebkitOverflowScrolling:"touch",transform:e?"translateY(0)":"translateY(100%)",opacity:e?1:0,transition:"transform 300ms cubic-bezier(0.32, 0.72, 0, 1), opacity 200ms ease-out"},children:n})}),Ao=({isOpen:e,children:n})=>t.jsx("div",{className:"secondary-toolbar-panel-wrapper",style:{display:"flex",flexDirection:"column",flex:e?1:0,minHeight:e?0:void 0,transition:"flex 300ms cubic-bezier(0.32, 0.72, 0, 1)"},children:t.jsx("div",{className:e?"secondary-panel-scroll-container":"",style:{flex:1,minHeight:0,overflowY:e?void 0:"hidden",overscrollBehaviorY:"contain",WebkitOverflowScrolling:"touch",transform:e?"translateY(0)":"translateY(100%)",opacity:e?1:0,transition:"transform 300ms cubic-bezier(0.32, 0.72, 0, 1), opacity 200ms ease-out"},children:n})}),bh=({toolbarContent:e,innerContentRef:n,shouldRender:r,isExiting:s,transitionHeight:a,emptyStateContent:o,isCornerRadiusPanelOpen:l,isCropPanelOpen:d,isRotationPanelOpen:u,isOpacityPanelOpen:h,isFontSizePanelOpen:m,isShapeCornerRadiusPanelOpen:f,isShapeTransparencyPanelOpen:g,isShapeSidesPanelOpen:p,isShapePointsPanelOpen:b,isShapeInnerRadiusPanelOpen:x,isShapeColorPanelOpen:S,isTextColorPanelOpen:T,isStrokePanelOpen:C,isKnockoutPanelOpen:w,isDistressTexturePanelOpen:R,isImageMaskPanelOpen:N,cornerRadiusPanel:v,cropPanelContent:L,rotationPanel:D,opacityPanel:O,fontSizePanel:A,shapeCornerRadiusPanel:_,shapeTransparencyPanel:G,shapeSidesPanel:Y,shapePointsPanel:B,shapeInnerRadiusPanel:H,shapeColorPanel:z,textColorPanel:W,strokePanel:Z,knockoutPanel:M,distressTexturePanel:J,imageMaskPanel:K})=>t.jsxs("div",{className:"toolbar-embedded-wrapper",style:{display:"flex",flexDirection:"column",flex:1,minHeight:0,overscrollBehaviorY:"contain"},children:[o,t.jsx("div",{className:"toolbar-height-wrapper",style:a!==null?{height:a,overflow:"hidden",transition:"height 200ms cubic-bezier(0.22, 1, 0.36, 1)"}:{display:"grid",gridTemplateRows:r&&!s?"1fr":"0fr",transition:"grid-template-rows 200ms cubic-bezier(0.22, 1, 0.36, 1)"},children:t.jsx("div",{ref:n,children:e})}),t.jsx(st,{isOpen:l,children:v}),t.jsx(st,{isOpen:d,children:L}),t.jsx(st,{isOpen:u,children:D}),t.jsx(st,{isOpen:h,children:O}),t.jsx(st,{isOpen:m,children:A}),t.jsx(st,{isOpen:f,children:_}),t.jsx(st,{isOpen:g,children:G}),t.jsx(st,{isOpen:p,children:Y}),t.jsx(st,{isOpen:b,children:B}),t.jsx(st,{isOpen:x,children:H}),t.jsx(Ao,{isOpen:S,children:z}),t.jsx(Ao,{isOpen:T,children:W}),t.jsx(st,{isOpen:C,children:Z}),t.jsx(st,{isOpen:w,children:M}),t.jsx(st,{isOpen:R,children:J}),t.jsx(st,{isOpen:N,children:K})]}),yh=({toolbarPosition:e,toolbarHeight:n,panelWidth:r,value:s,onChange:a})=>t.jsx("div",{className:"corner-radius-panel",style:{position:"fixed",top:`${e.top+n+8}px`,left:`${e.left}px`,transform:"translateX(-50%)",padding:"12px 24px",marginTop:"-12px",borderRadius:0,border:"1px solid var(--divider)",boxShadow:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",zIndex:"var(--z-tooltip)",width:`${r}px`,boxSizing:"border-box"},children:t.jsx(Ue,{label:"Radius",value:s,onChange:a,min:0,max:50,unit:"%"})}),vh=({toolbarPosition:e,toolbarHeight:n,element:r,onElementUpdate:s})=>t.jsx("div",{className:"crop-panel",style:{position:"fixed",top:`${e.top+n+8}px`,left:`${e.left}px`,transform:"translateX(-50%)",background:"var(--background)",border:"1px solid var(--divider)",borderRadius:"12px",boxShadow:"0 4px 12px 0 rgb(0 0 0 / 0.15)",zIndex:"var(--z-tooltip)",minWidth:"300px"},children:t.jsx(fn,{element:r,onElementUpdate:s})}),_t=e=>typeof e=="string"&&e.length>0&&e!=="transparent";function Pa(e,n){var s;const r=e.stroke;if(r!=null&&r.enabled&&_t(r.color)&&n.add(r.color),e instanceof U.TextElement){_t(e.color)&&n.add(e.color);const a=e.richText;if(a!=null&&a.spans)for(const o of a.spans)_t((s=o.style)==null?void 0:s.color)&&n.add(o.style.color);return}if(e instanceof U.ShapeElement){const a=e.transformData.fillColor;_t(a)&&n.add(a);return}if(e instanceof U.PathElement){const a=e.transformData;a.fillEnabled&&_t(a.fillColor)&&n.add(a.fillColor),a.strokeEnabled&&_t(a.strokeColor)&&n.add(a.strokeColor);return}if(e instanceof U.GroupElement){for(const a of e.children)Pa(a,n);return}}function jh(e,n){const r=new Set;for(const s of e)Pa(s,r);if(n)for(const s of n){const a=s.backgroundColor;_t(a)&&r.add(a)}return r}const Fn=new Map,Nr=new Map;function Kr(e){if(e.length===0)return{rRange:0,gRange:0,bRange:0};let n=255,r=0,s=255,a=0,o=255,l=0;for(const d of e)d.r<n&&(n=d.r),d.r>r&&(r=d.r),d.g<s&&(s=d.g),d.g>a&&(a=d.g),d.b<o&&(o=d.b),d.b>l&&(l=d.b);return{rRange:r-n,gRange:a-s,bRange:l-o}}function Ch(e){const n=Math.max(e.rRange,e.gRange,e.bRange);return e.rRange===n?"r":e.gRange===n?"g":"b"}function wh(e){return Math.max(e.rRange,e.gRange,e.bRange)}function Sh(e){const n=Ch(e),r=e.pixels.slice().sort((l,d)=>l[n]-d[n]),s=r.length>>1,a=r.slice(0,s),o=r.slice(s);return[{pixels:a,...Kr(a)},{pixels:o,...Kr(o)}]}function Th(e){let n=0,r=0,s=0;for(const o of e)n+=o.r,r+=o.g,s+=o.b;const a=e.length;return{r:Math.round(n/a),g:Math.round(r/a),b:Math.round(s/a)}}function kh(e,n){if(e.length===0)return[];const r=[{pixels:e,...Kr(e)}];for(;r.length<n;){let s=-1,a=0;for(let l=0;l<r.length;l++){const d=wh(r[l]);d>a&&r[l].pixels.length>=2&&(a=d,s=l)}if(s===-1)break;const o=r[s];r.splice(s,1),r.push(...Sh(o))}return r}function Nh(e,n){const r=(e.r+n.r)/2,s=e.r-n.r,a=e.g-n.g,o=e.b-n.b;return Math.sqrt((2+r/256)*s*s+4*a*a+(2+(255-r)/256)*o*o)}function Eh(e,n,r){if(e.length===0||n<=0)return[];const s=[e[0]],a=new Set([0]);for(;s.length<n;){let o=-1,l=-1;for(let d=1;d<e.length;d++){if(a.has(d))continue;let u=1/0;for(const h of s){const m=Nh(e[d],h);m<u&&(u=m)}u>l&&(l=u,o=d)}if(o===-1||l<=r)break;s.push(e[o]),a.add(o)}return s}const Er=e=>e.toString(16).padStart(2,"0");function Rh(e){return`#${Er(e.r)}${Er(e.g)}${Er(e.b)}`}async function Ih(e,n=5){if(!e)return[];const r=Fn.get(e);if(r)return r;const s=Nr.get(e);if(s)return s;const a=(async()=>{try{const o=await Dh(e),l=48,u=(typeof OffscreenCanvas<"u"?new OffscreenCanvas(l,l):(()=>{const x=document.createElement("canvas");return x.width=l,x.height=l,x})()).getContext("2d");if(!u)return[];u.drawImage(o,0,0,l,l);const{data:h}=u.getImageData(0,0,l,l),m=[];for(let x=0;x<h.length;x+=4){if(h[x+3]<128)continue;const T=h[x],C=h[x+1],w=h[x+2];T>240&&C>240&&w>240||m.push({r:T,g:C,b:w})}if(m.length===0)return Fn.set(e,[]),[];const f=Math.max(n*4,16),g=kh(m,f);g.sort((x,S)=>S.pixels.length-x.pixels.length);const p=g.map(x=>Th(x.pixels)),b=Eh(p,n,50).map(Rh);return Fn.set(e,b),b}catch{return Fn.set(e,[]),[]}finally{Nr.delete(e)}})();return Nr.set(e,a),a}function Dh(e){return new Promise((n,r)=>{const s=new Image;s.crossOrigin="anonymous",s.onload=()=>n(s),s.onerror=()=>r(new Error(`Failed to load image: ${e}`)),s.src=e})}async function Ah(e,n=5){const r=[],s=new Set,a=u=>{if(u instanceof U.ImageElement){const h=u.imageUrl;h&&!s.has(h)&&(s.add(h),r.push(h))}else if(u instanceof U.GroupElement)for(const h of u.children)a(h)};for(const u of e)a(u);if(r.length===0)return[];const o=await Promise.all(r.map(u=>Ih(u,n))),l=[],d=new Set;for(const u of o)for(const h of u)d.has(h)||(d.add(h),l.push(h));return l}const Mh=U.createLogger("ContextualToolbars"),Vr=({mode:e="floating",onOpenGlyphBrowser:n,onChangeImage:r,onOpenShapeTypeDrawer:s,documentColors:a=new Set,viewportWidth:o=window.innerWidth,breakpoints:l={},hasGlyphs:d=!1,getMoreMenuItems:u,onArtboardUpdate:h,artboardScreenBounds:m,maxWidth:f,transparent:g=!1,onPanelExpandChange:p,defaultExpandedPanel:b,onExpandedPanelTypeChange:x,onOpenCropDrawer:S,onOpenCornerRadiusDrawer:T,closeButtonStyle:C="icon",emptyStateMessage:w="Tap an element to select and edit",emptyStateRender:R,editArtboardMode:N=!1,onEditArtboardModeChange:v,onLayerThumbnailClick:L})=>{var As,Ms,Fs,Ls,zs,Os,_s,Ps,$s,Bs,Us,Ws,Hs,Gs,Ks,Vs;const{panOffset:D}=je.useViewportContext(),{multiSelection:O,setSelectedId:A}=je.useSelectionContext(),{expandedPanelType:_,setExpandedPanelType:G,setIsToolbarMenuOpen:Y,isRotating:B}=je.useToolStateContext(),{elements:H,selectedElement:z,activeChildElement:W,handleElementUpdate:Z,artboardManager:M,artboards:J,canvasEditorRef:K,canvasRef:q,executeRemoveElement:Q,executeAddElement:ge,executeReorderElement:re,refreshArtboards:$}=je.useEditor(),P=za({canvasEditorRef:K}),[ee,oe]=i.useState("root"),[ue,Fe]=i.useState(null),[be,xe]=i.useState(null),[We,He]=i.useState(!1),[qe,vt]=i.useState(!1),[Rt]=i.useState(!1),[dt,Le]=i.useState(!1),[Je,Ze]=i.useState(!1),[k,de]=i.useState(()=>b&&{cornerRadius:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},crop:{type:"crop",icon:"lucide:crop",label:"Crop"},rotation:{type:"rotation",icon:V.rotateLeft,label:"Rotate"},opacity:{type:"opacity",icon:"lucide:blend",label:"Transparency"},effects:{type:"effects",icon:"lucide:sparkles",label:"Effects"}}[b]||null),[ut,Ae]=i.useState(!1),[Re,Ce]=i.useState(!1),[Ke,ot]=i.useState(!1),[Ge,ke]=i.useState(!1),[Qe,jt]=i.useState(null),[at,et]=i.useState(null),[ht,Mt]=i.useState({width:0,height:0}),Ct=i.useRef(null),ft=i.useRef(null),It=i.useRef(0),we=i.useRef(!1),ze=i.useRef(!1),Ie=i.useRef(null),it=i.useRef(void 0),De=i.useRef(null),Oe=i.useRef(_),Ve=i.useRef(void 0),wt=i.useRef(void 0),Se=i.useRef(!1),lt=i.useRef(!1),tt=i.useRef(!!b),nt=i.useRef(!1),St=i.useRef(k),I=i.useRef(null),X=i.useRef(()=>{}),ae=i.useRef(void 0),le=i.useRef(void 0);lt.current=B;const j=W||z,he=j==null?void 0:j.id,ce=z==null?void 0:z.id,me=j==null?void 0:j.transformType,{fontColor:pe,getEffectiveStyle:Te,handleFontColorChange:_e}=P,Xt=!!(z&&!B),te=i.useCallback(y=>{if(z)if(W){const se=z.clone(),ne=se.children.findIndex(Ne=>Ne.id===W.id);ne!==-1&&(se.children[ne]=y,Z(se))}else Z(y)},[z,W,Z]),us=i.useCallback(y=>{if(!j||j.transformType!=="image")return;const E=j.clone();E.transformData.borderRadius=y,te(E)},[j,te]),Ha=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.borderRadius=y,te(E)},[j,te]),Ga=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.fillOpacity=y,te(E)},[j,te]),Ka=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.sides=y,te(E)},[j,te]),Va=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.points=y,te(E)},[j,te]),Ya=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.innerRadius=y,te(E)},[j,te]),Xa=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const E=j.clone();E.transformData.fillColor=y,te(E)},[j,te]),qa=i.useCallback(()=>{T?T():de(y=>(y==null?void 0:y.type)==="cornerRadius"?null:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"})},[T]),Ja=i.useCallback(()=>{S?S():de(y=>(y==null?void 0:y.type)==="crop"?null:{type:"crop",icon:"lucide:crop",label:"Crop"})},[S]),vn=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="rotation"?null:{type:"rotation",icon:V.rotateLeft,label:"Rotate"})},[]),rr=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="opacity"?null:{type:"opacity",icon:"lucide:blend",label:"Transparency"})},[]),Za=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="fontSize"?null:{type:"fontSize",icon:"lucide:type",label:"Font Size"})},[]),Qa=i.useCallback(y=>{if(!j)return;const E=j.transformData;if(!E||E.width===void 0)return;const se=j.clone();se.transformData.width=y,te(se)},[j,te]),ei=((As=j==null?void 0:j.transformData)==null?void 0:As.width)??null,ti=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapeCornerRadius"?null:{type:"shapeCornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"})},[]),ni=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapeTransparency"?null:{type:"shapeTransparency",icon:"lucide:blend",label:"Transparency"})},[]),ri=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapeSides"?null:{type:"shapeSides",icon:"lucide:hexagon",label:"Sides"})},[]),si=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapePoints"?null:{type:"shapePoints",icon:"lucide:star",label:"Points"})},[]),oi=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapeInnerRadius"?null:{type:"shapeInnerRadius",icon:"lucide:circle-dashed",label:"Inner Radius"})},[]),ai=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="shapeColor"?null:{type:"shapeColor",icon:"lucide:paint-bucket",label:"Fill Color"})},[]),ii=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="textColor"?null:{type:"textColor",icon:V.palette,label:"Font Color"})},[]),jn=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="compositing"?null:{type:"compositing",icon:"lucide:scissors",label:"Clip / Knockout"})},[]),Cn=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="distressTexture"?null:{type:"distressTexture",icon:"lucide:stamp",label:"Distress Texture"})},[]),wn=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="imageMask"?null:{type:"imageMask",icon:"lucide:venetian-mask",label:"Image Mask"})},[]),Sn=i.useCallback(()=>{de(y=>(y==null?void 0:y.type)==="stroke"?null:{type:"stroke",icon:"lucide:pen-line",label:"Stroke"})},[]),li=i.useCallback(()=>{if((k==null?void 0:k.type)==="crop"&&(j==null?void 0:j.transformType)==="image"){const y=j;if(y.isCropping){const E=y.clone();E.exitCropMode(),te(E)}}de(null)},[k,j,te]),Tn=i.useCallback(()=>{if(!z)return;const y=H.findIndex(E=>E.id===z.id);if(y<H.length-1){const E=H[y+1];re(z.id,E.id,"after")}},[z,H,re]),kn=i.useCallback(()=>{if(!z)return;const y=H.findIndex(E=>E.id===z.id);if(y>0){const E=H[y-1];re(z.id,E.id,"before")}},[z,H,re]),sr=i.useCallback(()=>{const y=W||z;y&&(Q(y),A(null))},[W,z,Q,A]),ci=i.useCallback(()=>{if(!j)return;const y=j.clone();y.locked=!j.locked,te(y)},[j,te]),Nn=i.useCallback(()=>{if(!z||z.transformType!=="group")return;const y=z;if(!y.children||y.children.length===0)return;const E=M.getArtboardIdForElement(y.id);if(!E)return;const se=y.children.map(ne=>{const Ne=ne.clone();return Ne.x=ne.x+y.x,Ne.y=ne.y+y.y,Ne});Q(y),se.forEach(ne=>ge(ne,E)),A(se.length>0?se[0].id:null)},[z,M,Q,ge,A]),di=i.useCallback(y=>{if(!j)return;const E=j.clone();E.rotation=y,te(E)},[j,te]),ui=i.useCallback(()=>{if(!j)return;const y=j.clone();let E=Math.floor(y.rotation/90)*90+90;E=(E%360+360)%360,E>180&&(E-=360),y.rotation=E,te(y)},[j,te]),hi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.opacity=y,te(E)},[j,te]),fi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.blendMode=y,E.knockoutParts||(E.knockoutParts={fill:!0,scope:"group"}),te(E)},[j,te]),pi=i.useCallback(y=>{if(!j)return;const E=j.clone(),se=E.blendMode==="clip"?"clip":"knockout",ne={...E.knockoutParts,fill:y};E.knockoutParts=ne,E.blendMode=ne.fill||ne.stroke?se:"normal",te(E)},[j,te]),mi=i.useCallback(y=>{if(!j)return;const E=j.clone(),se=E.blendMode==="clip"?"clip":"knockout",ne={...E.knockoutParts,stroke:y};E.knockoutParts=ne,E.blendMode=ne.fill||ne.stroke?se:"normal",te(E)},[j,te]),gi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.knockoutParts={...E.knockoutParts,scope:y},te(E)},[j,te]),xi=i.useCallback(y=>{var se,ne;if(!j)return;const E=j.clone();y?E.distressEffect={enabled:!0,style:"custom",intensity:((se=E.distressEffect)==null?void 0:se.intensity)??50,textureUrl:y,textureOpacity:((ne=E.distressEffect)==null?void 0:ne.textureOpacity)??.5}:E.distressEffect=void 0,te(E)},[j,te]),bi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.distressEffect&&(E.distressEffect={...E.distressEffect,textureOpacity:y/100}),te(E)},[j,te]),yi=i.useCallback(y=>{if(!j)return;const E=j.clone();if(!y)E.masks=(E.masks||[]).filter(se=>se.id!=="quick-image-mask");else{const ne=()=>({transformType:"image",imageUrl:y,x:0,y:0,rotation:0,transformData:{type:"image",width:512,height:512,cropX:0,cropY:0,cropWidth:1,cropHeight:1,flipHorizontal:!1,flipVertical:!1,borderRadius:0}});if("transformData"in E&&E.transformData){const Pe=E.transformData;Pe.cropX=0,Pe.cropY=0,Pe.cropWidth=1,Pe.cropHeight=1}const Ne=(E.masks||[]).find(Pe=>Pe.id==="quick-image-mask");if(Ne)Ne.maskElement=ne();else{const Pe=E.masks||[];Pe.push({id:"quick-image-mask",type:"clip",maskElement:ne(),opacity:1,inverted:!1}),E.masks=Pe}}te(E)},[j,te]),vi=i.useCallback(y=>{if(!j)return;const E=j.clone(),se=(E.masks||[]).find(ne=>ne.id==="quick-image-mask");se&&(se.type=y,te(E))},[j,te]),ji=i.useCallback(y=>{if(!j)return;const E=j.clone(),se=(E.masks||[]).find(ne=>ne.id==="quick-image-mask");se&&(se.opacity=y/100,te(E))},[j,te]),Ci=i.useCallback(y=>{if(!j)return;const E=j.clone(),se=(E.masks||[]).find(ne=>ne.id==="quick-image-mask");se&&(se.inverted=y,te(E))},[j,te]),wi=i.useCallback(y=>{if(!j)return;const E=j.clone();E.stroke=y,te(E)},[j,te]),Si=i.useCallback(y=>{if(!j||j.transformType!=="shape")return;const se=j.clone();se.transformData.shapeType=y,te(se),Ze(!1)},[j,te]),Ti=i.useCallback(()=>{s?s():Ze(!0)},[s]);i.useEffect(()=>{p==null||p(k!==null),x==null||x((k==null?void 0:k.type)??null)},[k,p,x]),i.useEffect(()=>{const y=(k==null?void 0:k.type)??null;y!==De.current&&(De.current=y,G(y))},[k,G]),i.useEffect(()=>{const y=Oe.current,E=_;if(y!==E){if(Oe.current=E,y!==null&&E===null&&k!==null){De.current=null,de(null);return}if(E!==null&&(k==null?void 0:k.type)!==E){const ne={crop:{type:"crop",icon:"lucide:crop",label:"Crop"},cornerRadius:{type:"cornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},rotation:{type:"rotation",icon:V.rotateLeft,label:"Rotate"},opacity:{type:"opacity",icon:"lucide:blend",label:"Transparency"},fontSize:{type:"fontSize",icon:"lucide:type",label:"Font Size"},effects:{type:"effects",icon:"lucide:sparkles",label:"Effects"},shapeCornerRadius:{type:"shapeCornerRadius",icon:"lucide:square-round-corner",label:"Corner Radius"},shapeTransparency:{type:"shapeTransparency",icon:V.eye,label:"Transparency"},shapeSides:{type:"shapeSides",icon:"lucide:triangle",label:"Sides"},shapePoints:{type:"shapePoints",icon:"lucide:star",label:"Points"},shapeInnerRadius:{type:"shapeInnerRadius",icon:"lucide:circle-dashed",label:"Inner Radius"},shapeColor:{type:"shapeColor",icon:V.palette,label:"Color"},textColor:{type:"textColor",icon:V.palette,label:"Color"},stroke:{type:"stroke",icon:"lucide:pen-line",label:"Stroke"},compositing:{type:"compositing",icon:"lucide:scissors",label:"Clip / Knockout"},distressTexture:{type:"distressTexture",icon:"lucide:stamp",label:"Distress Texture"},imageMask:{type:"imageMask",icon:"lucide:venetian-mask",label:"Image Mask"}}[E];ne&&(De.current=E,de(ne))}}},[_,k]),i.useEffect(()=>{Y(k!==null||ue!==null||qe||Rt||dt||ee!=="root")},[k,ue,qe,Rt,dt,ee,Y]),i.useEffect(()=>{b||(ae.current!==void 0&&ae.current!==ce&&de(null),ae.current=ce)},[ce,b]),i.useEffect(()=>{N&&z&&(v==null||v(!1))},[N,z,v]),i.useEffect(()=>{const y=(j==null?void 0:j.transformType)==="image"?j.isCropping:!1;(k==null?void 0:k.type)==="crop"&&le.current===!0&&y===!1&&de(null),le.current=y},[j,k==null?void 0:k.type]),i.useEffect(()=>{St.current=k,I.current=j??null,X.current=te}),i.useEffect(()=>{const y=setTimeout(()=>{nt.current=!0},0);return()=>{clearTimeout(y)}},[]),i.useEffect(()=>()=>{var y;if(nt.current&&tt.current&&((y=St.current)==null?void 0:y.type)==="crop"){const E=I.current;if((E==null?void 0:E.transformType)==="image"){const se=E;if(se.isCropping){const ne=se.clone();ne.exitCropMode(),X.current(ne)}}}},[]),i.useEffect(()=>{let y=null,E=!1;const se=3,ne=Ye=>{var Tt;const mt=Ye.target;(Tt=Ct.current)!=null&&Tt.contains(mt)||mt.closest('[data-slot="popover-content"]')||mt.closest('[data-slot="dialog"]')||mt.closest('[role="dialog"]')||mt.closest(".popover-content")||mt.closest("[data-slot]")||(ze.current=!0,y={x:Ye.clientX,y:Ye.clientY},E=!1)},Ne=Ye=>{if(y&&!E&&!lt.current){const mt=Ye.clientX-y.x,Tt=Ye.clientY-y.y;Math.sqrt(mt*mt+Tt*Tt)>se&&(E=!0,He(!0))}},Pe=()=>{ze.current=!1,y=null,E=!1,He(!1)};return window.addEventListener("mousedown",ne),window.addEventListener("mousemove",Ne),window.addEventListener("mouseup",Pe),()=>{window.removeEventListener("mousedown",ne),window.removeEventListener("mousemove",Ne),window.removeEventListener("mouseup",Pe)}},[]),i.useEffect(()=>{if(!Ct.current)return;let y=null;const E=new ResizeObserver(se=>{y!==null&&clearTimeout(y),y=window.setTimeout(()=>{for(const ne of se){const Ne=ne.contentRect.width,Pe=ne.contentRect.height;Mt(Ye=>Ye.width===Ne&&Ye.height===Pe?Ye:{width:Ne,height:Pe})}},50)});return E.observe(Ct.current),()=>{E.disconnect(),y!==null&&clearTimeout(y)}},[z]),i.useEffect(()=>{var se;if(e==="embedded"||Re)return;const y=(se=W||z)==null?void 0:se.rotation;if(it.current=y,!z){xe(null);return}const E=()=>{var ne,Ne,Pe,Ye,mt;try{const Tt=((ne=Ct.current)==null?void 0:ne.offsetWidth)||ht.width||0,lr=((Ne=Ct.current)==null?void 0:Ne.offsetHeight)||ht.height||48,Ys=q==null?void 0:q.current,Lt=W||z,Ut=Lt.transformData,gt=((Pe=Lt.getBoundingBox)==null?void 0:Pe.call(Lt))||{x:Lt.x,y:Lt.y,width:(Ut==null?void 0:Ut.width)||100,height:(Ut==null?void 0:Ut.height)||50},Wt=M.getActiveArtboard(),Xs=(Wt==null?void 0:Wt.x)||0,qs=(Wt==null?void 0:Wt.y)||0,xt=((mt=(Ye=K==null?void 0:K.current)==null?void 0:Ye.getZoom)==null?void 0:mt.call(Ye))||1;let In,qt,Dn,An;if(Ys){const Jt=Ys.getBoundingClientRect();In=Jt.left+(gt.x-Xs)*xt,qt=Jt.top+(gt.y-qs)*xt,Dn=gt.width*xt,An=gt.height*xt}else if(m)In=m.left+(gt.x-Xs)*xt,qt=m.top+(gt.y-qs)*xt,Dn=gt.width*xt,An=gt.height*xt;else{const Jt=window.innerWidth/2,dr=window.innerHeight/2;In=Jt-gt.width*xt/2,qt=dr-gt.height*xt/2,Dn=gt.width*xt,An=gt.height*xt}const Js=12,ul=qt,hl=In+Dn/2;let zt=ul-lr-Js,cr=hl;if(Tt>0){const dr=Tt/2+20,pl=window.innerWidth-Tt/2-20;cr=Math.max(dr,Math.min(pl,cr))}zt<10&&(zt=qt+An+Js);const fl=window.innerHeight-lr-10;zt=Math.min(zt,fl),zt=Math.max(10,zt),xe({top:zt,left:cr}),jt(Lt.id)}catch(Tt){Mh.error("Error calculating toolbar position:",Tt),xe(null)}};return E(),window.addEventListener("resize",E),()=>{window.removeEventListener("resize",E)}},[e,z,W,q,M,K,m,ht,Re,D]);const or=Te().color||pe,ki=i.useCallback(y=>_e(y),[_e]),hs=i.useMemo(()=>jh(H,J),[H,J]),fs=i.useMemo(()=>{const y=new Set(hs);for(const E of a)y.add(E);return y},[hs,a]),Ni=Array.from(fs).sort().join(","),En=i.useMemo(()=>Array.from(fs),[Ni]),ps=i.useMemo(()=>{const y=[],E=new Set,se=ne=>{if(ne instanceof U.ImageElement)ne.imageUrl&&!E.has(ne.imageUrl)&&(E.add(ne.imageUrl),y.push(ne.imageUrl));else if(ne instanceof U.GroupElement)for(const Ne of ne.children)se(Ne)};for(const ne of H)se(ne);return y.sort(),y.join("|")},[H]),[Rn,ms]=i.useState([]);i.useEffect(()=>{if(!ps){ms([]);return}let y=!1;return Ah(H).then(E=>{y||ms(E)}),()=>{y=!0}},[ps]);const Ei=i.useCallback(y=>{if(Ct&&(Ct.current=y,y)){const{width:E,height:se}=y.getBoundingClientRect();E>0&&se>0&&Mt({width:E,height:se})}},[]);i.useEffect(()=>{const y=Se.current,E=B;!y&&E&&be&&(Ie.current={...be}),y&&!E&&(Ie.current=null),Se.current=B},[B,be]),i.useEffect(()=>{const y=we.current,E=Ve.current;if(we.current=Xt,Ve.current=ce,!y&&Xt){if(ot(!0),e==="embedded"){ke(!1),Ae(!0),Ce(!1);const se=setTimeout(()=>{Ae(!1)},200);return()=>clearTimeout(se)}ke(!0),Ae(!1),Ce(!1);return}if(y&&Xt&&E!==ce&&ce!==void 0){if(e==="embedded"){Ae(!1);return}ke(!0),Ae(!1),Ce(!1);return}if(y&&!Xt){if(B){ot(!1),Ae(!1),Ce(!1),ke(!1);return}if(e==="embedded"){if(Ce(!0),Ae(!1),ft.current){const Ne=ft.current.offsetHeight;et(Ne),requestAnimationFrame(()=>{et(0)})}const ne=setTimeout(()=>{ot(!1),Ce(!1),et(null)},200);return()=>clearTimeout(ne)}Ce(!0),Ae(!1),ke(!1);const se=setTimeout(()=>{ot(!1),Ce(!1),xe(null),jt(null)},150);return()=>clearTimeout(se)}},[Xt,B,ce,e,me]),i.useEffect(()=>{if(Ge&&be&&Qe===he){ke(!1),Ae(!0);const y=setTimeout(()=>{Ae(!1)},200);return()=>clearTimeout(y)}},[Ge,be,Qe,he]),i.useLayoutEffect(()=>{if(e!=="embedded")return;const y=wt.current;if(y!==void 0&&me!==void 0&&y!==me&&It.current>0&&at===null){const se=It.current;et(se),requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(ft.current){const ne=ft.current.scrollHeight;et(ne),setTimeout(()=>{et(null)},200)}})})}ft.current&&at===null&&!ut&&!Re&&(It.current=ft.current.offsetHeight),wt.current=me},[e,me,at,ut,Re]);const Ri=i.useMemo(()=>{const y=f?typeof f=="number"?`${f}px`:f:void 0;if(e==="embedded")return{borderRadius:f?"16px":"9999px",visibility:"visible",position:"static",maxWidth:y,display:"flex",justifyContent:"flex-start"};const E=Ie.current||be;return E&&!Ge?{top:`${E.top}px`,left:`${E.left}px`,position:"fixed",transform:"translateX(-50%)",borderRadius:f?"16px":"9999px",visibility:"visible",maxWidth:y,zIndex:"var(--z-tooltip)"}:{borderRadius:f?"16px":"9999px",visibility:"hidden",maxWidth:y,position:"fixed",top:"-9999px",left:"-9999px",zIndex:"var(--z-tooltip)"}},[e,be,Ge,f]);if(O.length>0)return null;const Ii=t.jsxs(t.Fragment,{children:[ee==="root"&&j&&t.jsx(qu,{element:j,onToggleLock:ci,onThumbnailClick:L}),ee==="root"&&(j==null?void 0:j.transformType)==="image"&&t.jsx(xa,{element:j,onElementUpdate:te,showUngroupButton:!!W&&(z==null?void 0:z.transformType)==="group",onUngroup:Nn,onMoveForward:Tn,onMoveBackward:kn,onChangeImage:r,onDelete:sr,cornerRadiusExpanded:(k==null?void 0:k.type)==="cornerRadius",onCornerRadiusToggle:qa,cropExpanded:(k==null?void 0:k.type)==="crop",onCropToggle:Ja,rotationExpanded:(k==null?void 0:k.type)==="rotation",onRotationToggle:vn,opacityExpanded:(k==null?void 0:k.type)==="opacity",onOpacityToggle:rr,strokeExpanded:(k==null?void 0:k.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(k==null?void 0:k.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(k==null?void 0:k.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(k==null?void 0:k.type)==="imageMask",onImageMaskToggle:wn}),ee==="root"&&(z==null?void 0:z.transformType)==="group"&&!W&&t.jsx(Qu,{element:z,rotationExpanded:(k==null?void 0:k.type)==="rotation",onRotationToggle:vn,opacityExpanded:(k==null?void 0:k.type)==="opacity",onOpacityToggle:rr,strokeExpanded:(k==null?void 0:k.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(k==null?void 0:k.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(k==null?void 0:k.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(k==null?void 0:k.type)==="imageMask",onImageMaskToggle:wn,onUngroup:Nn}),ee==="root"&&(j==null?void 0:j.transformType)==="shape"&&t.jsx(ba,{element:j,onElementUpdate:te,documentColors:En,imageColors:Rn,showUngroupButton:!!W&&(z==null?void 0:z.transformType)==="group",onUngroup:Nn,onMoveForward:Tn,onMoveBackward:kn,onOpenShapeTypeDrawer:Ti,onDelete:sr,rotationExpanded:(k==null?void 0:k.type)==="rotation",onRotationToggle:vn,cornerRadiusExpanded:(k==null?void 0:k.type)==="shapeCornerRadius",onCornerRadiusToggle:ti,transparencyExpanded:(k==null?void 0:k.type)==="shapeTransparency",onTransparencyToggle:ni,sidesExpanded:(k==null?void 0:k.type)==="shapeSides",onSidesToggle:ri,pointsExpanded:(k==null?void 0:k.type)==="shapePoints",onPointsToggle:si,innerRadiusExpanded:(k==null?void 0:k.type)==="shapeInnerRadius",onInnerRadiusToggle:oi,colorExpanded:(k==null?void 0:k.type)==="shapeColor",onColorToggle:ai,strokeExpanded:(k==null?void 0:k.type)==="stroke",onStrokeToggle:Sn,knockoutExpanded:(k==null?void 0:k.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(k==null?void 0:k.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(k==null?void 0:k.type)==="imageMask",onImageMaskToggle:wn}),ee==="root"&&(j==null?void 0:j.transformType)==="path"&&t.jsx(ya,{element:j,onElementUpdate:te,onMoveForward:Tn,onMoveBackward:kn}),ee==="root"&&j&&j.transformType!=="image"&&j.transformType!=="group"&&j.transformType!=="shape"&&j.transformType!=="path"&&t.jsx(La,{toolbar:P,stableElementId:he,viewportWidth:o,colorPickerValue:or,isColorActive:(k==null?void 0:k.type)==="textColor",onColorToggle:ii,onOpenGlyphBrowser:n,strokeExpanded:(k==null?void 0:k.type)==="stroke",onStrokeToggle:Sn,hasGlyphs:d,expandedPanel:k,onRotationToggle:vn,onOpacityToggle:rr,onFontSizeToggle:Za,knockoutExpanded:(k==null?void 0:k.type)==="compositing",onKnockoutToggle:jn,distressTextureExpanded:(k==null?void 0:k.type)==="distressTexture",onDistressTextureToggle:Cn,imageMaskExpanded:(k==null?void 0:k.type)==="imageMask",onImageMaskToggle:wn,getMoreMenuItems:u,onMoveForward:Tn,onMoveBackward:kn,onDelete:sr,elementForProperties:j,elements:H,isTransformMenuOpen:qe,onTransformMenuOpenChange:vt,elementUpdateHandler:te,showUngroupButton:!!W&&(z==null?void 0:z.transformType)==="group",onUngroup:Nn,isFontBrowserOpen:ue==="fontFamily",onFontBrowserToggle:y=>Fe(y?"fontFamily":null),onTextMoreMenuOpenChange:Le}),ee==="color"&&t.jsxs("div",{className:"toolbar-items",children:[t.jsx(Fu,{onClick:()=>oe("root")}),t.jsxs("div",{className:"toolbar-scroll",children:[t.jsx("input",{className:"toolbar-color",type:"color",value:pe,onChange:y=>{_e(y)}}),t.jsx("span",{className:"toolbar-label",children:pe})]})]})]}),ve=(j==null?void 0:j.transformType)==="shape"?j:null,gs=Ke?t.jsx("div",{ref:Ei,className:"toolbar","data-mode":e,"data-wrap":f?"":void 0,"data-transparent":g?"":void 0,"data-panel-expanded":k?"":void 0,"data-preserve-selection":!0,style:{...Ri,opacity:B?0:1,pointerEvents:B?"none":"auto",transition:"opacity 0.05s ease-out"},"data-entering":ut?"":void 0,"data-exiting":Re?"":void 0,children:t.jsxs("div",{className:"toolbar-slide-container",children:[t.jsx("div",{className:"toolbar-regular-content","data-hidden":k?"":void 0,children:Ii}),t.jsx("div",{className:"toolbar-collapsed-header","data-visible":k?"":void 0,children:k&&t.jsx(Or,{icon:t.jsx(xh,{panelType:k.type,defaultIcon:k.icon,textColorValue:or,shapeFillColor:(Ms=ve==null?void 0:ve.transformData)==null?void 0:Ms.fillColor}),label:k.label,onClose:li,closeButtonStyle:C})})]})}):null,ar=(k==null?void 0:k.type)==="cornerRadius",ir=(k==null?void 0:k.type)==="crop",xs=(k==null?void 0:k.type)==="rotation",bs=(k==null?void 0:k.type)==="opacity",ys=(k==null?void 0:k.type)==="fontSize",vs=(k==null?void 0:k.type)==="shapeCornerRadius",js=(k==null?void 0:k.type)==="shapeTransparency",Cs=(k==null?void 0:k.type)==="shapeSides",ws=(k==null?void 0:k.type)==="shapePoints",Ss=(k==null?void 0:k.type)==="shapeInnerRadius",Ts=(k==null?void 0:k.type)==="shapeColor",ks=(k==null?void 0:k.type)==="textColor",Ns=(k==null?void 0:k.type)==="compositing",Es=(k==null?void 0:k.type)==="distressTexture",Rs=(k==null?void 0:k.type)==="stroke",Is=(k==null?void 0:k.type)==="imageMask",Ds=(j==null?void 0:j.transformType)==="image"&&((Fs=j.transformData)==null?void 0:Fs.borderRadius)||0,Di=(j==null?void 0:j.rotation)||0,Ai=(j==null?void 0:j.opacity)??1,Mi=((Ls=ve==null?void 0:ve.transformData)==null?void 0:Ls.borderRadius)||0,Fi=((zs=ve==null?void 0:ve.transformData)==null?void 0:zs.fillOpacity)??1,Li=((Os=ve==null?void 0:ve.transformData)==null?void 0:Os.sides)||5,zi=((_s=ve==null?void 0:ve.transformData)==null?void 0:_s.points)||5,Oi=((Ps=ve==null?void 0:ve.transformData)==null?void 0:Ps.innerRadius)||.4,_i=(($s=ve==null?void 0:ve.transformData)==null?void 0:$s.fillColor)||"#3b82f6",Pi=((Bs=j==null?void 0:j.knockoutParts)==null?void 0:Bs.fill)??!1,$i=((Us=j==null?void 0:j.knockoutParts)==null?void 0:Us.stroke)??!1,Bi=((Ws=j==null?void 0:j.knockoutParts)==null?void 0:Ws.scope)??"group",Ui=(j==null?void 0:j.blendMode)==="clip"?"clip":"knockout",Wi=ar&&(j==null?void 0:j.transformType)==="image"?t.jsx(th,{value:Ds,onChange:us}):null,Hi=ir&&(j==null?void 0:j.transformType)==="image"?t.jsx(gh,{element:j,onElementUpdate:te}):null,Gi=xs&&j?t.jsx(nh,{value:Di,onChange:di,onRotate90:ui}):null,Ki=bs&&j?t.jsx(sh,{value:Ai,onChange:hi}):null,Vi=ys?t.jsx(rh,{value:P.fontSize,onChange:P.handleFontSizeChange,widthValue:ei,onWidthChange:Qa}):null,Yi=vs&&ve?t.jsx(oh,{value:Mi,onChange:Ha}):null,Xi=js&&ve?t.jsx(ah,{value:Fi,onChange:Ga}):null,qi=Cs&&ve?t.jsx(ih,{value:Li,onChange:Ka}):null,Ji=ws&&ve?t.jsx(lh,{value:zi,onChange:Va}):null,Zi=Ss&&ve?t.jsx(ch,{value:Oi,onChange:Ya}):null,Qi=Ts&&ve?t.jsx(dh,{value:_i,onChange:Xa,documentColors:En,imageColors:Rn}):null,el=ks&&j?t.jsx(uh,{value:or,onChange:ki,documentColors:En,imageColors:Rn}):null,tl=Ns&&j?t.jsx(hh,{mode:Ui,fill:Pi,stroke:$i,scope:Bi,onModeChange:fi,onFillChange:pi,onStrokeChange:mi,onScopeChange:gi}):null,nl=Rs&&j?t.jsx(mh,{stroke:j.stroke,onChange:wi,documentColors:En,imageColors:Rn}):null,rl=Es&&j?t.jsx(fh,{textureUrl:((Hs=j.distressEffect)==null?void 0:Hs.textureUrl)??"",opacity:Math.round((((Gs=j.distressEffect)==null?void 0:Gs.textureOpacity)??.5)*100),onTextureChange:xi,onOpacityChange:bi}):null,pt=(Ks=j==null?void 0:j.masks)==null?void 0:Ks.find(y=>y.id==="quick-image-mask"),sl=Is&&j?t.jsx(ph,{imageUrl:((Vs=pt==null?void 0:pt.maskElement)==null?void 0:Vs.imageUrl)??"",maskType:(pt==null?void 0:pt.type)??"clip",opacity:Math.round(((pt==null?void 0:pt.opacity)??1)*100),inverted:(pt==null?void 0:pt.inverted)??!1,onImageChange:yi,onMaskTypeChange:vi,onOpacityChange:ji,onInvertedChange:Ci}):null,ol=e==="embedded"&&!z&&!N?R?t.jsx("div",{className:"toolbar-empty-state",children:R}):w!==null?t.jsx("div",{className:"toolbar-empty-state",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"16px 24px",color:"var(--foreground)",opacity:.5,fontSize:"14px",textAlign:"center"},children:w}):null:null,al=e==="embedded"&&N&&!z&&M.getActiveArtboard()?t.jsxs("div",{className:"px-4 py-3 flex flex-col gap-3",children:[t.jsx(Or,{icon:"lucide:palette",label:"Artboard Properties",onClose:()=>v==null?void 0:v(!1),closeButtonStyle:"done"}),t.jsx(va,{distressTexture:M.getActiveArtboard().distressTexture,onChange:y=>{const E=M.getActiveArtboard();h?h(E.id,{distressTexture:E.distressTexture},{distressTexture:y}):(M.updateArtboard(E.id,{distressTexture:y}),$())}}),t.jsx(ja,{imageMask:M.getActiveArtboard().imageMask,onChange:y=>{const E=M.getActiveArtboard();h?h(E.id,{imageMask:E.imageMask},{imageMask:y}):(M.updateArtboard(E.id,{imageMask:y}),$())}})]}):null,il=e==="embedded"?t.jsx(bh,{toolbarContent:gs,innerContentRef:ft,shouldRender:Ke,isExiting:Re,transitionHeight:at,emptyStateContent:al||ol,isCornerRadiusPanelOpen:ar,isCropPanelOpen:ir,isRotationPanelOpen:xs,isOpacityPanelOpen:bs,isFontSizePanelOpen:ys,isShapeCornerRadiusPanelOpen:vs,isShapeTransparencyPanelOpen:js,isShapeSidesPanelOpen:Cs,isShapePointsPanelOpen:ws,isShapeInnerRadiusPanelOpen:Ss,isShapeColorPanelOpen:Ts,isTextColorPanelOpen:ks,isStrokePanelOpen:Rs,isKnockoutPanelOpen:Ns,isDistressTexturePanelOpen:Es,isImageMaskPanelOpen:Is,cornerRadiusPanel:Wi,cropPanelContent:Hi,rotationPanel:Gi,opacityPanel:Ki,fontSizePanel:Vi,shapeCornerRadiusPanel:Yi,shapeTransparencyPanel:Xi,shapeSidesPanel:qi,shapePointsPanel:Ji,shapeInnerRadiusPanel:Zi,shapeColorPanel:Qi,textColorPanel:el,strokePanel:nl,knockoutPanel:tl,distressTexturePanel:rl,imageMaskPanel:sl}):null,ll=ht.width>0?Math.max(ht.width,200):280,cl=e==="floating"&&ar&&(j==null?void 0:j.transformType)==="image"&&be?t.jsx(yh,{toolbarPosition:be,toolbarHeight:ht.height||56,panelWidth:ll,value:Ds,onChange:us}):null,dl=e==="floating"&&ir&&(j==null?void 0:j.transformType)==="image"&&be?t.jsx(vh,{toolbarPosition:be,toolbarHeight:ht.height||56,element:j,onElementUpdate:te}):null;return t.jsxs(t.Fragment,{children:[e==="floating"&&typeof document<"u"?$t.createPortal(t.jsxs(t.Fragment,{children:[gs,cl,dl]}),document.body):il,e!=="embedded"&&!z&&M.getActiveArtboard()&&h&&t.jsx(Ca,{artboard:M.getActiveArtboard(),artboards:J,onArtboardUpdate:y=>{const E=M.getActiveArtboard();h(E.id,{backgroundColor:E.backgroundColor,backgroundType:E.backgroundType,backgroundTexture:E.backgroundTexture,exportBackground:E.exportBackground},{backgroundColor:y.backgroundColor,backgroundType:y.backgroundType,backgroundTexture:y.backgroundTexture,exportBackground:y.exportBackground})},onRenameArtboard:(y,E)=>{M.renameArtboard(y,E),$()},onDeleteArtboard:y=>{M.deleteArtboard(y),$()},artboardScreenBounds:m}),!s&&(j==null?void 0:j.transformType)==="shape"&&t.jsx(is,{isOpen:Je,onClose:()=>Ze(!1),onSelectType:Si,currentType:j.transformData.shapeType})]})},Fh=Object.freeze(Object.defineProperty({__proto__:null,ContextualToolbars:Vr,default:Vr},Symbol.toStringTag,{value:"Module"})),cs=({trigger:e,children:n,isOpen:r,onToggle:s,position:a="bottom",align:o="start",offset:l=8,protectClick:d=!0,className:u="",contentClassName:h=""})=>{const m=i.useRef(null),f=i.useRef(null),g=i.useRef(null),[p,b]=i.useState({}),[x,S]=i.useState(!1),T=w=>{w.stopPropagation(),!r&&d&&F.clickProtection.protectNextClick(),s(!r)};i.useEffect(()=>{if(!r)return;let w=()=>{};const R=setTimeout(()=>{const N=v=>{var A,_;const L=v.target,D=(A=m.current)==null?void 0:A.contains(L),O=(_=g.current)==null?void 0:_.contains(L);!D&&!O&&s(!1)};document.addEventListener("mousedown",N),w=()=>document.removeEventListener("mousedown",N)},0);return()=>{clearTimeout(R),w()}},[r,s]),i.useEffect(()=>{if(!r)return;const w=R=>{var N;if(R.key==="Escape"){R.stopPropagation(),R.preventDefault(),s(!1);const v=(N=f.current)==null?void 0:N.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');v==null||v.focus()}};return document.addEventListener("keydown",w),()=>document.removeEventListener("keydown",w)},[r,s]),i.useEffect(()=>{r||S(!1)},[r]),i.useEffect(()=>{if(!r||!f.current||!g.current)return;requestAnimationFrame(()=>{const R=f.current,N=g.current;if(!R||!N)return;const v=R.getBoundingClientRect(),L=N.getBoundingClientRect(),D=window.innerWidth,O=window.innerHeight,A=16;let _=0,G=0;if(a==="bottom"||a==="top"?(a==="bottom"?_=v.bottom+l:_=v.top-L.height-l,o==="start"?G=v.left:o==="end"?G=v.right-L.width:o==="center"&&(G=v.left+(v.width-L.width)/2)):(a==="left"||a==="right")&&(a==="left"?G=v.left-L.width-l:G=v.right+l,o==="start"?_=v.top:o==="end"?_=v.bottom-L.height:o==="center"&&(_=v.top+(v.height-L.height)/2)),o!=="end"&&G+L.width>D-A&&(G=D-L.width-A),G<A&&(G=A),_+L.height>O-A){const B=v.top,H=O-v.bottom;B>H&&(_=v.top-L.height-l)}_<A&&(_=A);const Y=D-A*2;S(!0),b({position:"fixed",top:`${_}px`,left:`${G}px`,maxWidth:`${Y}px`,visibility:"visible"})})},[r,a,o,l]);const C=r&&t.jsx("div",{ref:g,className:`z-dropdown ${h}`.trim(),"data-preserve-selection":!0,style:x?p:{position:"fixed",visibility:"hidden",top:0,left:0},children:n});return t.jsxs("div",{className:`relative inline-flex ${u}`.trim(),ref:m,children:[t.jsx("div",{ref:f,onClick:T,children:e}),C&&$t.createPortal(C,document.body)]})},Yr=({children:e,className:n="",minWidth:r="160px",maxHeight:s})=>{const a=s?`max-h-[${s}]`:"",o={minWidth:r};return t.jsx("div",{role:"menu",className:`flex flex-col gap-px rounded-xl border border-border-primary bg-surface p-xs shadow-md ${a} ${n}`.trim(),style:o,children:e})},Pt=({icon:e,label:n,shortcut:r,active:s=!1,disabled:a=!1,onClick:o,className:l="",children:d,...u})=>{const h=["flex items-center gap-md","px-lg py-md","bg-transparent border-none","rounded-lg","text-text-primary text-base font-normal","cursor-pointer","transition-all duration-fast","text-left w-full"],m=[s?"bg-accent-light font-medium":"",a?"opacity-disabled cursor-not-allowed":"hover:bg-bg-hover"],f=[...h,...m,l].filter(Boolean).join(" "),g=()=>{!a&&o&&o()};return t.jsxs("button",{role:"menuitem",className:f,onClick:g,disabled:a,type:"button",...u,children:[e&&t.jsx("span",{className:"flex shrink-0 items-center",children:e}),t.jsx("span",{className:"flex-1",children:d||n}),r&&t.jsx("span",{className:"ml-auto text-sm text-text-muted",children:r}),s&&!r&&t.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"ml-auto shrink-0",children:t.jsx("path",{d:"M13 4L6 11L3 8",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]})},Lh=({title:e,icon:n,children:r,enableable:s=!1,enabled:a=!1,onEnabledChange:o,collapsible:l=!1,expanded:d=!0,onExpandChange:u,className:h=""})=>{const m=s?a&&d:l?d:!0,f=s&&a||l,g=()=>{o&&o(!a)},p=()=>{u&&u(!d)};return t.jsxs("div",{className:`rounded-xl border border-border-primary bg-bg-secondary p-xl ${h}`,children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-md",children:[s&&t.jsx("label",{className:"flex cursor-pointer items-center",children:t.jsx("input",{type:"checkbox",checked:a,onChange:g,className:"h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary"})}),t.jsxs("div",{className:"flex items-center gap-md",children:[n&&t.jsx("span",{className:"flex items-center text-text-secondary",children:n}),t.jsx("h3",{className:"text-xl font-semibold text-text-primary",children:e})]})]}),f&&t.jsx("button",{onClick:p,className:"rounded-lg border-none bg-transparent px-md py-xs text-base text-text-muted transition-colors duration-fast hover:text-text-primary",title:d?"Collapse":"Expand",children:d?"▼":"▶"})]}),m&&t.jsx("div",{className:"mt-xl flex flex-col gap-xl",children:r})]})},zh=({label:e,labelSuffix:n,children:r,inline:s=!1,className:a=""})=>t.jsxs("div",{className:`flex ${s?"items-center justify-between":"flex-col"} gap-sm ${a}`,children:[t.jsxs("label",{className:"flex items-center justify-between text-base font-medium text-text-secondary",children:[t.jsx("span",{children:e}),n&&t.jsx("span",{className:"font-semibold text-accent-primary",children:n})]}),t.jsx("div",{className:s?"flex-shrink-0":"",children:r})]});function Oh({options:e,value:n,onChange:r,fullWidth:s=!0,className:a=""}){return t.jsx("div",{className:`flex gap-sm ${a}`,children:e.map(o=>{const l=o.value===n;return t.jsxs("button",{onClick:()=>!o.disabled&&r(o.value),disabled:o.disabled,title:o.tooltip,className:` ${s?"flex-1":""} flex items-center justify-center gap-xs rounded-lg border px-md py-sm text-base font-medium transition-all duration-fast ${l?"border-accent-primary bg-accent-primary text-text-on-accent":"border-border-primary bg-bg-tertiary text-text-secondary hover:border-border-secondary hover:bg-bg-hover hover:text-text-primary"} ${o.disabled?"cursor-not-allowed opacity-disabled":"cursor-pointer"} `,children:[o.icon&&t.jsx("span",{className:"flex items-center",children:o.icon}),t.jsx("span",{children:o.label})]},String(o.value))})})}const _h=({label:e,icon:n,checked:r,onChange:s,disabled:a=!1,className:o=""})=>{const l=d=>{s(d.target.checked)};return t.jsxs("label",{className:`flex cursor-pointer items-center gap-md ${a?"cursor-not-allowed opacity-disabled":""} ${o}`,children:[t.jsx("input",{type:"checkbox",checked:r,onChange:l,disabled:a,className:"h-4 w-4 cursor-pointer rounded border-border-primary bg-bg-input accent-accent-primary disabled:cursor-not-allowed"}),t.jsxs("span",{className:"flex items-center gap-sm text-base font-medium text-text-primary",children:[n&&t.jsx("span",{className:"flex items-center text-text-secondary",children:n}),t.jsx("span",{children:e})]})]})},Ph=({checked:e,onChange:n,label:r,disabled:s=!1,className:a=""})=>{const o=()=>{s||n(!e)};return t.jsxs("label",{className:`flex items-center gap-md cursor-pointer select-none ${s?"opacity-50 cursor-not-allowed":""} ${a}`.trim(),children:[t.jsx("input",{type:"checkbox",checked:e,onChange:o,disabled:s,className:"absolute opacity-0 w-0 h-0 peer"}),t.jsx("span",{className:`
20
20
  relative inline-block w-9 h-5 rounded-[999px] transition-colors
21
21
  ${e?"bg-accent-primary":"bg-bg-tertiary"}
22
22
  after:content-[''] after:absolute after:top-[2px] after:left-[2px]
23
23
  after:w-4 after:h-4 after:bg-white after:rounded-full
24
24
  after:transition-transform after:shadow-md
25
25
  ${e?"after:translate-x-4":""}
26
- `.trim()}),r&&t.jsx("span",{className:"text-md text-text-primary font-medium",children:r})]})},$h=({isOpen:e,onToggle:n,trigger:r,children:s})=>{const a=t.jsxs(c.Tooltip,{delayDuration:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"toolbar",onClick:o=>{o.stopPropagation(),n(!e)},children:t.jsx(L.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:"More"})})]});return t.jsx(cs,{isOpen:e,onToggle:n,trigger:r||a,position:"bottom",align:"end",offset:4,children:t.jsx("div",{className:"flex items-center gap-sm bg-bg-primary border border-border-primary rounded-xl px-xl py-md shadow-sm h-[52px]",children:s})})},Rr=$.createLogger("MenuButton"),$a=({isLayersPanelOpen:e=!1,onToggleLayersPanel:n,onOpenImageBrowser:r,additionalItems:s,icon:a=t.jsx(L.Icon,{icon:X.menu,className:"size-6"}),tooltip:o="Menu",className:l})=>{const{artboardManager:d,elements:u,canvasRef:h,handleLoadWorkspace:m,handleAddElement:f}=je.useEditor(),[g,p]=i.useState(!1),[b,x]=i.useState(!1),[S,T]=i.useState(!1),C=i.useRef(null),w=()=>{try{const P=d.getAllArtboards();ye.ExportManager.exportToJSON(P,u,d),p(!1)}catch(P){Rr.error("Failed to save workspace:",P),alert("Failed to save workspace. Please try again.")}},R=()=>{var P;(P=C.current)==null||P.click(),p(!1)},k=async P=>{var Y;const G=(Y=P.target.files)==null?void 0:Y[0];if(G){try{const U=await Ln.ImportManager.importFromJSON(G);if(U.success&&U.artboards&&U.elements){const W=Ln.ImportManager.validateImportedData(U.artboards,U.elements);if(!W.valid&&!confirm(`Found ${W.errors.length} issue(s) in the file:
26
+ `.trim()}),r&&t.jsx("span",{className:"text-md text-text-primary font-medium",children:r})]})},$h=({isOpen:e,onToggle:n,trigger:r,children:s})=>{const a=t.jsxs(c.Tooltip,{delayDuration:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"toolbar",onClick:o=>{o.stopPropagation(),n(!e)},children:t.jsx(F.Icon,{icon:"lucide:ellipsis-vertical",className:"size-6"})})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:"More"})})]});return t.jsx(cs,{isOpen:e,onToggle:n,trigger:r||a,position:"bottom",align:"end",offset:4,children:t.jsx("div",{className:"flex items-center gap-sm bg-bg-primary border border-border-primary rounded-xl px-xl py-md shadow-sm h-[52px]",children:s})})},Rr=U.createLogger("MenuButton"),$a=({isLayersPanelOpen:e=!1,onToggleLayersPanel:n,onOpenImageBrowser:r,additionalItems:s,icon:a=t.jsx(F.Icon,{icon:V.menu,className:"size-6"}),tooltip:o="Menu",className:l})=>{const{artboardManager:d,elements:u,canvasRef:h,handleLoadWorkspace:m,handleAddElement:f}=je.useEditor(),[g,p]=i.useState(!1),[b,x]=i.useState(!1),[S,T]=i.useState(!1),C=i.useRef(null),w=()=>{try{const _=d.getAllArtboards();ye.ExportManager.exportToJSON(_,u,d),p(!1)}catch(_){Rr.error("Failed to save workspace:",_),alert("Failed to save workspace. Please try again.")}},R=()=>{var _;(_=C.current)==null||_.click(),p(!1)},N=async _=>{var Y;const G=(Y=_.target.files)==null?void 0:Y[0];if(G){try{const B=await Ln.ImportManager.importFromJSON(G);if(B.success&&B.artboards&&B.elements){const H=Ln.ImportManager.validateImportedData(B.artboards,B.elements);if(!H.valid&&!confirm(`Found ${H.errors.length} issue(s) in the file:
27
27
 
28
- `+W.errors.slice(0,3).join(`
29
- `)+(W.errors.length>3?`
30
- ...and ${W.errors.length-3} more`:"")+`
28
+ `+H.errors.slice(0,3).join(`
29
+ `)+(H.errors.length>3?`
30
+ ...and ${H.errors.length-3} more`:"")+`
31
31
 
32
- Do you want to load anyway?`))return;const F=Ln.ImportManager.getImportSummary(U.artboards,U.elements);confirm(`Load workspace with:
32
+ Do you want to load anyway?`))return;const z=Ln.ImportManager.getImportSummary(B.artboards,B.elements);confirm(`Load workspace with:
33
33
 
34
- • ${F.artboardCount} artboard(s): ${F.artboardNames.join(", ")}
35
- • ${F.elementCount} element(s)
34
+ • ${z.artboardCount} artboard(s): ${z.artboardNames.join(", ")}
35
+ • ${z.elementCount} element(s)
36
36
 
37
- This will replace your current workspace. Continue?`)&&m(U.artboards,U.elements,U.activeArtboardId||null)}else alert(`Failed to load: ${U.error||"Unknown error"}`)}catch(U){Rr.error("Failed to load workspace:",U),alert("Failed to load workspace. Please check the file and try again.")}C.current&&(C.current.value="")}},v=async()=>{if(!(h!=null&&h.current)){alert("Canvas not available for export");return}const P=d.getActiveArtboard();if(!P){alert("No active artboard to export");return}try{await ye.ExportManager.exportArtboardToImage(P,u,h.current,{format:"png",scale:2,transparentBackground:!1}),p(!1)}catch(G){Rr.error("Failed to export artboard:",G),alert("Failed to export artboard. Please try again.")}},z=async P=>{if(P==="image"&&r){r(),p(!1),x(!1);return}if(P==="shape"){p(!1),x(!1),T(!0);return}await f(P),p(!1),x(!1)},D=async P=>{T(!1),await f("shape",{shapeType:P})},O=[{type:"custom",label:"Text",icon:t.jsx(L.Icon,{icon:X.text,className:"size-[18px]"})},{type:"image",label:"Image",icon:t.jsx(L.Icon,{icon:X.image,className:"size-[18px]"})},{type:"shape",label:"Shape",icon:t.jsx(L.Icon,{icon:X.shapes,className:"size-[18px]"})},{type:"circle",label:"Circle Text",icon:t.jsx(L.Icon,{icon:"lucide:circle",className:"size-[18px]"})},{type:"wave",label:"Wave Text",icon:t.jsx(L.Icon,{icon:"lucide:waves",className:"size-[18px]"})},{type:"arch",label:"Arch Text",icon:t.jsx(L.Icon,{icon:"lucide:arrow-up-from-dot",className:"size-[18px]"})}],A=()=>t.jsx("div",{className:"my-xs h-px bg-border-primary"});return t.jsxs(t.Fragment,{children:[t.jsx(cs,{trigger:t.jsxs(c.Tooltip,{delayDuration:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon","aria-label":o,className:l,children:a})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:o})})]}),isOpen:g,onToggle:p,position:"bottom",align:"end",children:t.jsxs(Yr,{minWidth:"200px",children:[t.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>x(!0),onMouseLeave:()=>x(!1),children:[t.jsx(Pt,{icon:t.jsx(L.Icon,{icon:X.plus,className:"size-[18px]"}),label:"Add Element"}),b&&t.jsx("div",{style:{position:"absolute",left:"100%",top:0,zIndex:"var(--z-sticky)"},children:t.jsx(Yr,{minWidth:"180px",children:O.map(P=>t.jsx(Pt,{icon:P.icon,label:P.label,onClick:()=>z(P.type)},P.type))})})]}),t.jsx(A,{}),t.jsx(Pt,{icon:t.jsx(L.Icon,{icon:X.save,className:"size-[18px]"}),label:"Save",onClick:w}),t.jsx(Pt,{icon:t.jsx(L.Icon,{icon:X.folderOpen,className:"size-[18px]"}),label:"Open",onClick:R}),t.jsx(Pt,{icon:t.jsx(L.Icon,{icon:X.download,className:"size-[18px]"}),label:"Export Image",onClick:v,disabled:!(h!=null&&h.current)}),n&&t.jsxs(t.Fragment,{children:[t.jsx(A,{}),t.jsx(Pt,{icon:t.jsx(L.Icon,{icon:X.layers,className:"size-[18px]"}),label:`${e?"Hide":"Show"} Layers`,onClick:()=>{n(),p(!1)}})]}),s&&t.jsxs(t.Fragment,{children:[t.jsx(A,{}),s]})]})}),t.jsx("input",{ref:C,type:"file",accept:".json",style:{display:"none"},onChange:k}),t.jsx(is,{isOpen:S,onClose:()=>T(!1),onSelectType:D})]})},Bh=Object.freeze(Object.defineProperty({__proto__:null,MenuButton:$a},Symbol.toStringTag,{value:"Module"})),Xr=({className:e,position:n="bottom-right",showFitButton:r=!0,showResetButton:s=!0})=>{const{zoom:a,zoomIn:o,zoomOut:l,zoomToFit:d,resetView:u}=je.useViewportContext(),h=Math.round(a*100),m={"bottom-left":{bottom:16,left:16},"bottom-right":{bottom:16,right:16},"top-left":{top:16,left:16},"top-right":{top:16,right:16}};return t.jsxs("div",{className:e,style:{position:"absolute",...m[n],display:"flex",alignItems:"center",gap:4,padding:4,backgroundColor:"var(--surface)",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-md)",zIndex:"var(--z-sticky)"},children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:l,disabled:a<=.1,"aria-label":"Zoom out",children:t.jsx(L.Icon,{icon:X.minus,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Zoom out"})]}),t.jsxs("div",{style:{minWidth:48,textAlign:"center",fontSize:13,fontWeight:500,color:"var(--foreground)",fontVariantNumeric:"tabular-nums"},children:[h,"%"]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:o,disabled:a>=4,"aria-label":"Zoom in",children:t.jsx(L.Icon,{icon:X.plus,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Zoom in"})]}),(r||s)&&t.jsx("div",{style:{width:1,height:20,backgroundColor:"var(--divider)",margin:"0 4px"}}),r&&t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:d,"aria-label":"Fit to screen",children:t.jsx(L.Icon,{icon:X.fitScreen,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Fit to screen"})]}),s&&t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:u,"aria-label":"Reset to 100%",children:t.jsx(L.Icon,{icon:X.maximize,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Reset to 100%"})]})]})},Uh=Object.freeze(Object.defineProperty({__proto__:null,ZoomControls:Xr,default:Xr},Symbol.toStringTag,{value:"Module"})),Ir=$.createLogger("useProjectLoader");function Wh(){const{handleLoadWorkspace:e}=je.useEditor(),[n,r]=i.useState(!1),[s,a]=i.useState(null),[o,l]=i.useState(null),[d,u]=i.useState(null),h=i.useCallback(async g=>{r(!0),a(null);try{const p=typeof g=="string"?JSON.parse(g):g;if(!p.artboards||!Array.isArray(p.artboards))throw new Error("Invalid document format: missing artboards array");const b=JSON.stringify(p),x=new Blob([b],{type:"application/json"}),S=new File([x],"project.json",{type:"application/json"}),T=await Ln.ImportManager.importFromJSON(S);if(!T.success||!T.artboards||!T.elements)throw new Error(T.error||"Failed to import project");e(T.artboards,T.elements,T.activeArtboardId||null),l(p);const C=p.artboards.reduce((w,R)=>{var k;return w+(((k=R.elements)==null?void 0:k.length)||0)},0);u({version:p.metadata.version,timestamp:p.metadata.timestamp,artboardCount:p.artboards.length,elementCount:C})}catch(p){throw Ir.error("[useProjectLoader] Failed to load project:",p),a(p),p}finally{r(!1)}},[e]),m=i.useCallback(async g=>{r(!0),a(null);try{const p=await g.text();await h(p)}catch(p){throw Ir.error("[useProjectLoader] Failed to load file:",p),a(p),p}finally{r(!1)}},[h]),f=i.useCallback(async g=>{r(!0),a(null);try{const p={metadata:{version:"2.0.0",timestamp:new Date().toISOString(),appVersion:"1.0.0"},artboards:g.artboards.map((b,x)=>({id:`artboard-${Date.now()}-${x}`,name:b.name,x:0,y:0,width:b.width,height:b.height,backgroundColor:b.backgroundColor,elements:b.elements||[]})),activeArtboardId:null};await h(p)}catch(p){throw Ir.error("[useProjectLoader] Failed to load template:",p),a(p),p}finally{r(!1)}},[h]);return{loadFromJSON:h,loadFromFile:m,loadTemplate:f,isLoading:n,loadError:s,currentProject:o,projectMetadata:d}}const Mo={xs:320,sm:480,md:768,lg:1024,xl:1280,xxl:1536};function Hh(e,n){return e>=n.xxl?"xxl":e>=n.xl?"xl":e>=n.lg?"lg":e>=n.md?"md":e>=n.sm?"sm":"xs"}function Gh(e){const n={...Mo,...e},[r,s]=i.useState(()=>typeof window<"u"?window.innerWidth:Mo.lg);i.useEffect(()=>{if(typeof window>"u")return;const b=()=>{s(window.innerWidth)};return window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[]);const a=i.useMemo(()=>Hh(r,n),[r,n]),o=a==="xs",l=a==="sm",d=a==="md",u=a==="lg",h=a==="xl",m=a==="xxl",f=["xs","sm","md","lg","xl","xxl"];return{breakpoint:a,width:r,isXs:o,isSm:l,isMd:d,isLg:u,isXl:h,isXxl:m,isAtLeast:b=>{const x=f.indexOf(a),S=f.indexOf(b);return x>=S},isAtMost:b=>{const x=f.indexOf(a),S=f.indexOf(b);return x<=S}}}const Fo={fps:0,avgRenderTime:0,peakRenderTime:0,memoryUsage:0,elementCount:0,exportCount:0,avgExportTime:0};function Kh(){const[e,n]=i.useState(Fo),[r,s]=i.useState(!1),a=i.useRef([]),o=i.useRef([]),l=i.useRef([]),d=i.useRef(performance.now()),u=i.useRef(null),h=i.useCallback(C=>C.length===0?0:1e3/(C.reduce((R,k)=>R+k,0)/C.length),[]),m=i.useCallback(C=>C.length===0?0:C.reduce((w,R)=>w+R,0)/C.length,[]),f=i.useCallback(()=>"memory"in performance&&performance.memory?performance.memory.usedJSHeapSize/(1024*1024):0,[]),g=i.useCallback(()=>{const C={fps:h(a.current),avgRenderTime:m(o.current),peakRenderTime:Math.max(...o.current,0),memoryUsage:f(),elementCount:0,exportCount:l.current.length,avgExportTime:m(l.current)};n(C)},[h,m,f]),p=i.useCallback(()=>{const C=performance.now(),w=C-d.current;d.current=C,a.current.push(w),a.current.length>60&&a.current.shift(),a.current.length%30===0&&g(),r&&(u.current=requestAnimationFrame(p))},[r,g]),b=i.useCallback(()=>{s(!0),d.current=performance.now(),u.current=requestAnimationFrame(p)},[p]),x=i.useCallback(()=>{s(!1),u.current!==null&&(cancelAnimationFrame(u.current),u.current=null)},[]),S=i.useCallback(()=>{a.current=[],o.current=[],l.current=[],n(Fo)},[]),T=i.useCallback(()=>`
37
+ This will replace your current workspace. Continue?`)&&m(B.artboards,B.elements,B.activeArtboardId||null)}else alert(`Failed to load: ${B.error||"Unknown error"}`)}catch(B){Rr.error("Failed to load workspace:",B),alert("Failed to load workspace. Please check the file and try again.")}C.current&&(C.current.value="")}},v=async()=>{if(!(h!=null&&h.current)){alert("Canvas not available for export");return}const _=d.getActiveArtboard();if(!_){alert("No active artboard to export");return}try{await ye.ExportManager.exportArtboardToImage(_,u,h.current,{format:"png",scale:2,transparentBackground:!1}),p(!1)}catch(G){Rr.error("Failed to export artboard:",G),alert("Failed to export artboard. Please try again.")}},L=async _=>{if(_==="image"&&r){r(),p(!1),x(!1);return}if(_==="shape"){p(!1),x(!1),T(!0);return}await f(_),p(!1),x(!1)},D=async _=>{T(!1),await f("shape",{shapeType:_})},O=[{type:"custom",label:"Text",icon:t.jsx(F.Icon,{icon:V.text,className:"size-[18px]"})},{type:"image",label:"Image",icon:t.jsx(F.Icon,{icon:V.image,className:"size-[18px]"})},{type:"shape",label:"Shape",icon:t.jsx(F.Icon,{icon:V.shapes,className:"size-[18px]"})},{type:"circle",label:"Circle Text",icon:t.jsx(F.Icon,{icon:"lucide:circle",className:"size-[18px]"})},{type:"wave",label:"Wave Text",icon:t.jsx(F.Icon,{icon:"lucide:waves",className:"size-[18px]"})},{type:"arch",label:"Arch Text",icon:t.jsx(F.Icon,{icon:"lucide:arrow-up-from-dot",className:"size-[18px]"})}],A=()=>t.jsx("div",{className:"my-xs h-px bg-border-primary"});return t.jsxs(t.Fragment,{children:[t.jsx(cs,{trigger:t.jsxs(c.Tooltip,{delayDuration:0,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon","aria-label":o,className:l,children:a})}),t.jsx(c.TooltipContent,{children:t.jsx("p",{children:o})})]}),isOpen:g,onToggle:p,position:"bottom",align:"end",children:t.jsxs(Yr,{minWidth:"200px",children:[t.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>x(!0),onMouseLeave:()=>x(!1),children:[t.jsx(Pt,{icon:t.jsx(F.Icon,{icon:V.plus,className:"size-[18px]"}),label:"Add Element"}),b&&t.jsx("div",{style:{position:"absolute",left:"100%",top:0,zIndex:"var(--z-sticky)"},children:t.jsx(Yr,{minWidth:"180px",children:O.map(_=>t.jsx(Pt,{icon:_.icon,label:_.label,onClick:()=>L(_.type)},_.type))})})]}),t.jsx(A,{}),t.jsx(Pt,{icon:t.jsx(F.Icon,{icon:V.save,className:"size-[18px]"}),label:"Save",onClick:w}),t.jsx(Pt,{icon:t.jsx(F.Icon,{icon:V.folderOpen,className:"size-[18px]"}),label:"Open",onClick:R}),t.jsx(Pt,{icon:t.jsx(F.Icon,{icon:V.download,className:"size-[18px]"}),label:"Export Image",onClick:v,disabled:!(h!=null&&h.current)}),n&&t.jsxs(t.Fragment,{children:[t.jsx(A,{}),t.jsx(Pt,{icon:t.jsx(F.Icon,{icon:V.layers,className:"size-[18px]"}),label:`${e?"Hide":"Show"} Layers`,onClick:()=>{n(),p(!1)}})]}),s&&t.jsxs(t.Fragment,{children:[t.jsx(A,{}),s]})]})}),t.jsx("input",{ref:C,type:"file",accept:".json",style:{display:"none"},onChange:N}),t.jsx(is,{isOpen:S,onClose:()=>T(!1),onSelectType:D})]})},Bh=Object.freeze(Object.defineProperty({__proto__:null,MenuButton:$a},Symbol.toStringTag,{value:"Module"})),Xr=({className:e,position:n="bottom-right",showFitButton:r=!0,showResetButton:s=!0})=>{const{zoom:a,zoomIn:o,zoomOut:l,zoomToFit:d,resetView:u}=je.useViewportContext(),h=Math.round(a*100),m={"bottom-left":{bottom:16,left:16},"bottom-right":{bottom:16,right:16},"top-left":{top:16,left:16},"top-right":{top:16,right:16}};return t.jsxs("div",{className:e,style:{position:"absolute",...m[n],display:"flex",alignItems:"center",gap:4,padding:4,backgroundColor:"var(--surface)",borderRadius:"var(--radius-lg)",boxShadow:"var(--shadow-md)",zIndex:"var(--z-sticky)"},children:[t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:l,disabled:a<=.1,"aria-label":"Zoom out",children:t.jsx(F.Icon,{icon:V.minus,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Zoom out"})]}),t.jsxs("div",{style:{minWidth:48,textAlign:"center",fontSize:13,fontWeight:500,color:"var(--foreground)",fontVariantNumeric:"tabular-nums"},children:[h,"%"]}),t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:o,disabled:a>=4,"aria-label":"Zoom in",children:t.jsx(F.Icon,{icon:V.plus,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Zoom in"})]}),(r||s)&&t.jsx("div",{style:{width:1,height:20,backgroundColor:"var(--divider)",margin:"0 4px"}}),r&&t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:d,"aria-label":"Fit to screen",children:t.jsx(F.Icon,{icon:V.fitScreen,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Fit to screen"})]}),s&&t.jsxs(c.Tooltip,{children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx(c.Button,{variant:"ghost",size:"icon",onClick:u,"aria-label":"Reset to 100%",children:t.jsx(F.Icon,{icon:V.maximize,className:"size-4"})})}),t.jsx(c.TooltipContent,{children:"Reset to 100%"})]})]})},Uh=Object.freeze(Object.defineProperty({__proto__:null,ZoomControls:Xr,default:Xr},Symbol.toStringTag,{value:"Module"})),Ir=U.createLogger("useProjectLoader");function Wh(){const{handleLoadWorkspace:e}=je.useEditor(),[n,r]=i.useState(!1),[s,a]=i.useState(null),[o,l]=i.useState(null),[d,u]=i.useState(null),h=i.useCallback(async g=>{r(!0),a(null);try{const p=typeof g=="string"?JSON.parse(g):g;if(!p.artboards||!Array.isArray(p.artboards))throw new Error("Invalid document format: missing artboards array");const b=JSON.stringify(p),x=new Blob([b],{type:"application/json"}),S=new File([x],"project.json",{type:"application/json"}),T=await Ln.ImportManager.importFromJSON(S);if(!T.success||!T.artboards||!T.elements)throw new Error(T.error||"Failed to import project");e(T.artboards,T.elements,T.activeArtboardId||null),l(p);const C=p.artboards.reduce((w,R)=>{var N;return w+(((N=R.elements)==null?void 0:N.length)||0)},0);u({version:p.metadata.version,timestamp:p.metadata.timestamp,artboardCount:p.artboards.length,elementCount:C})}catch(p){throw Ir.error("[useProjectLoader] Failed to load project:",p),a(p),p}finally{r(!1)}},[e]),m=i.useCallback(async g=>{r(!0),a(null);try{const p=await g.text();await h(p)}catch(p){throw Ir.error("[useProjectLoader] Failed to load file:",p),a(p),p}finally{r(!1)}},[h]),f=i.useCallback(async g=>{r(!0),a(null);try{const p={metadata:{version:"2.0.0",timestamp:new Date().toISOString(),appVersion:"1.0.0"},artboards:g.artboards.map((b,x)=>({id:`artboard-${Date.now()}-${x}`,name:b.name,x:0,y:0,width:b.width,height:b.height,backgroundColor:b.backgroundColor,elements:b.elements||[]})),activeArtboardId:null};await h(p)}catch(p){throw Ir.error("[useProjectLoader] Failed to load template:",p),a(p),p}finally{r(!1)}},[h]);return{loadFromJSON:h,loadFromFile:m,loadTemplate:f,isLoading:n,loadError:s,currentProject:o,projectMetadata:d}}const Mo={xs:320,sm:480,md:768,lg:1024,xl:1280,xxl:1536};function Hh(e,n){return e>=n.xxl?"xxl":e>=n.xl?"xl":e>=n.lg?"lg":e>=n.md?"md":e>=n.sm?"sm":"xs"}function Gh(e){const n={...Mo,...e},[r,s]=i.useState(()=>typeof window<"u"?window.innerWidth:Mo.lg);i.useEffect(()=>{if(typeof window>"u")return;const b=()=>{s(window.innerWidth)};return window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[]);const a=i.useMemo(()=>Hh(r,n),[r,n]),o=a==="xs",l=a==="sm",d=a==="md",u=a==="lg",h=a==="xl",m=a==="xxl",f=["xs","sm","md","lg","xl","xxl"];return{breakpoint:a,width:r,isXs:o,isSm:l,isMd:d,isLg:u,isXl:h,isXxl:m,isAtLeast:b=>{const x=f.indexOf(a),S=f.indexOf(b);return x>=S},isAtMost:b=>{const x=f.indexOf(a),S=f.indexOf(b);return x<=S}}}const Fo={fps:0,avgRenderTime:0,peakRenderTime:0,memoryUsage:0,elementCount:0,exportCount:0,avgExportTime:0};function Kh(){const[e,n]=i.useState(Fo),[r,s]=i.useState(!1),a=i.useRef([]),o=i.useRef([]),l=i.useRef([]),d=i.useRef(performance.now()),u=i.useRef(null),h=i.useCallback(C=>C.length===0?0:1e3/(C.reduce((R,N)=>R+N,0)/C.length),[]),m=i.useCallback(C=>C.length===0?0:C.reduce((w,R)=>w+R,0)/C.length,[]),f=i.useCallback(()=>"memory"in performance&&performance.memory?performance.memory.usedJSHeapSize/(1024*1024):0,[]),g=i.useCallback(()=>{const C={fps:h(a.current),avgRenderTime:m(o.current),peakRenderTime:Math.max(...o.current,0),memoryUsage:f(),elementCount:0,exportCount:l.current.length,avgExportTime:m(l.current)};n(C)},[h,m,f]),p=i.useCallback(()=>{const C=performance.now(),w=C-d.current;d.current=C,a.current.push(w),a.current.length>60&&a.current.shift(),a.current.length%30===0&&g(),r&&(u.current=requestAnimationFrame(p))},[r,g]),b=i.useCallback(()=>{s(!0),d.current=performance.now(),u.current=requestAnimationFrame(p)},[p]),x=i.useCallback(()=>{s(!1),u.current!==null&&(cancelAnimationFrame(u.current),u.current=null)},[]),S=i.useCallback(()=>{a.current=[],o.current=[],l.current=[],n(Fo)},[]),T=i.useCallback(()=>`
38
38
  Performance Report
39
39
  ==================
40
40
  FPS: ${e.fps.toFixed(1)}
@@ -44,5 +44,5 @@ Memory Usage: ${e.memoryUsage.toFixed(1)}MB
44
44
  Element Count: ${e.elementCount}
45
45
  Export Count: ${e.exportCount}
46
46
  Avg Export Time: ${e.avgExportTime.toFixed(2)}ms
47
- `.trim(),[e]);return i.useEffect(()=>()=>{u.current!==null&&cancelAnimationFrame(u.current)},[]),{metrics:e,startProfiling:b,stopProfiling:x,clearMetrics:S,getReport:T,isProfiling:r}}function Vh(e){const{getElementById:n}=je.useEditor();return e?n(e)??null:null}function Yh(e){const{onReorder:n,onGroupReorder:r,onDropIntoGroup:s,onDropIntoGroupAtPosition:a,findElement:o,findParentGroup:l}=e,[d,u]=i.useState(null),[h,m]=i.useState(null),[f,g]=i.useState(null),p=i.useCallback((T,C)=>{T.dataTransfer.effectAllowed="move",requestAnimationFrame(()=>{u(C)})},[]),b=i.useCallback((T,C)=>{T.preventDefault(),T.dataTransfer.dropEffect="move";const w=T.currentTarget.getBoundingClientRect(),k=T.clientY-w.top,v=w.height,D=(o==null?void 0:o(C))instanceof $.GroupElement;let O;D?k<v*.25?O="before":k>v*.75?O="after":O="into":k<v*.4?O="before":k>v*.6?O="after":O=k<v/2?"before":"after",m(C),g(O)},[o]),x=i.useCallback(()=>{u(null),m(null),g(null)},[]),S=i.useCallback((T,C)=>{if(T.preventDefault(),!d||d===C||!f){x();return}if(f==="into")s&&s(d,C);else{const w=l==null?void 0:l(d),R=l==null?void 0:l(C),k=f==="before"?"after":"before";w&&R&&w.id===R.id?r&&r(d,C,k,w.id):!w&&R&&a?a(d,R.id,C,k):n(d,C,k)}x()},[d,f,n,r,s,a,l,x]);return{draggedId:d,dragOverId:h,dropPosition:f,handlers:{onDragStart:p,onDragOver:b,onDrop:S,onDragEnd:x}}}function Xh(e){const{selectedId:n,multiSelection:r,onSelectionChange:s,onMultiSelectionChange:a}=e,o=i.useCallback(d=>d===n||r.includes(d),[n,r]),l=i.useCallback((d,u)=>{if(d.shiftKey){const h=r.includes(u),m=n===u;if(r.length>0)if(h){const f=r.filter(g=>g!==u);f.length===1?(a([]),s(f[0])):f.length===0?(a([]),s(null)):a(f)}else a([...r,u]);else{if(m)return;n!==null?(a([n,u]),s(null)):s(u)}}else s(u),a([])},[n,r,s,a]);return{isSelected:o,handleClick:l}}const Ba=i.memo(({value:e,onChange:n,fontSizes:r,isOpen:s,onToggle:a})=>{const o=l=>{n(l),a(!1)};return t.jsxs(c.Popover,{open:s,onOpenChange:a,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"Font size",children:t.jsx(L.Icon,{icon:"radix-icons:font-size",className:"size-5"})})}),t.jsx(c.PopoverContent,{className:"w-[120px] max-h-[300px] overflow-y-auto p-1",maxZIndex:!0,children:t.jsx("div",{className:"flex flex-col gap-0.5",children:r.map(l=>t.jsx("button",{onClick:()=>o(l),className:`w-full rounded-md px-3 py-1.5 text-center text-sm transition-colors hover:bg-muted ${e===l?"bg-muted font-medium":""}`,children:l},l))})})]})});Ba.displayName="FontSizeDropdown";function qh({toolbar:e}){const{fontSize:n,handleFontSizeIncrement:r,handleFontSizeChange:s}=e,[a,o]=i.useState(!1);return t.jsxs("div",{className:"toolbar-group",children:[t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn-sm",onClick:()=>r(-1),children:"-"})}),t.jsx(c.TooltipContent,{children:"Decrease Font Size"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsxs("div",{style:{position:"relative"},children:[t.jsx("button",{className:"toolbar-font-size-display",onClick:()=>{L.clickProtection.protectNextClick(),o(!a)},children:n}),a&&t.jsx("div",{className:"font-dropdown",ref:l=>{if(l){const d=u=>{const h=u.target;!l.contains(h)&&!h.closest(".toolbar-font-size-display")&&o(!1)};setTimeout(()=>{document.addEventListener("mousedown",d)},0)}},children:$.FONT_SIZES.map(l=>t.jsx("button",{className:`font-dropdown-option ${n===l?"selected":""}`,onClick:()=>{s(l),o(!1)},children:l},l))})]})}),t.jsx(c.TooltipContent,{children:"Font Size"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn-sm",onClick:()=>r(1),children:"+"})}),t.jsx(c.TooltipContent,{children:"Increase Font Size"})]})]})}const ds=new Map;function Jh(e){if(!e.type||typeof e.type!="string")throw new Error('ElementTypeRegistration requires a non-empty "type" string');if(typeof e.Component!="function")throw new Error(`ElementTypeRegistration for "${e.type}" requires a "Component" constructor function`);if(!e.label||typeof e.label!="string")throw new Error(`ElementTypeRegistration for "${e.type}" requires a non-empty "label" string`);$.registerTransform(e.type,{id:e.type,label:e.label,Component:e.Component}),ds.set(e.type,{...e})}function Zh(e){$.unregisterTransform(e),ds.delete(e)}function Qh(){return Array.from(ds.values())}function ef(e){return $.getTransformById(e)!==void 0}class Ua{constructor(){this.listeners=new Map}on(n,r){let s=this.listeners.get(n);return s||(s=new Set,this.listeners.set(n,s)),s.add(r),()=>{s.delete(r),s.size===0&&this.listeners.delete(n)}}once(n,r){const s=o=>{a(),r(o)},a=this.on(n,s);return a}emit(n,r){const s=this.listeners.get(n);if(s)for(const a of[...s])try{a(r)}catch(o){console.error(`[CanvasEventBus] Error in handler for "${String(n)}":`,o)}}off(n){n===void 0?this.listeners.clear():this.listeners.delete(n)}listenerCount(n){var r;return((r=this.listeners.get(n))==null?void 0:r.size)??0}}const Wa=new Ua;function tf(){return Wa}const Dr={bleedFill:"#ffffff",bleedOpacity:.5,boundaryStroke:"",boundaryStrokeWidth:1,safeAreaWashFill:"#ffffff",safeAreaWashOpacity:.25,safeAreaWashCornerRadius:-1,safeAreaStroke:"",safeAreaStrokeWidth:1.5,safeAreaDashArray:"6 4",zoneFill:{wrap:"rgba(148, 163, 184, 0.25)",binding:"rgba(234, 88, 12, 0.20)",dieCut:"rgba(0, 0, 0, 0.7)",warning:"rgba(245, 158, 11, 0.25)",custom:"rgba(100, 100, 100, 0.15)"},zoneStroke:{wrap:"#64748b",binding:"#ea580c",dieCut:"#ffffff",warning:"#f59e0b",custom:"#6b7280"},labelColor:"#111827",labelFontSize:14,labelFontFamily:"ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif"},nf={tl:{textAnchor:"start",dominantBaseline:"hanging"},tc:{textAnchor:"middle",dominantBaseline:"hanging"},tr:{textAnchor:"end",dominantBaseline:"hanging"},cl:{textAnchor:"start",dominantBaseline:"middle"},c:{textAnchor:"middle",dominantBaseline:"middle"},cr:{textAnchor:"end",dominantBaseline:"middle"},bl:{textAnchor:"start",dominantBaseline:"baseline"},bc:{textAnchor:"middle",dominantBaseline:"baseline"},br:{textAnchor:"end",dominantBaseline:"baseline"}};function Ar(e,n){return e.kind==="rect"?t.jsx("rect",{x:e.x,y:e.y,width:e.width,height:e.height,...n}):e.kind==="roundedRect"?t.jsx("rect",{x:e.x,y:e.y,width:e.width,height:e.height,rx:e.rx,ry:e.ry,...n}):t.jsx("path",{d:e.d,...n})}function rf(e,n,r){return(e==null?void 0:e.boundary)??{kind:"rect",x:0,y:0,width:n,height:r}}function Lo(e){if(e.kind==="rect")return`M ${e.x} ${e.y} h ${e.width} v ${e.height} h ${-e.width} Z`;if(e.kind==="roundedRect"){const n=e.rx??e.ry??0,r=e.ry??e.rx??0;if(n<=0&&r<=0)return`M ${e.x} ${e.y} h ${e.width} v ${e.height} h ${-e.width} Z`;const{x:s,y:a,width:o,height:l}=e;return[`M ${s+n} ${a}`,`h ${o-2*n}`,`a ${n} ${r} 0 0 1 ${n} ${r}`,`v ${l-2*r}`,`a ${n} ${r} 0 0 1 ${-n} ${r}`,`h ${-(o-2*n)}`,`a ${n} ${r} 0 0 1 ${-n} ${-r}`,`v ${-(l-2*r)}`,`a ${n} ${r} 0 0 1 ${n} ${-r}`,"Z"].join(" ")}return e.d}function sf(e,n,r,s){if(e!=null&&e.safeArea)return e.safeArea;if(n.safeAreaInsetPx&&n.safeAreaInsetPx>0){const a=n.safeAreaInsetPx;return{kind:"rect",x:a,y:a,width:Math.max(0,r-a*2),height:Math.max(0,s-a*2)}}return null}function of({artboardWidth:e,artboardHeight:n,canvasPadding:r=0,pieces:s,pieceGuides:a,show:o,style:l,className:d}){const u=i.useMemo(()=>{const g=Math.max(16,Math.round(Math.min(e,n)*.03)),p={...Dr,...l??{},zoneFill:{...Dr.zoneFill,...(l==null?void 0:l.zoneFill)??{}},zoneStroke:{...Dr.zoneStroke,...(l==null?void 0:l.zoneStroke)??{}}};return(l==null?void 0:l.labelFontSize)===void 0&&(p.labelFontSize=g),p},[l,e,n]),h={bleed:(o==null?void 0:o.bleed)??!0,zones:(o==null?void 0:o.zones)??!0,boundary:(o==null?void 0:o.boundary)??!0,safeArea:(o==null?void 0:o.safeArea)??!0,labels:(o==null?void 0:o.labels)??!0},m=e+r*2,f=n+r*2;return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${m} ${f}`,preserveAspectRatio:"xMidYMid meet",className:d,style:{pointerEvents:"none",width:"100%",height:"100%"},children:t.jsx("g",{transform:`translate(${r} ${r})`,children:s.map(g=>{const p=a==null?void 0:a[g.id],b=(p==null?void 0:p.zones)??[],x=(p==null?void 0:p.labels)??[],S=g.rotation??0,T=S===90||S===270,C=T?g.height:g.width,w=T?g.width:g.height,R=rf(p,C,w),k=sf(p,g,C,w),v=`translate(${g.x} ${g.y})`;let z="";S===90?z=`translate(${g.width} 0) rotate(90)`:S===180?z=`translate(${g.width} ${g.height}) rotate(180)`:S===270&&(z=`translate(0 ${g.height}) rotate(270)`);const D=z?`${v} ${z}`:v,O=u.safeAreaWashCornerRadius<0?Math.round(Math.min(C,w)*.02):u.safeAreaWashCornerRadius,A=p!=null&&p.boundary&&(p.boundary.kind==="rect"||p.boundary.kind==="roundedRect")?p.boundary:null,P=A?A.kind==="rect"&&O>0?{kind:"roundedRect",x:A.x,y:A.y,width:A.width,height:A.height,rx:O,ry:O}:A:O>0?{kind:"roundedRect",x:0,y:0,width:C,height:w,rx:O,ry:O}:{kind:"rect",x:0,y:0,width:C,height:w},G=k&&k.kind==="rect"&&O>0?{kind:"roundedRect",x:k.x,y:k.y,width:k.width,height:k.height}:k;G&&(G.kind==="rect"||G.kind);const Y=`bleed-blur-${g.id}`,U={kind:"rect",x:0,y:0,width:C,height:w},W=P.kind==="rect"||P.kind==="roundedRect";return t.jsxs("g",{transform:D,children:[h.safeArea&&W&&t.jsxs(t.Fragment,{children:[t.jsxs("defs",{children:[t.jsx("filter",{id:Y,x:"-20%",y:"-20%",width:"140%",height:"140%",children:t.jsx("feGaussianBlur",{in:"SourceGraphic",stdDeviation:Math.max(12,Math.round(Math.min(C,w)*.025))})}),t.jsx("clipPath",{id:`piece-clip-${g.id}`,children:t.jsx("rect",{x:0,y:0,width:C,height:w})})]}),t.jsx("g",{clipPath:`url(#piece-clip-${g.id})`,filter:`url(#${Y})`,children:t.jsx("path",{d:`${Lo(U)} ${Lo(P)}`,style:{fill:u.bleedFill||"var(--color-bg-tertiary, #333)"},fillOpacity:u.bleedOpacity??.55,fillRule:"evenodd"})})]}),h.zones&&b.filter(F=>F.kind!=="dieCut").map((F,H)=>t.jsx("g",{children:Ar(F.path,{fill:u.zoneFill[F.kind],stroke:u.zoneStroke[F.kind],strokeWidth:1.5,strokeDasharray:F.kind==="wrap"?"4 3":void 0,vectorEffect:"non-scaling-stroke"})},`zone-${H}`)),h.zones&&b.filter(F=>F.kind==="dieCut").map((F,H)=>{const K=F.path;if(K.kind!=="rect"&&K.kind!=="roundedRect")return null;const M=K.kind==="roundedRect"?K.rx??K.ry??0:0,Z=K.kind==="roundedRect"?K.ry??K.rx??0:0;return t.jsx("foreignObject",{x:K.x,y:K.y,width:K.width,height:K.height,children:t.jsx("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{width:"100%",height:"100%",borderRadius:`${M}px / ${Z}px`,backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)",background:"color-mix(in srgb, var(--color-bg-tertiary, #333) 70%, transparent)"}})},`diecut-${H}`)}),h.boundary&&u.boundaryStroke&&Ar(R,{fill:"none",stroke:u.boundaryStroke,strokeWidth:u.boundaryStrokeWidth,vectorEffect:"non-scaling-stroke"}),h.safeArea&&k&&u.safeAreaStroke&&Ar(k,{fill:"none",stroke:u.safeAreaStroke,strokeWidth:u.safeAreaStrokeWidth,strokeDasharray:u.safeAreaDashArray,vectorEffect:"non-scaling-stroke"}),h.labels&&x.map((F,H)=>{const K=nf[F.anchor??"c"];return t.jsx("text",{x:F.x,y:F.y,textAnchor:K.textAnchor,dominantBaseline:K.dominantBaseline,fontSize:u.labelFontSize,fontFamily:u.labelFontFamily,fill:u.labelColor,style:{paintOrder:"stroke"},stroke:"#ffffff",strokeWidth:Math.max(2,u.labelFontSize*.25),strokeLinejoin:"round",children:F.text},`label-${H}`)})]},g.id)})})})}L.ensureIconsRegistered();exports.AutoExportManager=L.AutoExportManager;exports.Canvas=L.Canvas;exports.CanvasSkeleton=L.CanvasSkeleton;exports.DEFAULT_AUTO_EXPORT_CONFIG=L.DEFAULT_AUTO_EXPORT_CONFIG;exports.KIT_PRESETS=L.KIT_PRESETS;exports.KitProvider=L.KitProvider;exports.LayersPanelSkeleton=L.LayersPanelSkeleton;exports.Spinner=L.Spinner;exports.ToolbarSkeleton=L.ToolbarSkeleton;exports.renderPieceGuides=L.renderPieceGuides;exports.useCapabilities=L.useCapabilities;exports.useKit=L.useKit;Object.defineProperty(exports,"Surface",{enumerable:!0,get:()=>c.Surface});Object.defineProperty(exports,"surfaceVariants",{enumerable:!0,get:()=>c.surfaceVariants});Object.defineProperty(exports,"useSurface",{enumerable:!0,get:()=>c.useSurface});exports.EditorProvider=je.EditorProvider;exports.PRESERVE_SELECTION_ATTR=je.PRESERVE_SELECTION_ATTR;exports.ThemeProvider=je.ThemeProvider;exports.preserveSelectionProps=je.preserveSelectionProps;exports.shouldPreserveSelection=je.shouldPreserveSelection;exports.useCommandContext=je.useCommandContext;exports.useElementsContext=je.useElementsContext;exports.useHistoryContext=je.useHistoryContext;exports.useSelectionContext=je.useSelectionContext;exports.useTheme=je.useTheme;exports.useToolStateContext=je.useToolStateContext;exports.useViewportContext=je.useViewportContext;exports.ArtboardElement=$.ArtboardElement;exports.BaseElement=$.BaseElement;exports.GroupElement=$.GroupElement;exports.ImageElement=$.ImageElement;exports.PathElement=$.PathElement;exports.RichText=$.RichText;exports.ShapeElement=$.ShapeElement;exports.TextElement=$.TextElement;exports.hasDistressEffect=$.hasDistressEffect;exports.hasMasks=$.hasMasks;exports.hasStroke=$.hasStroke;exports.isArchTransform=$.isArchTransform;exports.isCircleElementConfig=$.isCircleElementConfig;exports.isCircleTransform=$.isCircleTransform;exports.isCustomElementConfig=$.isCustomElementConfig;exports.isCustomTransform=$.isCustomTransform;exports.isFlagTransform=$.isFlagTransform;exports.isGroupElementConfig=$.isGroupElementConfig;exports.isGroupTransform=$.isGroupTransform;exports.isImageElementConfig=$.isImageElementConfig;exports.isImageTransform=$.isImageTransform;exports.isKnockout=$.isKnockout;exports.isPathElementConfig=$.isPathElementConfig;exports.isPathTransform=$.isPathTransform;exports.isShapeElementConfig=$.isShapeElementConfig;exports.isShapeTransform=$.isShapeTransform;exports.isTextElementConfig=$.isTextElementConfig;exports.isWaveTransform=$.isWaveTransform;exports.isGroupElement=ye.isGroupElement;exports.isImageElement=ye.isImageElement;exports.isPathElement=ye.isPathElement;exports.isShapeElement=ye.isShapeElement;exports.isTextElement=ye.isTextElement;exports.ArtboardPropertiesToolbar=Ca;exports.ArtboardTabs=ga;exports.BackgroundPickerDropdown=ls;exports.BoldButton=Ra;exports.ButtonGroup=Oh;exports.CanvasEventBus=Ua;exports.ColorPickerDropdown=Bt;exports.ContextualToolbars=Vr;exports.ControlGroup=zh;exports.CropPanel=fn;exports.Dropdown=cs;exports.DropdownMenu=Yr;exports.EffectsPanel=ua;exports.ExportPanel=ha;exports.FontBrowserDrawer=Ta;exports.FontColorButton=Ea;exports.FontSizeDropdown=Ba;exports.FontSizeGroup=qh;exports.GlyphPanel=ma;exports.ImagePanel=pa;exports.ImageToolbar=xa;exports.ItalicButton=Ia;exports.LayersPanel=sa;exports.MenuButton=$a;exports.MenuItem=Pt;exports.MoreMenu=Na;exports.Panel=Lh;exports.PathToolbar=ya;exports.SecondaryToolbar=$h;exports.ShapeToolbar=ba;exports.ShapeTypeDrawer=is;exports.Switch=Ph;exports.TextAlignButton=Ma;exports.TextMoreMenu=Fa;exports.TextToolbar=La;exports.Toggle=_h;exports.TransformControlPanel=ka;exports.UnderlineButton=Da;exports.UppercaseButton=Aa;exports.VisualGuideOverlay=of;exports.ZoomControls=Xr;exports.canvasEventBus=Wa;exports.getAllSections=vl;exports.getCustomElementTypes=Qh;exports.getSection=bl;exports.getSectionIds=yl;exports.isRegisteredElementType=ef;exports.loadKitFromJSON=Tl;exports.registerBuiltinSections=Cl;exports.registerBuiltinSectionsSync=wl;exports.registerElementType=Jh;exports.registerSection=Ee;exports.serializeKit=Sl;exports.unregisterElementType=Zh;exports.unregisterSection=jl;exports.useBreakpoint=Gh;exports.useCanvasEvents=tf;exports.useElementById=Vh;exports.useLayerDragDrop=Yh;exports.useLayerPreview=Oa;exports.useLayerSelection=Xh;exports.usePerformance=Kh;exports.useProjectLoader=Wh;exports.useTextToolbar=za;
47
+ `.trim(),[e]);return i.useEffect(()=>()=>{u.current!==null&&cancelAnimationFrame(u.current)},[]),{metrics:e,startProfiling:b,stopProfiling:x,clearMetrics:S,getReport:T,isProfiling:r}}function Vh(e){const{getElementById:n}=je.useEditor();return e?n(e)??null:null}function Yh(e){const{onReorder:n,onGroupReorder:r,onDropIntoGroup:s,onDropIntoGroupAtPosition:a,findElement:o,findParentGroup:l}=e,[d,u]=i.useState(null),[h,m]=i.useState(null),[f,g]=i.useState(null),p=i.useCallback((T,C)=>{T.dataTransfer.effectAllowed="move",requestAnimationFrame(()=>{u(C)})},[]),b=i.useCallback((T,C)=>{T.preventDefault(),T.dataTransfer.dropEffect="move";const w=T.currentTarget.getBoundingClientRect(),N=T.clientY-w.top,v=w.height,D=(o==null?void 0:o(C))instanceof U.GroupElement;let O;D?N<v*.25?O="before":N>v*.75?O="after":O="into":N<v*.4?O="before":N>v*.6?O="after":O=N<v/2?"before":"after",m(C),g(O)},[o]),x=i.useCallback(()=>{u(null),m(null),g(null)},[]),S=i.useCallback((T,C)=>{if(T.preventDefault(),!d||d===C||!f){x();return}if(f==="into")s&&s(d,C);else{const w=l==null?void 0:l(d),R=l==null?void 0:l(C),N=f==="before"?"after":"before";w&&R&&w.id===R.id?r&&r(d,C,N,w.id):!w&&R&&a?a(d,R.id,C,N):n(d,C,N)}x()},[d,f,n,r,s,a,l,x]);return{draggedId:d,dragOverId:h,dropPosition:f,handlers:{onDragStart:p,onDragOver:b,onDrop:S,onDragEnd:x}}}function Xh(e){const{selectedId:n,multiSelection:r,onSelectionChange:s,onMultiSelectionChange:a}=e,o=i.useCallback(d=>d===n||r.includes(d),[n,r]),l=i.useCallback((d,u)=>{if(d.shiftKey){const h=r.includes(u),m=n===u;if(r.length>0)if(h){const f=r.filter(g=>g!==u);f.length===1?(a([]),s(f[0])):f.length===0?(a([]),s(null)):a(f)}else a([...r,u]);else{if(m)return;n!==null?(a([n,u]),s(null)):s(u)}}else s(u),a([])},[n,r,s,a]);return{isSelected:o,handleClick:l}}const Ba=i.memo(({value:e,onChange:n,fontSizes:r,isOpen:s,onToggle:a})=>{const o=l=>{n(l),a(!1)};return t.jsxs(c.Popover,{open:s,onOpenChange:a,children:[t.jsx(c.PopoverTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn","aria-label":"Font size",children:t.jsx(F.Icon,{icon:"radix-icons:font-size",className:"size-5"})})}),t.jsx(c.PopoverContent,{className:"w-[120px] max-h-[300px] overflow-y-auto p-1",maxZIndex:!0,children:t.jsx("div",{className:"flex flex-col gap-0.5",children:r.map(l=>t.jsx("button",{onClick:()=>o(l),className:`w-full rounded-md px-3 py-1.5 text-center text-sm transition-colors hover:bg-muted ${e===l?"bg-muted font-medium":""}`,children:l},l))})})]})});Ba.displayName="FontSizeDropdown";function qh({toolbar:e}){const{fontSize:n,handleFontSizeIncrement:r,handleFontSizeChange:s}=e,[a,o]=i.useState(!1);return t.jsxs("div",{className:"toolbar-group",children:[t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn-sm",onClick:()=>r(-1),children:"-"})}),t.jsx(c.TooltipContent,{children:"Decrease Font Size"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsxs("div",{style:{position:"relative"},children:[t.jsx("button",{className:"toolbar-font-size-display",onClick:()=>{F.clickProtection.protectNextClick(),o(!a)},children:n}),a&&t.jsx("div",{className:"font-dropdown",ref:l=>{if(l){const d=u=>{const h=u.target;!l.contains(h)&&!h.closest(".toolbar-font-size-display")&&o(!1)};setTimeout(()=>{document.addEventListener("mousedown",d)},0)}},children:U.FONT_SIZES.map(l=>t.jsx("button",{className:`font-dropdown-option ${n===l?"selected":""}`,onClick:()=>{s(l),o(!1)},children:l},l))})]})}),t.jsx(c.TooltipContent,{children:"Font Size"})]}),t.jsxs(c.Tooltip,{delayDuration:300,children:[t.jsx(c.TooltipTrigger,{asChild:!0,children:t.jsx("button",{className:"toolbar-btn-sm",onClick:()=>r(1),children:"+"})}),t.jsx(c.TooltipContent,{children:"Increase Font Size"})]})]})}const ds=new Map;function Jh(e){if(!e.type||typeof e.type!="string")throw new Error('ElementTypeRegistration requires a non-empty "type" string');if(typeof e.Component!="function")throw new Error(`ElementTypeRegistration for "${e.type}" requires a "Component" constructor function`);if(!e.label||typeof e.label!="string")throw new Error(`ElementTypeRegistration for "${e.type}" requires a non-empty "label" string`);U.registerTransform(e.type,{id:e.type,label:e.label,Component:e.Component}),ds.set(e.type,{...e})}function Zh(e){U.unregisterTransform(e),ds.delete(e)}function Qh(){return Array.from(ds.values())}function ef(e){return U.getTransformById(e)!==void 0}class Ua{constructor(){this.listeners=new Map}on(n,r){let s=this.listeners.get(n);return s||(s=new Set,this.listeners.set(n,s)),s.add(r),()=>{s.delete(r),s.size===0&&this.listeners.delete(n)}}once(n,r){const s=o=>{a(),r(o)},a=this.on(n,s);return a}emit(n,r){const s=this.listeners.get(n);if(s)for(const a of[...s])try{a(r)}catch(o){console.error(`[CanvasEventBus] Error in handler for "${String(n)}":`,o)}}off(n){n===void 0?this.listeners.clear():this.listeners.delete(n)}listenerCount(n){var r;return((r=this.listeners.get(n))==null?void 0:r.size)??0}}const Wa=new Ua;function tf(){return Wa}const Dr={bleedFill:"#ffffff",bleedOpacity:.5,boundaryStroke:"",boundaryStrokeWidth:1,safeAreaWashFill:"#ffffff",safeAreaWashOpacity:.25,safeAreaWashCornerRadius:-1,safeAreaStroke:"",safeAreaStrokeWidth:1.5,safeAreaDashArray:"6 4",zoneFill:{wrap:"rgba(148, 163, 184, 0.25)",binding:"rgba(234, 88, 12, 0.20)",dieCut:"rgba(0, 0, 0, 0.7)",warning:"rgba(245, 158, 11, 0.25)",custom:"rgba(100, 100, 100, 0.15)"},zoneStroke:{wrap:"#64748b",binding:"#ea580c",dieCut:"#ffffff",warning:"#f59e0b",custom:"#6b7280"},labelColor:"#111827",labelFontSize:14,labelFontFamily:"ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif"},nf={tl:{textAnchor:"start",dominantBaseline:"hanging"},tc:{textAnchor:"middle",dominantBaseline:"hanging"},tr:{textAnchor:"end",dominantBaseline:"hanging"},cl:{textAnchor:"start",dominantBaseline:"middle"},c:{textAnchor:"middle",dominantBaseline:"middle"},cr:{textAnchor:"end",dominantBaseline:"middle"},bl:{textAnchor:"start",dominantBaseline:"alphabetic"},bc:{textAnchor:"middle",dominantBaseline:"alphabetic"},br:{textAnchor:"end",dominantBaseline:"alphabetic"}};function Ar(e,n){return e.kind==="rect"?t.jsx("rect",{x:e.x,y:e.y,width:e.width,height:e.height,...n}):e.kind==="roundedRect"?t.jsx("rect",{x:e.x,y:e.y,width:e.width,height:e.height,rx:e.rx,ry:e.ry,...n}):t.jsx("path",{d:e.d,...n})}function rf(e,n,r){return(e==null?void 0:e.boundary)??{kind:"rect",x:0,y:0,width:n,height:r}}function Lo(e){if(e.kind==="rect")return`M ${e.x} ${e.y} h ${e.width} v ${e.height} h ${-e.width} Z`;if(e.kind==="roundedRect"){const n=e.rx??e.ry??0,r=e.ry??e.rx??0;if(n<=0&&r<=0)return`M ${e.x} ${e.y} h ${e.width} v ${e.height} h ${-e.width} Z`;const{x:s,y:a,width:o,height:l}=e;return[`M ${s+n} ${a}`,`h ${o-2*n}`,`a ${n} ${r} 0 0 1 ${n} ${r}`,`v ${l-2*r}`,`a ${n} ${r} 0 0 1 ${-n} ${r}`,`h ${-(o-2*n)}`,`a ${n} ${r} 0 0 1 ${-n} ${-r}`,`v ${-(l-2*r)}`,`a ${n} ${r} 0 0 1 ${n} ${-r}`,"Z"].join(" ")}return e.d}function sf(e,n,r,s){if(e!=null&&e.safeArea)return e.safeArea;if(n.safeAreaInsetPx&&n.safeAreaInsetPx>0){const a=n.safeAreaInsetPx;return{kind:"rect",x:a,y:a,width:Math.max(0,r-a*2),height:Math.max(0,s-a*2)}}return null}function of({artboardWidth:e,artboardHeight:n,canvasPadding:r=0,pieces:s,pieceGuides:a,show:o,style:l,className:d}){const u=i.useMemo(()=>{const g=Math.max(16,Math.round(Math.min(e,n)*.03)),p={...Dr,...l??{},zoneFill:{...Dr.zoneFill,...(l==null?void 0:l.zoneFill)??{}},zoneStroke:{...Dr.zoneStroke,...(l==null?void 0:l.zoneStroke)??{}}};return(l==null?void 0:l.labelFontSize)===void 0&&(p.labelFontSize=g),p},[l,e,n]),h={bleed:(o==null?void 0:o.bleed)??!0,zones:(o==null?void 0:o.zones)??!0,boundary:(o==null?void 0:o.boundary)??!0,safeArea:(o==null?void 0:o.safeArea)??!0,labels:(o==null?void 0:o.labels)??!0},m=e+r*2,f=n+r*2;return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${m} ${f}`,preserveAspectRatio:"xMidYMid meet",className:d,style:{pointerEvents:"none",width:"100%",height:"100%"},children:t.jsx("g",{transform:`translate(${r} ${r})`,children:s.map(g=>{const p=a==null?void 0:a[g.id],b=(p==null?void 0:p.zones)??[],x=(p==null?void 0:p.labels)??[],S=g.rotation??0,T=S===90||S===270,C=T?g.height:g.width,w=T?g.width:g.height,R=rf(p,C,w),N=sf(p,g,C,w),v=`translate(${g.x} ${g.y})`;let L="";S===90?L=`translate(${g.width} 0) rotate(90)`:S===180?L=`translate(${g.width} ${g.height}) rotate(180)`:S===270&&(L=`translate(0 ${g.height}) rotate(270)`);const D=L?`${v} ${L}`:v,O=u.safeAreaWashCornerRadius<0?Math.round(Math.min(C,w)*.02):u.safeAreaWashCornerRadius,A=p!=null&&p.boundary&&(p.boundary.kind==="rect"||p.boundary.kind==="roundedRect")?p.boundary:null,_=A?A.kind==="rect"&&O>0?{kind:"roundedRect",x:A.x,y:A.y,width:A.width,height:A.height,rx:O,ry:O}:A:O>0?{kind:"roundedRect",x:0,y:0,width:C,height:w,rx:O,ry:O}:{kind:"rect",x:0,y:0,width:C,height:w},G=`bleed-blur-${g.id}`,Y={kind:"rect",x:0,y:0,width:C,height:w},B=_.kind==="rect"||_.kind==="roundedRect";return t.jsxs("g",{transform:D,children:[h.safeArea&&B&&t.jsxs(t.Fragment,{children:[t.jsxs("defs",{children:[t.jsx("filter",{id:G,x:"-20%",y:"-20%",width:"140%",height:"140%",children:t.jsx("feGaussianBlur",{in:"SourceGraphic",stdDeviation:Math.max(12,Math.round(Math.min(C,w)*.025))})}),t.jsx("clipPath",{id:`piece-clip-${g.id}`,children:t.jsx("rect",{x:0,y:0,width:C,height:w})})]}),t.jsx("g",{clipPath:`url(#piece-clip-${g.id})`,filter:`url(#${G})`,children:t.jsx("path",{d:`${Lo(Y)} ${Lo(_)}`,style:{fill:u.bleedFill||"var(--color-bg-tertiary, #333)"},fillOpacity:u.bleedOpacity??.55,fillRule:"evenodd"})})]}),h.zones&&b.filter(H=>H.kind!=="dieCut").map((H,z)=>t.jsx("g",{children:Ar(H.path,{fill:u.zoneFill[H.kind],stroke:u.zoneStroke[H.kind],strokeWidth:1.5,strokeDasharray:H.kind==="wrap"?"4 3":void 0,vectorEffect:"non-scaling-stroke"})},`zone-${z}`)),h.zones&&b.filter(H=>H.kind==="dieCut").map((H,z)=>{const W=H.path;if(W.kind!=="rect"&&W.kind!=="roundedRect")return null;const Z=W.kind==="roundedRect"?W.rx??W.ry??0:0,M=W.kind==="roundedRect"?W.ry??W.rx??0:0;return t.jsx("foreignObject",{x:W.x,y:W.y,width:W.width,height:W.height,children:t.jsx("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{width:"100%",height:"100%",borderRadius:`${Z}px / ${M}px`,backdropFilter:"blur(4px)",WebkitBackdropFilter:"blur(4px)",background:"color-mix(in srgb, var(--color-bg-tertiary, #333) 70%, transparent)"}})},`diecut-${z}`)}),h.boundary&&u.boundaryStroke&&Ar(R,{fill:"none",stroke:u.boundaryStroke,strokeWidth:u.boundaryStrokeWidth,vectorEffect:"non-scaling-stroke"}),h.safeArea&&N&&u.safeAreaStroke&&Ar(N,{fill:"none",stroke:u.safeAreaStroke,strokeWidth:u.safeAreaStrokeWidth,strokeDasharray:u.safeAreaDashArray,vectorEffect:"non-scaling-stroke"}),h.labels&&x.map((H,z)=>{const W=nf[H.anchor??"c"];return t.jsx("text",{x:H.x,y:H.y,textAnchor:W.textAnchor,dominantBaseline:W.dominantBaseline,fontSize:u.labelFontSize,fontFamily:u.labelFontFamily,fill:u.labelColor,style:{paintOrder:"stroke"},stroke:"#ffffff",strokeWidth:Math.max(2,u.labelFontSize*.25),strokeLinejoin:"round",children:H.text},`label-${z}`)})]},g.id)})})})}F.ensureIconsRegistered();exports.AutoExportManager=F.AutoExportManager;exports.Canvas=F.Canvas;exports.CanvasSkeleton=F.CanvasSkeleton;exports.DEFAULT_AUTO_EXPORT_CONFIG=F.DEFAULT_AUTO_EXPORT_CONFIG;exports.KIT_PRESETS=F.KIT_PRESETS;exports.KitProvider=F.KitProvider;exports.LayersPanelSkeleton=F.LayersPanelSkeleton;exports.Spinner=F.Spinner;exports.ToolbarSkeleton=F.ToolbarSkeleton;exports.renderPieceGuides=F.renderPieceGuides;exports.useCapabilities=F.useCapabilities;exports.useKit=F.useKit;Object.defineProperty(exports,"Surface",{enumerable:!0,get:()=>c.Surface});Object.defineProperty(exports,"surfaceVariants",{enumerable:!0,get:()=>c.surfaceVariants});Object.defineProperty(exports,"useSurface",{enumerable:!0,get:()=>c.useSurface});exports.EditorProvider=je.EditorProvider;exports.PRESERVE_SELECTION_ATTR=je.PRESERVE_SELECTION_ATTR;exports.ThemeProvider=je.ThemeProvider;exports.preserveSelectionProps=je.preserveSelectionProps;exports.shouldPreserveSelection=je.shouldPreserveSelection;exports.useCommandContext=je.useCommandContext;exports.useElementsContext=je.useElementsContext;exports.useHistoryContext=je.useHistoryContext;exports.useSelectionContext=je.useSelectionContext;exports.useTheme=je.useTheme;exports.useToolStateContext=je.useToolStateContext;exports.useViewportContext=je.useViewportContext;exports.ArtboardElement=U.ArtboardElement;exports.BaseElement=U.BaseElement;exports.GroupElement=U.GroupElement;exports.ImageElement=U.ImageElement;exports.PathElement=U.PathElement;exports.RichText=U.RichText;exports.ShapeElement=U.ShapeElement;exports.TextElement=U.TextElement;exports.hasDistressEffect=U.hasDistressEffect;exports.hasMasks=U.hasMasks;exports.hasStroke=U.hasStroke;exports.isArchTransform=U.isArchTransform;exports.isCircleElementConfig=U.isCircleElementConfig;exports.isCircleTransform=U.isCircleTransform;exports.isCustomElementConfig=U.isCustomElementConfig;exports.isCustomTransform=U.isCustomTransform;exports.isFlagTransform=U.isFlagTransform;exports.isGroupElementConfig=U.isGroupElementConfig;exports.isGroupTransform=U.isGroupTransform;exports.isImageElementConfig=U.isImageElementConfig;exports.isImageTransform=U.isImageTransform;exports.isKnockout=U.isKnockout;exports.isPathElementConfig=U.isPathElementConfig;exports.isPathTransform=U.isPathTransform;exports.isShapeElementConfig=U.isShapeElementConfig;exports.isShapeTransform=U.isShapeTransform;exports.isTextElementConfig=U.isTextElementConfig;exports.isWaveTransform=U.isWaveTransform;exports.isGroupElement=ye.isGroupElement;exports.isImageElement=ye.isImageElement;exports.isPathElement=ye.isPathElement;exports.isShapeElement=ye.isShapeElement;exports.isTextElement=ye.isTextElement;exports.ArtboardPropertiesToolbar=Ca;exports.ArtboardTabs=ga;exports.BackgroundPickerDropdown=ls;exports.BoldButton=Ra;exports.ButtonGroup=Oh;exports.CanvasEventBus=Ua;exports.ColorPickerDropdown=Bt;exports.ContextualToolbars=Vr;exports.ControlGroup=zh;exports.CropPanel=fn;exports.Dropdown=cs;exports.DropdownMenu=Yr;exports.EffectsPanel=ua;exports.ExportPanel=ha;exports.FontBrowserDrawer=Ta;exports.FontColorButton=Ea;exports.FontSizeDropdown=Ba;exports.FontSizeGroup=qh;exports.GlyphPanel=ma;exports.ImagePanel=pa;exports.ImageToolbar=xa;exports.ItalicButton=Ia;exports.LayersPanel=sa;exports.MenuButton=$a;exports.MenuItem=Pt;exports.MoreMenu=Na;exports.Panel=Lh;exports.PathToolbar=ya;exports.SecondaryToolbar=$h;exports.ShapeToolbar=ba;exports.ShapeTypeDrawer=is;exports.Switch=Ph;exports.TextAlignButton=Ma;exports.TextMoreMenu=Fa;exports.TextToolbar=La;exports.Toggle=_h;exports.TransformControlPanel=ka;exports.UnderlineButton=Da;exports.UppercaseButton=Aa;exports.VisualGuideOverlay=of;exports.ZoomControls=Xr;exports.canvasEventBus=Wa;exports.getAllSections=vl;exports.getCustomElementTypes=Qh;exports.getSection=bl;exports.getSectionIds=yl;exports.isRegisteredElementType=ef;exports.loadKitFromJSON=Tl;exports.registerBuiltinSections=Cl;exports.registerBuiltinSectionsSync=wl;exports.registerElementType=Jh;exports.registerSection=Ee;exports.serializeKit=Sl;exports.unregisterElementType=Zh;exports.unregisterSection=jl;exports.useBreakpoint=Gh;exports.useCanvasEvents=tf;exports.useElementById=Vh;exports.useLayerDragDrop=Yh;exports.useLayerPreview=Oa;exports.useLayerSelection=Xh;exports.usePerformance=Kh;exports.useProjectLoader=Wh;exports.useTextToolbar=za;
48
48
  //# sourceMappingURL=advanced.js.map