PageSourceSearch

https://alomations.com/_next/static/chunks/19889-c9b8049c05de1a3e.js

js alomations.com collected 2026-10-02 01:24:18 UTC 122,362 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[19889],{3543:(e,t,r)=>{r.d(t,{$Q:()=>c,IB:()=>d,SX:()=>f,x_:()=>o,yu:()=>u});var l=r(95155),n=r(2821),a=r(14122),s=r(96548),i=r(18955);function o(){return(0,l.jsx)("span",{"aria-hidden":!0,className:"h-5 w-px shrink-0 bg-[var(--border-subtle)]"})}function c(e){let{children:t,className:r}=e;return(0,l.jsx)("div",{className:(0,n.$)("flex shrink-0 items-center gap-1",r),children:t})}let u=(0,n.$)("flex h-8 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-md px-2 text-xs font-medium transition-colors","border border-[var(--border-subtle)] bg-[var(--surface)] text-[var(--text-secondary)]");function d(e){let{icon:t,label:r,labelClassName:a="hidden @[34rem]:inline",title:s,iconOnly:i,onClick:o,disabled:c,enabledClassName:d,activeClassName:f}=e;return(0,l.jsxs)("button",{type:"button",onClick:o,disabled:c,title:s,"aria-label":i||!r?s:void 0,className:(0,n.$)(u,c?"cursor-not-allowed opacity-40":d??"hover:border-[var(--primary)] hover:text-[var(--primary)] hover:bg-[var(--primary)]/5",f),children:[t,r&&(0,l.jsx)("span",{className:a,children:r})]})}function f(e){let{canUndo:t,canRedo:r,onUndo:n,onRedo:o,disabled:u}=e,f=(0,i.c)("svgEditor");return(0,l.jsxs)(c,{children:[(0,l.jsx)(d,{icon:(0,l.jsx)(a.A,{className:"h-3.5 w-3.5"}),title:f("tooltips.undo"),iconOnly:!0,onClick:n,disabled:!t||u}),(0,l.jsx)(d,{icon:(0,l.jsx)(s.A,{className:"h-3.5 w-3.5"}),title:f("tooltips.redo"),iconOnly:!0,onClick:o,disabled:!r||u})]})}},19889:(e,t,r)=>{r.d(t,{N:()=>e5});var l=r(95155),n=r(12115),a=r(18955),s=r(64269),i=r(27601),o=r(70418),c=r(89002),u=r(65229),d=r(6697),f=r(43952);let m=[{value:"thin",label:"Thin"},{value:"medium",label:"Medium"},{value:"thick",label:"Thick"}],h=[...f.kR,"#ff4d4d","#ffd60a","#34d399","#4A90D9","#101D32"];function p(e){let{variant:t,hasOutline:r,currentColor:s,onApply:i,onRemove:o,floodWarning:p,onDismissFloodWarning:x,className:g}=e,b=(0,a.c)("svgEditor"),v="light"===t?"#ffffff":"#000000",[y,w]=(0,n.useState)(s??v),[C,k]=(0,n.useState)("medium"),[j,S]=(0,n.useState)(!1),N=/^#[0-9a-f]{6}$/i.test(y)?y:v,E=p?(0,l.jsxs)("div",{className:"rounded-lg border border-amber-300 bg-amber-50 p-2.5",children:[(0,l.jsx)("p",{className:"text-xs font-semibold text-amber-900",children:b("outline.floodTitle")}),(0,l.jsx)("p",{className:"mt-0.5 text-xs leading-snug text-amber-800",children:b.rich("outline.floodBody",{after:Math.round(100*p.after),before:Math.round(100*p.before),b:e=>(0,l.jsx)("strong",{children:e})})}),(0,l.jsxs)("div",{className:"mt-2 flex items-center gap-3",children:[(0,l.jsx)("button",{type:"button",onClick:()=>{i({color:N,thickness:C,force:!0}),x?.(),S(!1)},className:"rounded-md border border-amber-400 bg-white px-2 py-1 text-xs font-semibold text-amber-900 transition-colors hover:bg-amber-100",children:b("outline.applyAnyway")}),(0,l.jsx)("button",{type:"button",onClick:()=>{k("thin"),i({color:N,thickness:"thin"}),x?.()},className:"text-xs font-medium text-amber-900 underline",children:b("outline.tryThinnest")}),x&&(0,l.jsx)("button",{type:"button",onClick:x,className:"ml-auto text-xs font-medium text-amber-900 underline",children:b("outline.dismiss")})]})]}):null,A=(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[(0,l.jsxs)("button",{type:"button",onClick:()=>S(!0),className:"inline-flex h-8 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-lg border-2 border-emerald-300 bg-emerald-50 px-2.5 text-xs font-medium text-emerald-900 transition-colors hover:border-emerald-500",children:[(0,l.jsx)(c.A,{className:"h-3.5 w-3.5 text-emerald-600"}),r?b("outline.edit"):b("outline.add"),r&&s&&(0,l.jsx)("span",{"aria-hidden":"true",className:"ml-0.5 h-3 w-3 rounded-full border border-emerald-400",style:{backgroundColor:s}})]}),r&&(0,l.jsxs)("button",{type:"button",onClick:o,className:"inline-flex h-8 shrink-0 items-center gap-1 whitespace-nowrap rounded-lg border border-[var(--border-subtle)] px-2 text-xs text-[var(--text-secondary)] transition-colors hover:border-red-300 hover:text-red-600",children:[(0,l.jsx)(u.A,{className:"h-3.5 w-3.5"}),b("actions.remove")]})]}),M=(0,l.jsxs)("div",{className:"rounded-lg border border-emerald-200 bg-emerald-50 p-3",children:[(0,l.jsxs)("div",{className:"mb-2 flex items-center justify-between gap-2",children:[(0,l.jsxs)("p",{className:"flex items-center gap-1.5 text-xs font-medium text-emerald-900",children:[(0,l.jsx)(c.A,{className:"h-3.5 w-3.5 text-emerald-600"}),b("outline.panelTitle",{variant:t})]}),(0,l.jsx)("button",{type:"button",onClick:()=>S(!1),"aria-label":b("outline.close"),className:"rounded p-0.5 text-emerald-700 hover:bg-emerald-100",children:(0,l.jsx)(u.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)("p",{className:"mb-1.5 text-xs font-medium text-emerald-900",children:"Color"}),(0,l.jsxs)("div",{className:"mb-2 flex flex-wrap items-center gap-1.5",children:[h.map(e=>(0,l.jsx)("button",{type:"button","aria-label":b("outline.swatchAria",{color:e}),"aria-pressed":N.toLowerCase()===e.toLowerCase(),onClick:()=>w(e),className:`h-6 w-6 rounded-full border-2 transition-transform ${N.toLowerCase()===e.toLowerCase()?"border-emerald-600 scale-110":"border-[var(--border-strong)] hover:scale-105"}`,style:{backgroundColor:e}},e)),(0,l.jsxs)("label",{className:"ml-1 inline-flex items-center gap-1 text-xs text-emerald-800",children:[(0,l.jsx)("input",{type:"color","aria-label":b("outline.customAria"),value:N,onChange:e=>w(e.target.value),className:"h-6 w-8 cursor-pointer rounded border border-[var(--border-strong)] bg-transparent p-0"}),b("labels.custom")]})]}),(0,l.jsx)("p",{className:"mb-1.5 text-xs font-medium text-emerald-900",children:b("labels.thickness")}),(0,l.jsx)("div",{role:"radiogroup","aria-label":b("outline.thicknessAria"),className:"mb-2.5 grid grid-cols-3 gap-1.5",children:m.map(e=>{let t=C===e.value;return(0,l.jsx)("button",{type:"button",role:"radio","aria-checked":t,onClick:()=>k(e.value),className:`rounded-lg border-2 px-2 py-1 text-xs font-semibold transition-all ${t?"border-emerald-600 bg-emerald-100 text-emerald-900":"border-emerald-200 bg-white text-[var(--text-primary)] hover:border-emerald-400"}`,children:(0,d.S)(b,`outline.thickness.${e.value}`,e.label)},e.value)})}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("button",{type:"button",onClick:()=>{i({color:N,thickness:C}),S(!1)},className:"flex-1 rounded-lg bg-emerald-600 px-3 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-emerald-700",children:b("outline.apply")}),r&&(0,l.jsx)("button",{type:"button",onClick:()=>{o(),S(!1)},className:"rounded-lg border border-[var(--border-subtle)] px-3 py-1.5 text-xs text-[var(--text-secondary)] transition-colors hover:border-red-300 hover:text-red-600",children:b("actions.remove")})]}),(0,l.jsx)("p",{className:"mt-1.5 text-xs leading-tight text-emerald-700",children:b("outline.note",{variant:t,percent:Math.round(1e3*f.nx[C])/10})}),E]});return(0,l.jsxs)("div",{className:`relative shrink-0 ${g??""}`,children:[A,(j||p)&&(0,l.jsx)("div",{"data-testid":"outline-panel",className:"absolute right-0 top-full z-40 mt-1 w-80 rounded-lg shadow-xl",children:j?M:E})]})}var x=r(49420),g=r(83274),b=r(54855),v=r(33429),y=r(54291),w=r(21397),C=r(99708),k=r(35795),j=r(26145),S=r(84952),N=r(3543);let E="h-3.5 w-3.5";function A(e){let{selectedCount:t,hasGroups:r,ratioLocked:n,guidesVisible:s,boundaryVisible:i,disabled:o,onSelectAll:c,onGroup:u,onUngroup:d,onAlignH:f,onAlignV:m,onFillToFit:h,onToggleRatioLock:p,onToggleGuides:A,onToggleBoundary:M}=e,$=(0,a.c)("svgEditor"),L=t>0;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(N.$Q,{children:(0,l.jsx)(N.IB,{icon:(0,l.jsx)(x.A,{className:E}),label:$("actions.selectAll"),title:$("toolbar.selectAllTip"),onClick:c,disabled:o})}),(0,l.jsx)(N.x_,{}),(0,l.jsxs)(N.$Q,{children:[(0,l.jsx)(N.IB,{icon:(0,l.jsx)(g.A,{className:E}),label:$("actions.group"),title:$("toolbar.groupTip"),onClick:u,disabled:o||!(t>=2)}),(0,l.jsx)(N.IB,{icon:(0,l.jsx)(b.A,{className:E}),label:$("actions.ungroup"),title:$("toolbar.ungroupTip"),onClick:d,disabled:o||!r})]}),(0,l.jsx)(N.x_,{}),(0,l.jsxs)(N.$Q,{children:[(0,l.jsx)(N.IB,{icon:(0,l.jsx)(v.A,{className:E}),title:$("toolbar.alignHTip"),iconOnly:!0,onClick:f,disabled:o||!L}),(0,l.jsx)(N.IB,{icon:(0,l.jsx)(y.A,{className:E}),title:$("toolbar.alignVTip"),iconOnly:!0,onClick:m,disabled:o||!L}),(0,l.jsx)(N.IB,{icon:(0,l.jsx)(w.A,{className:E}),label:$("actions.fitToBoundary"),labelClassName:"hidden @[26rem]:inline",title:$
1("toolbar.fitTip"),onClick:h,disabled:o,enabledClassName:"hover:border-emerald-500 hover:text-emerald-600 hover:bg-emerald-500/5"})]}),(0,l.jsx)(N.x_,{}),(0,l.jsxs)(N.$Q,{children:[(0,l.jsx)(N.IB,{icon:n?(0,l.jsx)(C.A,{className:E}):(0,l.jsx)(k.A,{className:E}),title:$(n?"toolbar.ratioLocked":"toolbar.ratioUnlocked"),iconOnly:!0,onClick:p,disabled:o,activeClassName:n?"border-[var(--primary)] text-[var(--primary)] bg-[var(--primary)]/10":void 0}),(0,l.jsx)(N.IB,{icon:(0,l.jsx)(j.A,{className:E}),title:$(s?"toolbar.hideGuides":"toolbar.showGuides"),iconOnly:!0,onClick:A,disabled:o,activeClassName:s?"border-cyan-400 text-cyan-500 bg-cyan-500/10":void 0}),(0,l.jsx)(N.IB,{icon:(0,l.jsx)(S.A,{className:E}),title:$(i?"toolbar.hideBoundary":"toolbar.showBoundary"),iconOnly:!0,onClick:M,disabled:o,activeClassName:i?"border-orange-400 text-orange-500 bg-orange-500/10":void 0})]})]})}function M(e){let{activeVariant:t,onSetVariant:r,hasLightChanges:n,hasDarkChanges:a,canUndo:s,canRedo:i,onUndo:c,onRedo:u,onSwapVariants:d,onCopyToOther:f,onResetToOriginal:m,singleVariant:h,showOutline:x,outline:g,transform:b,disabled:v,textTool:y,compare:w}=e;return(0,l.jsxs)("div",{"data-testid":"color-editor-toolbar",className:"@container relative flex h-20 shrink-0 flex-col justify-center gap-1.5 border-b border-[var(--border-subtle)] px-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("div",{"data-testid":"toolbar-scroller",className:"no-scrollbar flex min-w-0 flex-1 items-center gap-2 overflow-x-auto",children:h?(0,l.jsx)(N.SX,{canUndo:s,canRedo:i,onUndo:c,onRedo:u,disabled:v}):(0,l.jsx)(o.X,{activeVariant:t,onSetVariant:r,hasLightChanges:n,hasDarkChanges:a,canUndo:s,canRedo:i,onUndo:c,onRedo:u,onSwapVariants:d,onCopyToOther:f,onResetToOriginal:m,disabled:v})}),y&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(N.x_,{}),y]}),x&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(N.x_,{}),(0,l.jsx)(p,{...g})]}),w&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(N.x_,{}),w]})]}),(0,l.jsx)("div",{"data-testid":"toolbar-scroller-selection",className:"no-scrollbar flex min-w-0 items-center gap-2 overflow-x-auto",children:(0,l.jsx)(A,{...b,disabled:v})})]})}var $=r(40583),L=r(67048),z=r(44615),R=r(2821),I=r(90368),F=r(86651),T=r(5917),O=r(22900);function D(e){let{value:t,fonts:r,onPick:s,onBack:i,disabled:o=!1,ownScrollBox:c=!0}=e,u=(0,a.c)("svgEditor"),[d,f]=(0,n.useState)(""),m=(0,n.useMemo)(()=>(0,O.pj)(r),[r]);(0,O.BE)((0,n.useMemo)(()=>m.flatMap(e=>e.fonts.map(e=>e.family)),[m]),"svg-editor-text-fonts");let h=(0,n.useMemo)(()=>{let e=d.trim().toLowerCase();return e?m.map(t=>({category:t.category,fonts:t.fonts.filter(t=>t.name.toLowerCase().includes(e)||t.family.toLowerCase().includes(e))})).filter(e=>e.fonts.length>0):m},[m,d]);return(0,l.jsxs)("div",{className:(0,R.$)("flex flex-col",c&&"max-h-80"),children:[(0,l.jsxs)("div",{className:"flex shrink-0 items-center gap-2 border-b border-[var(--border-subtle)] px-2 py-2",children:[(0,l.jsx)("button",{type:"button",onClick:i,"aria-label":u("text.fontBack"),className:"rounded-md p-1 text-[var(--text-muted)] transition-colors hover:bg-[var(--surface-secondary)]",children:(0,l.jsx)(I.A,{size:15})}),(0,l.jsx)(F.A,{size:14,"aria-hidden":!0,className:"shrink-0 text-[var(--text-muted)]"}),(0,l.jsx)("input",{autoFocus:!0,value:d,onChange:e=>f(e.target.value),placeholder:u("text.fontSearch"),"aria-label":u("text.fontSearch"),className:"no-focus-outline w-full bg-transparent text-sm outline-none placeholder:text-[var(--text-muted)]"})]}),(0,l.jsx)("div",{className:(0,R.$)("py-1",c&&"min-h-0 flex-1 overflow-y-auto"),children:0===r.length?(0,l.jsx)("p",{className:"px-3 py-6 text-center text-xs text-[var(--text-muted)]",children:u("text.fontsEmpty")}):0===h.length?(0,l.jsx)("p",{className:"px-3 py-6 text-center text-xs text-[var(--text-muted)]",children:u("text.fontNoMatch",{query:d.trim()})}):h.map(e=>(0,l.jsxs)("div",{children:[(0,l.jsx)("p",{className:"px-3 pb-1 pt-2 text-[10px] uppercase tracking-wide text-[var(--text-muted)]",children:e.category}),e.fonts.map(e=>{let r=e.family===t;return(0,l.jsxs)("button",{type:"button",onClick:()=>s(e.family),disabled:o,className:`flex w-full items-center justify-between gap-2 px-3 py-1.5 text-left transition-colors hover:bg-[var(--surface-muted)] disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:bg-transparent ${r?"bg-[var(--surface-muted)]":""}`,children:[(0,l.jsx)("span",{className:"truncate text-[15px] leading-tight",style:{fontFamily:(0,O.oN)(e.family)},children:e.name}
1),r&&(0,l.jsx)(T.A,{size:13,"aria-hidden":!0,className:"shrink-0 text-[var(--primary)]"})]},e.id)})]},e.category))})]})}var B=r(99487),P=r(99443);let X="data-alom-text",H={content:"",sizePct:12,fill:"#111111",bold:!1,italic:!1,align:"middle"};function Y(e){return Number.isFinite(e)?Math.min(40,Math.max(2,e)):12}function V(e){let t=e.split(/\r?\n/).map(e=>e.trim());for(;t.length>0&&""===t[t.length-1];)t.pop();for(;t.length>0&&""===t[0];)t.shift();return t}function q(e,t,r,l){let n=V(r.content),a=(0,B.cH)(Y(r.sizePct)/100*l.w),s=(0,B.cH)(l.x+l.w/2);for(t.setAttribute("font-family",r.fontFamily),t.setAttribute("font-size",String(a)),t.setAttribute("font-weight",r.bold?"700":"400"),t.setAttribute("font-style",r.italic?"italic":"normal"),t.setAttribute("text-anchor",r.align),t.setAttribute("fill",r.fill),t.setAttribute("x",String(s));t.firstChild;)t.removeChild(t.firstChild);let i=(0,B.cH)(.35-(n.length-1)*1.15/2);n.forEach((r,l)=>{let n=e.createElementNS(B.Rc,"tspan");n.setAttribute("x",String(s)),n.setAttribute("dy",`${0===l?i:1.15}em`),n.textContent=r,t.appendChild(n)})}function G(e){let t=(0,B.Wj)(e.getAttribute("viewBox"));if(t)return t;let r=Number.parseFloat(e.getAttribute("width")||""),l=Number.parseFloat(e.getAttribute("height")||"");return Number.isFinite(r)&&Number.isFinite(l)&&r>0&&l>0?{x:0,y:0,w:r,h:l}:null}function _(e){if(!e)return[];let t=(0,P.H)(e),r=t?.querySelector("svg");if(!r)return[];let l=G(r);return Array.from(r.querySelectorAll(`[${X}]`)).filter(e=>e instanceof SVGElement).map(e=>{let t=Number.parseFloat(e.getAttribute("font-size")||"");return{id:e.getAttribute(B.GX)||"",content:Array.from(e.querySelectorAll("tspan")).map(e=>e.textContent||"").join("\n"),fontFamily:e.getAttribute("font-family")||"",sizePct:l&&Number.isFinite(t)?Y(Math.round(t/l.w*100)):12,fill:e.getAttribute("fill")||H.fill,bold:"700"===e.getAttribute("font-weight"),italic:"italic"===e.getAttribute("font-style"),align:e.getAttribute("text-anchor")??"middle"}}).filter(e=>!!e.id)}function U(e){let{onAdd:t,disabled:r}=e,s=(0,a.c)("svgEditor"),{data:i=[],isLoading:o}=(0,O.Sc)(),[c,d]=(0,n.useState)(!1),[f,m]=(0,n.useState)(!1),[h,p]=(0,n.useState)({...H,fontFamily:""}),x=(0,n.useRef)(null);(0,n.useEffect)(()=>{c&&(m(!1),p({...H,fontFamily:i[0]?.family??""}))},[c]),(0,n.useEffect)(()=>{if(!c)return;let e=e=>{x.current?.contains(e.target)||d(!1)},t=e=>"Escape"===e.key&&d(!1);return document.addEventListener("pointerdown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("pointerdown",e),document.removeEventListener("keydown",t)}},[c]);let g=h.fontFamily||i[0]?.family||"",b=h.content.trim().length>0&&!!g;return(0,l.jsxs)("div",{ref:x,className:"relative shrink-0",children:[(0,l.jsxs)("button",{type:"button",onClick:()=>d(e=>!e),disabled:r,title:s("text.add"),className:(0,R.$)("flex h-8 shrink-0 items-center gap-1.5 whitespace-nowrap rounded-md px-2 text-xs font-medium transition-colors disabled:opacity-40",c?"bg-[var(--primary)] text-white":"text-[var(--text-secondary)] hover:bg-[var(--surface-secondary)]"),children:[(0,l.jsx)($.A,{size:14,"aria-hidden":!0,className:"shrink-0"}),s("text.add")]}),c&&(0,l.jsx)("div",{"data-testid":"text-panel",className:"absolute right-0 top-full z-40 mt-1 w-80 overflow-hidden rounded-lg border border-[var(--border-subtle)] bg-[var(--surface)] shadow-xl",children:f?(0,l.jsx)(D,{value:g,fonts:i,onPick:e=>{p(t=>({...t,fontFamily:e})),m(!1)},onBack:()=>m(!1)}):(0,l.jsxs)("div",{className:"flex flex-col gap-3 p-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between",children:[(0,l.jsx)("p",{className:"text-xs font-semibold text-[var(--text-primary)]",children:s("text.add")}),(0,l.jsx)("button",{type:"button",onClick:()=>d(!1),"aria-label":s("text.close"),className:"rounded p-0.5 text-[var(--text-muted)] transition-colors hover:bg-[var(--surface-secondary)]",children:(0,l.jsx)(u.A,{size:14})})]}),(0,l.jsx)("textarea",{autoFocus:!0,rows:2,value:h.content,onChange:e=>p(t=>({...t,content:e.target.value})),placeholder:s("text.contentPlaceholder"),"aria-label":s("text.contentLabel"),style:{fontFamily:g?(0,O.oN)(g):void 0},className:"w-full resize-none rounded-md border border-[var(--border-subtle)] bg-[var(--surface)] px-2 py-1.5 text-sm outline-none focus:border-[var(--primary)]"}),(0,l.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,l.jsx)("label",{className:"text-[10px] uppercase tracking-wide text-[var(--text-muted)]",children:s("text.fontLabel")}),(0,l.jsx)("button",{type:"button",onClick:()=>m(!0),disabled:0===i.length,className:"truncate rounded-md border border-[var(--border-subtle)] px-2 py-1.5 text-left text-sm transition-colors hover:border-[var(--text-muted)] disabled:opacity-50",style:{fontFamily:g?(0,O.oN)(g):void 0},children:g||s(o?"text.fontsLoading":"text.fontsEmpty")})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("label",{htmlFor:"alom-text-size",className:"shrink-0 text-[10px] uppercase tracking-wide text-[var(--text-muted)]",children:s("text.sizeLabel")}),(0,l.jsx)("input",{id:"alom-text-size",type:"range",min:2,max:40,value:h.sizePct,onChange:e=>p(t=>({...t,sizePct:Number(e.target.value)})),className:"min-w-0 flex-1 accent-[var(--primary)]"}),(0,l.jsx)("span",{className:"w-9 shrink-0 text-right text-xs tabular-nums text-[var(--text-secondary)]",children:s("text.sizeValue",{percent:h.sizePct})})]}),(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)("input",{type:"color",value:h.fill,onChange:e=>p(t=>({...t,fill:e.target.value})),"aria-label":s("text.colorLabel"),className:"h-7 w-9 shrink-0 cursor-pointer rounded border border-[var(--border-subtle)] bg-transparent p-0.5"}),(0,l.jsx)(K,{on:h.bold,label:s("text.bold"),onClick:()=>p(e=>({...e,bold:!e.bold})),children:(0,l.jsx)(L.A,{size:14})}),(0,l.jsx)(K,{on:h.italic,label:s("text.italic"),onClick:()=>p(e=>({...e,italic:!e.italic})),children:(0,l.jsx)(z.A,{size:14})}),(0,l.jsx)("button",{type:"button",onClick:()=>{b&&(t({...h,fontFamily:g}),d(!1))},disabled:!b,className:"ml-auto rounded-md bg-[var(--primary)] px-3 py-1.5 text-xs font-medium text-white transition-opacity disabled:opacity-40",children:s("text.addAction")})]}),(0,l.jsx)("p",{className:"text-[11px] leading-snug text-[var(--text-muted)]",children:s("text.replaceHint")})]})})]})}function K(e){let{on:t,label:r,onClick:n,children:a}=e;return(0,l.jsx)("button",{type:"button",onClick:n,title:r,"aria-label":r,"aria-pressed":t,className:(0,R.$)("shrink-0 rounded-md p-1.5 transition-colors",t?"bg-[var(--primary)] text-white":"text-[var(--text-muted)] hover:bg-[var(--surface-secondary)]"),children:a})}var W=r(47906),Q=r(48314),Z=r(75426),J=r(71360);function ee(e){let{label:t,children:r,stacked:n}=e;return(0,l.jsxs)("div",{className:(0,R.$)("min-h-8 gap-2.5",n?"flex flex-col":"grid grid-cols-[68px_minmax(0,1fr)] items-center"),children:[(0,l.jsx)("span",{className:"text-xs font-medium text-[var(--text-muted)]",children:t}),(0,l.jsx)("div",{className:"flex min-w-0 items-center gap-2",children:r})]})}var et=r(60307);function er(e){let{value:t,onChange:r,ariaLabel:s,pickerAriaLabel:i,disabled:o,commitOnRelease:c}
1=e,u=(0,a.c)("svgEditor"),[d,f]=(0,n.useState)(t??""),m=(0,n.useRef)(null),h=(0,n.useMemo)(()=>(0,et.s)(e=>{"string"==typeof e&&r(e)},100),[r]);(0,n.useEffect)(()=>()=>h.flush(),[h]),(0,n.useEffect)(()=>f(t??""),[t]),(0,n.useEffect)(()=>{if(!c)return;let e=m.current;if(!e)return;let t=e=>{r(e.target.value.toUpperCase())};return e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[c,r]);let p=()=>{let e=d.trim();/^#[0-9a-fA-F]{6}$/.test(e)?r(e.toUpperCase()):f(t??"")};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("label",{className:"relative h-7 w-7 shrink-0 cursor-pointer overflow-hidden rounded-md border border-[var(--border-subtle)]",style:d?{backgroundColor:d}:{backgroundImage:"linear-gradient(45deg,var(--surface-2) 25%,transparent 25%),linear-gradient(-45deg,var(--surface-2) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--surface-2) 75%),linear-gradient(-45deg,transparent 75%,var(--surface-2) 75%)",backgroundSize:"10px 10px",backgroundPosition:"0 0,0 5px,5px -5px,-5px 0"},children:(0,l.jsx)("input",{ref:m,type:"color",value:d||"#000000",disabled:o,onChange:e=>{let t=e.target.value.toUpperCase();f(t),c||h(t)},"aria-label":i??u("tooltips.changeColor"),className:"absolute inset-0 h-full w-full cursor-pointer opacity-0"})}),(0,l.jsx)("input",{type:"text",value:d,disabled:o,placeholder:t?void 0:u("labels.mixed"),"aria-label":s,onChange:e=>f(e.target.value),onBlur:p,onKeyDown:e=>"Enter"===e.key&&p(),className:"h-7 min-w-0 flex-1 rounded-md border border-[var(--border-subtle)] bg-[var(--surface)] px-2 font-mono text-xs text-[var(--text-primary)] outline-none focus:border-[var(--primary)] disabled:opacity-50"})]})}function el(e){let{value:t,onChange:r,ariaLabel:s,disabled:i}
1=e,o=(0,a.c)("svgEditor"),[c,u]=(0,n.useState)(null===t?100:Math.round(100*t)),d=(0,n.useMemo)(()=>(0,et.s)(e=>{"number"==typeof e&&r(e/100)},100),[r]);return(0,n.useEffect)(()=>()=>d.flush(),[d]),(0,n.useEffect)(()=>{u(null===t?100:Math.round(100*t))},[t]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("input",{type:"range",min:0,max:100,value:c,disabled:i,"aria-label":s,onChange:e=>{let t=Number(e.target.value);u(t),d(t)},className:"min-w-0 flex-1 accent-[var(--primary)]"}),(0,l.jsx)("span",{className:"w-11 shrink-0 text-right text-xs tabular-nums text-[var(--text-secondary)]",children:null===t?o("labels.mixed"):`${c}%`})]})}function en(e,t){if(0===e.length)return null;let r=t.get(e[0].id)?.opacity??e[0].originalOpacity;if(!Number.isFinite(r))return null;for(let l of e)if(Math.abs((t.get(l.id)?.opacity??l.originalOpacity)-r)>.005)return null;return r}var ea=r(26497),es=r(65271),ei=r(27937),eo=r(2899);function ec(e){let{value:t,onChange:r,disabled:a=!1,"aria-label":s,title:i,className:o,children:c,onSwatchClick:u}=e,[d,f]=(0,n.useState)(t),m=(0,n.useRef)(!1),h=(0,n.useRef)(r);(0,n.useEffect)(()=>{h.current=r},[r]);let p=(0,n.useRef)(null);(0,n.useEffect)(()=>{let e=(0,et.s)(e=>{"string"==typeof e&&h.current(e)},100);return p.current=e,()=>{e.cancel(),p.current=null}},[]),(0,n.useEffect)(()=>{m.current||f(t)},[t]);let x=(0,n.useCallback)(()=>{m.current=!1,p.current?.flush()},[]);return(0,l.jsxs)("label",{className:o,style:{backgroundColor:d},title:i,onClick:u,children:[(0,l.jsx)("input",{type:"color",value:d,disabled:a,"aria-label":s,onFocus:()=>{m.current=!0},onBlur:x,onChange:e=>{let t=e.target.value.toUpperCase();f(t),p.current?.(t)},className:"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed"}),c]})}function eu(e){let{groups:t,onSelectIds:r,onRecolor:n,disabled:s}=e,i=(0,a.c)("svgEditor");return(0,l.jsx)(ea.AnimatePresence,{initial:!1,children:t.length>=2&&(0,l.jsxs)(es.P.section,{variants:eo._C,initial:"hidden",animate:"visible",exit:"hidden",className:"flex flex-col border-t border-[var(--border-subtle)] pt-2.5",children:[(0,l.jsx)("h5",{className:"pb-1 text-[10px] font-semibold uppercase tracking-wide text-[var(--text-muted)]",children:i("selection.colorsHeading")}),t.map(e=>(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(ec,{value:e.color,onChange:t=>n(e.elementIds,t),disabled:s,className:"relative h-5 w-5 shrink-0 cursor-pointer rounded-[5px] border border-[var(--border-subtle)]","aria-label":i("palette.rowReplaceAria",{color:e.color,count:e.count})}),(0,l.jsxs)("button",{type:"button",onClick:()=>r(e.elementIds),disabled:s,title:i("selection.selectThisColor",{color:e.color,count:e.count}),className:"flex min-w-0 flex-1 items-center gap-2 rounded-md px-1.5 py-1 text-left transition-colors hover:bg-[var(--surface-secondary)] disabled:cursor-not-allowed disabled:opacity-50",children:[(0,l.jsx)("span",{className:"flex-1 truncate font-mono text-xs text-[var(--text-primary)]",children:e.color}),(0,l.jsx)("span",{className:"shrink-0 text-xs tabular-nums text-[var(--text-muted)]",children:i("selection.colorRow",{count:e.count})}),(0,l.jsx)(ei.A,{className:"h-3 w-3 shrink-0 text-[var(--text-muted)]"})]})]},e.elementIds[0]))]})})}function ed(e){let{editor:t,elements:r,onSelectIds:s,disabled:i}=e,o=(0,a.c)("svgEditor"),c=t.elementChanges,d=function(e,t){let r=new Map;for(let l of e){let e=t.get(l.id)?.fill??l.originalFill??null;if(!e)continue;let n=e.toUpperCase(),a=r.get(n);a?a.push(l.id):r.set(n,[l.id])}return Array.from(r,e=>{let[t,r]=e;return{color:t,count:r.length,elementIds:r}}).sort((e,t)=>t.count-e.count||e.color.localeCompare(t.color))}(r,c),f=en(r,c),{isModified:m,reset:h}=function(e,t){let[r]=(0,n.useState)(()=>{let r=new Map;for(let l of e){let e=t.get(l.id);r.set(l.id,{fill:e?.fill??l.originalFill??null,stroke:e?.stroke??l.originalStroke??null,opacity:e?.opacity??l.originalOpacity})}return r});return{isModified:e.some(e=>{let l=r.get(e.id);if(!l)return!1;let n=t.get(e.id),a=n?.fill??e.originalFill??null,s=n?.stroke??e.originalStroke??null,i=n?.opacity??e.originalOpacity;return a?.toLowerCase()!==l.fill?.toLowerCase()||s?.toLowerCase()!==l.stroke?.toLowerCase()||Math.abs(i-l.opacity)>.005}),reset:l=>{let n=new Map,a=new Map,s=new Map;for(let l of e){let e=r.get(l.id);if(!e)continue;let i=t.get(l.id)?.fill??l.originalFill??null;if(e.fill&&null!==i&&i.toLowerCase()!==e.fill.toLowerCase()){let t=n.get(e.fill)??[];t.push(l.id),n.set(e.fill,t)}let o=t.get(l.id)?.stroke??l.originalStroke??null;if(e.stroke&&null!==o&&o.toLowerCase()!==e.stroke.toLowerCase()){let t=a.get(e.stroke)??[];t.push(l.id),a.set(e.stroke,t)}if(Math.abs((t.get(l.id)?.opacity??l.originalOpacity)-e.opacity)>.005){let t=s.get(e.opacity)??[];t.push(l.id),s.set(e.opacity,t)}}n.forEach((e,t)=>l.fill(e,t)),a.forEach((e,t)=>
1l.stroke(e,t)),s.forEach((e,t)=>l.opacity(e,t))}}}(r,c),p=d.length>0,x=1===d.length&&d[0].count===r.length?d[0].color:null,g=d.flatMap(e=>e.elementIds),b=e=>c.get(e.id)?.stroke??e.originalStroke??null,v=r.filter(e=>null!==b(e)),y=new Set(v.map(e=>b(e).toUpperCase())),w=v.length>0,C=w&&v.length===r.length&&1===y.size?[...y][0]:null;return(0,l.jsxs)("div",{"data-testid":"inspector-shape",className:"flex flex-col gap-3",children:[(0,l.jsxs)("header",{className:"flex items-start justify-between gap-2",children:[(0,l.jsxs)("div",{className:"min-w-0",children:[(0,l.jsx)("h4",{className:"text-sm font-semibold text-[var(--text-primary)]",children:o("selection.count",{count:r.length})}),(0,l.jsx)("p",{className:"mt-0.5 text-xs text-[var(--primary)]",children:o.rich("selection.multiScope",{b:e=>(0,l.jsx)("strong",{children:e})})})]}),(0,l.jsx)("button",{type:"button",onClick:t.clearSelection,disabled:i,"aria-label":o("tooltips.unselectAll"),title:o("tooltips.unselectAll"),className:"shrink-0 rounded-md p-1 text-[var(--text-muted)] transition-colors hover:bg-[var(--surface-secondary)] hover:text-[var(--text-primary)]",children:(0,l.jsx)(u.A,{className:"h-4 w-4"})})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2.5",children:[p&&(0,l.jsx)(ee,{label:o("labels.fill"),children:(0,l.jsx)(er,{value:x,onChange:e=>{g.length>0&&t.updateElementsFill(g,e)},ariaLabel:o("a11y.channelHexValue",{channel:"fill"}),pickerAriaLabel:o("a11y.changeChannelColor",{channel:"fill"}),disabled:i})}),w&&(0,l.jsx)(ee,{label:o("labels.stroke"),children:(0,l.jsx)(er,{value:C,onChange:e=>{v.length>0&&t.updateElementsStroke(v.map(e=>e.id),e)},ariaLabel:o("a11y.channelHexValue",{channel:"stroke"}),pickerAriaLabel:o("a11y.changeChannelColor",{channel:"stroke"}),disabled:i})}),!p&&!w&&(0,l.jsx)("p",{className:"py-4 text-center text-xs text-[var(--text-muted)]",children:o("empty.noEditableColors")}),(0,l.jsx)(ee,{label:o("labels.opacity"),children:(0,l.jsx)(el,{value:f,onChange:e=>{t.updateElementsOpacity(r.map(e=>e.id),e)},ariaLabel:o("a11y.changeOpacity"),disabled:i})})]}),(0,l.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[m&&(0,l.jsx)(ef,{onClick:()=>h({fill:t.updateElementsFill,stroke:t.updateElementsStroke,opacity:t.updateElementsOpacity}),disabled:i,icon:(0,l.jsx)(Q.A,{className:"h-3 w-3"}),label:o("actions.reset")}),(0,l.jsx)(ef,{onClick:t.duplicateSelectedElements,disabled:i,icon:(0,l.jsx)(Z.A,{className:"h-3 w-3"}),label:o("actions.duplicate"),title:"Ctrl+D"}),(0,l.jsx)(ef,{onClick:()=>t.deleteElements(r.map(e=>e.id)),disabled:i,icon:(0,l.jsx)(J.A,{className:"h-3 w-3"}),label:o("actions.delete"),danger:!0})]}),(0,l.jsx)(eu,{groups:d,onSelectIds:s,onRecolor:t.updateElementsFill,disabled:i})]})}function ef(e){let{onClick:t,disabled:r,icon:n,label:a,title:s,danger:i}=e;return(0,l.jsxs)("button",{type:"button",onClick:t,disabled:r,title:s,className:"flex h-7 items-center gap-1.5 rounded-md border border-[var(--border-subtle)] px-2 text-xs font-medium text-[var(--text-secondary)] transition-colors disabled:cursor-not-allowed disabled:opacity-50 "+(i?"hover:border-red-400 hover:text-red-500":"hover:border-[var(--primary)] hover:text-[var(--primary)]"),children:[n,a]})}var em=r(64813),eh=r(40586),ep=r(56860);let ex=[{value:"start",key:"alignStart",Icon:em.A},{value:"middle",key:"alignMiddle",Icon:eh.A},{value:"end",key:"alignEnd",Icon:ep.A}];function eg(e){let{element:t,onUpdate:r,onEditContent:s,onDuplicate:i,onDelete:o,disabled:c}=e,u=(0,a.c)("svgEditor"),{data:d=[]}=(0,O.Sc)(),[f,m]=(0,n.useState)(!1),[h,p]=(0,n.useState)(t),x=(0,n.useRef)(null);(0,n.useEffect)(()=>p(t),[t.id]);let g=e=>{let l={...h,...e};p(l),r(t.id,l)},b=(0,n.useRef)(h);return((0,n.useEffect)(()=>{b.current=h},[h]),(0,n.useEffect)(()=>{let e=x.current;if(!e)return;let l=e=>{let l={...b.current,sizePct:Number(e.target.value)};p(l),r(t.id,l)};return e.addEventListener("change",l),()=>e.removeEventListener("change",l)},[t.id,r]),f)?(0,l.jsx)("div",{"data-testid":"inspector-text",children:(0,l.jsx)(D,{value:h.fontFamily,fonts:d,onPick:e=>{m(!1),g({fontFamily:e})},onBack:()=>m(!1),disabled:c,ownScrollBox:!1})}):(0,l.jsxs)("div",{"data-testid":"inspector-text",className:"flex flex-col gap-3",children:[(0,l.jsxs)("header",{className:"flex items-center gap-1.5",children:[(0,l.jsx)($.A,{className:"h-4 w-4 shrink-0 text-[var(--primary)]"}),(0,l.jsx)("h4",{className:"text-sm font-semibold text-[var(--text-primary)]",children:u("text.title")})]}),(0,l.jsxs)("div",{className:"flex flex-col gap-2.5",children:[(0,l.jsx)(ee,{label:u("text.fontLabel"),children:(0,l.jsx)("button",{type:"button",onClick:()=>m(!0),disabled:c||0===d.length,style:{fontFamily:(0,O.oN)(h.fontFamily)},className:"h-7 min-w-0 flex-1 truncate rounded-md border border-[var(--border-subtle)] bg-[var(--surface)] px-2 text-left text-sm text-[var(--text-primary)] transition-colors hover:border-[var(--text-muted)] disabled:opacity-50",children:h.fontFamily||u("text.fontsEmpty")})}),(0,l.jsxs)(ee,{label:u("text.sizeLabel"),children:[(0,l.jsx)("input",{ref:x,type:"range",min:2,max:40,value:h.sizePct,disabled:c,"aria-label":u("text.sizeLabel"),onChange:e=>p(t=>({...t,sizePct:Number(e.target.value)})),className:"min-w-0 flex-1 accent-[var(--primary)]"}),(0,l.jsx)("span",{className:"w-11 shrink-0 text-right text-xs tabular-nums text-[var(--text-secondary)]",children:u("text.sizeValue",{percent:h.sizePct})})]}),(0,l.jsxs)(ee,{label:u("text.styleLabel"),children:[(0,l.jsx)(eb,{on:h.bold,label:u("text.bold"),disabled:c,onClick:()=>g({bold:!h.bold}),children:(0,l.jsx)(L.A,{className:"h-3.5 w-3.5"})}),(0,l.jsx)(eb,{on:h.italic,label:u("text.italic"),disabled:c,onClick:()=>g({italic:!h.italic}),children:(0,l.jsx)(z.A,{className:"h-3.5 w-3.5"})})]}),(0,l.jsx)(ee,{label:u("text.alignLabel"),children:ex.map(e=>{let{value:t,key:r,Icon:n}=e;return(0,l.jsx)(eb,{on:h.align===t,label:u(`text.${r}`),disabled:c,onClick:()=>g({align:t}),children:(0,l.jsx)(n,{className:"h-3.5 w-3.5"})},t)})}),(0,l.jsx)(ee,{label:u("labels.color"),children:(0,l.jsx)(er,{value:h.fill,onChange:e=>g({fill:e}),ariaLabel:u("text.colorLabel"),pickerAriaLabel:u("text.colorLabel"),disabled:c,
1commitOnRelease:!0})})]}),(0,l.jsxs)("div",{className:"flex flex-wrap gap-1.5",children:[(0,l.jsx)(ev,{onClick:s,disabled:c,icon:(0,l.jsx)($.A,{className:"h-3 w-3"}),label:u("text.edit")}),(0,l.jsx)(ev,{onClick:i,disabled:c,icon:(0,l.jsx)(Z.A,{className:"h-3 w-3"}),label:u("actions.duplicate")}),(0,l.jsx)(ev,{onClick:o,disabled:c,icon:(0,l.jsx)(J.A,{className:"h-3 w-3"}),label:u("actions.delete"),danger:!0})]}),(0,l.jsx)("p",{className:"text-[11px] leading-snug text-[var(--text-muted)]",children:u("text.editOnCanvas")})]})}function eb(e){let{on:t,label:r,disabled:n,onClick:a,children:s}=e;return(0,l.jsx)("button",{type:"button",onClick:a,disabled:n,title:r,"aria-label":r,"aria-pressed":t,className:(0,R.$)("flex h-7 w-7 shrink-0 items-center justify-center rounded-md border transition-colors disabled:opacity-50",t?"border-[var(--primary)] bg-[var(--primary)] text-white":"border-[var(--border-subtle)] text-[var(--text-muted)] hover:border-[var(--text-muted)]"),children:s})}function ev(e){let{onClick:t,disabled:r,icon:n,label:a,danger:s}=e;return(0,l.jsxs)("button",{type:"button",onClick:t,disabled:r,className:(0,R.$)("flex h-7 items-center gap-1.5 rounded-md border border-[var(--border-subtle)] px-2 text-xs font-medium text-[var(--text-secondary)] transition-colors disabled:cursor-not-allowed disabled:opacity-50",s?"hover:border-red-400 hover:text-red-500":"hover:border-[var(--primary)] hover:text-[var(--primary)]"),children:[n,a]})}var ey=r(49238);function ew(e){let{totalElementCount:t,opacity:r,onApplyOpacityToAll:n,disabled:s}=e,i=(0,a.c)("svgEditor");return(0,l.jsxs)("div",{className:"flex flex-col",children:[(0,l.jsxs)("div",{className:"flex flex-col items-center px-2 py-5 text-center",children:[(0,l.jsx)(ey.A,{className:"mb-2.5 h-7 w-7 text-[var(--text-muted)]"}),(0,l.jsx)("p",{className:"text-sm font-medium text-[var(--text-primary)]",children:i("empty.noElementSelected")}),(0,l.jsx)("p",{className:"mt-1 text-xs text-[var(--text-muted)]",children:i("empty.noElementSelectedHint")})]}),n&&t>0&&(0,l.jsxs)("div",{className:"flex flex-col gap-2.5 border-t border-[var(--border-subtle)] pt-3",children:[(0,l.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-wide text-[var(--text-muted)]",children:i("labels.wholeDesign")}),(0,l.jsx)(ee,{label:i("labels.opacity"),children:(0,l.jsx)(el,{value:r,onChange:n,ariaLabel:i("applyAll.opacityAria"),disabled:s})}),(0,l.jsx)("p",{className:"text-[11px] text-[var(--text-muted)]",children:i("selection.wholeDesignHint",{count:t})})]})]})}function eC(e){let{editor:t,selectedElements:r,textElement:n,onEditContent:a,onSelectIds:s,disabled:i}=e;return 0===r.length?(0,l.jsx)(ew,{totalElementCount:t.elements.length,opacity:en(t.elements,t.elementChanges),onApplyOpacityToAll:t.updateAllOpacity,disabled:i}):n?(0,l.jsx)(eg,{element:n,onUpdate:t.updateText,onEditContent:a,onDuplicate:t.duplicateSelectedElements,onDelete:()=>t.deleteElements([n.id]),disabled:i},n.id):(0,l.jsx)(ed,{editor:t,elements:r,onSelectIds:s,disabled:i},r.map(e=>e.id).sort().join(","))}function ek(e){let{editor:t,selectedElements:r,textElement:n,onEditContent:a,onPaletteColorClick:s,disabled:i}=e;return(0,l.jsx)("div",{"data-testid":"inspector-column",className:"flex min-h-0 w-full flex-col overflow-hidden lg:w-[352px] lg:border-l lg:border-[var(--border-subtle)] lg:pl-4",children:(0,l.jsxs)("div",{"data-testid":"inspector-scroller",className:"flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto pr-1",children:[(0,l.jsx)("div",{className:"shrink-0 rounded-lg border border-l-4 border-[var(--border-subtle)] border-l-[var(--primary)] bg-[var(--surface)] p-3",children:(0,l.jsx)(eC,{editor:t,selectedElements:r,textElement:n,onEditContent:a,onSelectIds:s,disabled:i})}),(0,l.jsx)("div",{className:"shrink-0 rounded-lg border border-l-4 border-[var(--border-subtle)] border-l-amber-400 bg-[var(--surface)] p-3",children:(0,l.jsx)(W.V,{elements:t.elements,uniqueColors:t.uniqueColors,elementChanges:t.elementChanges,selectedElementIds:t.selectedElementIds,onColorClick:s,onChangeAllWithColor:t.updateAllWithColor,onResetAllWithColor:t.resetAllWithColor,onDeleteAllWithColor:t.deleteAllWithColor,disabled:i})})]})})}var ej=r(35299),eS=r(82084);function eN(e){let{hasChanges:t,disabled:r,isSaving:n,onCancel:s,onResetAll:i,onSave:o,footer:c}=e,u=(0,a.c)("svgEditor"),d="function"==typeof c?c({onSave:o}):c;return(0,l.jsx)("div",{className:"mt-4 flex items-center justify-between gap-3 border-t border-[var(--border-subtle)] pt-4",children:d||(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)("div",{className:"flex items-center gap-2",children:[(0,l.jsx)(eS.$n,{type:"button",onClick:s,variant:"outline",disabled:r||n,children:u("actions.cancel")}),t&&(0,l.jsxs)(eS.$n,{type:"button",onClick:i,variant:"outline",disabled:r||n,children:[(0,l.jsx)(Q.A,{className:"mr-2 h-4 w-4"}),u("actions.resetAll")]})]}),(0,l.jsx)(eS.$n,{type:"button",onClick:o,variant:"primary",disabled:r||n,children:n?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(ej.A,{className:"mr-2 h-4 w-4 animate-spin"}),u("actions.saving")]}):u(t?"actions.saveAndContinue":"actions.continue")})]})})}var eE=r(52056),eA=r(89559);function eM(e){let{className:t}=e,r=(0,a.c)("svgEditor");return(0,l.jsxs)("div",{className:(0,R.$)("flex flex-col items-center justify-center py-12",t),children:[(0,l.jsx)(ej.A,{className:"mb-3 h-8 w-8 animate-spin text-[var(--primary)]"}),(0,l.jsx)("span",{className:"text-sm text-[var(--text-muted)]",children:r("loading.svg")})]})}function e$(e){let{message:t,onRetry:r,className:n}=e,s=(0,a.c)("svgEditor");return(0,l.jsxs)("div",{className:(0,R.$)("flex flex-col items-center justify-center py-12",n),children:[(0,l.jsx)(eE.A,{className:"mb-3 h-8 w-8 text-red-500"}),(0,l.jsx)("p",{className:"mb-3 text-sm text-red-600",children:t}),(0,l.jsxs)(eS.$n,{type:"button",onClick:r,variant:"outline",children:[(0,l.jsx)(eA.A,{className:"mr-2 h-4 w-4"}),s("actions.retry")]})]})}var eL=r(30387);function ez(e,t,r,l,n){let a=e.get(t)||{};if(!n)return void e.set(t,{...a,[r]:l});let s={...a};delete s[r],0===Object.keys(s).length?e.delete(t):e.set(t,s)}let eR=(e,t)=>t.toLowerCase()===e.originalFill?.toLowerCase(),eI=(e,t)=>t.toLowerCase()===e.originalStroke?.toLowerCase(),eF=(e,t)=>.005>Math.abs(t-e.originalOpacity);function eT(e,t,r,l,n,a){r(r=>{let s=new Map(r);return t.forEach(t=>{(!e||e.has(t.id))&&ez(s,t.id,l,n,a(t))}),s})}function eO(e,t,r,l,n,a){let s=t.find(t=>
1t.id===e);s&&r(t=>{let r=new Map(t);return ez(r,e,l,n,a(s)),r})}function eD(e,t,r,l){eO(e,r,l,"fill",t,e=>eR(e,t))}function eB(e,t,r,l){eO(e,r,l,"stroke",t,e=>eI(e,t))}function eP(e,t,r,l){eO(e,r,l,"opacity",t,e=>eF(e,t))}function eX(e,t,r,l){eT(new Set(e),r,l,"fill",t,e=>eR(e,t))}function eH(e,t,r,l){eT(new Set(e),r,l,"stroke",t,e=>eI(e,t))}function eY(e,t,r,l){eT(new Set(e),r,l,"opacity",t,e=>eF(e,t))}function eV(e,t,r){eT(null,t,r,"opacity",e,t=>eF(t,e))}let eq=(e,t)=>(t?.fill??e.originalFill)?.toLowerCase(),eG=(e,t)=>(t?.stroke??e.originalStroke)?.toLowerCase(),e_={translateX:0,translateY:0,scaleX:1,scaleY:1,scaleOriginX:0,scaleOriginY:0},eU=0,eK='[data-contour="outline"]';function eW(e,t){if(!e||!t)return e;try{let r=new DOMParser,l=r.parseFromString(e,"image/svg+xml"),n=r.parseFromString(t,"image/svg+xml"),a=l.documentElement,s=n.documentElement;if(!a||!s||l.getElementsByTagName("parsererror").length>0||n.getElementsByTagName("parsererror").length>0)return e;let i=s.querySelector(eK),o=a.querySelector(eK);if(!i&&!o)return e;if(o?.parentNode?.removeChild(o),i){let e=l.importNode(i,!0);a.insertBefore(e,a.firstChild)}if(i){let e=s.getAttribute("viewBox");e&&(0,B.zC)(a,e),(0,B.zk)(s)?a.setAttribute(B.MU,"1"):a.removeAttribute(B.MU)}else o&&(0,B.Yu)(a,o);return new XMLSerializer().serializeToString(l)}catch{return e}}async function eQ(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:96;if("undefined"==typeof document)return null;let r=document.createElement("canvas");r.width=t,r.height=t;let l=r.getContext("2d",{willReadFrequently:!0});if(!l)return null;let n=URL.createObjectURL(new Blob([e],{type:"image/svg+xml"}));try{let e=await new Promise(e=>{let t=new Image;t.onload=()=>e(t),t.onerror=()=>e(null),t.src=n});if(!e)return null;let r=Math.min(t/(e.width||t),t/(e.height||t)),a=Math.max(1,Math.round((e.width||t)*r)),s=Math.max(1,Math.round((e.height||t)*r));l.clearRect(0,0,t,t),l.drawImage(e,(t-a)/2,(t-s)/2,a,s);let{data:i}=l.getImageData(0,0,t,t),o=0;for(let e=3;e<i.length;e+=4)i[e]>128&&o++;return o/(t*t)}catch{return null}finally{URL.revokeObjectURL(n)}}async function eZ(e,t){let[r,l]=await Promise.all([eQ(e),eQ(t)]);return null===r||null===l?{floods:!1,before:r,after:l}:{floods:l>=.85&&l-r>=.2,before:r,after:l}}let eJ={start:"left",middle:"center",end:"right"},e0={left:"flex-start",center:"center",right:"flex-end"};function e1(e){let{rect:t,spec:r,onCommit:s,onCancel:i}=e,o=(0,a.c)("svgEditor"),c=(0,n.useRef)(null),u=(0,n.useRef)(!1);(0,n.useEffect)(()=>{let e=c.current;if(!e)return;e.textContent=r.content,e.focus();let t=document.createRange();t.selectNodeContents(e),t.collapse(!1);let l=window.getSelection();l?.removeAllRanges(),l?.addRange(t)}
1,[]);let d=e=>{u.current||(u.current=!0,e?s(c.current?.textContent?.replace(/\u00A0/g," ")??""):i())},f=eJ[r.align];return(0,l.jsxs)("div",{className:"absolute z-20 flex items-center rounded-sm border border-[var(--primary)] bg-[var(--primary)]/10",style:{left:t.left,top:t.top,minWidth:t.width,height:t.height,justifyContent:e0[f]},onMouseDown:e=>e.stopPropagation(),onMouseMove:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[(0,l.jsx)("span",{className:"pointer-events-none absolute -top-5 left-1/2 -translate-x-1/2 whitespace-nowrap rounded-full bg-[var(--primary)] px-2 text-[10px] font-semibold text-white",children:o("text.canvasCue")}),(0,l.jsx)("div",{ref:c,role:"textbox",tabIndex:0,"aria-multiline":"true","aria-label":o("text.canvasAria"),contentEditable:"plaintext-only",suppressContentEditableWarning:!0,spellCheck:!1,onKeyDown:e=>{"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&(e.preventDefault(),d(!1)):(e.preventDefault(),d(!0)),e.stopPropagation()},onBlur:()=>d(!0),style:{fontFamily:(0,O.oN)(r.fontFamily),fontSize:t.fontSize,fontWeight:r.bold?700:400,fontStyle:r.italic?"italic":"normal",color:r.fill,textAlign:f,lineHeight:1.15,whiteSpace:"pre"},className:"min-w-4 px-0.5 outline-none"})]})}function e5(e){let{lightSvgUrl:t,darkSvgUrl:r,enabled:o,disabled:c=!1,mirrorChanges:u=!1,singleVariant:d=!1,onCancel:m,onResetAll:h,onSave:p,isSaving:x=!1,showFooter:g=!0,footer:b,onChangesDetected:v,onVariantChange:y,onPaletteResolved:w,autoFillToFit:C=!1,minZoom:k,squareBoundary:j=!0,canvasOverlay:S,boundaryAspect:N,background:E,className:A,toolbarExtra:$}=e,L=(0,a.c)("svgEditor"),z=function(e){let{lightSvgUrl:t,darkSvgUrl:r,enabled:l,mirrorChanges:a=!1,t:s}=e,i=function(e){let{lightSvgUrl:t,darkSvgUrl:r,enabled:l,t:a}=e,[s,i]=(0,n.useState)(!1),[o,c]=(0,n.useState)(null),[u,d]=(0,n.useState)(null),[f,m]=(0,n.useState)(null),h=(0,n.useRef)(!1),p=(0,n.useRef)(a);(0,n.useEffect)(()=>{p.current=a},[a]);let x=(0,n.useCallback)(async()=>{let e=p.current;if(!t||!r)return void c(e?e("loadErrors.urlsMissing"):"SVG URLs not available");i(!0),c(null);try{let[l,n]=await Promise.all([fetch(t),fetch(r)]);if(!l.ok||!n.ok)throw Error(e?e("loadErrors.fetchFailed"):"Failed to fetch SVG files");let[a,s]=await Promise.all([l.text(),n.text()]);if(!(0,eL.vh)(a)||!(0,eL.vh)(s))throw Error(e?e("loadErrors.invalidContent"):"Invalid SVG content");d(a),m(s),h.current=!0}catch(t){c(t instanceof Error?t.message:e?e("loadErrors.loadFailed"):"Failed to load SVGs")}finally{i(!1)}},[t,r]);return(0,n.useEffect)(()=>{l&&t&&r&&!h.current&&x()},[l,t,r,x]),{isLoading:s,loadError:o,lightSvgContent:u,darkSvgContent:f,setLightSvgContent:d,setDarkSvgContent:m,fetchSvgs:x,resetHasFetched:(0,n.useCallback)(()=>{h.current=!1},[])}}({lightSvgUrl:t,darkSvgUrl:r,enabled:l,t:s}),[o,c]=(0,n.useState)("light"),[u,d]=(0,n.useState)(new Set),[m,h]=(0,n.useState)(null),[p,x]=(0,n.useState)(!1),[g,b]=(0,n.useState)(!1),[v,y]=(0,n.useState)(new Map),[w,C]=(0,n.useState)(new Map),[k,j]=(0,n.useState)(new Set),[S,N]=(0,n.useState)(new Set),[E,A]=(0,n.use
1State)(new Map),[M,$]=(0,n.useState)(new Map),[L,z]=(0,n.useState)(new Map),[R,I]=(0,n.useState)(new Map),[F,T]=(0,n.useState)(new Map),[O,D]=(0,n.useState)(new Map),[H,Y]=(0,n.useState)([]),[U,K]=(0,n.useState)(-1),[W,Q]=(0,n.useState)([]),[Z,J]=(0,n.useState)(-1),ee=(0,n.useRef)([]),[et,er]=(0,n.useState)(0),el="light"===o?i.lightSvgContent:i.darkSvgContent,en="light"===o?v:w,ea="light"===o?y:C,es="light"===o?k:S,ei="light"===o?j:N,eo="light"===o?E:M,ec="light"===o?A:$,eu="light"===o?L:R,ed="light"===o?z:I,ef="light"===o?H:W,em="light"===o?Y:Q,eh="light"===o?U:Z,ep="light"===o?K:J,{parsedDoc:ex,allElements:eg}=(0,n.useMemo)(()=>{if(!el)return{parsedDoc:null,allElements:[]};let e=(0,P.H)(el);if(!e)return{parsedDoc:null,allElements:[]};let t=(0,P.KK)(e);return{parsedDoc:e,allElements:t}},[el]),eb=(0,n.useMemo)(()=>{let e=new Map(eg.map(e=>[e.id,e])),t=[];for(let e of eg)es.has(e.id)||t.push(e);return eu.forEach((r,l)=>{if(es.has(l))return;let n=e.get(r.sourceId);n&&t.push({...n,id:l})}),t},[eg,es,eu]),ev=(0,n.useMemo)(()=>{if(!ex)return el;if(!(en.size>0||es.size>0||eo.size>0||eu.size>0))return(0,P.Gc)(ex);let e=(0,P.On)(ex,en,es,eo,eu);return(0,P.Gc)(e)},[ex,en,es,eo,eu,el]),ey=(0,n.useMemo)(()=>{let e=eb.map(e=>{let t=en.get(e.id);return{...e,currentFill:t?.fill??e.originalFill,currentStroke:t?.stroke??e.originalStroke}});return(0,P.xO)(e)},[eb,en]),ew=(0,n.useCallback)(e=>{d(new Set([e]))},[]),eC=(0,n.useCallback)(e=>{d(new Set(e))},[]),ek=(0,n.useCallback)(()=>{d(new Set(eb.filter(e=>!e.isGradientStop).map(e=>e.id)))},[eb]),ej=(0,n.useCallback)(e=>{d(t=>{let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r})},[]),eS=(0,n.useCallback)(()=>{d(new Set)},[]),eN=(0,n.useRef)(i);(0,n.useEffect)(()=>{eN.current=i});let eE=(0,n.useRef)(new Set);(0,n.useEffect)(()=>{l||(eN.current.setLightSvgContent(null),eN.current.setDarkSvgContent(null),y(new Map),C(new Map),j(new Set),N(new Set),A(new Map),$(new Map),z(new Map),I(new Map),T(new Map),D(new Map),Y([]),K(-1),Q([]),J(-1),d(new Set),h(null),eE.current=new Set,eN.current.resetHasFetched())},[l]),(0,n.useEffect)(()=>{d(new Set),h(null)},[o]),(0,n.useEffect)(()=>{if(!l||!el||0===eb.length)return;let e=`${o}::${el}`;eE.current.has(e)||eE.current.add(e)},[l,el,o,eb]);let eA=(0,n.useCallback)(()=>{let e=ee.current;if(0===e.length)return!1;let t=e.pop();return i.setLightSvgContent(t.lightSvg),i.setDarkSvgContent(t.darkSvg),y(t.lightChanges),C(t.darkChanges),j(t.lightDeleted),N(t.darkDeleted),A(t.lightTransforms),$(t.darkTransforms),z(t.lightDuplicated),I(t.darkDuplicated),Y(t.lightHistory),K(t.lightHistoryIndex),Q(t.darkHistory),J(t.darkHistoryIndex),d(new Set),er(e.length),!0},[i]),{addToHistory:eM,undo:e$,redo:ez,canUndo:eF,canRedo:eT}=function(e){let{elementChanges:t,setElementChanges:r,deletedElementIds:l,setDeletedElementIds:a,transformChanges:s,setTransformChanges:i,duplicatedElements:o,setDuplicatedElements:c,history:u,setHistory:d,historyIndex:f,setHistoryIndex:m,enabled:h,clearSelection:p,onUndoEmpty:x}=e,g=(0,n.useRef)(null);(0,n.useEffect)(()=>{g.current||0!==u.length||(g.current={elementChanges:new Map,deletedElementIds:new Set,transformChanges:new Map,duplicatedElements:new Map,description:"Initial state"})},[u.length]);let b=(0,n.useRef)({elementChanges:t,deletedElementIds:l,transformChanges:s,duplicatedElements:o});(0,n.useEffect)(()=>{b.current={elementChanges:t,deletedElementIds:l,transformChanges:s,duplicatedElements:o}});let v=(0,n.useRef)({history:u,historyIndex:f});(0,n.useEffect)(()=>{v.current={history:u,historyIndex:f}});let y=(0,n.useCallback)(e=>{let t=b.current,r=v.current,l={elementChanges:new Map(t.elementChanges),deletedElementIds:new Set(t.deletedElementIds),transformChanges:new Map(t.transformChanges),duplicatedElements:new Map(t.duplicatedElements),description:e},n=r.history.slice(0,r.historyIndex+1);0===n.length&&g.current&&n.push(g.current),n.push(l),n.length>50&&n.shift(),d(n),m(n.length-1)},[d,m]),w=f>0,C=f<u.length-1,k=(0,n.useCallback)(()=>{if(!w)return;let e=f-1,t=u[e];t&&(r(new Map(t.elementChanges)),a(new Set(t.deletedElementIds)),i(new Map(t.transformChanges)),c(new Map(t.duplicatedElements)),m(e))},[w,u,f,r,a,i,c,m]),j=(0,n.useCallback)(()=>
1{if(!C)return;let e=f+1,t=u[e];t&&(r(new Map(t.elementChanges)),a(new Set(t.deletedElementIds)),i(new Map(t.transformChanges)),c(new Map(t.duplicatedElements)),m(e))},[C,u,f,r,a,i,c,m]),S=(0,n.useRef)(x);return(0,n.useEffect)(()=>{S.current=x}),(0,n.useEffect)(()=>{if(!h)return;let e=e=>{(e.ctrlKey||e.metaKey)&&"z"===e.key&&!e.shiftKey&&(e.preventDefault(),w?k():S.current?.()),(e.ctrlKey||e.metaKey)&&("y"===e.key||"z"===e.key&&e.shiftKey)&&(e.preventDefault(),j()),"Escape"===e.key&&p()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[h,k,j,w,p]),{addToHistory:y,undo:k,redo:j,canUndo:w,canRedo:C}}({elementChanges:en,setElementChanges:ea,deletedElementIds:es,setDeletedElementIds:ei,transformChanges:eo,setTransformChanges:ec,duplicatedElements:eu,setDuplicatedElements:ed,history:ef,setHistory:em,historyIndex:eh,setHistoryIndex:ep,enabled:l,clearSelection:eS,onUndoEmpty:eA}),eO=eF||et>0,eK=(0,n.useCallback)(()=>{eF?e$():eA()},[eF,e$,eA]),eQ=function(e){let{elements:t,activeVariant:r,mirrorChanges:l,elementChanges:a,setElementChanges:s,setLightElementChanges:i,setDarkElementChanges:o,deletedElementIds:c,setDeletedElementIds:u,setLightDeletedElementIds:d,setDarkDeletedElementIds:f,setLightHistory:m,setLightHistoryIndex:h,setDarkHistory:p,setDarkHistoryIndex:x,addToHistory:g}=e,b=(0,n.useMemo)(()=>l?"light"===r?o:i:null,[l,r,o,i]),v=(0,n.useMemo)(()=>l?"light"===r?f:d:null,[l,r,f,d]),y=(0,n.useCallback)((e,r)=>{eD(e,r,t,s),b&&eD(e,r,t,b),setTimeout(()=>{g("Changed fill of element")},0)},[t,s,g,b]),w=(0,n.useCallback)((e,r)=>{eB(e,r,t,s),b&&eB(e,r,t,b),setTimeout(()=>{g("Changed stroke of element")},0)},[t,s,g,b]),C=(0,n.useCallback)((e,r)=>{eP(e,r,t,s),b&&eP(e,r,t,b),setTimeout(()=>{g("Changed element opacity")},0)},[t,s,g,b]),k=(0,n.useCallback)((e,r)=>{0!==e.length&&(eX(e,r,t,s),b&&eX(e,r,t,b),setTimeout(()=>{g(`Changed fill of ${e.length} elements`)},0))},[t,s,g,b]),j=(0,n.useCallback)((e,r)=>{0!==e.length&&(eH(e,r,t,s),b&&eH(e,r,t,b),setTimeout(()=>{g(`Changed stroke of ${e.length} elements`)},0))},[t,s,g,b]),S=(0,n.useCallback)((e,r)=>{0!==e.length&&(eY(e,r,t,s),b&&eY(e,r,t,b),setTimeout(()=>{g(`Changed opacity of ${e.length} elements`)},0))},[t,s,g,b]),N=(0,n.useCallback)(e=>{eV(e,t,s),b&&eV(e,t,b),setTimeout(()=>{g("Changed opacity of all elements")},0)},[t,s,g,b]),E=(0,n.useCallback)((e,r,l)=>{let n=e.toLowerCase();s(e=>{let a=new Map(e);return t.forEach(e=>{let t=a.get(e.id)||{},s={...t};("fill"===l||"both"===l)&&eq(e,t)===n&&(eR(e,r)?delete s.fill:s.fill=r),("stroke"===l||"both"===l)&&eG(e,t)===n&&(eI(e,r)?delete s.stroke:s.stroke=r),0===Object.keys(s).length?a.delete(e.id):a.set(e.id,s)}),a}),setTimeout(()=>{g(`Changed all ${e} to ${r}`)},0)},[t,s,g]),A=(0,n.useCallback)(e=>{s(t=>{let r=new Map(t);return e.forEach(e=>r.delete(e)),r})},[s]),M=(0,n.useCallback)(e=>{A([e]),setTimeout(()=>{g("Reset element")},0)},[A,g]),$=(0,n.useCallback)(e=>{0!==e.length&&(A(e),setTimeout(()=>{g(`Reset ${e.length} elements`)},0))},[A,g]),L=(0,n.useCallback)(e=>{let r=e.toLowerCase();s(e=>{let l=new Map(e);return t.forEach(e=>{let t=l.get(e.id);if(!t)return;let n={...t};eq(e,t)===r&&delete n.fill,eG(e,t)===r&&delete n.stroke,0===Object.keys(n).length?l.delete(e.id):l.set(e.id,n)}),l}),setTimeout(()=>{g(`Reset all ${e}`)},0)},[t,s,g]),z=(0,n.useCallback)(()=>{i(new Map),o(new Map),d(new Set),f(new Set),m([]),h(-1),p([]),x(-1)},[i,o,d,f,m,h,p,x]),R=(0,n.useCallback)(e=>{let t=t=>{let r=new Set(t);return e.forEach(e=>r.add(e)),r};u(t),v?.(t)},[u,v]),I=(0,n.useCallback)(e=>{R([e]),setTimeout(()=>{g("Deleted element")},0)},[R,g]);return{updateElementFill:y,updateElementStroke:w,updateElementOpacity:C,updateElementsFill:k,updateElementsStroke:j,updateElementsOpacity:S,updateAllWithColor:E,updateAllOpacity:N,resetElement:M,resetElements:$,resetAllWithColor:L,resetAllColors:z,deleteElement:I,deleteElements:(0,n.useCallback)(e=>{0!==e.length&&(R(e),setTimeout(()=>{g(`Deleted ${e.length} elements`)},0))},[R,g]),deleteAllWithColor:(0,n.useCallback)(e=>{let r=function(e,t,r,l){let n=e.toLowerCase();return t.filter(e=>{if(l.has(e.id))return!1;let t=r.get(e.id);return eq(e,t)===n||eG(e,t)===n}).map(e=>e.id)}(e,t,a,c);0!==r.length&&(R(r),setTimeout(()=>{g(`Deleted all elements with color ${e}`)},0))},[t,a,c,R,g])}}({elements:eb,activeVariant:o,mirrorChanges:a,elementChanges:en,setElementChanges:ea,setLightElementChanges:y,setDarkElementChanges:C,deletedElementIds:es,setDeletedElementIds:ei,setLightDeletedElementIds:j,setDarkDeletedElementIds:N,setLightHistory:Y,setLightHistoryIndex:K,setDarkHistory:Q,setDarkHistoryIndex:J,addToHistory:eM}),eJ=function(e){let{activeVariant:t,mirrorChanges:r,transformChanges:l,setTransformChanges:a,setLightTransformChanges:s,setDarkTransformChanges:i,duplicatedElements:o,setDuplicatedElements:c,setLightDuplicatedElements:u,setDarkDuplicatedElements:d,selectedElementIds:f,setSelectedElementIds:m,addToHistory:h}=e,p=(0,n.useRef)(null),x=(0,n.useRef)(0),g=(0,n.useRef)(h);(0,n.useEffect)(()=>{g.current=h});let b=(0,n.useRef)(null);(0,n.useEffect)(()=>
1{if(!b.current)return;let{description:e,newSelection:t}=b.current;b.current=null,t&&m(t),g.current(e)});let v=(0,n.useCallback)((e,t)=>{b.current={description:e,newSelection:t}},[]),y=(0,n.useCallback)((e,l,n,o,c)=>{if(0===e.length||1===l&&1===n)return;let u=t=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let t=r.get(e)||{...e_},a=l*t.translateX+l*(1-t.scaleX)*(t.scaleOriginX-o),s=n*t.translateY+n*(1-t.scaleY)*(t.scaleOriginY-c);r.set(e,{translateX:a,translateY:s,scaleX:t.scaleX*l,scaleY:t.scaleY*n,scaleOriginX:o,scaleOriginY:c})}),r})};u(a),r&&u("light"===t?i:s),v(`Scaled ${e.length} element(s)`)},[a,r,t,i,s]),w=(0,n.useRef)(()=>{}),C=(0,n.useCallback)((e,t,r,l)=>{if(0===e.length)return;let n=r.x+r.width/2,a=r.y+r.height/2,s="vertical"===t?0:n-l.cx,i="horizontal"===t?0:a-l.cy;(0!==s||0!==i)&&w.current(e,s,i)},[]),k=(0,n.useCallback)((e,l,n,o)=>{if(0===e.length||0===l&&0===n)return;let c=t=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let t=r.get(e)||{...e_};r.set(e,{...t,translateX:t.translateX+l,translateY:t.translateY+n})}),r})};c(a),r&&c("light"===t?i:s),o?.skipHistory||v(`Moved ${e.length} element(s)`)},[a,r,t,i,s]);(0,n.useEffect)(()=>{w.current=k});let j=(0,n.useCallback)((e,l,n)=>{if(0===e.length||0===n.width||0===n.height)return;let o=Math.min(l.width/n.width,l.height/n.height);if(.001>Math.abs(o-1))return;let c=t=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let t=r.get(e)||{...e_};r.set(e,{...t,scaleX:t.scaleX*o,scaleY:t.scaleY*o,scaleOriginX:n.cx,scaleOriginY:n.cy})}),r})};c(a),r&&c("light"===t?i:s);let u=n.cx,d=n.cy,f=l.x+l.width/2,m=l.y+l.height/2,h=f-u,p=m-d;if(0!==h||0!==p){let l=t=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let t=r.get(e)||{...e_};r.set(e,{...t,translateX:t.translateX+h,translateY:t.translateY+p})}),r})};l(a),r&&l("light"===t?i:s)}v(`Fill to fit ${e.length} element(s)`)},[a,r,t,i,s]),S=(0,n.useCallback)((e,t,r)=>{if(0===e.length||0===r.width||0===r.height)return;let l=Math.min(t.width/r.width,t.height/r.height);if(.001>Math.abs(l-1))return;let n=t=>{t(t=>{let n=new Map(t);return e.forEach(e=>{let t=n.get(e)||{...e_};n.set(e,{...t,scaleX:t.scaleX*l,scaleY:t.scaleY*l,scaleOriginX:r.cx,scaleOriginY:r.cy})}),n})};n(s),n(i);let a=t.x+t.width/2,o=t.y+t.height/2,c=a-r.cx,u=o-r.cy;if(0!==c||0!==u){let t=t=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let t=r.get(e)||{...e_};r.set(e,{...t,translateX:t.translateX+c,translateY:t.translateY+u})}),r})};t(s),t(i)}},[s,i]),N=(0,n.useCallback)(()=>{if(0===f.size)return;let e=[];f.forEach(t=>{let r=++x.current,n=`${t}-dup-${r}`,a=o.get(t),s=a?a.sourceId:t,i=l.get(t),c=i?{...i,translateX:i.translateX+10,translateY:i.translateY+10}:{translateX:10,translateY:10,scaleX:1,scaleY:1,scaleOriginX:0,scaleOriginY:0};e.push({dupId:n,entry:{svgMarkup:"",sourceId:s,translateX:0,translateY:0},transform:c})});let n=e.map(e=>e.dupId),m=(t,r)=>{t(t=>{let r=new Map(t);return e.forEach(e=>{let{dupId:t,entry:l}=e;return r.set(t,l)}),r}),r(t=>{let r=new Map(t);return e.forEach(e=>{let{dupId:t,transform:l}=e;return r.set(t,l)}),r})};m(c,a),r&&m("light"===t?d:u,"light"===t?i:s),v(`Duplicated ${f.size} element(s)`,new Set(n))},[f,c,a,r,t,d,u,i,s,l,o]);return{moveElements:k,scaleElements:y,alignToCenter:C,fillToFit:j,fillToFitBothVariants:S,duplicateSelectedElements:N,copyElements:(0,n.useCallback)(()=>{if(0===f.size)return;let e=[];f.forEach(t=>{let r=o.get(t),l=r?r.sourceId:t;e.push({id:t,sourceId:l,svgMarkup:""})}),p.current={elements:e,pasteCount:0}},[f,o]),pasteElements:(0,n.useCallback)(()=>{let e=p.current;if(!e||0===e.elements.length)return;e.pasteCount++;let n=10*e.pasteCount,o=[];e.elements.forEach(e=>{let t=++x.current,r=`${e.sourceId}-dup-${t}`,a=l.get(e.id),s=a?{...a,translateX:a.translateX+n,translateY:a.translateY+n}:{translateX:n,translateY:n,scaleX:1,scaleY:1,scaleOriginX:0,scaleOriginY:0};o.push({dupId:r,entry:{svgMarkup:"",sourceId:e.sourceId,translateX:0,translateY:0},transform:s})});let f=o.map(e=>e.dupId),m=(e,t)=>{e(e=>{let t=new Map(e);return o.forEach(e=>{let{dupId:r,entry:l}=e;return t.set(r,l)}),t}),t(e=>{let t=new Map(e);return o.forEach(e=>{let{dupId:r,transform:l}=e;return t.set(r,l)}),t})};m(c,a),r&&m("light"===t?d:u,"light"===t?i:s),v(`Pasted ${e.elements.length} element(s)`,new Set(f))},[c,a,r,t,d,u,i,s,l,o])}}({activeVariant:o,mirrorChanges:a,transformChanges:eo,setTransformChanges:ec,setLightTransformChanges:A,setDarkTransformChanges:$,duplicatedElements:eu,setDuplicatedElements:ed,setLightDuplicatedElements:z,setDarkDuplicatedElements:I,selectedElementIds:u,setSelectedElementIds:d,addToHistory:eM}),e0=function(e,t,r){let l=(0,n.useRef)(r);l.current=r;let a=(0,n.useCallback)(e=>{if(e.size<2)return;let r=Array.from(e);t(t=>{let l=new Map(t);for(let[t,r]of l){let n=r.filter(t=>!e.has(t));n.length<2?l.delete(t):n.length!==r.length&&l.set(t,n)}let n=`group-${++eU}`;return l.set(n,r),l}),l.current(`Grouped ${r.length} elements`)},[t]),s=(0,n.useCallback)(e=>{if(0===e.size)return;let r=0;t(t=>{let l=new Map(t);for(let[t,n]of l)n.some(t=>e.has(t))&&(l.delete(t),r++);return l}),r>0&&l.current(`Ungrouped ${r} group(s)`)},[t]),i=(0,n.useCallback)(t=>{for(let r of e.values())if(r.includes(t))return r;return[t]},[e]),o=(0,n.useCallback)(t=>{let r=new Set(t);for(let l of e.values())l.some(e=>
1t.has(e))&&l.forEach(e=>r.add(e));return r},[e]);return{elementGroups:e,groupSelected:a,ungroupSelected:s,getGroupMembers:i,getExpandedSelection:o,setElementGroups:t}}("light"===o?F:O,"light"===o?T:D,eM),e1=(0,n.useRef)(e0);(0,n.useEffect)(()=>{e1.current=e0});let e5=(0,n.useRef)(eQ.deleteElements);(0,n.useEffect)(()=>{e5.current=eQ.deleteElements});let e2=(0,n.useRef)(eJ);(0,n.useEffect)(()=>{e2.current=eJ});let e3=(0,n.useRef)(eM);(0,n.useEffect)(()=>{e3.current=eM});let e4=(0,n.useRef)(ek);(0,n.useEffect)(()=>{e4.current=ek});let e8=(0,n.useRef)(null);(0,n.useEffect)(()=>{if(!l)return;let e=e=>{let t=e.target;if("INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName&&!t.isContentEditable){if(("Delete"===e.key||"Backspace"===e.key)&&u.size>0){e.preventDefault(),e5.current(Array.from(u)),eS();return}if((e.ctrlKey||e.metaKey)&&"g"===e.key){e.preventDefault(),e.shiftKey?e1.current.ungroupSelected(u):e1.current.groupSelected(u);return}if((e.ctrlKey||e.metaKey)&&"d"===e.key){e.preventDefault(),e2.current.duplicateSelectedElements();return}if((e.ctrlKey||e.metaKey)&&"c"===e.key&&u.size>0){e.preventDefault(),e2.current.copyElements();return}if((e.ctrlKey||e.metaKey)&&"v"===e.key){e.preventDefault(),e2.current.pasteElements();return}if((e.ctrlKey||e.metaKey)&&"a"===e.key){e.preventDefault(),e4.current();return}if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key)&&u.size>0){e.preventDefault();let t=e.shiftKey?10:1,r=0,l=0;"ArrowUp"===e.key&&(l=-t),"ArrowDown"===e.key&&(l=t),"ArrowLeft"===e.key&&(r=-t),"ArrowRight"===e.key&&(r=t),e2.current.moveElements(Array.from(u),r,l,{skipHistory:!0}),e8.current&&clearTimeout(e8.current),e8.current=window.setTimeout(()=>{e8.current=null,e3.current("Nudged elements")},300)}}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[l,u,eS]);let e9=v.size>0||k.size>0||E.size>0||L.size>0,e6=w.size>0||S.size>0||M.size>0||R.size>0,e7=(0,n.useCallback)(()=>{ee.current.push({lightSvg:i.lightSvgContent,darkSvg:i.darkSvgContent,lightChanges:new Map(v),darkChanges:new Map(w),lightDeleted:new Set(k),darkDeleted:new Set(S),lightTransforms:new Map(E),darkTransforms:new Map(M),lightDuplicated:new Map(L),darkDuplicated:new Map(R),lightHistory:[...H],lightHistoryIndex:U,darkHistory:[...W],darkHistoryIndex:Z}),ee.current.length>10&&ee.current.shift(),er(ee.current.length)},[i,v,w,k,S,E,M,L,R,H,U,W,Z]),te=(0,n.useCallback)(()=>{e7();let e=i.lightSvgContent;i.setLightSvgContent(i.darkSvgContent),i.setDarkSvgContent(e);let t=new Map(v);y(new Map(w)),C(t);let r=new Set(k);j(new Set(S)),N(r);let l=new Map(E);A(new Map(M)),$(l);let n=new Map(L);z(new Map(R)),I(n),Y([]),K(-1),Q([]),J(-1),x(e=>!e),b(!0),d(new Set)},[e7,i,v,w,k,S,E,M,L,R]),tt=(0,n.useCallback)(()=>{e7(),eQ.resetAllColors()},[e7,eQ]),tr=(0,n.useCallback)(()=>{e7(),"light"===o?(i.setDarkSvgContent(eW(i.lightSvgContent,i.darkSvgContent)),C(new Map(v)),N(new Set(k)),$(new Map(E)),I(new Map(L))):(i.setLightSvgContent(eW(i.darkSvgContent,i.lightSvgContent)),y(new Map(w)),j(new Set(S)),A(new Map(M)),z(new Map(R))),Y([]),K(-1),Q([]),J(-1),b(!0),d(new Set)},[e7,o,i,v,w,k,S,E,M,L,R]),[tl,tn]=(0,n.useState)(null),ta=(0,n.useCallback)(()=>tn(null),[]),ts=(0,n.useCallback)(e=>{"light"===o?i.setLightSvgContent(e):i.setDarkSvgContent(e)},[o,i]),ti=(0,n.useCallback)(async e=>{let{color:t,thickness:r,force:l=!1}=e,n="light"===o?i.lightSvgContent:i.darkSvgContent,a=(0,f.EK)(n,{color:t,thickness:r});if(a&&a!==n){if(!l){let e=await eZ(n,a);if(e.floods)return void tn({before:e.before??0,after:e.after??0})}tn(null),e7(),Y([]),K(-1),Q([]),J(-1),ts(a),b(!0),d(new Set)}},[o,i,e7,ts]),to=(0,n.useCallback)(()=>{let e="light"===o?i.lightSvgContent:i.darkSvgContent,t=(0,f.pq)(e);t&&t!==e&&(e7(),Y([]),K(-1),Q([]),J(-1),ts(t),b(!0),d(new Set))},[o,i,e7,ts]),tc=(0,f.RN)(el),tu=(0,f.K6)(el),td=(0,n.useCallback)(e=>{let t=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>`alom-text-${Math.random().toString(36).slice(2,10)}`;if(!e||0===V(t.content).length)return null;let l=(0,P.H)(e),n=l?.querySelector("svg");if(!l||!n)return null;let a=G(n);if(!a)return null;let s=r(),i=l.createElementNS(B.Rc,"text");return i.setAttribute(X,"1"),i.setAttribute(B.GX,s),i.setAttribute("y",String((0,B.cH)(a.y+.78*a.h))),q(l,i,t,a),n.appendChild(i),{svg:(0,P.Gc)(l),id:s}}(el,e);return t?(e7(),Y([]),K(-1),Q([]),J(-1),ts(t.svg),b(!0),d(new Set([t.id])),t.id):null},[el,e7,ts]),tf=(0,n.useCallback)((e,t)=>{let r=function(e,t,r){if(!e||0===V(r.content).length)return null;let l=(0,P.H)(e),n=l?.querySelector("svg");if(!l||!n)return null;let a=n.querySelector(`[${B.GX}="${CSS.escape(t)}"]`);if(!(a instanceof SVGElement)||"text"!==a.tagName.toLowerCase())return null;let s=G(n);return s?(q(l,a,r,s),(0,P.Gc)(l)):null}(el,e,t);return!!r&&(e7(),Y([]),K(-1),Q([]),J(-1),ts(r),b(!0),!0)},[el,e7,ts]),tm=(0,n.useMemo)(()=>_(el),[el]),th=(0,n.useMemo)(()=>Array.from(new Set(_(el).map(e=>
1e.fontFamily).filter(Boolean))),[el]),tp=(0,n.useCallback)(async()=>{x(!1),b(!1),y(new Map),C(new Map),j(new Set),N(new Set),A(new Map),$(new Map),z(new Map),I(new Map),T(new Map),D(new Map),Y([]),K(-1),Q([]),J(-1),d(new Set),h(null),ee.current=[],er(0),i.resetHasFetched(),await i.fetchSvgs()},[i]),tx=(0,n.useCallback)(()=>{let e={},t={};v.forEach((t,r)=>{let l={};t.fill&&(l.fill=t.fill.toUpperCase()),t.stroke&&(l.stroke=t.stroke.toUpperCase()),void 0!==t.opacity&&(l.opacity=t.opacity),Object.keys(l).length>0&&(e[r]=l)}),w.forEach((e,r)=>{let l={};e.fill&&(l.fill=e.fill.toUpperCase()),e.stroke&&(l.stroke=e.stroke.toUpperCase()),void 0!==e.opacity&&(l.opacity=e.opacity),Object.keys(l).length>0&&(t[r]=l)});let r=null,l=null;if(i.lightSvgContent){let e=(0,P.H)(i.lightSvgContent);if(e)if((0,P.KK)(e),v.size>0||k.size>0||E.size>0||L.size>0){let t=(0,P.On)(e,v,k,E,L);r=(0,P.Gc)((0,P.lO)(t))}else r=(0,P.Gc)((0,P.lO)(e))}if(i.darkSvgContent){let e=(0,P.H)(i.darkSvgContent);if(e)if((0,P.KK)(e),w.size>0||S.size>0||M.size>0||R.size>0){let t=(0,P.On)(e,w,S,M,R);l=(0,P.Gc)((0,P.lO)(t))}else l=(0,P.Gc)((0,P.lO)(e))}return{light:e,dark:t,deletedElements:{light:Array.from(k),dark:Array.from(S)},variantsSwapped:p,lightModifiedSvg:r,darkModifiedSvg:l}},[v,w,k,S,E,M,L,R,p,i.lightSvgContent,i.darkSvgContent]);return{isLoading:i.isLoading,loadError:i.loadError,lightSvgContent:i.lightSvgContent,darkSvgContent:i.darkSvgContent,activeVariant:o,setActiveVariant:c,annotatedSvgContent:ev,elements:eb,selectedElementIds:u,hoveredElementId:m,elementChanges:en,transformChanges:eo,duplicatedElements:eu,uniqueColors:ey,selectElement:ew,selectElements:eC,selectAll:ek,toggleElementSelection:ej,clearSelection:eS,setHoveredElementId:h,...eQ,resetAllColors:tt,...eJ,groupSelected:()=>e0.groupSelected(u),ungroupSelected:()=>e0.ungroupSelected(u),getGroupMembers:e0.getGroupMembers,getExpandedSelection:e0.getExpandedSelection,elementGroups:e0.elementGroups,undo:eK,redo:ez,canUndo:eO,canRedo:eT,hasChanges:e9||e6||g,hasLightChanges:e9,hasDarkChanges:e6,swapVariants:te,copyToOtherVariant:tr,applyOutline:ti,outlineFloodWarning:tl,dismissOutlineFloodWarning:ta,clearOutline:to,activeVariantHasOutline:tc,activeVariantOutlineColor:tu,addText:td,updateText:tf,activeVariantTextElements:tm,activeVariantTextFamilies:th,resetToOriginal:tp,getElementChanges:tx,refetch:i.fetchSvgs}}({lightSvgUrl:t,darkSvgUrl:r,enabled:o,mirrorChanges:u,t:L}),R=(0,n.useRef)(null),{duplicatedElementIds:I,selectedElements:F,hasGroups:T}=function(e){let t=(0,n.useMemo)(()=>new Set(e.duplicatedElements.keys()),[e.duplicatedElements]);return{duplicatedElementIds:t,selectedElements:(0,n.useMemo)(()=>e.elements.filter(t=>e.selectedElementIds.has(t.id)),[e.elements,e.selectedElementIds]),hasGroups:(0,n.useMemo)(()=>{if(0===e.selectedElementIds.size)return!1;for(let t of e.elementGroups.values())if(t.some(t=>e.selectedElementIds.has(t)))return!0;return!1},[e.selectedElementIds,e.elementGroups])}}(z),[D,H]=(0,n.useState)(!0),[Y,K]=(0,n.useState)(!1),[W,Q]=(0,n.useState)(!0);!function(e){let{editor:t,showFooter:r,onSave:l,onChangesDetected:a,onVariantChange:s,onPaletteResolved:i}=e;(0,n.useEffect)(()=>{a?.(t.hasChanges)},[t.hasChanges,a]),(0,n.useEffect)(()=>{s?.(t.activeVariant)},[t.activeVariant,s]);let o=t.uniqueColors.size;(0,n.useEffect)(()=>{i?.(o)},[o,i]);let c=(0,n.useRef)(l);c.current=l;let u=(0,n.useRef)(t.getElementChanges);u.current=t.getElementChanges,(0,n.useEffect)(()=>{if(r||!l||!t.hasChanges)return;let e=setTimeout(()=>{c.current?.(u.current())},400);return()=>clearTimeout(e)},[r,t.hasChanges,t.annotatedSvgContent])}({editor:z,showFooter:g,onSave:p,onChangesDetected:v,onVariantChange:y,onPaletteResolved:w});let{handleElementClick:Z,handleDragSelect:J,handleElementDragEnd:ee,handlePaletteColorClick:et,handleScaleCommit:er,handleSave:el,handleResetAll:en,handleAlignH:ea,handleAlignV:es,handleFillToFit:ei}=function(e){let{editor:t,canvasRef:r,autoFillToFit:l,onSave:a,onResetAll:s}=e,i=(0,n.useCallback)((e,r,l)=>{if(l?.shiftKey)return void t.toggleElementSelection(e);let n=t.getExpandedSelection(new Set([e]));t.selectElements(Array.from(n))},[t]),o=(0,n.useCallback)(e=>{let r=t.getExpandedSelection(new Set(e));t.selectElements(Array.from(r))},[t]),c=(0,n.useCallback)((e,r,l)=>{t.moveElements(e,r,l)},[t]),u=(0,n.useCallback)(e=>{t.selectElements(e)},[t]),d=(0,n.useCallback)((e,r,l,n,a)=>{t.scaleElements(e,r,l,n,a)},[t]),f=(0,n.useCallback)(()=>{a?.(t.getElementChanges())},[t,a]),m=(0,n.useCallback)(()=>{t.resetAllColors(),s?.()},[t,s]),h=(0,n.useCallback)(e=>{let l=r.current?.getViewBox(),n=r.current?.getSelectionBBox();l&&n&&0!==t.selectedElementIds.size&&t.alignToCenter(Array.from(t.selectedElementIds),e,l,{cx:n.cx,cy:n.cy})},[t,r]),p=(0,n.useCallback)(()=>h("horizontal"),[h]),x=(0,n.useCallback)(()=>h("vertical"),[h]),g=(0,n.useCallback)(()=>{let e=r.current?.getViewBox();if(!e)return null;let l=t.elements.filter(e=>!e.isGradientStop);if(0===l.length)return null;let n=l.map(e=>e.id),a=r.current?.getSignificantBBoxForIds(new Set(n),e);return a?{ids:n,vb:e,bbox:a}:null},[t.elements,r]),b=(0,n.useCallback)(()=>{let e=g();e&&t.fillToFit(e.ids,e.vb,e.bbox)},[t,g]),v=(0,n.useRef)(!1);return(0,n.useEffect)(()=>
1{if(!l||v.current)return;let e=g();e&&(t.fillToFitBothVariants(e.ids,e.vb,e.bbox),v.current=!0)},[l,t,g]),{handleElementClick:i,handleDragSelect:o,handleElementDragEnd:c,handlePaletteColorClick:u,handleScaleCommit:d,handleSave:f,handleResetAll:m,handleAlignH:p,handleAlignV:x,handleFillToFit:b}}({editor:z,canvasRef:R,autoFillToFit:C,onSave:p,onResetAll:h}),eo=((0,O.BE)(z.activeVariantTextFamilies,"svg-editor-canvas-fonts"),(0,n.useMemo)(()=>{if(1!==z.selectedElementIds.size)return null;let[e]=[...z.selectedElementIds];return z.activeVariantTextElements.find(t=>t.id===e)??null},[z.selectedElementIds,z.activeVariantTextElements])),ec=function(e){let{editor:t,canvasRef:r}=e,[l,a]=(0,n.useState)(null),[s,i]=(0,n.useState)(null),[o,c]=(0,n.useState)(0),u=(0,n.useCallback)(()=>c(e=>e+1),[]);(0,n.useLayoutEffect)(()=>{if(!l)return void i(null);i(r.current?.getStageRectForElement(l)??null)},[l,t.annotatedSvgContent,o,r]);let d=t.activeVariantTextElements.find(e=>e.id===l),f=(0,n.useCallback)(e=>a(e),[]),m=(0,n.useCallback)(()=>a(null),[]),h=(0,n.useCallback)(e=>{t.activeVariantTextElements.some(t=>t.id===e)&&f(e)},[t.activeVariantTextElements,f]),p=(0,n.useCallback)(e=>{l&&d&&(e.trim()?t.updateText(l,{...d,content:e}):t.deleteElements([l])),a(null)},[l,d,t]);return{editingTextId:l,textRect:s,editingSpec:d,startEditing:f,cancelEditing:m,onElementDoubleClick:h,onLayoutChange:u,commitText:p}}({editor:z,canvasRef:R});if(z.isLoading)return(0,l.jsx)(eM,{className:A});if(z.loadError)return(0,l.jsx)(e$,{message:z.loadError,onRetry:z.refetch,className:A});let eu=z.annotatedSvgContent;return(0,l.jsxs)("div",{className:(0,s.cn)("flex flex-col","h-[min(760px,calc(100dvh-13rem))]",A),children:[" ",(0,l.jsxs)("div",{className:"flex-1 flex flex-col lg:flex-row gap-4 min-h-0",children:[(0,l.jsxs)("div",{className:"flex-1 flex flex-col min-w-0",children:[(0,l.jsx)(M,{activeVariant:z.activeVariant,onSetVariant:z.setActiveVariant,hasLightChanges:z.hasLightChanges,hasDarkChanges:z.hasDarkChanges,canUndo:z.canUndo,canRedo:z.canRedo,onUndo:z.undo,onRedo:z.redo,onSwapVariants:z.swapVariants,onCopyToOther:z.copyToOtherVariant,onResetToOriginal:z.resetToOriginal,singleVariant:d,showOutline:!c,disabled:c||x,outline:{variant:z.activeVariant,hasOutline:z.activeVariantHasOutline,currentColor:z.activeVariantOutlineColor,onApply:z.applyOutline,onRemove:z.clearOutline,floodWarning:z.outlineFloodWarning,onDismissFloodWarning:z.dismissOutlineFloodWarning},textTool:c?void 0:(0,l.jsx)(U,{onAdd:z.addText,disabled:x}),compare:$,transform:{selectedCount:z.selectedElementIds.size,hasGroups:T,ratioLocked:D,guidesVisible:Y,boundaryVisible:W,onSelectAll:z.selectAll,onGroup:z.groupSelected,onUngroup:z.ungroupSelected,onAlignH:ea,onAlignV:es,onFillToFit:ei,onToggleRatioLock:()=>H(e=>!e),onToggleGuides:()=>K(e=>!e),onToggleBoundary:()=>Q(e=>!e)}}),(0,l.jsx)(i.L,{ref:R,svgContent:eu,elements:z.elements,selectedElementIds:z.selectedElementIds,duplicatedElementIds:I,hoveredElementId:z.hoveredElementId,background:E??("light"===z.activeVariant?"dark":"light"),guidesVisible:Y,boundaryVisible:W,ratioLocked:D,onElementClick:Z,onElementMouseEnter:z.setHoveredElementId,onElementMouseLeave:()=>z.setHoveredElementId(null),onCanvasClick:z.clearSelection,onDragSelect:J,onElementDragEnd:ee,onScaleCommit:er,getExpandedSelection:z.getExpandedSelection,minZoom:k,squareBoundary:j,overlay:S,boundaryAspect:N,onElementDoubleClick:ec.onElementDoubleClick,hiddenElementId:ec.editingTextId,onLayoutChange:ec.onLayoutChange,textEditor:ec.editingSpec&&ec.textRect?(0,l.jsx)(e1,{rect:ec.textRect,spec:ec.editingSpec,onCommit:ec.commitText,onCancel:ec.cancelEditing}):null,className:"min-h-0 flex-1"}),(0,l.jsx)("p",{className:"text-xs text-[var(--text-muted)] mt-2 text-center",children:L("canvas.help")})]}),(0,l.jsx)(ek,{editor:z,selectedElements:F,textElement:eo,onEditContent:()=>eo&&ec.startEditing(eo.id),onPaletteColorClick:et,disabled:c||x})]}),g&&(0,l.jsx)(eN,{hasChanges:z.hasChanges,disabled:!!c,isSaving:!!x,onCancel:m,onResetAll:en,onSave:el,footer:b})]})}},22900:(e,t,r)=>{r.d(t,{BE:()=>d,Sc:()=>i,oN:()=>c,pj:()=>u});var l=r(12115),n=r(53455),a=r(80344);let s={all:["design-fonts"]};function i(){return(0,n.I)({queryKey:s.all,queryFn:async()=>(await a.Ay.get("/fonts")).data.data??[],staleTime:18e5})}function o(e){return/^[a-zA-Z0-9 ]+$/.test(e)}function c(e){return e.includes(",")?e:`'${e}', sans-serif`}function u(e){let t=new Map;for(let r of e){if(!o(r.family))continue;let e=r.category||"other";t.has(e)||t.set(e,[]),t.get(e).push(r)}return[...t.entries()].map(e=>{let[t,r]=e;return{category:t,fonts:[...r].sort((e,t)=>
1e.name.localeCompare(t.name))}}).sort((e,t)=>e.category.localeCompare(t.category))}function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"create-editor-fonts",r=e.filter(o).sort().join("|");(0,l.useEffect)(()=>{if(!r)return;let e=r.split("|"),l=[];for(let t=0;t<e.length;t+=50)l.push(e.slice(t,t+50));l.forEach((e,r)=>{let l="https://fonts.googleapis.com/css2?"+e.map(e=>`family=${encodeURIComponent(e).replace(/%20/g,"+")}`).join("&")+"&display=swap",n=`${t}-${r}`,a=document.getElementById(n);a||((a=document.createElement("link")).id=n,a.rel="stylesheet",document.head.appendChild(a)),a.href!==l&&(a.href=l)});for(let e=l.length;;e++){let r=document.getElementById(`${t}-${e}`);if(!r)break;r.remove()}},[r,t])}},27601:(e,t,r)=>{r.d(t,{L:()=>y});var l=r(95155),n=r(12115),a=r(2821),s=r(82931),i=r(18955),o=r(48314),c=r(7125),u=r(6191);function d(e){let{zoomLevel:t,onZoomIn:r,onZoomOut:n,onZoomReset:a,minZoom:s,maxZoom:d}=e,f=(0,i.c)("svgEditor"),m=Math.round(100*t);return(0,l.jsxs)("div",{className:"absolute top-2 right-2 flex items-center gap-1 bg-[var(--surface)] backdrop-blur-sm rounded-lg shadow-md border border-[var(--border-subtle)] px-1 py-0.5 z-10",children:[1!==t&&(0,l.jsx)("button",{type:"button",onClick:a,className:"p-1 rounded hover:bg-[var(--surface-secondary)] transition-colors mr-0.5 border-r border-[var(--border-subtle)] pr-1.5","aria-label":f("zoom.reset"),title:f("zoom.resetTip"),children:(0,l.jsx)(o.A,{className:"w-3.5 h-3.5 text-[var(--text-secondary)]"})}),(0,l.jsx)("button",{type:"button",onClick:n,disabled:t<=s,className:"p-1 rounded hover:bg-[var(--surface-secondary)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":f("zoom.out"),title:f("zoom.outTip"),children:(0,l.jsx)(c.A,{className:"w-3.5 h-3.5 text-[var(--text-secondary)]"})}),(0,l.jsxs)("button",{type:"button",onClick:a,className:"px-1.5 py-0.5 text-xs font-medium text-[var(--text-primary)] hover:bg-[var(--surface-secondary)] rounded transition-colors min-w-[3rem] text-center",title:f("zoom.resetTip"),children:[m,"%"]}),(0,l.jsx)("button",{type:"button",onClick:r,disabled:t>=d,className:"p-1 rounded hover:bg-[var(--surface-secondary)] disabled:opacity-40 disabled:cursor-not-allowed transition-colors","aria-label":f("zoom.in"),title:f("zoom.inTip"),children:(0,l.jsx)(u.A,{className:"w-3.5 h-3.5 text-[var(--text-secondary)]"})})]})}function f(e){let{containerWidth:t,containerHeight:r,visible:n}=e;return n&&0!==t&&0!==r?(0,l.jsxs)("div",{className:"absolute inset-0 pointer-events-none z-[5]",children:[(0,l.jsx)("div",{className:"absolute top-0 bottom-0 border-l border-dashed border-cyan-400/50",style:{left:t/2}}),(0,l.jsx)("div",{className:"absolute left-0 right-0 border-t border-dashed border-cyan-400/50",style:{to
1p:r/2}})]}):null}function m(e){let{visible:t}=e,r=(0,i.c)("svgEditor");return t?(0,l.jsx)("div",{className:"absolute inset-0 pointer-events-none z-[4] flex items-center justify-center p-4",children:(0,l.jsxs)("div",{className:"relative w-full h-full max-w-full max-h-full",children:[(0,l.jsxs)("div",{className:"absolute inset-0 group/border",children:[(0,l.jsx)("div",{className:"absolute -top-1 left-0 right-0 h-2 pointer-events-auto cursor-help"}),(0,l.jsx)("div",{className:"absolute -bottom-1 left-0 right-0 h-2 pointer-events-auto cursor-help"}),(0,l.jsx)("div",{className:"absolute top-0 -left-1 bottom-0 w-2 pointer-events-auto cursor-help"}),(0,l.jsx)("div",{className:"absolute top-0 -right-1 bottom-0 w-2 pointer-events-auto cursor-help"}),(0,l.jsx)("div",{className:"absolute inset-0 border-2 border-dashed border-orange-400/60 rounded-sm pointer-events-none"}),(0,l.jsx)("div",{className:"absolute top-6 left-1/2 -translate-x-1/2 max-w-[260px] px-3 py-2 bg-gray-900 text-white text-xs leading-relaxed rounded shadow-lg z-[100] opacity-0 scale-95 transition-all duration-150 group-hover/border:opacity-100 group-hover/border:scale-100 pointer-events-none text-center",children:r("canvas.boundaryTooltip")})]}),(0,l.jsx)("div",{className:"absolute -top-5 left-1/2 -translate-x-1/2 px-1.5 py-0.5 bg-orange-400/80 text-white text-[10px] rounded whitespace-nowrap",children:r("labels.designBoundary")})]})}):null}let h={nw:"nwse-resize",n:"ns-resize",ne:"nesw-resize",e:"ew-resize",se:"nwse-resize",s:"ns-resize",sw:"nesw-resize",w:"ew-resize"},p=[{pos:"nw",xPct:0,yPct:0},{pos:"n",xPct:.5,yPct:0},{pos:"ne",xPct:1,yPct:0},{pos:"e",xPct:1,yPct:.5},{pos:"se",xPct:1,yPct:1},{pos:"s",xPct:.5,yPct:1},{pos:"sw",xPct:0,yPct:1},{pos:"w",xPct:0,yPct:.5}];function x(e){let{bbox:t,onResizeStart:r}=e,a=(0,n.useCallback)((e,t)=>{t.preventDefault(),t.stopPropagation(),r(e,t)},[r]);return t&&0!==t.width&&0!==t.height?(0,l.jsxs)("div",{className:"absolute inset-0 pointer-events-none z-[6]","data-resize-handles-root":!0,children:[(0,l.jsx)("div",{"data-resize-outline":!0,className:"absolute border border-blue-500/70",style:{left:t.x,top:t.y,width:t.width,height:t.height}}),p.map(e=>{let{pos:r,xPct:n,yPct:s}=e;return(0,l.jsx)("div",{"data-resize-handle":r,"data-handle-x-pct":n,"data-handle-y-pct":s,className:"absolute pointer-events-auto bg-white border-2 border-blue-500 rounded-sm shadow-sm",style:{width:8,height:8,left:t.x+t.width*n-4,top:t.y+t.height*s-4,cursor:h[r]},onMouseDown:e=>a(r,e)},r)})]}):null}function g(e,t,r,l){let n=t-e.startX,a=r-e.startY,s=1,i=1,o=e.handle;if(("e"===o||"ne"===o||"se"===o)&&(s=(e.bboxWidth+n)/e.bboxWidth),("w"===o||"nw"===o||"sw"===o)&&(s=(e.bboxWidth-n)/e.bboxWidth),("s"===o||"se"===o||"sw"===o)&&(i=(e.bboxHeight+a)/e.bboxHeight),("n"===o||"ne"===o||"nw"===o)&&(i=(e.bboxHeight-a)/e.bboxHeight),("n"===o||"s"===o)&&(s=1),("e"===o||"w"===o)&&(i=1),l&&("nw"===o||"ne"===o||"se"===o||"sw"===o)){let e=Math.max(Math.abs(s),Math.abs(i));s=s<0?-e:e,i=i<0?-e:e}return{sx:Math.max(s,.05),sy:Math.max(i,.05)}}function b(e,t){if(0===t.size)return null;let r=e.querySelector("svg");if(!r||!(r instanceof SVGSVGElement))return null;let l=r.getScreenCTM();if(!l)return null;let n=l.inverse(),a=1/0,s=1/0,i=-1/0,o=-1/0,c=!1;if(t.forEach(t=>{let r=e.querySelector(`[data-element-id="${t}"]`);if(!r)return;let l=r.getBoundingClientRect();if(0===l.width&&0===l.height)return;let u=new DOMPoint(l.left,l.top).matrixTransform(n),d=new DOMPoint(l.right,l.bottom).matrixTransform(n);a=Math.min(a,u.x,d.x),s=Math.min(s,u.y,d.y),i=Math.max(i,u.x,d.x),o=Math.max(o,u.y,d.y),c=!0}),!c)return null;let u=i-a,d=o-s;return{x:a,y:s,width:u,height:d,cx:a+u/2,cy:s+d/2}}let v={light:"bg-white",dark:"bg-gray-900",checkered:"bg-[length:20px_20px] bg-[linear-gradient(45deg,#f0f0f0_25%,transparent_25%),linear-gradient(-45deg,#f0f0f0_25%,transparent_25%),linear-gradient(45deg,transparent_75%,#f0f0f0_75%),linear-gradient(-45deg,transparent_75%,#f0f0f0_75%)] bg-[position:0_0,0_10px,10px_-10px,-10px_0px] bg-white"},y=(0,n.forwardRef)(function(e,t){let{svgContent:r,elements:o,selectedElementIds:c,duplicatedElementIds:u,hoveredElementId:h,background:p,guidesVisible:y=!1,boundaryVisible:w=!0,ratioLocked:C=!0,onElementClick:k,onElementMouseEnter:j,onElementMouseLeave:S,onCanvasClick:N,onDragSelect:E,onElementDragEnd:A,onScaleCommit:M,getExpandedSelection:$,minZoom:L=.25,squareBoundary:z=!1,overlay:R,boundaryAspect:I,onElementDoubleClick:F,hiddenElementId:T,textEditor:O,onLayoutChange:D,className:B}=e,P=(0,i.c)("svgEditor"),X=(0,n.useRef)(null),H=(0,n.useRef)(null),[Y,V]=(0,n.use
1State)({w:0,h:0}),{zoomLevel:q,zoomIn:G,zoomOut:_,zoomReset:U,handleWheel:K}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.25,[t,r]=(0,n.useState)(1),l=(0,n.useCallback)(t=>Math.min(4,Math.max(e,t)),[e]),a=(0,n.useCallback)(()=>r(e=>l(1.15*e)),[l]),s=(0,n.useCallback)(()=>r(e=>l(e/1.15)),[l]),i=(0,n.useCallback)(()=>r(l(1)),[l]),o=(0,n.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&(e.preventDefault(),r(t=>l(e.deltaY<0?1.15*t:t/1.15)))},[l]);return(0,n.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&("="===e.key||"+"===e.key?(e.preventDefault(),a()):"-"===e.key?(e.preventDefault(),s()):"0"===e.key&&(e.preventDefault(),i()))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[a,s,i]),{zoomLevel:t,zoomIn:a,zoomOut:s,zoomReset:i,handleWheel:o}}(L),{isDragging:W,isMoving:Q,dragStart:Z,dragCurrent:J,handleMouseDown:ee,handleMouseMove:et,handleMouseUp:er,handleContainerClick:el}=function(e){let{containerRef:t,elements:r,selectedElementIds:l,duplicatedElementIds:a,hiddenElementId:s,onElementClick:i,onCanvasClick:o,onDragSelect:c,onElementDragEnd:u,getExpandedSelection:d}=e,[f,m]=(0,n.useState)(!1),[h,p]=(0,n.useState)(null),[x,g]=(0,n.useState)(null),b=(0,n.useRef)(null),[v,y]=(0,n.useState)(!1),w=(0,n.useRef)(!1),C=(0,n.useRef)(null),k=(0,n.useRef)(null),j=(0,n.useRef)(new Map),S=(0,n.useRef)(new Map),N=(0,n.useRef)([]),E=(0,n.useRef)(null),A=(0,n.useRef)(!1),M=(0,n.useRef)(!1),$=(0,n.useCallback)((e,r)=>{let l=t.current;if(!l)return{dx:e,dy:r};let n=l.querySelector("svg");if(!n||!(n instanceof SVGSVGElement))return{dx:e,dy:r};let a=n.getScreenCTM();return a?{dx:e/a.a,dy:r/a.d}:{dx:e,dy:r}},[t]),L=(0,n.useCallback)(e=>{let r=t.current;if(!r)return{x:0,y:0};let l=r.getBoundingClientRect();return{x:e.clientX-l.left+r.scrollLeft,y:e.clientY-l.top+r.scrollTop}},[t]),z=(0,n.useCallback)(e=>{let l=e;for(;l&&l!==t.current;){let e=l.getAttribute("data-element-id");if(e&&(r.some(t=>t.id===e)||a?.has(e)))return e;l=l.parentElement}return null},[r,a,t]),R=(0,n.useCallback)((e,r)=>{let l=t.current;S.current.forEach((t,n)=>{let a=t;if(!a.isConnected&&(a=l?.querySelector(`[data-element-id="${n}"]`)??null)&&S.current.set(n,a),!a)return;let s=j.current.get(n)??null,i=s?`translate(${e}, ${r}) ${s}`:`translate(${e}, ${r})`;a.setAttribute("transform",i)})},[t]),I=(0,n.useCallback)(()=>{let e=t.current;S.current.forEach((t,r)=>{let l=t.isConnected?t:e?.querySelector(`[data-element-id="${r}"]`)??null;if(!l)return;let n=j.current.get(r)??null;null===n?l.removeAttribute("transform"):l.setAttribute("transform",n)})},[t]),F=(0,n.useCallback)(e=>{if(0!==e.button)return;let t=z(e.target);if(t){E.current=t,M.current=!0,C.current={clientX:e.clientX,clientY:e.clientY},k.current=null,e.preventDefault();return}E.current=null,M.current=!1;let r=L(e);b.current=r,p(r),g(r)},[L,z]),T=(0,n.useCallback)(e=>{if(C.current&&E.current){let n=e.clientX-C.current.clientX,a=e.clientY-C.current.clientY,s=Math.sqrt(n*n+a*a);if(!w.current&&s>=5){let e,n=E.current;if(l.has(n))e=Array.from(l);else{let t=r.find(e=>e.id===n)??null;i?.(n,t),e=Array.from(d?d(new Set([n])):new Set([n]))}w.current=!0,y(!0);let a=t.current,s=j.current,o=S.current;s.clear(),o.clear(),a&&e.forEach(e=>{let t=a.querySelector(`[data-element-id="${e}"]`);t&&(s.set(e,t.getAttribute("transform")),o.set(e,t))}),N.current=e}if(w.current){let t=n,r=a;if(e.shiftKey&&s>0){let e=Math.abs(180/Math.PI*Math.atan2(a,n));e<15||e>165?r=0:15>Math.abs(e-90)?t=0:Math.abs(n)>Math.abs(a)?r=0:t=0}let l=$(t,r);k.current=l,R(l.dx,l.dy)}return}if(!b.current)return;let n=L(e),a=n.x-b.current.x,s=n.y-b.current.y;!f&&Math.sqrt(a*a+s*s)>=5&&m(!0),g(n)},[L,f,l,r,i,$,t,R,d]),O=(0,n.useCallback)(()=>{let e=w.current,n=!!C.current;if(n&&e&&k.current){let e=k.current,t=N.current.length>0?N.current:Array.from(l);0===e.dx&&0===e.dy?I():u?.(t,e.dx,e.dy),A.current=!0,requestAnimationFrame(()=>{A.current=!1})}if(j.current.clear(),S.current.clear(),N.current=[],C.current=null,E.current=null,w.current=!1,k.current=null,y(!1),f&&h&&x&&t.current){var i,d;let e=Math.min(h.x,x.x),l=Math.min(h.y,x.y),n=Math.max(h.x,x.x),u=Math.max(h.y,x.y),f=t.current,m=f.getBoundingClientRect(),p=Math.min(16,Math.max(2,Math.floor(Math.sqrt((n-e)*(u-l)/2e3))||2)),g=new Set(r.map(e=>e.id));
1a?.forEach(e=>g.add(e)),s&&g.delete(s);let b=new Set;(i=function(e,t){let r=e.getBoundingClientRect(),l=[];return e.querySelectorAll("[data-element-id]").forEach(n=>{let a=n.getAttribute("data-element-id");if(!a||!t.has(a))return;let s=n.getBoundingClientRect();l.push({id:a,left:s.left-r.left+e.scrollLeft,top:s.top-r.top+e.scrollTop,right:s.right-r.left+e.scrollLeft,bottom:s.bottom-r.top+e.scrollTop})}),l}(f,g),d={left:e,top:l,right:n,bottom:u},i.filter(e=>e.right>e.left&&e.bottom>e.top).filter(e=>e.left>=d.left&&e.right<=d.right&&e.top>=d.top&&e.bottom<=d.bottom).map(e=>e.id)).forEach(e=>b.add(e));for(let t=l;t<=u;t+=p){let r=t+m.top-f.scrollTop;for(let t=e;t<=n;t+=p){let e=t+m.left-f.scrollLeft;for(let t of document.elementsFromPoint(e,r)){if(!f.contains(t))break;let e=t.getAttribute?.("data-element-id");e&&g.has(e)&&b.add(e)}}}b.size>0?c?.(Array.from(b)):o?.()}else n||f||!1!==M.current||!b.current||o?.();m(!1),p(null),g(null),b.current=null,M.current=!1},[f,h,x,r,a,s,c,o,l,u,t,I]),D=(0,n.useCallback)(e=>{if(A.current||w.current||v||f)return;let t=z(e.target);if(t){let l=r.find(e=>e.id===t)??null;e.stopPropagation(),i?.(t,l,e);return}o?.()},[r,i,o,f,v,z]);return{isDragging:f,isMoving:v,dragStart:h,dragCurrent:x,handleMouseDown:F,handleMouseMove:T,handleMouseUp:O,handleContainerClick:D}}({containerRef:X,elements:o,selectedElementIds:c,duplicatedElementIds:u,hiddenElementId:T,onElementClick:k,onCanvasClick:N,onDragSelect:E,onElementDragEnd:A,getExpandedSelection:$}),en=(0,n.useCallback)((e,t,r,l,n)=>{},[]),{isResizing:ea,startResize:es}=function(e){let{containerRef:t,selectedElementIds:r,ratioLocked:l,onScaleCommit:a}=e,[s,i]=(0,n.useState)(!1),o=(0,n.useRef)(null),c=(0,n.useRef)(r),u=(0,n.useRef)(l),d=(0,n.useRef)(a),f=(0,n.useRef)(null),m=(0,n.useRef)(new Map);(0,n.useEffect)(()=>{c.current=r}),(0,n.useEffect)(()=>{u.current=l}),(0,n.useEffect)(()=>{d.current=a});let h=(0,n.useCallback)(()=>{f.current&&(document.removeEventListener("mousemove",f.current.move),document.removeEventListener("mouseup",f.current.up),f.current=null)},[]),p=(0,n.useCallback)((e,r,l,n)=>{let a=t.current;if(!a)return;let s=`translate(${l}, ${n}) scale(${e}, ${r}) translate(${-l}, ${-n})`;m.current.forEach((e,t)=>{let r=a.querySelector(`[data-element-id="${t}"]`);if(!r)return;let l=e?`${s} ${e}`:s;r.setAttribute("transform",l)})},[t]),x=(0,n.useCallback)((e,r)=>{let l=t.current,n=o.current;if(!l||!n)return;let a=n.bboxScreenX+n.bboxWidth/2,s=n.bboxScreenY+n.bboxHeight/2,i=n.bboxWidth*e,c=n.bboxHeight*r,u=a-i/2,d=s-c/2,f=l.querySelector("[data-resize-outline]");f instanceof HTMLElement&&(f.style.left=`${u}px`,f.style.top=`${d}px`,f.style.width=`${i}px`,f.style.height=`${c}px`),l.querySelectorAll("[data-resize-handle]").forEach(e=>{if(!(e instanceof HTMLElement))return;let t=parseFloat(e.getAttribute("data-handle-x-pct")||"0"),r=parseFloat(e.getAttribute("data-handle-y-pct")||"0");e.style.left=`${u+i*t-4}px`,e.style.top=`${d+c*r-4}px`})},[t]),b=(0,n.useCallback)(()=>{let e=t.current;e&&m.current.forEach((t,r)=>{let l=e.querySelector(`[data-element-id="${r}"]`);l&&(null===t?l.removeAttribute("transform"):l.setAttribute("transform",t))})},[t]),v=(0,n.useCallback)((e,r,l,n)=>{h(),o.current={handle:e,startX:r.clientX,startY:r.clientY,bboxWidth:l.width,bboxHeight:l.height,bboxScreenX:l.x,bboxScreenY:l.y,svgOriginX:n.cx,svgOriginY:n.cy},i(!0);let a=t.current,s=m.current;s.clear(),a&&c.current.forEach(e=>{let t=a.querySelector(`[data-element-id="${e}"]`);t&&s.set(e,t.getAttribute("transform"))});let v=e=>{let t=o.current;if(!t)return;let r=g(t,e.clientX,e.clientY,u.current);p(r.sx,r.sy,t.svgOriginX,t.svgOriginY),x(r.sx,r.sy)},y=e=>{let t=o.current;if(h(),i(!1),o.current=null,t){let r=g(t,e.clientX,e.clientY,u.current);
1if(1!==r.sx||1!==r.sy){let e=Array.from(c.current);p(r.sx,r.sy,t.svgOriginX,t.svgOriginY),x(r.sx,r.sy),d.current(e,r.sx,r.sy,t.svgOriginX,t.svgOriginY)}else b()}m.current.clear()};f.current={move:v,up:y},document.addEventListener("mousemove",v),document.addEventListener("mouseup",y)},[h,t,p,b,x]);return(0,n.useEffect)(()=>h,[h]),{isResizing:s,startResize:v}}({containerRef:X,selectedElementIds:c,ratioLocked:C,onScaleCommit:M||en}),ei=(0,n.useMemo)(()=>r?s.A.sanitize(r,{USE_PROFILES:{svg:!0,svgFilters:!0},ADD_TAGS:["use"],ADD_ATTR:["data-element-id","xlink:href","visibility"]}):null,[r]);(0,n.useEffect)(()=>{let e=X.current;if(!e)return;let t=new ResizeObserver(e=>{let[t]=e;V({w:t.contentRect.width,h:t.contentRect.height})});return t.observe(e),()=>t.disconnect()},[]),(0,n.useEffect)(()=>{D?.()},[Y,D]),(0,n.useEffect)(()=>{let e=X.current;e&&(e.scrollLeft=(e.scrollWidth-e.clientWidth)/2,e.scrollTop=(e.scrollHeight-e.clientHeight)/2)},[q]);let[eo,ec]=(0,n.useState)(null);(0,n.useLayoutEffect)(()=>{if(0===c.size||!X.current)return void ec(null);if(Q||ea)return;let e=X.current,t=e.getBoundingClientRect(),r=1/0,l=1/0,n=-1/0,a=-1/0,s=!1;c.forEach(i=>{let o=e.querySelector(`[data-element-id="${i}"]`);if(!o)return;let c=o.getBoundingClientRect();r=Math.min(r,c.left-t.left+e.scrollLeft),l=Math.min(l,c.top-t.top+e.scrollTop),n=Math.max(n,c.right-t.left+e.scrollLeft),a=Math.max(a,c.bottom-t.top+e.scrollTop),s=!0}),ec(s?{x:r,y:l,width:n-r,height:a-l}:null)},[c,ei,Q,ea,Y,q]),(0,n.useImperativeHandle)(t,()=>({getSelectionBBox:()=>X.current?b(X.current,c):null,getBBoxForIds:e=>X.current?b(X.current,e):null,getSignificantBBoxForIds:(e,t)=>X.current?function(e,t,r){let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.02;if(0===t.size)return null;let n=e.querySelector("svg");if(!n||!(n instanceof SVGSVGElement))return null;
1let a=n.getScreenCTM();if(!a)return null;let s=a.inverse(),i=r.width*l,o=r.height*l,c=1/0,u=1/0,d=-1/0,f=-1/0,m=!1,h=e=>{if(0===e.width&&0===e.height)return;let t=new DOMPoint(e.left,e.top).matrixTransform(s),r=new DOMPoint(e.right,e.bottom).matrixTransform(s);c=Math.min(c,t.x,r.x),u=Math.min(u,t.y,r.y),d=Math.max(d,t.x,r.x),f=Math.max(f,t.y,r.y)};if(t.forEach(t=>{let r=e.querySelector(`[data-element-id="${t}"]`);if(!r)return;let l=r.getBoundingClientRect();if(0===l.width&&0===l.height)return;let n=new DOMPoint(l.left,l.top).matrixTransform(s),a=new DOMPoint(l.right,l.bottom).matrixTransform(s),c=Math.abs(a.x-n.x),u=Math.abs(a.y-n.y);c<i&&u<o||(h(l),e.querySelectorAll(`[data-contour-of="${t}"]`).forEach(e=>h(e.getBoundingClientRect())),m=!0)}),!m)return null;let p=d-c,x=f-u;return{x:c,y:u,width:p,height:x,cx:c+p/2,cy:u+x/2}}(X.current,e,t):null,getViewBox:()=>X.current?function(e){let t=e.querySelector("svg");if(!t)return null;let r=t.getAttribute("viewBox");if(!r)return null;let l=r.split(/[\s,]+/).map(Number);return 4!==l.length||l.some(isNaN)?null:{x:l[0],y:l[1],width:l[2],height:l[3]}}(X.current):null,getStageRectForElement:e=>{let t=H.current,r=X.current?.querySelector(`[data-element-id="${e}"]`);if(!t||!r)return null;let l=r.getBoundingClientRect(),n=t.getBoundingClientRect();return 0===l.width&&0===l.height?null:{left:(l.left-n.left)/q,top:(l.top-n.top)/q,width:l.width/q,height:l.height/q,fontSize:l.height/q}}}),[c,q]);let eu=(0,n.useCallback)((e,t)=>{if(!eo||!X.current)return;let r=b(X.current,c);r&&es(e,t,eo,{cx:r.cx,cy:r.cy})},[eo,c,es]),ed=(0,n.useCallback)(e=>{let t=e.target,r=t.getAttribute("data-element-id")||t.closest("[data-element-id]")?.getAttribute("data-element-id");r&&j?.(r)},[j]),ef=(0,n.useCallback)(()=>{S?.()},[S]),em=(0,n.useCallback)(e=>{let t=e.target,r=t.getAttribute("data-element-id")||t.closest("[data-element-id]")?.getAttribute("data-element-id");r&&F?.(r)},[F]);if((0,n.useLayoutEffect)(()=>{let e=X.current;e&&e.querySelectorAll("[data-element-id]").forEach(e=>{let t=e.getAttribute("data-element-id");e.style.removeProperty("filter"),e.style.cursor="pointer",t&&c.has(t)?(e.style.filter="drop-shadow(0 0 4px rgba(249, 115, 22, 0.9)) drop-shadow(0 0 8px rgba(249, 115, 22, 0.5))",e.style.cursor="move"):t&&t===h&&(e.style.filter="brightness(1.1) drop-shadow(0 0 3px rgba(249, 115, 22, 0.4))"),e.style.visibility=t&&t===T?"hidden":""})},[c,h,ei,T]),!ei)return(0,l.jsx)("div",{className:(0,a.$)("flex items-center justify-center text-[var(--text-muted)]",v[p],B),children:(0,l.jsx)("span",{className:"text-sm",children:P("empty.noSvgContent")})});let{width:eh,height:ep}=function(e,t){if(!(t>0)||!(e.w>0)||!(e.h>0))return{width:0,height:0};let r=Math.min(e.w,e.h*t);return{width:r,height:r/t}}(Y,I&&I>0?I:+!!z),ex=eh>0;return(0,l.jsxs)("div",{className:(0,a.$)("relative rounded-lg border border-[var(--border-subtle)]",v[p],B),onMouseUp:er,onMouseLeave:er,children:[(0,l.jsxs)("div",{ref:X,className:(0,a.$)("absolute inset-0 overflow-auto rounded-lg",(Q||ea)&&"cursor-move"),onClick:el,onDoubleClick:em,onMouseDown:ee,onMouseMove:et,onMouseOver:ed,onMouseOut:ef,onWheel:K,children:[(0,l.jsx)("div",{className:(0,a.$)("h-full w-full",ex&&"flex items-center justify-center"),style:{transform:`scale(${q})`,transformOrigin:"top left"},children:ex?(0,l.jsxs)("div",{ref:H,className:"relative flex-shrink-0",style:{width:eh,height:ep},children:[(0,l.jsx)("div",{className:"flex h-full w-full items-center justify-center p-4 [&_svg]:max-h-full [&_svg]:max-w-full [&_svg]:w-auto [&_svg]:h-auto [&_svg]:overflow-visible",dangerouslySetInnerHTML:{__html:ei}}),(0,l.jsx)(m,{visible:w}),(0,l.jsx)(f,{containerWidth:eh,containerHeight:ep,visible:y}),R,O]}):(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("div",{className:"flex h-full w-full items-center justify-center p-4 [&_svg]:max-h-full [&_svg]:max-w-full [&_svg]:w-auto [&_svg]:h-auto",dangerouslySetInnerHTML:{__html:ei}}),(0,l.jsx)(m,{visible:w}),(0,l.jsx)(f,{containerWidth:Y.w/q,containerHeight:Y.h/q,visible:y}),R]})}),c.size>0&&!Q&&!W&&(0,l.jsx)(x,{bbox:eo,onResizeStart:eu}),W&&Z&&J&&(0,l.jsx)("div",{className:"absolute border-2 border-blue-400 bg-blue-100/30 pointer-events-none",style:{left:Math.min(Z.x,J.x),top:Math.min(Z.y,J.y),width:Math.abs(J.x-Z.x),height:Math.abs(J.y-Z.y)}})]}),c.size>0&&(0,l.jsx)("div",{className:"pointer-events-none absolute top-2 left-2 px-2 py-1 bg-[var(--primary)] text-white text-xs rounded-full z-20",children:P("labels.selectedCount",{count:c.size})}),(0,l.jsx)(d,{zoomLevel:q,onZoomIn:G,onZoomOut:_,onZoomReset:U,minZoom:L,maxZoom:4})]})})},30387:(e,t,r)=>{function l(e){return e.replace(/<\?xml[\s\S]*?\?>/gi,"").replace(/<!DOCTYPE[^>[]*(\[[\s\S]*?\])?\s*>/gi,"").replace(/<!ENTITY[\s\S]*?>/gi,"").trimStart()}r.d(t,{$2:()=>a,A:()=>i,_U:()=>s,b5:()=>l,vh:()=>o});let n={black:"#000000",white:"#ffffff",red:"#ff0000",green:"#008000",blue:"#0000ff",yellow:"#ffff00",cyan:"#00ffff",magenta:"#ff00ff",gray:"#808080",grey:"#808080",silver:"#c0c0c0",maroon:"#800000",olive:"#808000",lime:"#00ff00",aqua:"#00ffff",teal:"#008080",navy:"#000080",fuchsia:"#ff00ff",purple:"#800080",orange:"#ffa500",pink:"#ffc0cb",brown:"#a52a2a",coral:"#ff7f50",crimson:"#dc143c",gold:"#ffd700",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",salmon:"#fa8072",tan:"#d2b48c",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",none:"",transparent:"",currentcolor:"",inherit:""};function a(e){if(!e)return null;let t=e.trim().toLowerCase();if(!t||"none"===t||"transparent"===t||"currentcolor"===t||"inherit"===t||t.startsWith("url("))return null;if(t.startsWith("#")){let e=function(e){if(4===e.length){let t=e[1],r=e[2],l=e[3];return`#${t}${t}${r}${r}${l}${l}`}return e}(t);return/^#[0-9a-f]{6}$/i.test(e)?e.toLowerCase():null}if(t.startsWith("rgb")){let e=t.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/i);if(!e)return null;let r=Math.min(255,Math.max(0,parseInt(e[1],10))),l=Math.min(255,Math.max(0,parseInt(e[2],10))),n=Math.min(255,Math.max(0,parseInt(e[3],10)));return`#${r.toString(16).padStart(2,"0")}${l.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}`}let r=n[t];return r?r.toLowerCase():null}function s(e){let t,r=new Map,l=/(fill|stroke|stop-color|flood-color|color)\s*=\s
1*["']([^"']+)["']/gi,n=/(fill|stroke|stop-color|flood-color|color)\s*:\s*([^;}"'\s]+)/gi;for(;null!==(t=l.exec(e));){let e=t[1].toLowerCase(),l=t[2],n=a(l);if(n){let t=r.get(n);t?(t.count++,t.attributes.add(e)):r.set(n,{original:l,attributes:new Set([e]),count:1})}}for(;null!==(t=n.exec(e));){let e=t[1].toLowerCase(),l=t[2],n=a(l);if(n){let t=r.get(n);t?(t.count++,t.attributes.add(e)):r.set(n,{original:l,attributes:new Set([e]),count:1})}}return Array.from(r.entries()).map(e=>{let[t,r]=e;return{original:r.original,normalized:t,occurrences:r.count,attributes:Array.from(r.attributes)}}).sort((e,t)=>t.occurrences-e.occurrences)}function i(e,t){if(0===t.length)return e;let r=new Map;for(let{original:e,replacement:l}of t){let t=a(e),n=a(l);if(!t||!n||t===n)continue;r.has(t)||r.set(t,l);let s=e.toLowerCase();s===t||r.has(s)||r.set(s,l)}if(0===r.size)return e;let l=e=>{let t=r.get(e.toLowerCase());if(void 0!==t)return t;let l=a(e);return l?r.get(l)??null:null};return e.replace(/((?:fill|stroke|stop-color|flood-color|color)\s*=\s*["'])([^"']+)(["'])/gi,(e,t,r,n)=>{let a=l(r);return null===a?e:`${t}${a}${n}`}).replace(/((?:fill|stroke|stop-color|flood-color|color)\s*:\s*)([^;}"'\s]+)([;}"'\s])/gi,(e,t,r,n)=>{let a=l(r);return null===a?e:`${t}${a}${n}`})}function o(e){if(!e||"string"!=typeof e)return!1;let t=e.trim(),r=/<svg[\s>]/i.test(t),l=/<\/svg\s*>/i.test(t);return r&&l}},34744:(e,t,r)=>{function l(e){let t=e.replace("#",""),r=parseInt(t.substring(0,2),16),l=parseInt(t.substring(2,4),16);return(.299*r+.587*l+.114*parseInt(t.substring(4,6),16))/255>.5}function n(e){let t=e.replace("#",""),r=t;if(3===t.length&&(r=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6!==r.length)return null;let l=parseInt(r.substring(0,2),16),n=parseInt(r.substring(2,4),16),a=parseInt(r.substring(4,6),16);return isNaN(l)||isNaN(n)||isNaN(a)?null:{r:l,g:n,b:a}}function a(e,t,r){let l=e=>Math.min(255,Math.max(0,Math.round(e))).toString(16).padStart(2,"0");return`#${l(e)}${l(t)}${l(r)}`}function s(e){if(!e)return"dark";let t=e.toLowerCase();return["black","navy","dark","midnight","ebony","coal","ink","shadow","raven","obsidian","charcoal","graphite","asphalt","brown","chocolate","espresso","mahogany","mocha","maroon","burgundy","wine","cardinal","garnet","crimson","oxblood","forest","hunter","olive","military","evergreen","pine","plum","eggplant","aubergine","indigo","mauve","mulberry","royal","cobalt","denim","jean","spruce"].some(e=>RegExp(`\\b${e}\\b`).test(t))?"light":"dark"}r.d(t,{E2:()=>n,NO:()=>s,Ob:()=>a,eX:()=>l,m_:()=>o,qO:()=>f,yG:()=>d,z_:()=>u});let i={"heather dark gray":"Dark Gray Heather","kelly green":"Kelly","hether light gray":"Heather Light Gray"};function o(e){return e.toLowerCase().replace(/\b(heather|vintage|true|premium|solid|comfort colors?)\b/g,"").replace(/\s+/g,"").trim()||"transparent"}let c=/^https:\/\/pub-[a-z0-9]+\.r2\.dev\/(system\/[^?#]+)/i;function u(e){if(!e)return e;let t=e.match(c);return t?`https://files.alomations.com/color-options/${t[1]}`:e}function d(e){let t=e.replace(/grey/gi,e=>e===e.toUpperCase()?"GRAY":e[0]===e[0].toUpperCase()?"Gray":"gray");return i[t.trim().toLowerCase()]??t}function f(e,t,r){if(!e)return s(e);let l=d(e.trim()).toLowerCase(),n=t?.find(e=>d(e.color.trim()).toLowerCase()===l);if(n)return n.design_variant;let a=r?.find(e=>d(e.name.trim()).toLowerCase()===l);return a?.auto_variant?a.auto_variant:s(e)}},43952:(e,t,r)=>{r.d(t,{EK:()=>c,K6:()=>i,RN:()=>s,kR:()=>a,nx:()=>n,pq:()=>o});var l=r(99487);let n={thin:.008,medium:.014,thick:.02},a=["#ffffff","#000000"];function s(e){return!!e&&e.includes(`${l.dp}="outline"`)}function i(e){if(!e)return null;let t=e.match(/data-contour="outline"[\s\S]{0,400}?stroke:\s*([^;"']+)/);return t?t[1].trim():null}function o(e){if(!e||!s(e))return e;try{let t=new DOMParser().parseFromString(e,"image/svg+xml");if(t.getElementsByTagName("parsererror").length>0)return e;let r=t.documentElement,n=r.querySelector(l.J8);if(!n)return e;return n.parentNode?.removeChild(n),(0,l.Yu)(r,n),new XMLSerializer().serializeToString(t)}catch{return e}}function c(e,t){if(!e)return e;let r=s(e)?o(e):e;if(!r)return e;try{let a=new DOMParser().parseFromString(r,"image/svg+xml");if(a.getElementsByTagName("parsererror").length>0)return e;let s=a.documentElement;if(!s)return e;let i=(0,l.zk)(s),o=function(e){let t=(0,l.Wj)(e.getAttribute("viewBox"));if(t)return t;let r=(0,l.wh)(e.getAttribute("width")),n=(0,l.wh)(e.getAttribute("height")),a=e=>""===e||"px"===e;return r&&n&&a(r.unit)&&a(n.unit)?(e.setAttribute("viewBox",`0 0 ${(0,l.cH)(r.value)} ${(0,l.cH)(n.value)}`),{x:0,y:0,w:r.value,h:n.value}):null}(s),c=o?Math.max(o.w,o.h):1e3,u=n[t.thickness??"medium"],d=c*u,f=a.createElementNS(l.Rc,"g");f.setAttribute(l.dp,"outline"),f.setAttribute("fill-opacity","1"),f.setAttribute("stroke-opacity","1"),f.setAttribute("stroke-linejoin","round"),f.setAttribute("stroke-linecap","round");let m=null,h=0,p=(0,l.u6)(s,l.I0);
1if(Array.from(s.children).forEach(e=>{if(!(0,l.h4)(e))return;let r=(0,l.u6)(e,p);if(!(0,l.ij)(e,r))return;m||(m=e);let n=e.cloneNode(!0),a=function e(t,r,n,a){for(let e of["clip-path","mask"]){let r=t.style,l=r?.getPropertyValue?.(e);l&&!t.getAttribute(e)&&t.setAttribute(e,l)}let s=t.getAttribute(l.GX);for(let e of l.Jm)t.removeAttribute(e);s&&t.setAttribute(l.J_,s);let i=0;if((0,l.PN)(t)){let e=(0,l.s7)(r)?r.strokeWidth:0,s=(0,l.cH)(e+a/r.scale);t.setAttribute("style",[(0,l.lu)(r)?`fill:${n}`:"fill:none",`stroke:${n}`,`stroke-width:${s}`].join(";")),i+=1}return Array.from(t.childNodes).forEach(s=>{if(8===s.nodeType)return void t.removeChild(s);if(1!==s.nodeType)return;if(!(0,l.h4)(s))return void t.removeChild(s);let o=(0,l.u6)(s,r);if(!(0,l.ij)(s,o))return void t.removeChild(s);i+=e(s,o,n,a)}),i}(n,r,t.color,d);a>0&&(f.appendChild(n),h+=a)}),!m||0===h)return e;let x=.55*d;return f.setAttribute("data-contour-pad",String((0,l.cH)(x))),o&&f.setAttribute("data-contour-viewbox",`${(0,l.cH)(o.x)} ${(0,l.cH)(o.y)} ${(0,l.cH)(o.w)} ${(0,l.cH)(o.h)}`),s.insertBefore(f,m),i||function(e,t,r){if(!t||r<=0)return;let n={x:t.x-r,y:t.y-r,w:t.w+2*r,h:t.h+2*r};e.setAttribute("viewBox",`${(0,l.cH)(n.x)} ${(0,l.cH)(n.y)} ${(0,l.cH)(n.w)} ${(0,l.cH)(n.h)}`),(0,l.F6)(e,"width",n.w/t.w),(0,l.F6)(e,"height",n.h/t.h)}(s,o,x),new XMLSerializer().serializeToString(a)}catch{return e}}},47906:(e,t,r)=>{r.d(t,{V:()=>x});var l=r(95155),n=r(12115),a=r(2821),s=r(39926),i=r(65341),o=r(52056),c=r(18955),u=r(5917),d=r(48314),f=r(71360),m=r(34744),h=r(60307);function p(e){let{originalColor:t,currentColor:r,count:s,isModified:i,isSelected:o,onSelect:p,onChangeAll:x,onReset:g,onDeleteAll:b,disabled:v}=e,y=(0,c.c)("svgEditor"),[w,C]=(0,n.useState)(r),[k,j]=(0,n.useState)(r.toUpperCase()),S=(0,n.useRef)(!1),N=(0,n.useMemo)(()=>(0,h.s)(e=>{"string"==typeof e&&x(e)},100),[x]);(0,n.useEffect)(()=>()=>N.cancel(),[N]),(0,n.useEffect)(()=>{S.current||(C(r),j(r.toUpperCase()))},[r]);let E=(0,n.useCallback)(()=>{S.current=!0},[]),A=(0,n.useCallback)(()=>{S.current=!1,N.cancel(),x(w)},[N,x,w]),M=(0,m.eX)(r)?"text-gray-800":"text-white";return(0,l.jsxs)("div",{className:(0,a.$)("flex items-center gap-2 p-1.5 rounded-lg border transition-all group",o?"border-[var(--primary)] bg-[var(--primary)]/10":i?"border-amber-400/50 bg-amber-50/30":"border-[var(--border-subtle)] bg-[var(--surface)] hover:border-[var(--border-strong)]"),children:[(0,l.jsxs)("label",{className:(0,a.$)("relative w-8 h-8 rounded-full border border-gray-300 flex-shrink-0","flex items-center justify-center cursor-pointer transition-transform","hover:scale-110 hover:shadow-md hover:ring-2 hover:ring-[var(--primary)]/40",M,v&&"opacity-50 cursor-not-allowed hover:scale-100 hover:ring-0"),style:{backgroundColor:r},title:y(v?"palette.rowCount":"palette.rowRecolor",{count:s}),onClick:e=>{!v&&e.shiftKey&&(e.preventDefault(),p())},children:[(0,l.jsx)("input",{type:"color",value:w,onFocus:E,onBlur:A,onChange:e=>{C(e.target.value),j(e.target.value.toUpperCase()),N(e.target.value)},disabled:v,className:"absolute inset-0 w-full h-full opacity-0 cursor-pointer disabled:cursor-not-allowed","aria-label":y("palette.rowReplaceAria",{color:r.toUpperCase(),count:s})}),o&&(0,l.jsx)(u.A,{className:"h-4 w-4 pointer-events-none drop-shadow"})]}),(0,l.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,l.jsx)("span",{className:"text-xs font-mono text-[var(--text-primary)] truncate",children:r.toUpperCase()}),(0,l.jsxs)("span",{className:"text-xs text-[var(--text-muted)]",children:["(",s,")"]})]}),i&&(0,l.jsx)("span",{className:"text-xs text-amber-600",children:y("labels.wasColor",{color:t.toUpperCase()})})]}),(0,l.jsx)("input",{type:"text",value:k,onChange:e=>{let t=e.target.value;j(t),/^#[0-9A-Fa-f]{6}$/.test(t)&&(C(t),x(t))},disabled:v,placeholder:"#FFFFFF",className:(0,a.$)("w-[4.5rem] px-1.5 py-0.5 text-xs font-mono rounded border","border-[var(--border-subtle)] bg-[var(--surface)]","focus:outline-none focus:ring-1 focus:ring-[var(--primary)]","opacity-60 group-hover:opacity-100 transition-opacity",v&&"opacity-50 cursor-not-allowed")}),i&&(0,l.jsx)("button",{type:"button",onClick:g,disabled:v,className:(0,a.$)("p-1 rounded hover:bg-[var(--secondary)] transition-colors","text-[var(--text-muted)] hover:text-[var(--primary)]",v&&"opacity-50 cursor-not-allowed"),title:y("palette.resetAll"),children:(0,l.jsx)(d.A,{className:"w-3 h-3"})}),(0,l.jsx)("button",{type:"button",onClick:b,disabled:v,className:(0,a.$)("p-1 rounded hover:bg-red-50 transition-colors","text-[var(--text-muted)] hover:text-red-500","opacity-0 group-hover:opacity-100",v&&"opacity-50 cursor-not-allowed"),title:y("palette.deleteAll",{count:s}),children:(0,l.jsx)(f.A,{className:"w-3 h-3"})})]})}function x(e){let{elements:t,uniqueColors:r,elementChanges:u,selectedElementIds:d,onColorClick:f,onChangeAllWithColor:m,onResetAllWithColor:h,onDeleteAllWithColor:x,disabled:g=!1}
1=e,b=(0,c.c)("svgEditor"),[v,y]=(0,n.useState)(""),w=(0,n.useMemo)(()=>{let e=[];return r.forEach((r,l)=>{let n=!1,a=l;for(let e of r.elementIds){let r=u.get(e),s=t.find(t=>t.id===e);s&&(s.originalFill?.toLowerCase()===l.toLowerCase()&&r?.fill&&(n=!0,a=r.fill),s.originalStroke?.toLowerCase()===l.toLowerCase()&&r?.stroke&&(n=!0,a=r.stroke))}let s=[...r.elementIds].sort().join(",");e.push({stableKey:s,originalColor:l,currentColor:a,count:r.count,elementIds:r.elementIds,isModified:n})}),e.sort((e,t)=>t.count-e.count)},[r,u,t]),C=(0,n.useMemo)(()=>{if(!v)return w;let e=v.toLowerCase();return w.filter(t=>t.originalColor.toLowerCase().includes(e)||t.currentColor.toLowerCase().includes(e))},[w,v]),k=(0,n.useRef)(null),j=(0,n.useMemo)(()=>{if(0===d.size)return null;let e=C.find(e=>e.elementIds.some(e=>d.has(e)));return e?.stableKey??null},[C,d]);if((0,n.useEffect)(()=>{let e=k.current;j&&e&&e.scrollIntoView({block:"nearest",behavior:"smooth"})},[j]),0===r.size)return(0,l.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[(0,l.jsx)(s.A,{className:"h-8 w-8 text-[var(--text-muted)] mb-3"}),(0,l.jsx)("p",{className:"text-sm text-[var(--text-muted)]",children:b("empty.noColors")})]});let S=d.size>0;return(0,l.jsxs)("div",{"data-testid":"palette-panel",className:"flex flex-col gap-3",children:[(0,l.jsxs)("div",{className:"flex items-center justify-between gap-2",children:[(0,l.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,l.jsx)(i.A,{className:"h-4 w-4 text-amber-600 flex-shrink-0"}),(0,l.jsx)("h4",{className:"text-sm font-semibold text-[var(--text-primary)] truncate",children:b("palette.title")})]}),(0,l.jsx)("span",{className:"text-xs text-[var(--text-muted)] flex-shrink-0",children:b("palette.count",{count:r.size})})]}),S?(0,l.jsxs)("div",{className:"flex items-start gap-2 text-xs leading-snug rounded border border-amber-300 bg-amber-50 text-amber-900 px-2 py-1.5",children:[(0,l.jsx)(o.A,{className:"h-3.5 w-3.5 flex-shrink-0 mt-0.5"}),(0,l.jsx)("span",{children:b.rich("palette.selectionWarning",{b:e=>(0,l.jsx)("strong",{children:e})})})]}):(0,l.jsxs)("div",{className:"flex items-center gap-2 text-xs text-[var(--text-muted)] bg-[var(--secondary)]/50 rounded px-2 py-1.5",children:[(0,l.jsx)(s.A,{className:"h-3 w-3 flex-shrink-0"}),(0,l.jsx)("span",{children:b("palette.hint")})]}),r.size>8&&(0,l.jsx)("input",{type:"text",value:v,onChange:e=>y(e.target.value),placeholder:b("palette.filterPlaceholder"),className:(0,a.$)("w-full px-3 py-1.5 text-sm rounded-lg border","border-[var(--border-subtle)] bg-[var(--surface)]","focus:outline-none focus:ring-1 focus:ring-[var(--primary)]","placeholder:text-[var(--text-muted)]")}),(0,l.jsx)("div",{className:"space-y-1.5 pr-1",children:C.map(e=>{let t=e.elementIds.some(e=>d.has(e));return(0,l.jsx)("div",{ref:e.stableKey===j?k:void 0,children:(0,l.jsx)(p,{originalColor:e.originalColor,currentColor:e.currentColor,count:e.count,isModified:e.isModified,isSelected:t,onSelect:()=>f?.(e.elementIds),onChangeAll:t=>m?.(e.originalColor,t,"both"),onReset:()=>h?.(e.originalColor),onDeleteAll:()=>x?.(e.originalColor),disabled:g})},e.stableKey)})}),0===C.length&&v&&(0,l.jsx)("p",{className:"text-xs text-[var(--text-muted)] text-center py-2",children:b("palette.noMatches",{filter:v})})]})}},60307:(e,t,r)=>{r.d(t,{s:()=>l});function l(e,t){let r=null,l=null,n=()=>{let t=l;r=null,l=null,t&&e(...t)},a=function(){for(var e=arguments.length,a=Array(e),s=0;s<e;s++)a[s]=arguments[s];r&&clearTimeout(r),l=a,r=setTimeout(n,t)};return a.cancel=()=>{r&&clearTimeout(r),r=null,l=null},a.flush=()=>{r&&clearTimeout(r),n()},a}},70418:(e,t,r)=>{r.d(t,{X:()=>f});var l=r(95155),n=r(2821),a=r(59427),s=r(37494),i=r(37965),o=r(73239),c=r(48314),u=r(18955),d=r(3543);function f(e){let{activeVariant:t,onSetVariant:r,hasLightChanges:n,hasDarkChanges:f,canUndo:h,canRedo:p,onUndo:x,onRedo:g,onSwapVariants:b,onCopyToOther:v,onResetToOriginal:y,disabled:w}=e,C=(0,u.c)("svgEditor"),k=b||v||y;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(d.$Q,{children:[(0,l.jsx)(m,{icon:(0,l.jsx)(a.A,{className:"h-3.5 w-3.5"}),label:C("labels.light"),active:"light"===t,changed:n,disabled:w,onClick:()=>r("light"),idleClassName:"bg-gray-900 text-gray-300"}),(0,l.jsx)(m,{icon:(0,l.jsx)(s.A,{className:"h-3.5 w-3.5"}),label:C("labels.dark"),active:"dark"===t,changed:f,disabled:w,onClick:()=>r("dark"),idleClassName:"bg-white text-[var(--text-muted)]"})]}),(0,l.jsx)(d.x_,{}),(0,l.jsx)(d.SX,{canUndo:h,canRedo:p,onUndo:x,onRedo:g,disabled:w}),k&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(d.x_,{}),(0,l.jsxs)(d.$Q,{children:[b&&(0,l.jsx)(d.IB,{icon:(0,l.jsx)(i.A,{className:"h-3.5 w-3.5"}),label:C("actions.swap"),title:C("actions.swap"),onClick:b,disabled:w}),v&&(0,l.jsx)(d.IB,{icon:(0,l.jsx)(o.A,{className:"h-3.5 w-3.5"}),label:C("actions.useSameForBoth"),title:C("actions.useSameForBoth"),onClick:v,disabled:w}),y&&(0,l.jsx)(d.IB,{icon:(0,l.jsx)(c.A,{className:"h-3.5 w-3.5"}),label:C("actions.reset"),title:C("tooltips.resetToOriginal"),onClick:y,disabled:w,enabledClassName:"hover:border-red-400 hover:text-red-500 hover:bg-red-500/5"})]})]})]})}function m(e){let{icon:t,label:r,active:a,changed:s,disabled:i,onClick:o,idleClassName:c}=e;return(0,l.jsxs)("button",{type:"button",onClick:o,disabled:i,className:(0,n.$)(d.yu,"border-2",a?"border-[var(--primary)] bg-[var(--primary)]/10 text-[var(--primary)]":(0,n.$)(c,"hover:border-[var(--border-strong)]"),i&&"cursor-not-allowed opacity-50"),children:[t,(0,l.jsx)("span",{children:r}
1),(0,l.jsx)("span",{"aria-hidden":!0,className:(0,n.$)("h-2 w-2 rounded-full bg-[var(--primary)]",!s&&"invisible")})]})}},99443:(e,t,r)=>{r.d(t,{dW:()=>g,On:()=>c,lO:()=>u,xO:()=>v,KK:()=>b,rj:()=>x,H:()=>m,Gc:()=>h});var l=r(30387);function n(e){return e.cloneNode(!0)}function a(e,t){return Array.from(e.querySelectorAll(`[data-contour-of="${t}"]`)).filter(e=>e instanceof SVGElement)}function s(e){e.setAttribute("visibility","hidden"),e.setAttribute("opacity","0")}function i(e){let t=0!==e.translateX||0!==e.translateY,r=1!==e.scaleX||1!==e.scaleY;if(!t&&!r)return null;let l=[];if(t&&l.push(`translate(${e.translateX}, ${e.translateY})`),r){let t=e.scaleOriginX,r=e.scaleOriginY;l.push(`translate(${t}, ${r}) scale(${e.scaleX}, ${e.scaleY}) translate(${-t}, ${-r})`)}return l.join(" ")}function o(e,t){let r=e.getAttribute("transform")||"";e.setAttribute("transform",r?`${t} ${r}`:t)}function c(e,t,r,l,c){let u=n(e),d=u.querySelector("svg");if(d&&!d.getAttribute("width")){let e=d.getAttribute("viewBox");if(e){let t=e.split(/[\s,]+/);4===t.length&&(d.setAttribute("width",t[2]),d.setAttribute("height",t[3]))}}let f=new Map,m=new Map;return c&&c.size>0&&c.forEach(e=>{if(f.has(e.sourceId))return;let t=u.querySelector(`[data-element-id="${e.sourceId}"]`);t instanceof SVGElement&&f.set(e.sourceId,t.cloneNode(!0));let r=a(u,e.sourceId);r.length>0&&m.set(e.sourceId,r.map(e=>e.cloneNode(!0)))}),u.querySelectorAll("[data-element-id]").forEach(e=>{if(!(e instanceof SVGElement))return;let n=e.getAttribute("data-element-id");if(!n)return;if(r?.has(n)){s(e),a(u,n).forEach(s);return}let c=t.get(n);c&&("stop"===e.tagName.toLowerCase()?(c.fill&&(e.setAttribute("stop-color",c.fill),e.style.setProperty("stop-color",c.fill)),void 0!==c.opacity&&(e.setAttribute("stop-opacity",String(c.opacity)),e.style.setProperty("stop-opacity",String(c.opacity)))):(c.fill&&(e.setAttribute("fill",c.fill),e.style.setProperty("fill",c.fill)),c.stroke&&(e.setAttribute("stroke",c.stroke),e.style.setProperty("stroke",c.stroke)),void 0!==c.opacity&&(e.setAttribute("opacity",String(c.opacity)),e.style.setProperty("opacity",String(c.opacity)))));let d=l?.get(n);if(d){let t=i(d);t&&(o(e,t),a(u,n).forEach(e=>o(e,t)))}}),c&&c.size>0&&d&&c.forEach((e,n)=>{let c=u.querySelector(`[data-element-id="${e.sourceId}"]`),d=f.get(e.sourceId);if(!c||!d)return;let h=d.cloneNode(!0);h.setAttribute("data-element-id",n);let p=h.getAttribute("transform")||"",x=`translate(${e.translateX}, ${e.translateY})`;h.setAttribute("transform",p?`${x} ${p}`:x);let g=t.get(n);g&&("stop"===h.tagName.toLowerCase()?(g.fill&&h.setAttribute("stop-color",g.fill),void 0!==g.opacity&&(h.setAttribute("stop-opacity",String(g.opacity)),h.style.setProperty("stop-opacity",String(g.opacity)))):(g.fill&&h.setAttribute("fill",g.fill),g.stroke&&h.setAttribute("stroke",g.stroke),void 0!==g.opacity&&(h.setAttribute("opacity",String(g.opacity)),h.style.setProperty("opacity",String(g.opacity)))));let b=l?.get(n),v=b?i(b):null;v&&o(h,v),r?.has(n)&&s(h),c.parentNode&&c.parentNode.insertBefore(h,c.nextSibling);let y=a(u,e.sourceId);m.get(e.sourceId)?.forEach((t,l)=>{let a=t.cloneNode(!0);a.setAttribute("data-contour-of",n),o(a,`translate(${e.translateX}, ${e.translateY})`),v&&o(a,v),r?.has(n)&&s(a);let i=y[l];i?.parentNode&&i.parentNode.insertBefore(a,i.nextSibling)})}),u}function u(e){let t=n(e);return t.querySelectorAll("[data-element-id], [data-contour-of]").forEach(e=>{if("hidden"===e.getAttribute("visibility")&&"0"===e.getAttribute("opacity"))return void e.parentNode?.removeChild(e);e.removeAttribute("data-element-id")}),t}let d=new Set(["path","rect","circle","ellipse","polygon","polyline","line","text","tspan","g","use"]),f=new Set(["stop"]);function m(e){try{let t=new DOMParser().parseFromString(e,"image/svg+xml"),r=t.querySelector("parsererror");if(r)return console.error("SVG parsing error:",r.textContent),null;return t}catch(e){return console.error("Failed to parse SVG:",e),null}}function h(e){return new XMLSerializer().serializeToString(e)}function p(e,t){let r=e.style.getPropertyValue(t);if(r)return(0,l.$2)(r);let n=e.getAttribute(t);return n?(0,l.$2)(n):null}function x(e){return{fill:p(e,"fill"),stroke:p(e,"stroke")}}function g(e,t,r){e.setAttribute(t,r),e.style.removeProperty(t)}function b(e){let t=[],r=0;
1return e.querySelectorAll("*").forEach(e=>{if(!(e instanceof SVGElement))return;let n=e.tagName.toLowerCase(),a=d.has(n),s=f.has(n);if(!a&&!s||!s&&function(e){let t=e.parentElement;for(;t;){let e=t.tagName.toLowerCase();if("defs"===e||"symbol"===e||"clippath"===e||"mask"===e)return!0;t=t.parentElement}return!1}(e)||null!==e.closest('[data-contour="outline"]')||a&&!function(e){let t=x(e);return null!==t.fill||null!==t.stroke}(e))return;let i=x(e),o=null;if(s){let t=e.getAttribute("stop-color"),r=e.style.getPropertyValue("stop-color");if(!(o=(0,l.$2)(r||t||"")))return}let c=function(e,t){let r=e.getAttribute("data-alom-id");if(r)return r;let l=e.getAttribute("id");if(l)return`svg-el-${l}`;let n=e.tagName.toLowerCase();return`svg-el-${n}-${t}`}(e,r);e.setAttribute("data-element-id",c),t.push({id:c,element:e,tagName:n,originalFill:s?o:i.fill,originalStroke:s?null:i.stroke,currentFill:s?o:i.fill,currentStroke:s?null:i.stroke,isGradientStop:s,originalOpacity:function(e,t){let r=t?"stop-opacity":"opacity",l=parseFloat(e.style.getPropertyValue(r)||e.getAttribute(r)||"");return Number.isNaN(l)?1:Math.min(1,Math.max(0,l))}(e,s)}),r++}),t}function v(e){let t=new Map;return e.forEach(e=>{let r=(e,r)=>{if(!e)return;let l=t.get(e);l?(l.count++,l.elementIds.includes(r)||l.elementIds.push(r)):t.set(e,{count:1,elementIds:[r]})};r(e.currentFill,e.id),r(e.currentStroke,e.id)}),t}},99487:(e,t,r)=>{r.d(t,{F6:()=>k,GX:()=>l,I0:()=>d,J8:()=>s,J_:()=>n,Jm:()=>u,MU:()=>S,PN:()=>v,Rc:()=>i,Wj:()=>w,Yu:()=>E,cH:()=>y,dp:()=>a,h4:()=>g,ij:()=>b,lu:()=>p,s7:()=>x,u6:()=>h,wh:()=>C,zC:()=>j,zk:()=>N});let l="data-alom-id",n="data-contour-of",a="data-contour",s='[data-contour="outline"]',i="http://www.w3.org/2000/svg",o=new Set(["defs","style","title","desc","metadata","symbol","marker","pattern","clippath","mask","filter","lineargradient","radialgradient","script","animate","animatetransform","animatemotion","set","image","foreignobject"]),c=new Set(["path","rect","circle","ellipse","line","polyline","polygon","text","tspan","textpath","use"]),u=["id",l,"data-element-id","class","style","fill","fill-opacity","stroke","stroke-width","stroke-opacity","stroke-dasharray","stroke-dashoffset","opacity","filter","paint-order","vector-effect","mix-blend-mode"],d={fill:"",stroke:"",strokeWidth:1,scale:1},f=e=>e.tagName.toLowerCase();function m(e,t){let r=e.style,l=r?.getPropertyValue?.(t)?.trim();return l||(e.getAttribute(t)?.trim()??"")}function h(e,t){let r=m(e,"stroke-width"),l=r?Number.parseFloat(r):NaN,n=e.getAttribute("transform")??"";return{fill:m(e,"fill")||t.fill,stroke:m(e,"stroke")||t.stroke,strokeWidth:Number.isFinite(l)&&l>=0?l:t.strokeWidth,scale:n?t.scale*function(e){let t,r=/(matrix|scale|rotate|translate|skewx|skewy)\s*\(([^)]*)\)/gi,l=1;for(;null!==(t=r.exec(e));){let e=t[1].toLowerCase(),r=t[2].split(/[\s,]+/).map(Number).filter(e=>Number.isFinite(e));if("scale"===e&&r.length>0){let e=r[0],t=r.length>1?r[1]:e,n=Math.sqrt(Math.abs(e*t));n>0&&(l*=n)}else if("matrix"===e&&r.length>=6){let e=Math.sqrt(Math.abs(r[0]*r[3]-r[1]*r[2]));e>0&&(l*=e)}}return l>0?l:1}(n):t.scale}}let p=e=>"none"!==e.fill.toLowerCase(),x=e=>{let t=e.stroke.toLowerCase();return""!==t&&"none"!==t},g=e=>!o.has(f(e))&&!function(e){if("none"===m(e,"display").toLowerCase())return!0;let t=m(e,"visibility").toLowerCase();if("hidden"===t||"collapse"===t)return!0;
1let r=m(e,"opacity");return""!==r&&0===Number.parseFloat(r)}(e),b=(e,t)=>!c.has(f(e))||p(t)||x(t),v=e=>c.has(f(e)),y=e=>Number(e.toFixed(3));function w(e){if(!e)return null;let t=e.trim().split(/[\s,]+/).map(Number);if(t.length<4||t.some(e=>!Number.isFinite(e)))return null;let[r,l,n,a]=t;return n>0&&a>0?{x:r,y:l,w:n,h:a}:null}function C(e){if(!e)return null;let t=e.trim().match(/^(-?\d*\.?\d+)\s*([a-z%]*)$/i);if(!t)return null;let r=Number(t[1]);return!Number.isFinite(r)||r<=0?null:{value:r,unit:t[2]||""}}function k(e,t,r){let l=C(e.getAttribute(t));l&&"%"!==l.unit&&e.setAttribute(t,`${y(l.value*r)}${l.unit}`)}function j(e,t){let r=w(e.getAttribute("viewBox")),l=w(t);return!!r&&!!l&&(e.setAttribute("viewBox",t),k(e,"width",l.w/r.w),k(e,"height",l.h/r.h),!0)}let S="data-contour-padded",N=e=>"1"===e.getAttribute(S);function E(e,t){let r=function(e,t){let r=t.getAttribute("data-contour-viewbox");if(r&&w(r))return j(e,r);let l=Number(t.getAttribute("data-contour-pad"));if(!Number.isFinite(l)||l<=0)return!1;let n=w(e.getAttribute("viewBox"));if(!n)return!1;let a=n.w-2*l,s=n.h-2*l;return a>0&&s>0&&j(e,`${y(n.x+l)} ${y(n.y+l)} ${y(a)} ${y(s)}`)}(e,t);return r||e.setAttribute(S,"1"),r}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.