leaflet-tual 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react.js CHANGED
@@ -1,4 +1,4 @@
1
1
  "use client";
2
- var uo={name:"leaflet-tual",version:"0.1.0",description:"Framework-agnostic interactive canvas and annotation toolkit for Leaflet maps \u2014 draw arrows, shapes, freehand sketches, rulers, notes, and text pinned to geo-coordinates. Optional React bindings.",type:"module",sideEffects:!1,main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"},default:"./dist/index.js"},"./core":{types:"./dist/index.d.ts",import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"},default:"./dist/index.js"},"./react":{types:"./dist/react.d.ts",import:{types:"./dist/react.d.ts",default:"./dist/react.js"},require:{types:"./dist/react.d.cts",default:"./dist/react.cjs"},default:"./dist/react.js"},"./package.json":"./package.json"},files:["dist","README.md"],author:"Yusuf Arslan",license:"MIT",repository:{type:"git",url:"git+https://github.com/yusufarsln98/leaflet-tual.git",directory:"packages/leaflet-tual"},bugs:{url:"https://github.com/yusufarsln98/leaflet-tual/issues"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},keywords:["leaflet","leaflet-tual","tual","tuval","canvas","annotation","map-tools","arrows","notes","gis","overlay","framework-agnostic","vanilla-js","react","react-leaflet"],scripts:{build:"tsup",dev:"tsup --watch",lint:"eslint src --ext ts,tsx",typecheck:"tsc --noEmit",format:'prettier --write "src/**/*.{ts,tsx}"',"format:check":'prettier --check "src/**/*.{ts,tsx}"',test:"vitest run","test:watch":"vitest",version:"changeset version",release:"npm run build && changeset publish"},peerDependencies:{leaflet:"^1.9.0",react:"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","react-leaflet":"^4.0.0 || ^5.0.0"},peerDependenciesMeta:{react:{optional:!0},"react-dom":{optional:!0},"react-leaflet":{optional:!0}},devDependencies:{"@changesets/cli":"^2.27.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.2.0","@types/leaflet":"^1.9.16","@types/node":"^22.13.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0",eslint:"^9.20.0","eslint-plugin-react-hooks":"^5.1.0",jsdom:"^26.0.0",leaflet:"^1.9.4",prettier:"^3.5.0",react:"^19.0.0","react-dom":"^19.0.0","react-leaflet":"^5.0.0",tsup:"^8.5.1",typescript:"^5.7.0","typescript-eslint":"^8.24.0",vitest:"^3.0.0"}};var Ae={"arrow-linear":"linear","arrow-curved":"curved","arrow-bi":"bi","arrow-elbow":"elbow","arrow-s-curve":"s-curve"},fo=["#000000","#4b5563","#2563eb","#dc2626","#16a34a","#d97706","#9333ea","#0891b2"],ie=[{name:"Amber",bg:"#fef9c3",border:"#fde047",header:"#fef08a",text:"#422006"},{name:"Sky",bg:"#e0f2fe",border:"#7dd3fc",header:"#bae6fd",text:"#0c4a6e"},{name:"Emerald",bg:"#dcfce7",border:"#86efac",header:"#bbf7d0",text:"#064e3b"},{name:"Rose",bg:"#ffe4e6",border:"#fda4af",header:"#fecdd3",text:"#881337"},{name:"Violet",bg:"#f3e8ff",border:"#d8b4fe",header:"#e9d5ff",text:"#3b0764"},{name:"Dark Slate",bg:"#1e293b",border:"#334155",header:"#0f172a",text:"#f8fafc"},{name:"Midnight",bg:"#111827",border:"#374151",header:"#030712",text:"#f9fafb"}],Ze="#000000",qe=2,Pt=[1,2,3,4,5,6,8,10,12],Cr=Pt,Je="#fef9c3",wr="#422006",Qe=16,Lt=[10,12,14,16,18,20,24,28,32,36,40,48],Sr=Lt,Tr={selectionGlowColor:"rgba(0, 0, 0, 0.2)",selectionGlowWidth:6,guideLineDash:[4,4],guideLineColor:"rgba(100, 100, 100, 0.6)",guideLineWidth:1.2,endpointHandleColor:"#4f4f4f",controlHandleColor:"#4f4f4f",handleFillColor:"#ffffff",handleRadius:5,handleStrokeWidth:2,shadowColor:"rgba(0, 0, 0, 0.2)",shadowBlur:3,shadowOffsetY:1.5,labelBackgroundColor:"#ffffff",labelTextColor:"#000000",labelFont:"12px system-ui, -apple-system, sans-serif",labelBorderWidth:1,labelBorderRadius:2,labelPaddingX:6,labelPaddingY:18,shapeDefaultFillOpacity:.16,shapeBorderRadius:0};var ho=0;function ve(e="rlc"){ho+=1;let t=Math.random().toString(36).slice(2,8);return`${e}-${Date.now().toString(36)}-${ho}-${t}`}function Q(e,t){let o=e.latLngToContainerPoint([t.lat,t.lng]);return{x:o.x,y:o.y}}function X(e,t){let o=e.containerPointToLatLng([t.x,t.y]);return{lat:o.lat,lng:o.lng}}function Oe(e,t,o=1){let r=o>0?o:1,n=t.x-e.x,a=t.y-e.y,l=Math.abs(n),s=Math.abs(a),i=n>=0?1:-1,d=a>=0?1:-1;return l/r>=s?{x:e.x+i*l,y:e.y+d*(l/r)}:{x:e.x+i*(s*r),y:e.y+d*s}}function re(e,t){let o=t.x-e.x,r=t.y-e.y,n=Math.hypot(o,r);if(n===0)return t;let a=Math.atan2(r,o),l=Math.PI/4,s=Math.round(a/l)*l;return{x:e.x+Math.cos(s)*n,y:e.y+Math.sin(s)*n}}function et(e,t,o=.25){let r=(e.lat+t.lat)/2,n=(e.lng+t.lng)/2,a=t.lat-e.lat,l=t.lng-e.lng;return{lat:r+l*o,lng:n-a*o}}function It(e,t,o,r){let n=1-r;return{x:n*n*e.x+2*n*r*t.x+r*r*o.x,y:n*n*e.y+2*n*r*t.y+r*r*o.y}}function tt(e,t,o){let r=o.x-t.x,n=o.y-t.y;return Math.hypot(r,n)<.001?Math.atan2(o.y-e.y,o.x-e.x):Math.atan2(n,r)}function fe(e,t,o){let r=(o.x-t.x)**2+(o.y-t.y)**2;if(r===0)return Math.hypot(e.x-t.x,e.y-t.y);let n=((e.x-t.x)*(o.x-t.x)+(e.y-t.y)*(o.y-t.y))/r;n=Math.max(0,Math.min(1,n));let a=t.x+n*(o.x-t.x),l=t.y+n*(o.y-t.y);return Math.hypot(e.x-a,e.y-l)}function mo(e,t,o,r,n=24){let a=1/0,l=t;for(let s=1;s<=n;s+=1){let i=It(t,o,r,s/n),d=fe(e,l,i);d<a&&(a=d),l=i}return a}function Ce(e){if(!e)return null;try{let t=e.getSize?.();if(t&&t.x>0&&t.y>0)return{width:t.x,height:t.y}}catch{}try{let t=e.getContainer?.()?.getBoundingClientRect?.();if(t&&t.width>0&&t.height>0)return{width:t.width,height:t.height}}catch{}return null}function go(e,t,o){if(!t||o<=0)return"";if(e.measureText(t).width<=o)return t;let r="\u2026";if(e.measureText(r).width>=o)return"";let n=0,a=t.length,l="";for(;n<=a;){let s=Math.floor((n+a)/2),i=t.slice(0,s)+r;e.measureText(i).width<=o?(l=i,n=s+1):a=s-1}return l||r}function bo(e=16,t,o=14,r){if(t===null||typeof t!="number")return e;let n=r?.scaleFactor??1.22,a=r?.min??9,l=r?.max??72,s=e*Math.pow(n,t-o);return Math.round(Math.max(a,Math.min(l,s)))}function Rt(e,t){let r=(t.lat-e.lat)*Math.PI/180,n=(t.lng-e.lng)*Math.PI/180,a=e.lat*Math.PI/180,l=t.lat*Math.PI/180,s=Math.sin(r/2),i=Math.sin(n/2),d=s*s+Math.cos(a)*Math.cos(l)*i*i;return 6371e3*(2*Math.atan2(Math.sqrt(d),Math.sqrt(1-d)))}function yo(e,t="metric"){if(t==="imperial"){let r=e*3.28084;if(r<1e3)return`${Math.round(r)} ft`;let n=r/5280;return`${n>=10?n.toFixed(1):n.toFixed(2)} mi`}if(e<1e3)return`${Math.round(e)} m`;let o=e/1e3;return`${o>=10?o.toFixed(1):o.toFixed(2)} km`}function Lr(e){let t=0;for(let o=0;o<e.length-1;o+=1)t+=Rt(e[o],e[o+1]);return t}function he(e,t,o,r,n,a=2){e.save(),e.beginPath(),e.arc(t.x,t.y,n,0,Math.PI*2),e.fillStyle=r,e.fill(),e.lineWidth=a,e.strokeStyle=o,e.stroke(),e.restore()}function De(e,t,o,r,n,a,l){e.save(),e.font=l?.labelFont??"12px system-ui, -apple-system, sans-serif";let s=l?.labelPaddingX??6,i=Math.max(10,a-s*2),d=go(e,t,i);if(d){let c=e.measureText(d),p=Math.round(c.width+s*2),b=l?.labelPaddingY??18,g=Math.round(o-p/2),f=Math.round(r-b/2),u=l?.labelBorderRadius??2;l?.labelShadowColor&&(e.shadowColor=l.labelShadowColor,e.shadowBlur=l.labelShadowBlur??3),e.fillStyle=l?.labelBackgroundColor??"#ffffff",e.strokeStyle=l?.labelBorderColor??n,e.lineWidth=l?.labelBorderWidth??1,e.beginPath(),typeof e.roundRect=="function"?e.roundRect(g,f,p,b,u):e.rect(g,f,p,b),e.fill(),e.stroke(),e.fillStyle=l?.labelTextColor??"#000000",e.textAlign="center",e.textBaseline="middle",e.fillText(d,o,r)}e.restore()}function Dt(e,t,o,r,n,a=!0){let l=Math.PI/6.5,s=t.x-r*Math.cos(o-l),i=t.y-r*Math.sin(o-l),d=t.x-r*Math.cos(o+l),c=t.y-r*Math.sin(o+l);e.save(),e.setLineDash([]),e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(s,i),a?(e.lineTo(d,c),e.closePath(),e.fillStyle=n,e.fill()):(e.moveTo(t.x,t.y),e.lineTo(d,c),e.strokeStyle=n,e.lineWidth=Math.max(2,r/4.5),e.lineCap="round",e.stroke()),e.restore()}function Mt(e,t,o){let{start:r,end:n,control:a}=t;if(e.moveTo(r.x,r.y),o==="curved")e.quadraticCurveTo(a.x,a.y,n.x,n.y);else if(o==="elbow")e.lineTo(a.x,r.y),e.lineTo(a.x,n.y),e.lineTo(n.x,n.y);else if(o==="s-curve"){let l=n.x-r.x,s=n.y-r.y;e.bezierCurveTo(r.x+l*.5,r.y,r.x+l*.5,r.y+s,n.x,n.y)}else e.lineTo(n.x,n.y)}function de(e,t){let o=Q(e,t.start),r=Q(e,t.end),n=t.arrowStyle==="curved"||t.arrowStyle==="s-curve",a=t.controlPoint?t.controlPoint:n?et(t.start,t.end):{lat:(t.start.lat+t.end.lat)/2,lng:(t.start.lng+t.end.lng)/2},l=Q(e,a);return{start:o,end:r,control:l}}function Et(e,t,o,r={}){let{start:n,end:a,control:l}=t,s=Math.hypot(a.x-n.x,a.y-n.y);if(s<2)return;let i=r.theme,d=Math.max(12,o.strokeWidth*3.8),c=Math.atan2(a.y-n.y,a.x-n.x),p=Math.atan2(n.y-a.y,n.x-a.x);if(o.arrowStyle==="curved")c=tt(n,l,a),p=tt(a,l,n);else if(o.arrowStyle==="elbow"){let f=a.x-l.x,u=a.y-n.y;c=Math.abs(f)>1?Math.atan2(0,f):Math.atan2(u,0);let v=n.x-l.x;p=Math.abs(v)>1?Math.atan2(0,v):Math.atan2(-u,0)}else if(o.arrowStyle==="s-curve"){let f=a.x-n.x;c=tt(n,{x:n.x+f*.5,y:a.y},a)}e.save(),r.isPreview&&(e.globalAlpha=.85),r.isSelected&&(e.save(),e.beginPath(),Mt(e,t,o.arrowStyle),e.strokeStyle=i?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(i?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=i?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=i?.shadowBlur??3,e.shadowOffsetY=i?.shadowOffsetY??1.5,e.beginPath(),Mt(e,t,o.arrowStyle),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round";let b=!!(o.dashed||o.arrowStyle==="dashed");e.setLineDash(b?[o.strokeWidth*3,o.strokeWidth*2]:[]),e.stroke();let g=o.headStyle??(o.arrowStyle==="bi"?"both":"triangle");if(g!=="none"&&(Dt(e,a,c,d,o.color,g!=="open"),g==="both"&&Dt(e,n,p,d,o.color,!0)),e.restore(),o.label){let f=typeof i?.labelMinShapeSize=="number"?i.labelMinShapeSize:24;if(f<=0||s>=f){let u=o.arrowStyle==="curved"?It(n,l,a,.5):o.arrowStyle==="elbow"?{x:l.x,y:(n.y+a.y)/2}:{x:(n.x+a.x)/2,y:(n.y+a.y)/2},v=i?.fitLabelsToShape!==!1,y=i?.labelMaxTextWidth??(v?Math.max(48,Math.min(280,s*1.6)):1/0);De(e,o.label,Math.round(u.x),Math.round(u.y),o.color,y,i)}}if(r.isSelected){let f=i?.handleRadius??5,u=i?.handleFillColor??"#ffffff",v=i?.endpointHandleColor??"#4f4f4f",y=i?.controlHandleColor??"#767676",x=i?.handleStrokeWidth??2;(o.arrowStyle==="curved"||o.arrowStyle==="elbow")&&(e.save(),e.beginPath(),e.setLineDash(i?.guideLineDash?[...i.guideLineDash]:[4,4]),e.moveTo(n.x,n.y),e.lineTo(l.x,l.y),e.lineTo(a.x,a.y),e.strokeStyle=i?.guideLineColor??"rgba(100, 100, 100, 0.6)",e.lineWidth=i?.guideLineWidth??1.2,e.stroke(),e.restore(),he(e,l,y,u,f+.5,x)),he(e,n,v,u,f,x),he(e,a,v,u,f,x)}e.restore()}function Ne(e,t,o,r=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=r?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=r?"start":(o.arrowStyle==="curved"||o.arrowStyle==="elbow")&&Math.hypot(e.x-t.control.x,e.y-t.control.y)<=r?"control":null}function Be(e,t,o,r=9){let n=Math.max(r,o.strokeWidth/2+6);if(o.arrowStyle==="curved")return mo(e,t.start,t.control,t.end)<=n;if(o.arrowStyle==="elbow"){let a={x:t.control.x,y:t.start.y},l={x:t.control.x,y:t.end.y};return fe(e,t.start,a)<=n||fe(e,a,l)<=n||fe(e,l,t.end)<=n}return fe(e,t.start,t.end)<=n}function Pe(e,t){return t.points.map(o=>Q(e,o))}function xo(e,t){if(t.length===0)return;if(e.moveTo(t[0].x,t[0].y),t.length===1){e.lineTo(t[0].x+.5,t[0].y+.5);return}if(t.length===2){e.lineTo(t[1].x,t[1].y);return}for(let r=1;r<t.length-1;r+=1){let n=(t[r].x+t[r+1].x)/2,a=(t[r].y+t[r+1].y)/2;e.quadraticCurveTo(t[r].x,t[r].y,n,a)}let o=t[t.length-1];e.lineTo(o.x,o.y)}function kt(e,t,o,r={}){if(t.length===0)return;let n=r.theme;e.save(),r.isPreview&&(e.globalAlpha=.9),r.isSelected&&(e.save(),e.beginPath(),xo(e,t),e.strokeStyle=n?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(n?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=n?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=n?.shadowBlur??3,e.shadowOffsetY=n?.shadowOffsetY??1,e.beginPath(),xo(e,t),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round",o.dashed?e.setLineDash([o.strokeWidth*3,o.strokeWidth*2]):e.setLineDash([]),e.stroke(),e.restore(),e.restore()}function We(e,t,o,r=9){if(t.length===0)return!1;let n=Math.max(r,o.strokeWidth/2+6);if(t.length===1)return Math.hypot(e.x-t[0].x,e.y-t[0].y)<=n;let a=1/0,l=1/0,s=-1/0,i=-1/0;for(let d=0;d<t.length;d+=1){let c=t[d];c.x<a&&(a=c.x),c.y<l&&(l=c.y),c.x>s&&(s=c.x),c.y>i&&(i=c.y)}if(e.x<a-n||e.x>s+n||e.y<l-n||e.y>i+n)return!1;for(let d=0;d<t.length-1;d+=1)if(fe(e,t[d],t[d+1])<=n)return!0;return!1}function At(e,t,o,r){let{minX:n,minY:a,maxX:l,maxY:s,width:i,height:d,cx:c,cy:p}=t;if(o==="square"){let b=r?.shapeBorderRadius??0;b>0&&typeof e.roundRect=="function"?e.roundRect(n,a,i,d,b):e.rect(n,a,i,d);return}if(o==="circle"){e.ellipse(c,p,i/2,d/2,0,0,Math.PI*2);return}if(o==="triangle"){e.moveTo(c,a),e.lineTo(l,s),e.lineTo(n,s),e.closePath();return}if(o==="diamond"){e.moveTo(c,a),e.lineTo(l,p),e.lineTo(c,s),e.lineTo(n,p),e.closePath();return}if(o==="hexagon"){let b=i/2,g=d/2;for(let f=0;f<6;f+=1){let u=Math.PI/3*f-Math.PI/6,v=c+b*Math.cos(u),y=p+g*Math.sin(u);f===0?e.moveTo(v,y):e.lineTo(v,y)}e.closePath();return}if(o==="star"){let g=i/2,f=d/2,u=g*.42,v=f*.42;for(let y=0;y<10;y+=1){let x=y%2===0?g:u,h=y%2===0?f:v,C=y*Math.PI/5-Math.PI/2,S=c+x*Math.cos(C),M=p+h*Math.sin(C);y===0?e.moveTo(S,M):e.lineTo(S,M)}e.closePath();return}if(o==="marker"||o==="cloud"){let b=i/2,g=d*.36,f=a+g;e.moveTo(c,s),e.bezierCurveTo(n+i*.05,a+d*.7,n,a+d*.5,n,f),e.ellipse(c,f,b,g,0,Math.PI,0,!1),e.bezierCurveTo(l,a+d*.5,l-i*.05,a+d*.7,c,s),e.closePath();let u=b*.35,v=g*.35;u>=2.5&&v>=2.5&&(e.moveTo(c+u,f),e.ellipse(c,f,u,v,0,Math.PI*2,0,!0),e.closePath());return}if(o==="actor"){let b=Math.min(i,d)*.16,g=a+b+d*.04,f=g+b,u=a+d*.64,v=a+d*.42,y=i*.36,x=i*.32;e.moveTo(c+b,g),e.arc(c,g,b,0,Math.PI*2),e.closePath(),e.moveTo(c,f),e.lineTo(c,u),e.moveTo(c-y,v),e.lineTo(c+y,v),e.moveTo(c,u),e.lineTo(c-x,s),e.moveTo(c,u),e.lineTo(c+x,s)}}function ae(e,t){let o=Q(e,t.start),r=Q(e,t.end),n=Math.min(o.x,r.x),a=Math.min(o.y,r.y),l=Math.max(o.x,r.x),s=Math.max(o.y,r.y),i=Math.max(4,l-n),d=Math.max(4,s-a);return{start:o,end:r,minX:n,minY:a,maxX:l,maxY:s,width:i,height:d,cx:n+i/2,cy:a+d/2}}function Ot(e,t,o,r={}){if(t.width<4&&t.height<4)return;let n=r.theme;if(e.save(),r.isPreview&&(e.globalAlpha=.85),r.isSelected&&(e.save(),e.beginPath(),At(e,t,o.shape,n),e.strokeStyle=n?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(n?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=n?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=n?.shadowBlur??3,e.shadowOffsetY=n?.shadowOffsetY??1.5,e.beginPath(),At(e,t,o.shape,n),o.filled){let a=n?.shapeDefaultFillOpacity??.16,l=Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");e.fillStyle=o.fillColor??`${o.color}${l}`,e.fill()}if(e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round",e.setLineDash(o.dashed?[o.strokeWidth*3,o.strokeWidth*2]:[]),e.stroke(),e.restore(),o.label){let a=typeof n?.labelMinShapeSize=="number"?n.labelMinShapeSize:18;if(a<=0||Math.max(t.width,t.height)>=a&&t.width>=8&&t.height>=8){let l=o.shape==="actor"?t.maxY+14:t.cy,s=n?.fitLabelsToShape!==!1,i=n?.labelMaxTextWidth??(s?Math.max(48,Math.min(280,t.width*2.2)):1/0);De(e,o.label,Math.round(t.cx),Math.round(l),o.color,i,n)}}if(r.isSelected){let a=n?.handleRadius??5,l=n?.handleFillColor??"#ffffff",s=n?.endpointHandleColor??"#4f4f4f",i=n?.handleStrokeWidth??2;e.save(),e.setLineDash(n?.guideLineDash?[...n.guideLineDash]:[4,4]),e.strokeStyle=n?.guideLineColor??"rgba(100, 100, 100, 0.6)",e.lineWidth=n?.guideLineWidth??1.2,e.strokeRect(t.minX,t.minY,t.width,t.height),e.restore(),he(e,t.start,s,l,a,i),he(e,t.end,s,l,a,i)}e.restore()}function He(e,t,o=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=o?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=o?"start":null}function Me(e,t,o=8){return e.x>=t.minX-o&&e.x<=t.maxX+o&&e.y>=t.minY-o&&e.y<=t.maxY+o}function ce(e,t){let o=Q(e,t.start),r=Q(e,t.end),n={x:(o.x+r.x)/2,y:(o.y+r.y)/2},a=Math.hypot(r.x-o.x,r.y-o.y),l=Math.atan2(r.y-o.y,r.x-o.x);return{start:o,end:r,mid:n,lengthPx:a,angle:l}}function Nt(e,t,o,r={}){let{start:n,end:a,mid:l,lengthPx:s,angle:i}=t;if(s<2)return;let d=r.theme;e.save(),r.isPreview&&(e.globalAlpha=.9),r.isSelected&&(e.save(),e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y),e.strokeStyle=d?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(d?.selectionGlowWidth??6),e.lineCap="round",e.stroke(),e.restore()),e.save(),e.shadowColor=d?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=d?.shadowBlur??3,e.shadowOffsetY=d?.shadowOffsetY??1.5,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",o.dashed?e.setLineDash([o.strokeWidth*3,o.strokeWidth*2]):e.setLineDash([]),e.stroke();let c=i+Math.PI/2,p=Math.max(7,o.strokeWidth*3.2),b=Math.cos(c)*p,g=Math.sin(c)*p;e.beginPath(),e.setLineDash([]),e.moveTo(n.x-b,n.y-g),e.lineTo(n.x+b,n.y+g),e.moveTo(a.x-b,a.y-g),e.lineTo(a.x+b,a.y+g),e.stroke(),e.restore();let f=Rt(o.start,o.end),u=o.label?o.label:yo(f,o.unit);if(u){let v=d?.fitLabelsToShape!==!1,y=d?.labelMaxTextWidth??(v?Math.max(50,Math.min(300,s*1.5)):1/0);De(e,u,Math.round(l.x),Math.round(l.y),o.color,y,d)}if(r.isSelected){let v=d?.handleRadius??5,y=d?.handleFillColor??"#ffffff",x=d?.endpointHandleColor??"#4f4f4f",h=d?.handleStrokeWidth??2;he(e,n,x,y,v,h),he(e,a,x,y,v,h)}e.restore()}function je(e,t,o=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=o?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=o?"start":null}function Fe(e,t,o,r=9){let n=Math.max(r,o.strokeWidth/2+6);return fe(e,t.start,t.end)<=n}function Xr(e){let t=ie.find(r=>r.bg===e);if(t)return t;let o=e?.startsWith("#")&&e.length===7&&parseInt(e.slice(1),16)<8947848||e==="#111827"||e==="#1e293b"||e==="#0f172a";return{name:"Custom",bg:e,border:o?"rgba(255, 255, 255, 0.16)":"rgba(0, 0, 0, 0.12)",header:o?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.06)",text:o?"#f8fafc":"#0f172a"}}function $r(e,t,o,r,n,a=!0){let l=a!==!1?Ce(e):null;if(!l||n||!(t.x>=-120&&t.x<=l.width+120&&t.y>=-120&&t.y<=l.height+120))return t;let i=r?95:o.width??230,d=r?22:o.height??100,c=8,p=16+c,b=Math.max(p,l.width-i+16-c),g=12+c,f=Math.max(g,l.height-d+12-c);return{x:Math.max(p,Math.min(b,t.x)),y:Math.max(g,Math.min(f,t.y))}}function qr(e,t,o,r,n,a,l=!0){let s=l!==!1?Ce(e):null;if(!s||a||!(t.x>=-100&&t.x<=s.width+100&&t.y>=-100&&t.y<=s.height+100))return t;let d=n?35:Math.max(24,(o.text||"Text").length*r/3.6),c=n?11:r/2+4,p=8,b=d+p,g=Math.max(b,s.width-d-p),f=c+p,u=Math.max(f,s.height-c-p);return{x:Math.max(b,Math.min(g,t.x)),y:Math.max(f,Math.min(u,t.y))}}function ze(e,t,o,r,n,a,l,s,i,d,c,p){s.current={screenPoints:[o],geoPoints:[r]},e.dragging.disable(),d();let b=f=>{if(!s.current)return;let u=t.getBoundingClientRect(),v={x:f.clientX-u.left,y:f.clientY-u.top},y=s.current.screenPoints,x=y[y.length-1];Math.hypot(v.x-x.x,v.y-x.y)<2.5||(y.push(v),s.current.geoPoints.push(X(e,v)),i.current===null&&(i.current=window.requestAnimationFrame(()=>{i.current=null,d()})))},g=f=>{window.removeEventListener("pointermove",b),window.removeEventListener("pointerup",g),e.dragging.enable(),i.current!==null&&(window.cancelAnimationFrame(i.current),i.current=null);let u=s.current;s.current=null,u&&u.geoPoints.length>=1?(c({id:ve("freedraw"),type:"freedraw",points:u.geoPoints,color:n,strokeWidth:a,dashed:l,createdAt:Date.now()}),f.shiftKey||p("select")):d()};window.addEventListener("pointermove",b),window.addEventListener("pointerup",g)}function ot(e,t,o="Field Note"){let r=ie.find(n=>n.bg===t)??ie[0];return{id:ve("note"),type:"note",position:e,title:o,text:"",backgroundColor:r.bg,textColor:r.text,width:230,createdAt:Date.now()}}function nt(e,t,o,r,n){return{id:ve("text"),type:"text",position:e,text:"",color:t,initialFontSize:o,baseZoom:n,fontWeight:r,createdAt:Date.now()}}function rt(e,t,o,r,n,a,l,s,i,d,c,p){d({shape:n,startGeo:r,currentGeo:r}),e.dragging.disable();let b=f=>{let u=t.getBoundingClientRect(),v={x:f.clientX-u.left,y:f.clientY-u.top},y=f.shiftKey?Oe(o,v,1):v;d({shape:n,startGeo:r,currentGeo:X(e,y)})},g=f=>{window.removeEventListener("pointermove",b),window.removeEventListener("pointerup",g),e.dragging.enable();let u=t.getBoundingClientRect(),v={x:f.clientX-u.left,y:f.clientY-u.top},y=f.shiftKey?Oe(o,v,1):v,x=Math.hypot(v.x-o.x,v.y-o.y),h=x>=10?r:X(e,{x:o.x-45,y:o.y-45}),C=x>=10?X(e,y):X(e,{x:o.x+45,y:o.y+45});c({id:ve("shape"),type:"shape",shape:n,start:h,end:C,color:a,filled:l,strokeWidth:s,dashed:i,createdAt:Date.now()}),d(null),p("select")};window.addEventListener("pointermove",b),window.addEventListener("pointerup",g)}function Ge(e,t,o,r,n,a){return{id:ve("arrow"),type:"arrow",arrowStyle:e,start:t,end:o,controlPoint:e==="curved"?et(t,o):e==="elbow"?{lat:(t.lat+o.lat)/2,lng:(t.lng+o.lng)/2}:void 0,color:r,strokeWidth:n,dashed:a,headStyle:e==="bi"?"both":"triangle",createdAt:Date.now()}}function at(e,t,o,r,n,a,l,s,i,d,c){i({arrowStyle:n,startGeo:r,currentGeo:r}),e.dragging.disable();let p=g=>{let f=t.getBoundingClientRect(),u={x:g.clientX-f.left,y:g.clientY-f.top},v=g.shiftKey?re(o,u):u;i({arrowStyle:n,startGeo:r,currentGeo:X(e,v)})},b=g=>{window.removeEventListener("pointermove",p),window.removeEventListener("pointerup",b),e.dragging.enable();let f=t.getBoundingClientRect(),u={x:g.clientX-f.left,y:g.clientY-f.top},v=g.shiftKey?re(o,u):u;Math.hypot(u.x-o.x,u.y-o.y)>=8&&(d(Ge(n,r,X(e,v),a,l,s)),i(null),c("select"))};window.addEventListener("pointermove",p),window.addEventListener("pointerup",b)}function En(e,t,o,r,n){return{id:ve("ruler"),type:"ruler",start:e,end:t,color:o,strokeWidth:r,dashed:n,unit:"metric",createdAt:Date.now()}}function it(e,t,o,r,n,a,l,s,i,d){s({startGeo:r,currentGeo:r}),e.dragging.disable();let c=b=>{let g=t.getBoundingClientRect(),f={x:b.clientX-g.left,y:b.clientY-g.top},u=b.shiftKey?re(o,f):f;s({startGeo:r,currentGeo:X(e,u)})},p=b=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",p),e.dragging.enable();let g=t.getBoundingClientRect(),f={x:b.clientX-g.left,y:b.clientY-g.top},u=b.shiftKey?re(o,f):f;Math.hypot(f.x-o.x,f.y-o.y)>=8&&(i(En(r,X(e,u),n,a,l)),s(null),d("select"))};window.addEventListener("pointermove",c),window.addEventListener("pointerup",p)}function Le(e,t){e.dragging.disable();let o=()=>{e.dragging.enable(),window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",o)}function lt(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=l.shiftKey;if(r==="start"){let d=i?re(o.end,s):s;a(t.id,{start:X(e,d)})}else if(r==="end"){let d=i?re(o.start,s):s;a(t.id,{end:X(e,d)})}else r==="control"&&a(t.id,{controlPoint:X(e,s)})})}function st(e,t,o,r,n,a){let l=r==="start"?o.end:o.start,s=o.width>4&&o.height>4?o.width/o.height:1;Le(e,i=>{let d=n(i),c=i.shiftKey?Oe(l,d,s):d,p=X(e,c);a(t.id,r==="start"?{start:p}:{end:p})})}function dt(e,t,o,r,n,a){let l=o.start,s=o.end,i=o.control,d=!!t.controlPoint;Le(e,c=>{let p=n(c),b=p.x-r.x,g=p.y-r.y,f={start:X(e,{x:l.x+b,y:l.y+g}),end:X(e,{x:s.x+b,y:s.y+g})};(t.arrowStyle==="curved"||t.arrowStyle==="elbow")&&d&&(f.controlPoint=X(e,{x:i.x+b,y:i.y+g})),a(t.id,f)})}function ct(e,t,o,r,n,a){let l=o.start,s=o.end;Le(e,i=>{let d=n(i),c=d.x-r.x,p=d.y-r.y;a(t.id,{start:X(e,{x:l.x+c,y:l.y+p}),end:X(e,{x:s.x+c,y:s.y+p})})})}function pt(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=s.x-r.x,d=s.y-r.y;a(t.id,{points:o.map(c=>X(e,{x:c.x+i,y:c.y+d}))})})}function ut(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=l.shiftKey;if(r==="start"){let d=i?re(o.end,s):s;a(t.id,{start:X(e,d)})}else if(r==="end"){let d=i?re(o.start,s):s;a(t.id,{end:X(e,d)})}})}function ft(e,t,o,r,n,a){let l=o.start,s=o.end;Le(e,i=>{let d=n(i),c=d.x-r.x,p=d.y-r.y;a(t.id,{start:X(e,{x:l.x+c,y:l.y+p}),end:X(e,{x:s.x+c,y:s.y+p})})})}function ht({map:e,canvas:t,width:o,height:r,arrowItems:n,shapeItems:a,freeDrawItems:l,rulerItems:s,selectedId:i,draftShape:d,draftArrow:c,draftRuler:p,draftFreeDraw:b,activeColor:g,strokeWidth:f,dashed:u,shapeFilled:v,annotationTheme:y,arrowTheme:x,isReadOnly:h}){if(!e||!t||o===0||r===0)return;let C=y??x,S=typeof window<"u"&&window.devicePixelRatio||1,M=Math.round(o*S),E=Math.round(r*S);t.width!==M&&(t.width=M),t.height!==E&&(t.height=E);let I=t.getContext("2d");if(I){I.save(),typeof I.scale=="function"&&I.scale(S,S),I.clearRect(0,0,o,r);for(let m of l){let w=Pe(e,m);kt(I,w,m,{isSelected:!h&&m.id===i,theme:C})}for(let m of a){let w=ae(e,m);Ot(I,w,m,{isSelected:!h&&m.id===i,theme:C})}for(let m of n){let w=de(e,m);Et(I,w,m,{isSelected:!h&&m.id===i,theme:C})}for(let m of s){let w=ce(e,m);Nt(I,w,m,{isSelected:!h&&m.id===i,theme:C})}if(!h&&b&&b.screenPoints.length>0&&kt(I,b.screenPoints,{color:g,strokeWidth:f,dashed:u},{isPreview:!0,theme:C}),!h&&d){let m={id:"draft-shape",type:"shape",shape:d.shape,start:d.startGeo,end:d.currentGeo,color:g,filled:v,strokeWidth:f,dashed:u,createdAt:0},w=ae(e,m);Ot(I,w,m,{isPreview:!0,isSelected:!0,theme:C})}if(!h&&c){let m={id:"draft-arrow",type:"arrow",arrowStyle:c.arrowStyle,start:c.startGeo,end:c.currentGeo,color:g,strokeWidth:f,dashed:u,createdAt:0},w=de(e,m);Et(I,w,m,{isPreview:!0,isSelected:!0,theme:C})}if(!h&&p){let m={id:"draft-ruler",type:"ruler",start:p.startGeo,end:p.currentGeo,color:g,strokeWidth:f,dashed:u,unit:"metric",createdAt:0},w=ce(e,m);Nt(I,w,m,{isPreview:!0,isSelected:!0,theme:C})}I.restore()}}function mt(e,t){let o=()=>{let r=e.getSize();t({width:r.x,height:r.y})};return o(),e.on("move",o),e.on("zoom",o),e.on("zoomanim",o),e.on("viewreset",o),e.on("resize",o),()=>{e.off("move",o),e.off("zoom",o),e.off("zoomanim",o),e.off("viewreset",o),e.off("resize",o)}}function gt(e){let t=e.getContainer();if(!t)return()=>{};let o=n=>{let a=n.target;if(!a?.closest?.("[data-rlc-overlay], input, textarea, select, button, .rlc-overlay"))return;let l=Object.prototype.hasOwnProperty.call(a,"_leaflet_disable_events"),s=a._leaflet_disable_events;a._leaflet_disable_events=!0;let i=!!e.doubleClickZoom?.enabled?.();i&&e.doubleClickZoom.disable(),setTimeout(()=>{l?a._leaflet_disable_events=s:delete a._leaflet_disable_events,i&&e.doubleClickZoom.enable()},0)},r=n=>{if(n.target?.closest?.("textarea, input, select, button, [data-rlc-note-resize], .rlc-note-resize-handle")&&e.dragging?.enabled?.()){e.dragging.disable();let l=()=>{e.dragging.enable(),window.removeEventListener("mouseup",l,!0),window.removeEventListener("touchend",l,!0),window.removeEventListener("pointerup",l,!0)};window.addEventListener("mouseup",l,{capture:!0,once:!0}),window.addEventListener("touchend",l,{capture:!0,once:!0}),window.addEventListener("pointerup",l,{capture:!0,once:!0})}};return t.addEventListener("dblclick",o,!0),t.addEventListener("mousedown",r,!0),t.addEventListener("touchstart",r,!0),()=>{t.removeEventListener("dblclick",o,!0),t.removeEventListener("mousedown",r,!0),t.removeEventListener("touchstart",r,!0)}}function Bt(e={}){let t=Math.max(0,(e.maxHistory??50)-1),o=[],r=e.items??e.initialItems??[],n=[],a=r,l=e.initialTool??"select",s=!!(e.readOnly??!1),i=null,d=!1,c=e.defaultShape??"square",p=!0,b=e.defaultColor??Ze,g=e.defaultStrokeWidth??qe,f=!1,u=e.defaultNoteColor??Je,v=e.defaultFontSize??Qe,y="bold",x=new Set,h=()=>{for(let L of x)L(U)},C=L=>{e.onItemsChange?.(L),e.onChange?.(L)},S=(L,A)=>{e.onItemsChangeComplete?.(L,A),e.onChangeComplete?.(L,A),e.onEditEnd?.(L,A),e.onEditComplete?.(L,A),A&&e.onItemChangeComplete?.(A)},M=L=>{let A=L(r);return r=A,C(A),h(),A},E=L=>{if(r===a)return;let A=a;a=r,o=[...o,A].slice(-t),n=[],S(r,L),h()},I=L=>{if(i!==L){let A=i;i=L,d=!1,A!==null&&L===null&&E(),e.onItemSelect?.(r.find(Y=>Y.id===L)??null),h()}},m=L=>{s&&L!=="select"||(l=L,e.onToolChange?.(L),h())},w=L=>{s=!!L,s&&l!=="select"&&(l="select"),h()},R=(L,A)=>{i&&M(Y=>Y.map(ee=>ee.id===i&&L(ee)?A(ee):ee))},B=L=>{s||(c=L,R(A=>A.type==="shape",A=>({...A,shape:L})),h())},F=L=>{s||(p=L,R(A=>A.type==="shape",A=>({...A,filled:L})),h())},G=L=>{s||(b=L,R(A=>A.type!=="note",A=>({...A,color:L})),h())},$=L=>{s||(g=L,R(A=>A.type==="arrow"||A.type==="freedraw"||A.type==="shape"||A.type==="ruler",A=>({...A,strokeWidth:L})),h())},V=L=>{s||(f=L,R(A=>A.type==="arrow"||A.type==="freedraw"||A.type==="shape"||A.type==="ruler",A=>({...A,dashed:L})),h())},T=L=>{if(s)return;u=L;let A=ie.find(Y=>Y.bg===L);R(Y=>Y.type==="note",Y=>({...Y,backgroundColor:L,textColor:A?.text??Y.textColor})),h()},k=L=>{s||(v=L,R(A=>A.type==="text",A=>({...A,initialFontSize:L})),h())},D=L=>{s||(y=L,R(A=>A.type==="text",A=>({...A,fontWeight:L})),h())},P=L=>{d=L,h()},O=L=>{s||(M(A=>[...A,L]),I(L.id),e.onItemCreate?.(L))},_=(L,A)=>{if(s){let ee=Object.keys(A);if(ee.length!==1||ee[0]!=="minimized")return}let Y;M(ee=>ee.map(W=>W.id===L?(Y={...W,...A},Y):W)),Y&&e.onItemChange?.(Y)},H=L=>{s||(M(A=>A.filter(Y=>Y.id!==L)),i===L&&I(null),e.onItemDelete?.(L),E())},K=()=>{!s&&i&&H(i)},Z=()=>{s||(M(()=>[]),I(null),E())},U={get items(){return r},get activeTool(){return l},setActiveTool:m,get readOnly(){return s},setReadOnly:w,get activeShape(){return c},setActiveShape:B,get shapeFilled(){return p},setShapeFilled:F,get selectedId(){return i},setSelectedId:I,get selectedItem(){return r.find(L=>L.id===i)??null},get isEditingLabel(){return d},setEditingLabel:P,get labelEditMode(){return d},setLabelEditMode:P,get activeColor(){return b},setActiveColor:G,get strokeWidth(){return g},setStrokeWidth:$,get dashed(){return f},setDashed:V,get noteColor(){return u},setNoteColor:T,get fontSize(){return v},setFontSize:k,get fontWeight(){return y},setFontWeight:D,addItem:O,updateItem:_,removeItem:H,deleteSelected:K,clearAll:Z,clear:Z,deleteItem:H,setTool:m,selectItem:I,undo:()=>{if(s||o.length===0)return;let L=o[o.length-1];n=[r,...n],o=o.slice(0,-1),r=L,a=L,C(L),S(L,null),h()},redo:()=>{if(s||n.length===0)return;let L=n[0];o=[...o,r],n=n.slice(1),r=L,a=L,C(L),S(L,null),h()},get canUndo(){return!s&&o.length>0},get canRedo(){return!s&&n.length>0},notifyChangeComplete:E,exportJSON:()=>JSON.stringify(r,null,2),importJSON:L=>{if(s)return!1;try{let A=JSON.parse(L);return Array.isArray(A)?(M(()=>A),I(null),E(),!0):!1}catch{return!1}},subscribe(L){return x.add(L),()=>{x.delete(L)}},getState(){return U},destroy(){x.clear()}};return U}var ca=Bt;function kn(e,t={}){let{controller:o,annotationTheme:r,arrowTheme:n,labels:a,zIndex:l=650,...s}=t,i=o??Bt(s),d=e.getContainer(),c=document.createElement("div");c.setAttribute("data-rlc-overlay","true"),c.style.position="absolute",c.style.inset="0",c.style.pointerEvents="none",c.style.zIndex=String(l),c.style.overflow="hidden";let p=document.createElement("canvas");p.style.position="absolute",p.style.top="0",p.style.left="0",p.style.pointerEvents="none";let b=document.createElement("div");b.style.position="absolute",b.style.inset="0",b.style.pointerEvents="none",c.appendChild(p),c.appendChild(b),d.appendChild(c);let g={width:0,height:0},f=null,u=null,v=null,y={current:null},x={current:null},h=T=>{f=T,I()},C=T=>{u=T,I()},S=T=>{v=T,I()},M=()=>{y.current=null,x.current!==null&&typeof window<"u"&&(window.cancelAnimationFrame(x.current),x.current=null)},E=()=>{let T=!i.readOnly&&i.activeTool!=="select";b.style.pointerEvents=T?"auto":"none",b.style.cursor=T?"crosshair":"default",p.style.width=`${g.width}px`,p.style.height=`${g.height}px`},I=()=>{E();let T=i.items;ht({map:e,canvas:p,width:g.width,height:g.height,arrowItems:T.filter(k=>k.type==="arrow"),shapeItems:T.filter(k=>k.type==="shape"),freeDrawItems:T.filter(k=>k.type==="freedraw"),rulerItems:T.filter(k=>k.type==="ruler"),selectedId:i.selectedId,draftShape:u,draftArrow:f,draftRuler:v,draftFreeDraw:y.current,activeColor:i.activeColor,strokeWidth:i.strokeWidth,dashed:i.dashed,shapeFilled:i.shapeFilled,annotationTheme:r,arrowTheme:n,isReadOnly:i.readOnly})},m=T=>{let k=d.getBoundingClientRect();return{x:T.clientX-k.left,y:T.clientY-k.top}},w=T=>{if(T.button!==0||i.readOnly)return;T.stopPropagation(),T.preventDefault();let k=m(T),D=X(e,k),{activeTool:P,activeShape:O,shapeFilled:_,activeColor:H,strokeWidth:K,dashed:Z,noteColor:q,fontSize:oe,fontWeight:ne}=i;if(P==="freedraw"){ze(e,d,k,D,H,K,Z,y,x,I,i.addItem,i.setActiveTool);return}if(P==="shape"){rt(e,d,k,D,O,H,_,K,Z,C,i.addItem,i.setActiveTool);return}if(P==="note"){i.addItem(ot(D,q,a?.noteDefaultTitle??"Field Note")),i.setActiveTool("select");return}if(P==="text"){i.addItem(nt(D,H,oe,ne,e.getZoom?.()??14)),i.setActiveTool("select");return}if(P==="ruler"){it(e,d,k,D,H,K,Z,S,i.addItem,i.setActiveTool);return}let j=Ae[P];if(j)if(!f)at(e,d,k,D,j,H,K,Z,h,i.addItem,i.setActiveTool);else{let U=Q(e,f.startGeo),L=T.shiftKey?re(U,k):k;Math.hypot(L.x-U.x,L.y-U.y)>=4&&i.addItem(Ge(f.arrowStyle,f.startGeo,X(e,L),H,K,Z)),h(null),i.setActiveTool("select")}},R=T=>{if(!f)return;let k=m(T),D=Q(e,f.startGeo),P=T.shiftKey?re(D,k):k;h({...f,currentGeo:X(e,P)})},B=T=>{if(T.button!==0||i.readOnly||i.activeTool!=="select"||T.target?.closest("[data-rlc-toolbar], [data-rlc-note], [data-rlc-text], .leaflet-control"))return;let D=m(T),P=i.items,O=P.filter(j=>j.type==="arrow"),_=P.filter(j=>j.type==="shape"),H=P.filter(j=>j.type==="freedraw"),K=P.filter(j=>j.type==="ruler"),Z=i.selectedId,q=O.find(j=>j.id===Z);if(q){let j=de(e,q),U=Ne(D,j,q);if(U){T.stopPropagation(),T.preventDefault(),lt(e,q,j,U,m,i.updateItem);return}}let oe=_.find(j=>j.id===Z);if(oe){let j=ae(e,oe),U=He(D,j);if(U){T.stopPropagation(),T.preventDefault(),st(e,oe,j,U,m,i.updateItem);return}}let ne=K.find(j=>j.id===Z);if(ne){let j=ce(e,ne),U=je(D,j);if(U){T.stopPropagation(),T.preventDefault(),ut(e,ne,j,U,m,i.updateItem);return}}for(let j=O.length-1;j>=0;j-=1){let U=O[j],L=de(e,U);if(Be(D,L,U)){T.stopPropagation(),T.preventDefault(),i.setSelectedId(U.id),dt(e,U,L,D,m,i.updateItem);return}}for(let j=_.length-1;j>=0;j-=1){let U=_[j],L=ae(e,U);if(Me(D,L)){T.stopPropagation(),T.preventDefault(),i.setSelectedId(U.id),ct(e,U,L,D,m,i.updateItem);return}}for(let j=H.length-1;j>=0;j-=1){let U=H[j],L=Pe(e,U);if(We(D,L,U)){T.stopPropagation(),T.preventDefault(),i.setSelectedId(U.id),pt(e,U,L,D,m,i.updateItem);return}}for(let j=K.length-1;j>=0;j-=1){let U=K[j],L=ce(e,U);if(Fe(D,L,U)){T.stopPropagation(),T.preventDefault(),i.setSelectedId(U.id),ft(e,U,L,D,m,i.updateItem);return}}Z&&(i.setSelectedId(null),i.notifyChangeComplete())},F=T=>{if(i.readOnly)return;let k=T.target;k&&(k.tagName==="INPUT"||k.tagName==="TEXTAREA"||k.isContentEditable)||(T.key==="Escape"?(f=null,u=null,v=null,M(),i.setSelectedId(null),i.setActiveTool("select"),i.notifyChangeComplete(),I()):(T.key==="Delete"||T.key==="Backspace")&&i.selectedId&&(T.preventDefault(),i.deleteSelected()))};b.addEventListener("pointerdown",w),b.addEventListener("pointermove",R),d.addEventListener("pointerdown",B,{capture:!0}),typeof window<"u"&&window.addEventListener("keydown",F);let G=mt(e,T=>{g=T,I()}),$=gt(e),V=i.subscribe(()=>{I()});return I(),{controller:i,container:c,canvas:p,repaint:I,destroy(){b.removeEventListener("pointerdown",w),b.removeEventListener("pointermove",R),d.removeEventListener("pointerdown",B,{capture:!0}),typeof window<"u"&&window.removeEventListener("keydown",F),M(),G(),$(),V(),o||i.destroy(),c.remove()}}}var xa=kn;var wa=uo.version;import{useEffect as An,useRef as On,useState as Nn}from"react";import{jsx as vo}from"react/jsx-runtime";function Co({shape:e,map:t,labels:o,onUpdate:r,onClose:n}){let[a,l]=Nn(e.label??""),s=On(null);An(()=>{s.current?.focus(),s.current?.select()},[]);let i=ae(t,e),d=Math.round(i.cx),c=Math.round(e.shape==="actor"?i.maxY+14:i.cy);return vo("div",{"data-rlc-inline-shape-label":!0,style:{position:"absolute",left:`${d}px`,top:`${c}px`,transform:"translate(-50%, -50%)",zIndex:1e3,pointerEvents:"auto"},onClick:p=>p.stopPropagation(),onPointerDown:p=>p.stopPropagation(),children:vo("input",{ref:s,type:"text","data-rlc-shape-label-input":e.id,"data-testid":"inline-shape-label-input","data-label-mode":"true",placeholder:o?.shapeLabelPlaceholder??"Shape label...",value:a,onChange:p=>{l(p.target.value),r(e.id,{label:p.target.value})},onBlur:n,onKeyDown:p=>{(p.key==="Enter"||p.key==="Escape")&&(p.preventDefault(),n())},style:{minWidth:"100px",padding:"2px 6px",borderRadius:"4px",border:"1px solid #2563eb",backgroundColor:"#ffffff",color:"#000000",fontSize:"12px",boxShadow:"0 2px 6px rgba(0, 0, 0, 0.25)",outline:"none"}})})}import Fn,{useEffect as ko,useRef as Ht,useState as zn}from"react";function wo(e){let t=ie.find(r=>r.bg===e);if(t)return t;let o=e?.startsWith("#")&&e.length===7&&parseInt(e.slice(1),16)<8947848||e==="#111827"||e==="#1e293b"||e==="#0f172a";return{name:"Custom",bg:e,border:o?"rgba(255, 255, 255, 0.16)":"rgba(0, 0, 0, 0.12)",header:o?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.06)",text:o?"#f8fafc":"#0f172a"}}function So(e,t,o,r,n,a=!0){let l=a!==!1?Ce(e):null;if(!l||n||!(t.x>=-120&&t.x<=l.width+120&&t.y>=-120&&t.y<=l.height+120))return t;let i=r?95:o.width??230,d=r?22:o.height??100,c=8,p=16+c,b=Math.max(p,l.width-i+16-c),g=12+c,f=Math.max(g,l.height-d+12-c);return{x:Math.max(p,Math.min(b,t.x)),y:Math.max(g,Math.min(f,t.y))}}function To(e,t,o,r,n,a,l){return l?{transform:"translate(-16px, -12px)"}:o?{transform:"translate(-16px, -12px)",width:"auto",minWidth:"24px",maxWidth:"130px",height:"22px",boxSizing:"border-box",backgroundColor:e.backgroundColor,color:e.textColor||t.text,border:`1px solid ${!n&&r?"#4b5563":t.border}`,borderRadius:"9999px",overflow:"hidden",boxShadow:!n&&r?"0 2px 6px rgba(0, 0, 0, 0.25)":"0 1px 3px rgba(0, 0, 0, 0.12)",fontFamily:"Inter, system-ui, -apple-system, sans-serif",display:"inline-flex",alignItems:"center",padding:"0 8px",gap:"4px",cursor:n?"default":a?"grabbing":"grab",transition:"none"}:{transform:"translate(-16px, -12px)",width:`${e.width??230}px`,boxSizing:"border-box",backgroundColor:e.backgroundColor,color:e.textColor||t.text,border:`1px solid ${!n&&r?"#4b5563":t.border}`,borderRadius:"2px",overflow:"hidden",boxShadow:!n&&r?"0 2px 6px rgba(0, 0, 0, 0.2)":"0 1px 3px rgba(0, 0, 0, 0.12)",fontFamily:"Inter, system-ui, -apple-system, sans-serif",transition:"none"}}import{useEffect as Bn,useRef as bt,useState as Wn}from"react";function Po(e){let{e:t,item:o,map:r,cardRef:n,textareaRef:a,onSelect:l,onUpdate:s,onComplete:i}=e;t.stopPropagation(),t.preventDefault(),l(o.id),n.current&&(n.current.style.transition="none",n.current.setAttribute("data-resizing","true"));let d=t.currentTarget,c=t.pointerId;try{d?.setPointerCapture?.(c)}catch{}let p=t.clientX,b=t.clientY,g=o.width??230,f=o.height??a.current?.offsetHeight??62;r.dragging.disable();let u=null,v=g,y=f,x=!1,h=typeof process<"u"&&process.env?.NODE_ENV==="test",C=()=>{u=null;let E={width:v};(x||o.height!==void 0)&&(E.height=y),s(o.id,E)},S=E=>{let I=E.clientX-p,m=E.clientY-b;v=Math.max(160,Math.min(600,Math.round(g+I))),y=Math.max(50,Math.min(800,Math.round(f+m))),m!==0&&(x=!0),n.current&&(n.current.style.width=`${v}px`),a.current&&(x||o.height!==void 0)&&(a.current.style.height=`${y}px`),h?C():u===null&&(u=requestAnimationFrame(C))},M=()=>{u!==null&&cancelAnimationFrame(u),n.current&&(n.current.style.transition="none",n.current.removeAttribute("data-resizing")),r.dragging.enable();try{d?.releasePointerCapture?.(c)}catch{}let E={width:v};(x||o.height!==void 0)&&(E.height=y),s(o.id,E),i?.(),window.removeEventListener("pointermove",S),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",M)};window.addEventListener("pointermove",S),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",M)}function Lo({item:e,screenPos:t,map:o,readOnly:r,isCompact:n,cardRef:a,textareaRef:l,onSelect:s,onUpdate:i,onComplete:d}){let[c,p]=Wn(!1),b=bt({dx:0,dy:0}),g=bt(!1),f=bt({x:0,y:0}),u=bt({timer:null}),v=(C,S)=>{u.current.timer&&(clearTimeout(u.current.timer),u.current.timer=null),o.dragging?.enable?.(),a.current&&(a.current.style.transition="none");let M={};C>0&&Math.abs(C-(e.width??230))>2&&(M.width=Math.max(160,Math.min(600,C))),S>0&&Math.abs(S-(e.height??0))>2&&(M.height=Math.max(50,Math.min(800,S))),Object.keys(M).length>0&&(i(e.id,M),d?.())};return Bn(()=>{let C=l.current;if(!C||typeof ResizeObserver>"u")return;let S=new ResizeObserver(E=>{for(let I of E){let m=Math.round(I.borderBoxSize?.[0]?.inlineSize??I.contentRect.width),w=Math.round(I.borderBoxSize?.[0]?.blockSize??I.contentRect.height);if(m<50||w<20)continue;let R=Math.abs(m-(e.width??230)),B=Math.abs(w-(e.height??C.offsetHeight));(R>2||B>2)&&(a.current&&R>2&&(a.current.style.transition="none",a.current.style.width=`${m}px`),o.dragging?.disable?.(),u.current.timer&&clearTimeout(u.current.timer),u.current.timer=setTimeout(()=>{v(m,w)},150))}});S.observe(C);let M=()=>{u.current.timer&&v(l.current?.offsetWidth??0,l.current?.offsetHeight??0)};return window.addEventListener("pointerup",M),window.addEventListener("mouseup",M),()=>{S.disconnect(),window.removeEventListener("pointerup",M),window.removeEventListener("mouseup",M),u.current.timer&&(clearTimeout(u.current.timer),u.current.timer=null)}},[e.id,e.width,e.height,o,i,d]),{isDragging:c,didDragRef:g,commitResize:v,handleHeaderPointerDown:C=>{if(r||C.target.closest("button, input, textarea"))return;C.stopPropagation(),C.preventDefault(),s(e.id),p(!0),g.current=!1,f.current={x:C.clientX,y:C.clientY};let S=o.getContainer().getBoundingClientRect();b.current={dx:C.clientX-S.left-t.x,dy:C.clientY-S.top-t.y},o.dragging.disable();let M=null,E=e.position,I=typeof process<"u"&&process.env?.NODE_ENV==="test",m=()=>{M=null,i(e.id,{position:E})},w=B=>{Math.hypot(B.clientX-f.current.x,B.clientY-f.current.y)>2&&(g.current=!0);let F=B.clientX-S.left-b.current.dx,G=B.clientY-S.top-b.current.dy;a.current&&(a.current.style.left=`${F}px`,a.current.style.top=`${G}px`),E=X(o,{x:F,y:G}),I?m():M===null&&(M=requestAnimationFrame(m))},R=()=>{M!==null&&cancelAnimationFrame(M),p(!1),o.dragging.enable(),g.current&&(i(e.id,{position:E}),d?.()),window.removeEventListener("pointermove",w),window.removeEventListener("pointerup",R),window.removeEventListener("pointercancel",R)};window.addEventListener("pointermove",w),window.addEventListener("pointerup",R),window.addEventListener("pointercancel",R)},handleResizePointerDown:C=>{r||n||Po({e:C,item:e,map:o,cardRef:a,textareaRef:l,onSelect:s,onUpdate:i,onComplete:d})},handleTextareaPointerDown:C=>{C.stopPropagation(),o.dragging.disable();let S=l.current?.offsetWidth??0,M=l.current?.offsetHeight??0;a.current&&(a.current.style.transition="none");let E=()=>{let I=l.current?.offsetWidth??0,m=l.current?.offsetHeight??0;Math.abs(I-S)>2||Math.abs(m-M)>2?v(I,m):(o.dragging?.enable?.(),a.current&&(a.current.style.transition="none")),window.removeEventListener("pointerup",E),window.removeEventListener("mouseup",E)};window.addEventListener("pointerup",E,{once:!0}),window.addEventListener("mouseup",E,{once:!0})}}}import{jsx as N,jsxs as te}from"react/jsx-runtime";var z={select:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"m3 3 7.07 16.97 2.51-7.39 7.39-2.51L3 3z"}),N("path",{d:"m13 13 6 6"})]}),freedraw:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),N("path",{d:"m15 5 4 4"})]}),arrowLinear:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M7 7h10v10"}),N("path",{d:"M7 17 17 7"})]}),arrowCurved:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M4 19C4 10 11 5 20 5"}),N("polyline",{points:"15 2 20 5 16 10"})]}),arrowBi:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M11 19H5v-6"}),N("path",{d:"M13 5h6v6"}),N("path",{d:"M19 5 5 19"})]}),arrowElbow:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("polyline",{points:"4 18 12 18 12 6 20 6"}),N("polyline",{points:"16 2 20 6 16 10"})]}),arrowSCurve:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M5 19C9 19 11 15 12 12C13 9 15 9 19 5"}),N("polyline",{points:"13 5 19 5 19 11"})]}),shapesGroup:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"}),N("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),N("circle",{cx:"17.5",cy:"17.5",r:"3.5"})]}),shapeSquare:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"})}),shapeCircle:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("circle",{cx:"12",cy:"12",r:"10"})}),shapeStar:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"})}),shapeActor:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}),N("circle",{cx:"12",cy:"7",r:"4"})]}),shapeTriangle:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"})}),shapeDiamond:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z"})}),shapeHexagon:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"})}),shapeMarker:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),N("circle",{cx:"12",cy:"10",r:"3"})]}),dropdownChevron:N("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),ruler:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21.3 8.7 8.7 21.3a1 1 0 0 1-1.4 0l-4.6-4.6a1 1 0 0 1 0-1.4L15.3 2.7a1 1 0 0 1 1.4 0l4.6 4.6a1 1 0 0 1 0 1.4Z"}),N("path",{d:"m14.5 3.5 2 2"}),N("path",{d:"m11.5 6.5 2 2"}),N("path",{d:"m8.5 9.5 2 2"}),N("path",{d:"m5.5 12.5 2 2"})]}),note:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"}),N("path",{d:"M15 3v5a1 1 0 0 0 1 1h5"})]}),text:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M12 4v16"}),N("path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}),N("path",{d:"M9 20h6"})]}),undo:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M9 14 4 9l5-5"}),N("path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"})]}),redo:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"m15 14 5-5-5-5"}),N("path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"})]}),collapseToolbar:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m18 15-6-6-6 6"})}),expandToolbar:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),delete:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M10 11v6"}),N("path",{d:"M14 11v6"}),N("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),N("path",{d:"M3 6h18"}),N("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]}),clear:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("circle",{cx:"12",cy:"12",r:"10"}),N("path",{d:"m15 9-6 6"}),N("path",{d:"m9 9 6 6"})]}),noteExpand:N("svg",{width:"8",height:"8",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.8",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),noteCollapse:N("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M5 12h14"})}),noteDelete:te("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M18 6 6 18"}),N("path",{d:"m6 6 12 12"})]}),textBold:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8"})})};import{jsx as Wt,jsxs as Io}from"react/jsx-runtime";function Ro({item:e,theme:t,readOnly:o,unstyled:r,labels:n,icons:a,classNames:l,styles:s,onHeaderPointerDown:i,onCollapse:d,onSelect:c,onUpdate:p,onDelete:b,onComplete:g}){let f=r?{}:{border:"none",background:"transparent",color:e.textColor||t.text,width:"20px",height:"20px",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"12px",fontWeight:700,lineHeight:1,opacity:.75,borderRadius:"2px",flexShrink:0};return Io("div",{onPointerDown:i,className:["rlc-note-header",l?.noteHeader].filter(Boolean).join(" "),style:{cursor:o?"default":"grab",...r?{}:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"6px",padding:"6px 8px 6px 10px",backgroundColor:t.header,borderBottom:`1px solid ${t.border}`,boxSizing:"border-box"},...s?.noteHeader},children:[Wt("input",{type:"text",readOnly:o,value:e.title??"",placeholder:n?.noteTitlePlaceholder??"Note title...","aria-label":n?.noteTitlePlaceholder??"Note title",title:e.title||n?.noteTitlePlaceholder||"Note",className:["rlc-note-title-input",l?.noteTitleInput].filter(Boolean).join(" "),onFocus:()=>{o||c(e.id)},onBlur:()=>g?.(),onChange:u=>{o||p(e.id,{title:u.target.value})},onPointerDown:u=>u.stopPropagation(),style:{...r?{}:{flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",fontWeight:600,fontSize:"12px",color:e.textColor||t.text,fontFamily:"inherit",cursor:o?"default":"text",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},...s?.noteTitleInput}}),Io("div",{className:["rlc-note-header-actions",l?.noteHeaderActions].filter(Boolean).join(" "),style:{...r?{}:{display:"flex",alignItems:"center",gap:"3px",flexShrink:0},...s?.noteHeaderActions},children:[Wt("button",{type:"button",title:n?.noteCollapse??"Collapse note","aria-label":n?.noteCollapse??"Collapse note",className:["rlc-note-header-btn",l?.noteHeaderButton].filter(Boolean).join(" "),onClick:u=>{u.stopPropagation(),d()},style:{...f,...s?.noteHeaderButton},children:a?.noteCollapse??z.noteCollapse}),!o&&Wt("button",{type:"button",title:n?.noteDelete??"Delete note","aria-label":n?.noteDelete??"Delete note",className:["rlc-note-header-btn","rlc-note-delete-btn",l?.noteHeaderButton,l?.noteDeleteButton].filter(Boolean).join(" "),onClick:u=>{u.stopPropagation(),b(e.id)},style:{...f,...s?.noteHeaderButton,...s?.noteDeleteButton},children:a?.noteDelete??z.noteDelete})]})]})}import{Fragment as Hn,jsx as _e,jsxs as Do}from"react/jsx-runtime";function Mo({item:e,theme:t,isCompact:o,isDragging:r,readOnly:n,unstyled:a,labels:l,icons:s,classNames:i,styles:d,textareaRef:c,onHeaderPointerDown:p,onExpandFromCompact:b,onCollapse:g,onSelect:f,onUpdate:u,onDelete:v,onComplete:y,onTextareaPointerDown:x}){return o?Do("div",{onPointerDown:p,className:["rlc-note-header",i?.noteHeader].filter(Boolean).join(" "),style:{cursor:n?"default":r?"grabbing":"grab",display:"inline-flex",alignItems:"center",gap:"4px",width:"100%",height:"100%",userSelect:"none"},children:[_e("span",{style:{fontSize:"11px",fontWeight:600,lineHeight:1,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"90px",color:e.textColor||t.text},title:e.title||l?.noteTitlePlaceholder||"Note",children:e.title||l?.noteTitlePlaceholder||"Note"}),_e("button",{type:"button",title:l?.noteExpand??"Expand note","aria-label":l?.noteExpand??"Expand note",className:["rlc-note-header-btn",i?.noteHeaderButton].filter(Boolean).join(" "),onClick:b,style:{border:"none",background:"transparent",color:e.textColor||t.text,width:"12px",height:"12px",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",opacity:.75,flexShrink:0},children:s?.noteExpand??z.noteExpand})]}):Do(Hn,{children:[_e(Ro,{item:e,theme:t,readOnly:n,unstyled:a,labels:l,icons:s,classNames:i,styles:d,onHeaderPointerDown:p,onCollapse:g,onSelect:f,onUpdate:u,onDelete:v,onComplete:y}),_e("div",{className:["rlc-note-body",i?.noteBody].filter(Boolean).join(" "),style:{...a?{}:{padding:0},...d?.noteBody},children:_e("textarea",{ref:c,readOnly:n,value:e.text,placeholder:l?.noteTextPlaceholder??"Write a note on the map...","aria-label":l?.noteTextPlaceholder??"Note text",rows:3,className:["rlc-note-textarea",i?.noteTextarea].filter(Boolean).join(" "),onFocus:()=>{n||f(e.id)},onBlur:()=>y?.(),onChange:h=>{n||u(e.id,{text:h.target.value})},onPointerDown:x,onMouseDown:h=>h.stopPropagation(),style:{...a?{}:{width:"100%",height:e.height?`${e.height}px`:void 0,boxSizing:"border-box",display:"block",margin:0,background:"transparent",border:"none",borderRadius:0,padding:"6px 10px 8px",outline:"none",resize:n?"none":"both",minWidth:"160px",maxWidth:"600px",minHeight:"56px",maxHeight:"800px",fontSize:"12px",lineHeight:1.45,color:e.textColor||t.text,fontFamily:"inherit",cursor:n?"default":"text"},...d?.noteTextarea}})})]})}import{jsx as jn}from"react/jsx-runtime";function Eo({item:e,screenPos:t,isSelected:o,isDragging:r,readOnly:n,isCompact:a,cardClassName:l,structuralRootStyle:s,styles:i,renderNote:d,onCardClick:c,onCardDoubleClick:p,handleHeaderPointerDown:b,handleResizePointerDown:g,onSelect:f,onUpdate:u,onDelete:v}){return jn("div",{"data-rlc-note":e.id,"data-collapsed":a?"true":void 0,"data-compact":a?"true":void 0,"data-selected":!n&&o||void 0,className:l,onClick:c,onDoubleClick:p,onWheel:y=>y.stopPropagation(),style:{...s,...i?.noteCard,...a?{...i?.noteCollapsed,...i?.noteCompact}:void 0,...!n&&o?i?.noteCardSelected:void 0},children:d({item:e,screenPos:t,isSelected:!n&&o,isDragging:r,readOnly:n,isCompact:a,dragHandleProps:{onPointerDown:b,style:{cursor:n?"default":r?"grabbing":"grab"}},resizeHandleProps:{onPointerDown:g,style:{cursor:n||a?"default":"nwse-resize"}},onSelect:()=>{n||f(e.id)},onUpdate:y=>{(!n||Object.keys(y).length<=2&&("minimized"in y||"collapseState"in y))&&u(e.id,y)},onDelete:()=>{n||v(e.id)}})})}import{jsx as jt}from"react/jsx-runtime";var Ao=Fn.memo(function({item:t,screenPos:o,isSelected:r,map:n,readOnly:a=!1,labels:l,icons:s,unstyled:i=!1,classNames:d,styles:c,clampToViewport:p=!0,autoMinimizeZoomThreshold:b,renderNote:g,onSelect:f,onUpdate:u,onDelete:v,onComplete:y}){let x=Ht(null),h=Ht(null),C=typeof n?.getZoom=="function"?n.getZoom():null,[S,M]=zn(!1),E=Ht(C);ko(()=>{C!==null&&(E.current!==null&&E.current!==C&&M(!1),E.current=C)},[C]);let I=typeof b=="number"&&C!==null&&!S&&C<b,m=!S&&(I||t.collapseState==="compact"||t.collapseState==="collapsed"||t.minimized===!0||t.minimized==="compact"),{isDragging:w,didDragRef:R,handleHeaderPointerDown:B,handleResizePointerDown:F,handleTextareaPointerDown:G}=Lo({item:t,screenPos:o,map:n,readOnly:a,isCompact:m,cardRef:x,textareaRef:h,onSelect:f,onUpdate:u,onComplete:y});ko(()=>{let H=x.current;if(!H)return;let K=Z=>{let q=Z.target;q?.closest(".rlc-note-header")&&!q.closest("button, input")||Z.stopPropagation()};return H.addEventListener("mousedown",K),H.addEventListener("touchstart",K),()=>{H.removeEventListener("mousedown",K),H.removeEventListener("touchstart",K)}},[]);let $=H=>{H?.stopPropagation(),M(!0),a||f(t.id),u(t.id,{minimized:!1})},V=wo(t.backgroundColor),{x:T,y:k}=So(n,o,t,m,w,p),D={position:"absolute",left:`${T}px`,top:`${k}px`,pointerEvents:"auto",zIndex:!a&&r?30:20,userSelect:a?"text":"none"},P=["rlc-note-card",m?"rlc-note-compact rlc-note-collapsed":void 0,d?.noteCard,m?d?.noteCompact:void 0,m?d?.noteCollapsed:void 0,!a&&r?d?.noteCardSelected:void 0].filter(Boolean).join(" "),O=H=>{if(H.stopPropagation(),R.current){R.current=!1;return}if(m){$(H);return}a||f(t.id)},_=H=>{if(H.stopPropagation(),R.current){R.current=!1;return}m&&$(H)};return g?jt(Eo,{item:t,screenPos:o,isSelected:r,isDragging:w,readOnly:a,isCompact:m,cardClassName:P,structuralRootStyle:D,styles:c,renderNote:g,onCardClick:O,onCardDoubleClick:_,handleHeaderPointerDown:B,handleResizePointerDown:F,onSelect:f,onUpdate:u,onDelete:v}):jt("div",{ref:x,"data-rlc-note":t.id,"data-collapsed":m?"true":void 0,"data-compact":m?"true":void 0,"data-selected":!a&&r||void 0,"data-dragging":w||void 0,className:P,onClick:O,onDoubleClick:_,onWheel:H=>H.stopPropagation(),style:{...D,...To(t,V,m,r,a,w,i),...c?.noteCard,...m?{borderRadius:"9999px",...c?.noteCollapsed,...c?.noteCompact}:void 0,...!a&&r?c?.noteCardSelected:void 0},children:jt(Mo,{item:t,theme:V,isCompact:m,isDragging:w,readOnly:a,unstyled:i,labels:l,icons:s,classNames:d,styles:c,textareaRef:h,onHeaderPointerDown:B,onExpandFromCompact:$,onCollapse:()=>{M(!1),u(t.id,{minimized:!0})},onSelect:f,onUpdate:u,onDelete:v,onComplete:y,onTextareaPointerDown:G})})});import Un,{useEffect as Gt,useRef as jo,useState as Fo}from"react";function Oo(e,t,o,r,n,a,l=!0){let s=l!==!1?Ce(e):null;if(!s||a||!(t.x>=-100&&t.x<=s.width+100&&t.y>=-100&&t.y<=s.height+100))return t;let d=n?35:Math.max(24,(o.text||"Text").length*r/3.6),c=n?11:r/2+4,p=8,b=d+p,g=Math.max(b,s.width-d-p),f=c+p,u=Math.max(f,s.height-c-p);return{x:Math.max(b,Math.min(g,t.x)),y:Math.max(f,Math.min(u,t.y))}}function No(e,t,o,r){return e?r?"pointer":"default":t?"text":o?"grabbing":r?"pointer":"grab"}import{useRef as Ft,useState as Gn}from"react";function Bo({item:e,screenPos:t,map:o,readOnly:r,isEditing:n,onSelect:a,onUpdate:l}){let[s,i]=Gn(!1),d=Ft({dx:0,dy:0}),c=Ft(!1),p=Ft({x:0,y:0});return{isDragging:s,didDragRef:c,handlePointerDown:g=>{if(r||n||g.target.closest("button, textarea, input"))return;g.stopPropagation(),g.preventDefault(),a(e.id),i(!0),c.current=!1,p.current={x:g.clientX,y:g.clientY};let f=o.getContainer().getBoundingClientRect();d.current={dx:g.clientX-f.left-t.x,dy:g.clientY-f.top-t.y},o.dragging.disable();let u=y=>{Math.hypot(y.clientX-p.current.x,y.clientY-p.current.y)>2&&(c.current=!0);let x=y.clientX-f.left-d.current.dx,h=y.clientY-f.top-d.current.dy;l(e.id,{position:X(o,{x,y:h})})},v=()=>{i(!1),o.dragging.enable(),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",v)};window.addEventListener("pointermove",u),window.addEventListener("pointerup",v)}}}import{jsx as zt}from"react/jsx-runtime";function Wo({item:e,map:t,isCompact:o,isEditing:r,isSelected:n,readOnly:a,unstyled:l,dynamicFontSize:s,labels:i,classNames:d,styles:c,inputRef:p,setIsEditing:b,onUpdate:g,onComplete:f}){if(o)return zt("div",{"data-compact":"true",className:["rlc-text-display","rlc-text-compact-pill",d?.textDisplay,d?.textCompact].filter(Boolean).join(" "),style:{...l?{}:{display:"inline-flex",alignItems:"center",height:"22px",padding:"0 8px",backgroundColor:e.backgroundColor??"#ffffff",color:e.color,border:`1px solid ${e.color?`${e.color}40`:"#cbd5e1"}`,borderRadius:"9999px",fontSize:"11px",fontWeight:600,lineHeight:1,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"120px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.12)",cursor:"pointer",userSelect:"none"},...c?.textDisplay,...c?.textCompact},title:e.text||"Text",children:e.text||i?.textEmptyFallback||"Text"});let u=()=>{b(!1),e.text.trim()||g(e.id,{text:i?.textEmptyFallback??"Label"}),f?.()};return r?zt("textarea",{ref:p,value:e.text,placeholder:i?.textPlaceholder??"Type text...","aria-label":i?.textPlaceholder??"Map text annotation",rows:Math.max(1,e.text.split(`
3
- `).length),className:["rlc-text-input",d?.textInput].filter(Boolean).join(" "),onChange:v=>g(e.id,{text:v.target.value}),onBlur:u,onKeyDown:v=>{(v.key==="Escape"||v.key==="Enter"&&!v.shiftKey)&&(v.preventDefault(),u())},onPointerDown:v=>{v.stopPropagation(),t.dragging.disable();let y=()=>{t.dragging.enable(),window.removeEventListener("pointerup",y)};window.addEventListener("pointerup",y)},onMouseDown:v=>{v.stopPropagation(),t.dragging.disable();let y=()=>{t.dragging.enable(),window.removeEventListener("mouseup",y)};window.addEventListener("mouseup",y)},style:{fontSize:`${s}px`,fontWeight:e.fontWeight??"bold",color:e.color,...l?{}:{minWidth:"80px",padding:"2px 4px",backgroundColor:"#ffffff",border:"1px solid #767676",borderRadius:"2px",outline:"none",fontFamily:"inherit",resize:"both",lineHeight:1.25,boxShadow:"none"},...c?.textInput}}):zt("div",{className:["rlc-text-display",d?.textDisplay].filter(Boolean).join(" "),style:{fontSize:`${s}px`,fontWeight:e.fontWeight??"bold",color:e.color,...l?{}:{padding:"2px 4px",backgroundColor:e.backgroundColor??"#ffffff",borderRadius:"2px",border:!a&&n?"1px dashed #767676":"1px solid transparent",boxShadow:"none",whiteSpace:"pre-wrap",lineHeight:1.25},...c?.textDisplay},children:e.text||(a?"":i?.textEmptyFallback??"Double-click to edit")})}import{jsx as _n}from"react/jsx-runtime";function Ho({item:e,screenPos:t,isSelected:o,isEditing:r,isDragging:n,readOnly:a,isCompact:l,dynamicFontSize:s,dragHandleProps:i,wrapperClassName:d,structuralWrapperStyle:c,styles:p,renderText:b,onClick:g,onDoubleClick:f,setIsEditing:u,onSelect:v,onUpdate:y,onDelete:x}){return _n("div",{"data-rlc-text":e.id,"data-compact":l?"true":void 0,"data-selected":!a&&o||void 0,className:d,onClick:g,onDoubleClick:f,onWheel:h=>h.stopPropagation(),style:{...c,...p?.textWrapper,...l?p?.textCompact:void 0,...!a&&o?p?.textWrapperSelected:void 0},children:b({item:e,screenPos:t,isSelected:!a&&o,isEditing:!a&&r,isDragging:n,readOnly:a,isCompact:l,dynamicFontSize:s,setIsEditing:u,dragHandleProps:i,onSelect:()=>{a||v(e.id)},onUpdate:h=>{a||y(e.id,h)},onDelete:()=>{a||x(e.id)}})})}import{jsx as _t}from"react/jsx-runtime";var zo=Un.memo(function({item:t,screenPos:o,isSelected:r,isEditingLabel:n,map:a,readOnly:l=!1,labels:s,icons:i,unstyled:d=!1,classNames:c,styles:p,clampToViewport:b=!0,autoMinimizeZoomThreshold:g,renderText:f,onSelect:u,onUpdate:v,onDelete:y,onComplete:x}){let[h,C]=Fo(!l&&t.text===""),[S,M]=Fo(!1),E=jo(null),{isDragging:I,didDragRef:m,handlePointerDown:w}=Bo({item:t,screenPos:o,map:a,readOnly:l,isEditing:h,onSelect:u,onUpdate:v}),R=typeof a?.getZoom=="function"?a.getZoom():null,B=jo(R),F=t.initialFontSize??t.fontSize??16,G=t.baseZoom??14,$=bo(F,R,G);Gt(()=>{R!==null&&(B.current!==null&&B.current!==R&&M(!1),B.current=R)},[R]);let T=typeof g=="number"&&R!==null&&R<g&&!r&&!h&&!S;Gt(()=>{r&&n&&!l&&C(!0)},[r,n,l]),Gt(()=>{h&&E.current&&(E.current.focus(),E.current.select())},[h]);let k=No(l,h,I,T),D={onPointerDown:w,style:{cursor:k}},P=["rlc-text-wrapper",T?"rlc-text-compact":void 0,c?.textWrapper,T?c?.textCompact:void 0,!l&&r?c?.textWrapperSelected:void 0].filter(Boolean).join(" "),{x:O,y:_}=Oo(a,o,t,$,T,I,b),H={position:"absolute",left:`${O}px`,top:`${_}px`,transform:"translate(-50%, -50%)",pointerEvents:"auto",zIndex:!l&&r?28:18,cursor:k,userSelect:l||h?"text":"none"},K=q=>{if(q.stopPropagation(),m.current){m.current=!1;return}T&&M(!0),l||u(t.id)},Z=q=>{q.stopPropagation(),T&&M(!0),l||(u(t.id),C(!0))};return f?_t(Ho,{item:t,screenPos:o,isSelected:r,isEditing:h,isDragging:I,readOnly:l,isCompact:T,dynamicFontSize:$,dragHandleProps:D,wrapperClassName:P,structuralWrapperStyle:H,styles:p,renderText:f,onClick:K,onDoubleClick:Z,setIsEditing:q=>{l||C(q)},onSelect:u,onUpdate:v,onDelete:y}):_t("div",{"data-rlc-text":t.id,"data-compact":T?"true":void 0,"data-selected":!l&&r||void 0,className:P,onPointerDown:w,onClick:K,onDoubleClick:Z,onWheel:q=>q.stopPropagation(),style:{...H,...d?{}:{fontFamily:"Inter, system-ui, -apple-system, sans-serif"},...p?.textWrapper,...T?p?.textCompact:void 0,...!l&&r?p?.textWrapperSelected:void 0},children:_t(Wo,{item:t,map:a,isCompact:T,isEditing:h,isSelected:r,readOnly:l,unstyled:d,dynamicFontSize:$,labels:s,classNames:c,styles:p,inputRef:E,setIsEditing:C,onUpdate:v,onComplete:x})})});import{useEffect as Yn,useState as Kn}from"react";function Go(e){let[t,o]=Kn({width:0,height:0,tick:0});return Yn(()=>{if(e)return mt(e,({width:r,height:n})=>{o(a=>({width:r,height:n,tick:a.tick+1}))})},[e]),t}import{useCallback as pe,useEffect as $n,useMemo as Vn,useRef as Zn,useState as xt}from"react";import{useCallback as Ee,useRef as yt,useState as Xn}from"react";function _o(e){let{initialItems:t=[],items:o,maxHistory:r=50}=e,n=Math.max(0,r-1),a=yt(e);a.current=e;let[l,s]=Xn({past:[],present:t,future:[]}),i=yt(l);i.current=l;let d=o??l.present,c=yt(d);c.current=d;let p=yt(d),b=Ee(x=>{a.current.onItemsChange?.(x),a.current.onChange?.(x)},[]),g=Ee((x,h)=>{a.current.onItemsChangeComplete?.(x,h),a.current.onChangeComplete?.(x,h),a.current.onEditEnd?.(x,h),a.current.onEditComplete?.(x,h),h&&a.current.onItemChangeComplete?.(h)},[]),f=Ee(x=>{let h=x(c.current);return c.current=h,b(h),s(C=>({...C,present:h})),h},[b]),u=Ee(x=>{let h=c.current;if(h===p.current)return;let C=p.current;p.current=h,s(S=>({past:[...S.past,C].slice(-n),present:h,future:[]})),g(h,x)},[n,g]),v=Ee(x=>{x||s(h=>{if(h.past.length===0)return h;let C=h.past[h.past.length-1];return c.current=C,p.current=C,b(C),g(C,null),{past:h.past.slice(0,-1),present:C,future:[h.present,...h.future]}})},[b,g]),y=Ee(x=>{x||s(h=>{if(h.future.length===0)return h;let C=h.future[0];return c.current=C,p.current=C,b(C),g(C,null),{past:[...h.past,h.present],present:C,future:h.future.slice(1)}})},[b,g]);return{items:d,history:l,historyRef:i,callbacksRef:a,commitItems:f,notifyChangeComplete:u,undo:v,redo:y}}import{useCallback as ge,useState as we}from"react";function Uo(e){let{defaultColor:t=Ze,defaultStrokeWidth:o=qe,defaultNoteColor:r=Je,defaultFontSize:n=Qe,defaultShape:a="square",readOnly:l,selectedId:s,commitItems:i}=e,[d,c]=we(a),[p,b]=we(!0),[g,f]=we(t),[u,v]=we(o),[y,x]=we(!1),[h,C]=we(r),[S,M]=we(n),[E,I]=we("bold"),m=ge((k,D)=>{s&&i(P=>P.map(O=>O.id===s&&k(O)?D(O):O))},[s,i]),w=ge(k=>{l||(c(k),m(D=>D.type==="shape",D=>({...D,shape:k})))},[l,m]),R=ge(k=>{l||(b(k),m(D=>D.type==="shape",D=>({...D,filled:k})))},[l,m]),B=ge(k=>{l||(f(k),m(D=>D.type!=="note",D=>({...D,color:k})))},[l,m]),F=ge(k=>{l||(v(k),m(D=>D.type==="arrow"||D.type==="freedraw"||D.type==="shape"||D.type==="ruler",D=>({...D,strokeWidth:k})))},[l,m]),G=ge(k=>{l||(x(k),m(D=>D.type==="arrow"||D.type==="freedraw"||D.type==="shape"||D.type==="ruler",D=>({...D,dashed:k})))},[l,m]),$=ge(k=>{if(l)return;C(k);let D=ie.find(P=>P.bg===k);m(P=>P.type==="note",P=>({...P,backgroundColor:k,textColor:D?.text??P.textColor}))},[l,m]),V=ge(k=>{l||(M(k),m(D=>D.type==="text",D=>({...D,initialFontSize:k})))},[l,m]),T=ge(k=>{l||(I(k),m(D=>D.type==="text",D=>({...D,fontWeight:k})))},[l,m]);return{activeShape:d,setActiveShape:w,shapeFilled:p,setShapeFilled:R,activeColor:g,setActiveColor:B,strokeWidth:u,setStrokeWidth:F,dashed:y,setDashed:G,noteColor:h,setNoteColor:$,fontSize:S,setFontSize:V,fontWeight:E,setFontWeight:T}}function Ut(e={}){let{items:t,initialTool:o="select",defaultColor:r,defaultStrokeWidth:n,defaultNoteColor:a,defaultFontSize:l,defaultShape:s}=e,{items:i,history:d,historyRef:c,callbacksRef:p,commitItems:b,notifyChangeComplete:g,undo:f,redo:u}=_o(e),[v,y]=xt(o),[x,h]=xt(!!(e.readOnly??!1)),C=Zn(e.readOnly);$n(()=>{e.readOnly!==void 0&&e.readOnly!==C.current&&(C.current=e.readOnly,h(!!e.readOnly))},[e.readOnly]);let[S,M]=xt(null),[E,I]=xt(!1),m=Uo({defaultColor:r,defaultStrokeWidth:n,defaultNoteColor:a,defaultFontSize:l,defaultShape:s,readOnly:x,selectedId:S,commitItems:b}),w=pe(P=>{M(O=>{let _=typeof P=="function"?P(O):P;if(O!==_){I(!1),O!==null&&_===null&&g();let H=t??c.current.present;p.current.onItemSelect?.(H.find(K=>K.id===_)??null)}return _})},[t,g,c,p]),R=pe(P=>{x&&P!=="select"||(y(P),p.current.onToolChange?.(P))},[x,p]),B=pe(P=>{x||(b(O=>[...O,P]),w(P.id),p.current.onItemCreate?.(P))},[x,b,w,p]),F=pe((P,O)=>{if(x){let H=Object.keys(O);if(H.length!==1||H[0]!=="minimized")return}let _;b(H=>H.map(K=>K.id===P?(_={...K,...O},_):K)),_&&p.current.onItemChange?.(_)},[x,b,p]),G=pe(P=>{x||(b(O=>O.filter(_=>_.id!==P)),w(O=>O===P?null:O),p.current.onItemDelete?.(P),g())},[x,b,w,g,p]),$=pe(()=>{!x&&S&&G(S)},[x,S,G]),V=pe(()=>{x||(b(()=>[]),w(null),g())},[x,b,w,g]),T=Vn(()=>i.find(P=>P.id===S)??null,[i,S]),k=pe(()=>JSON.stringify(i,null,2),[i]),D=pe(P=>{if(x)return!1;try{let O=JSON.parse(P);return Array.isArray(O)?(b(()=>O),w(null),g(),!0):!1}catch{return!1}},[x,b,w,g]);return{items:i,activeTool:v,setActiveTool:R,readOnly:x,setReadOnly:h,...m,selectedId:S,setSelectedId:w,selectedItem:T,isEditingLabel:E,setEditingLabel:I,labelEditMode:E,setLabelEditMode:I,addItem:B,updateItem:F,removeItem:G,deleteSelected:$,clearAll:V,clear:V,deleteItem:G,setTool:R,selectItem:w,undo:pe(()=>f(x),[f,x]),redo:pe(()=>u(x),[u,x]),canUndo:!x&&d.past.length>0,canRedo:!x&&d.future.length>0,notifyChangeComplete:g,exportJSON:k,importJSON:D}}var ki=Ut;import{useState as rr}from"react";var Yo=["select","freedraw","arrow","shape","ruler","note","text"],Yt={top:{top:"14px",left:"50%",transform:"translateX(-50%)"},bottom:{bottom:"24px",left:"50%",transform:"translateX(-50%)"},left:{top:"50%",left:"14px",transform:"translateY(-50%)"},right:{top:"50%",right:"14px",transform:"translateY(-50%)"},"top-center":{top:"14px",left:"50%",transform:"translateX(-50%)"},"bottom-center":{bottom:"24px",left:"50%",transform:"translateX(-50%)"},"left-center":{top:"50%",left:"14px",transform:"translateY(-50%)"},"right-center":{top:"50%",right:"14px",transform:"translateY(-50%)"}};function Ko(e,t){return[{id:"arrow-linear",style:"linear",label:e?.arrowLinear??"Linear Arrow",shortcut:"A",icon:t?.arrowLinear??z.arrowLinear},{id:"arrow-curved",style:"curved",label:e?.arrowCurved??"Curved Arrow",shortcut:"C",icon:t?.arrowCurved??z.arrowCurved},{id:"arrow-bi",style:"bi",label:e?.arrowBi??"Double-Headed",shortcut:"B",icon:t?.arrowBi??z.arrowBi},{id:"arrow-elbow",style:"elbow",label:e?.arrowElbow??"Elbow / Step",shortcut:"E",icon:t?.arrowElbow??z.arrowElbow},{id:"arrow-s-curve",style:"s-curve",label:e?.arrowSCurve??"S-Curve Arrow",shortcut:"S",icon:t?.arrowSCurve??z.arrowSCurve}]}function Xo(e,t){return[{kind:"square",label:e?.shapeSquare??"Square",icon:t?.shapeSquare??z.shapeSquare},{kind:"circle",label:e?.shapeCircle??"Circle",icon:t?.shapeCircle??z.shapeCircle},{kind:"star",label:e?.shapeStar??"Star",icon:t?.shapeStar??z.shapeStar},{kind:"actor",label:e?.shapeActor??"Actor",icon:t?.shapeActor??z.shapeActor},{kind:"triangle",label:e?.shapeTriangle??"Triangle",icon:t?.shapeTriangle??z.shapeTriangle},{kind:"diamond",label:e?.shapeDiamond??"Diamond",icon:t?.shapeDiamond??z.shapeDiamond},{kind:"hexagon",label:e?.shapeHexagon??"Hexagon",icon:t?.shapeHexagon??z.shapeHexagon},{kind:"marker",label:e?.shapeMarker??"Marker",icon:t?.shapeMarker??z.shapeMarker}]}function $o(e,t,o,r,n,a){return{...n?{}:t&&o?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:e?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:e?"#e0e0e0":"#efefef",color:"#000000",fontWeight:"normal",fontSize:"12px",lineHeight:"16px",cursor:"pointer",boxShadow:e?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",flexShrink:0,whiteSpace:"nowrap"}:{display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",gap:o?"6px":"0px",padding:t?"0":o?"2px 7px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",minWidth:t?"30px":void 0,minHeight:t?"30px":void 0,borderRadius:"2px",border:e?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:e?"#e0e0e0":"#efefef",color:"#000000",fontWeight:"normal",fontSize:"12px",lineHeight:"16px",cursor:"pointer",boxShadow:e?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",flexShrink:0,whiteSpace:"nowrap"},...a?.toolButton,...e?a?.toolButtonActive:void 0,...t&&!o?{padding:"0",width:a?.toolButton?.width??"30px",height:a?.toolButton?.height??"30px"}:void 0,...r&&!e?{opacity:.45,cursor:"not-allowed"}:void 0}}function Vo(e,t){return["rlc-tool-btn",t?.toolButton,e?t?.toolButtonActive:void 0].filter(Boolean).join(" ")}function vt(e,t,o=!1){let r=t==="vertical",n=e.includes("right"),a=e.includes("left"),l=e.includes("bottom");return r?{...l?{bottom:0}:{top:0},...n?{right:"calc(100% + 8px)"}:{left:"calc(100% + 8px)"}}:{...n?{right:0}:a||!o?{left:0}:{left:"50%",transform:"translateX(-50%)"},...l?{bottom:"calc(100% + 8px)"}:{top:"calc(100% + 8px)"}}}function Zo(e,t,o){return o?{}:t?{display:"flex",flexDirection:e==="right"||e==="right-center"?"row-reverse":"row",alignItems:"flex-start",gap:"8px",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}:{display:"flex",flexDirection:e==="bottom"||e==="bottom-center"?"column-reverse":"column",alignItems:"center",gap:"8px",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}}function qo(e,t,o,r,n,a,l,s){return e==="select"?{icon:l?.select??z.select,label:s?.select??"Select"}:e==="freedraw"?{icon:l?.freedraw??z.freedraw,label:s?.freedraw??"Free Draw"}:e==="ruler"?{icon:l?.ruler??z.ruler,label:s?.ruler??"Ruler"}:t?{icon:o,label:r}:e==="shape"?{icon:n,label:a}:e==="note"?{icon:l?.note??z.note,label:s?.note??"Note Card"}:e==="text"?{icon:l?.text??z.text,label:s?.text??"Normal Text"}:{icon:l?.shapesGroup??z.shapesGroup,label:"Tools"}}var Jo=["arrow-linear","arrow-curved","arrow-bi","arrow-elbow","arrow-s-curve"];function Qo(e){return Jo.includes(e)}function Ue(e,t="top-center",o="horizontal"){return o==="vertical"?t==="right"||t==="right-center"?e?"rotate(-90deg)":"rotate(90deg)":e?"rotate(90deg)":"rotate(-90deg)":t==="bottom"||t==="bottom-center"?e?"rotate(0deg)":"rotate(180deg)":e?"rotate(180deg)":"rotate(0deg)"}function Kt(e="top-center",t="horizontal"){return t==="vertical"?e==="right"||e==="right-center"?"rotate(90deg)":"rotate(-90deg)":e==="bottom"||e==="bottom-center"?"rotate(180deg)":"rotate(0deg)"}function Xt(e="top-center",t="horizontal"){return t==="vertical"?e==="right"||e==="right-center"?"rotate(90deg)":"rotate(-90deg)":e==="bottom"||e==="bottom-center"?"rotate(180deg)":"rotate(0deg)"}import{Fragment as qn,jsx as Se,jsxs as on}from"react/jsx-runtime";function en({position:e,orientation:t,isVertical:o,showToolLabels:r,unstyled:n,labels:a,icons:l,classNames:s,styles:i,onCollapse:d}){let c=Kt(e,t),p=l?.collapseToolbar??z.collapseToolbar;return Se("button",{type:"button","aria-label":a?.collapseToolbar??"Collapse toolbar",title:a?.collapseToolbar??"Collapse toolbar","data-toolbar-collapse":"true",className:["rlc-toolbar-collapse-btn",s?.toolbarCollapseButton].filter(Boolean).join(" "),onClick:d,style:{...n?{}:o&&r?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",cursor:"pointer",boxShadow:"none",flexShrink:0,whiteSpace:"nowrap"}:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:o?"0":r?"2px 6px":"3px 6px",width:o?"30px":"auto",height:o?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",cursor:"pointer",boxShadow:"none",flexShrink:0},...i?.toolButton,...i?.toolbarCollapseButton},children:o&&r?on(qn,{children:[Se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:Se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",transform:c,transition:"transform 0.15s ease"},children:p})}),Se("span",{style:{whiteSpace:"nowrap"},children:a?.collapseToolbar??"Collapse"}),Se("span",{})]}):Se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",transform:c,transition:"transform 0.15s ease"},children:p})})}function tn({position:e,orientation:t,showToolLabels:o,unstyled:r,activeToolInfo:n,labels:a,icons:l,classNames:s,styles:i,onExpand:d}){return on("button",{type:"button","aria-label":a?.expandToolbar??"Expand toolbar",title:a?.expandToolbar??"Expand toolbar","data-toolbar-expand":"true",className:["rlc-toolbar-expand-btn",s?.toolbarCollapseButton].filter(Boolean).join(" "),onClick:d,style:{...r?{}:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",padding:"3px 7px",borderRadius:"2px",backgroundColor:"#efefef",border:"1px solid #767676",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.15)",color:"#000000",cursor:"pointer",fontSize:"12px",fontWeight:"normal",boxSizing:"border-box"},...i?.toolbarCollapseButton},children:[n.icon,o&&Se("span",{children:n.label}),Se("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.8,transform:Xt(e,t),transition:"transform 0.15s ease"},children:l?.expandToolbar??z.expandToolbar})]})}function $t(e,t,o,r,n){return{...r?{}:t&&o?{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"6px",padding:"8px 10px",flexGrow:1,flexShrink:0,flexBasis:0,width:"auto",height:"auto",minHeight:"28px",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",opacity:e?1:.45,cursor:e?"pointer":"not-allowed",boxShadow:"none",fontSize:"12px",fontWeight:"normal",whiteSpace:"nowrap"}:{padding:t?"0":o?"2px 6px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",opacity:e?1:.45,cursor:e?"pointer":"not-allowed",boxShadow:"none",fontSize:"12px",fontWeight:"normal",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",flexShrink:0},...n?.actionButton,...t&&!o?{padding:"0",width:n?.actionButton?.width??"30px",height:n?.actionButton?.height??"30px"}:void 0,...e?void 0:n?.actionButtonDisabled}}function Vt(e,t,o,r,n,a){return{...r?{}:t&&o?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:e,cursor:"pointer",fontSize:"12px",fontWeight:"normal",whiteSpace:"nowrap",boxShadow:"none",flexShrink:0}:{padding:t?"0":o?"2px 6px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:e,cursor:"pointer",fontSize:"12px",fontWeight:"normal",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",boxShadow:"none",flexShrink:0},...a,...n?.actionButton,...t&&!o?{padding:"0",width:n?.actionButton?.width??"30px",height:n?.actionButton?.height??"30px"}:void 0}}import{Fragment as Ct,jsx as be,jsxs as Ye}from"react/jsx-runtime";function nn({readOnly:e,showHistoryControls:t,showDeleteButton:o,showClearButton:r,showToolLabels:n=!0,selectedItem:a,itemsCount:l,canUndo:s,canRedo:i,undo:d,redo:c,deleteSelected:p,clearAll:b,orientation:g="horizontal",labels:f,icons:u,unstyled:v,classNames:y,styles:x}){let h=g==="vertical";if(!(t||!e&&o&&a||!e&&r&&l>0))return null;let S=(m,w)=>h&&n?Ye(Ct,{children:[be("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:m}),be("span",{style:{whiteSpace:"nowrap"},children:w}),be("span",{})]}):Ye(Ct,{children:[m,n&&be("span",{children:w})]}),M=m=>["rlc-action-btn",m?void 0:"rlc-action-btn-disabled",y?.actionButton,m?void 0:y?.actionButtonDisabled].filter(Boolean).join(" "),E=be("button",{type:"button",title:f?.undo??"Undo","aria-label":f?.undo??"Undo",disabled:!s,className:M(s),onClick:d,style:$t(s,h,n,!!v,x),children:u?.undo??z.undo},"undo"),I=be("button",{type:"button",title:f?.redo??"Redo","aria-label":f?.redo??"Redo",disabled:!i,className:M(i),onClick:c,style:$t(i,h,n,!!v,x),children:u?.redo??z.redo},"redo");return Ye(Ct,{children:[be("div",{className:["rlc-toolbar-divider",y?.toolbarDivider].filter(Boolean).join(" "),style:{...v?{}:h?{width:n?"100%":"18px",height:"1px",backgroundColor:"#767676",margin:n?"3px 0":"3px auto"}:{width:"1px",height:"18px",backgroundColor:"#767676",margin:"0 3px"},...x?.toolbarDivider}}),t&&(h?Ye("div",{style:{display:"flex",flexDirection:n?"row":"column",alignItems:"center",justifyContent:"center",gap:"4px",width:n?"100%":"auto"},children:[E,I]}):Ye(Ct,{children:[E,I]})),!e&&o&&a&&be("button",{type:"button",title:f?.delete??"Delete selected item (Del)","aria-label":f?.delete??"Delete selected item",className:["rlc-action-btn","rlc-delete-btn",y?.actionButton,y?.deleteButton].filter(Boolean).join(" "),onClick:p,style:Vt("#b91c1c",h,n,!!v,x,x?.deleteButton),children:S(u?.delete??z.delete,f?.delete??"Delete")}),!e&&r&&l>0&&be("button",{type:"button",title:f?.clear??"Clear all annotations","aria-label":f?.clear??"Clear all annotations",className:["rlc-action-btn",y?.actionButton].filter(Boolean).join(" "),onClick:b,style:Vt("#000000",h,n,!!v,x),children:S(u?.clear??z.clear,f?.clear??"Clear")})]})}import er from"react";import Zt from"react";import{Fragment as rn,jsx as me,jsxs as Ke}from"react/jsx-runtime";function an({isOpen:e,readOnly:t,isArrowToolActive:o,activeTool:r,arrowOptions:n,arrowGroupLabel:a,currentArrowIcon:l,showToolLabels:s,icons:i,unstyled:d,classNames:c,styles:p,position:b="top-center",orientation:g="horizontal",arrowGroupRef:f,getButtonClassName:u,getButtonStyle:v,onToggle:y,onSelectOption:x}){let[h,C]=Zt.useState(null),S=g==="vertical",M=vt(b,g),E=Ue(e,b,g),I=i?.dropdownChevron??z.dropdownChevron;return Ke("div",{ref:f,className:["rlc-arrow-group",c?.arrowGroupWrapper].filter(Boolean).join(" "),style:{position:"relative",display:S?"flex":"inline-flex",width:S?s?"100%":"30px":"auto",height:S?s?"auto":"30px":"auto",alignItems:"center",justifyContent:"center",boxSizing:"border-box",...p?.arrowGroupWrapper},children:[me("button",{type:"button",disabled:t,"aria-disabled":t||void 0,"aria-pressed":o,"aria-haspopup":"menu","aria-expanded":e,"data-tool":"arrow-group","data-active":o||void 0,title:`${a} \u2014 click to choose arrow type`,className:u(o),onClick:y,style:v(o),children:S&&s?Ke(rn,{children:[me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:l}),me("span",{style:{whiteSpace:"nowrap"},children:a}),me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.9,transform:E,transition:"transform 0.15s ease"},children:I})]}):Ke(rn,{children:[Ke("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:s?"6px":"0px",...S&&!s?{transform:"translate(-1px, -1px)"}:void 0},children:[l,s&&me("span",{children:a})]}),me("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.85,...S&&!s?{position:"absolute",right:"2px",bottom:"2px",width:"8px",height:"8px",lineHeight:0,pointerEvents:"none"}:{marginLeft:s?"6px":"2px"},transform:S&&!s?e?"rotate(180deg)":"rotate(0deg)":E,transition:"transform 0.15s ease"},children:S&&!s&&Zt.isValidElement(I)?Zt.cloneElement(I,{width:"100%",height:"100%",style:{width:"100%",height:"100%",display:"block",...I.props?.style??{}}}):I})]})}),e&&me("div",{role:"menu","aria-label":"Arrow type options",className:["rlc-arrow-dropdown",c?.arrowDropdownMenu].filter(Boolean).join(" "),style:{position:"absolute",zIndex:1020,...M,...d?{}:{minWidth:"190px",display:"flex",flexDirection:"column",gap:"2px",padding:"4px",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"2px 2px 5px rgba(0, 0, 0, 0.25)",color:"inherit",boxSizing:"border-box"},...p?.arrowDropdownMenu},children:n.map(m=>{let w=r===m.id,R=h===m.id;return Ke("button",{type:"button",role:"menuitemradio","aria-checked":w,"data-tool":m.id,"data-active":w||void 0,className:["rlc-arrow-dropdown-item",c?.arrowDropdownItem,w?c?.arrowDropdownItemActive:void 0].filter(Boolean).join(" "),onClick:()=>x(m.id),onPointerEnter:()=>C(m.id),onPointerLeave:()=>C(null),style:{...d?{}:{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",width:"100%",padding:"6px 10px",borderRadius:"2px",border:w?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:w?"#e0e0e0":R?"#e8e8e8":"#efefef",color:"inherit",fontSize:"12px",fontWeight:"normal",cursor:"pointer",textAlign:"left",boxShadow:w?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none"},...p?.arrowDropdownItem,...w?p?.arrowDropdownItemActive:void 0},children:[me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:m.icon}),me("span",{style:{whiteSpace:"nowrap"},children:m.label}),me("span",{style:{fontSize:"11px",opacity:w?.9:.65,fontWeight:500},children:m.shortcut})]},m.id)})})]})}import sn from"react";import Jn from"react";import{jsx as qt,jsxs as Qn}from"react/jsx-runtime";function ln({shapeOptions:e,activeShape:t,isShapeToolActive:o,unstyled:r,classNames:n,styles:a,onSelectShape:l}){let[s,i]=Jn.useState(null);return qt("div",{className:["rlc-shapes-modal-grid",n?.shapesModalGrid].filter(Boolean).join(" "),style:{...r?{}:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"4px",width:"100%",boxSizing:"border-box"},...a?.shapesModalGrid},children:e.map(d=>{let c=o&&t===d.kind,p=s===d.kind;return Qn("button",{type:"button","data-shape":d.kind,"data-active":c||void 0,className:["rlc-shapes-modal-item",n?.shapesModalItem,c?n?.shapesModalItemActive:void 0].filter(Boolean).join(" "),onClick:()=>l(d.kind),onPointerEnter:()=>i(d.kind),onPointerLeave:()=>i(null),style:{...r?{}:{display:"flex",flexDirection:"row",alignItems:"center",gap:"8px",width:"100%",minWidth:0,padding:"6px 8px",borderRadius:"2px",border:c?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:c?"#e0e0e0":p?"#e8e8e8":"#efefef",color:"#000000",fontSize:"12px",fontWeight:c?600:"normal",cursor:"pointer",textAlign:"left",transition:"background-color 0.1s ease",boxShadow:c?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none"},...a?.shapesModalItem,...c?a?.shapesModalItemActive:void 0},children:[qt("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:"18px",height:"18px"},children:d.icon}),qt("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textAlign:"left"},children:d.label})]},d.kind)})})}import{Fragment as dn,jsx as Te,jsxs as Xe}from"react/jsx-runtime";function cn({isOpen:e,readOnly:t,isShapeToolActive:o,activeShape:r,shapeOptions:n,shapesGroupLabel:a,currentShapeIcon:l,showToolLabels:s,labels:i,icons:d,unstyled:c,classNames:p,styles:b,position:g="top-center",orientation:f="horizontal",shapesGroupRef:u,getButtonClassName:v,getButtonStyle:y,onToggle:x,onSelectShape:h}){let C=f==="vertical",S=vt(g,f),M=Ue(e,g,f),E=d?.dropdownChevron??z.dropdownChevron;return Xe("div",{ref:u,className:["rlc-shapes-group",p?.shapesGroupWrapper].filter(Boolean).join(" "),style:{position:"relative",display:C?"flex":"inline-flex",width:C?s?"100%":"30px":"auto",height:C?s?"auto":"30px":"auto",alignItems:"center",justifyContent:"center",boxSizing:"border-box",...b?.shapesGroupWrapper},children:[Te("button",{type:"button",disabled:t,"aria-disabled":t||void 0,"aria-pressed":o,"aria-haspopup":"dialog","aria-expanded":e,"data-tool":"shape-group","data-active":o||void 0,title:`${a} \u2014 open shapes modal`,className:v(o),onClick:x,style:y(o),children:C&&s?Xe(dn,{children:[Te("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:l}),Te("span",{style:{whiteSpace:"nowrap"},children:a}),Te("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.9,transform:M,transition:"transform 0.15s ease"},children:E})]}):Xe(dn,{children:[Xe("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:s?"6px":"0px",...C&&!s?{transform:"translate(-1px, -1px)"}:void 0},children:[l,s&&Te("span",{children:a})]}),Te("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.85,...C&&!s?{position:"absolute",right:"2px",bottom:"2px",width:"8px",height:"8px",lineHeight:0,pointerEvents:"none"}:{marginLeft:s?"6px":"2px"},transform:C&&!s?e?"rotate(180deg)":"rotate(0deg)":M,transition:"transform 0.15s ease"},children:C&&!s&&sn.isValidElement(E)?sn.cloneElement(E,{width:"100%",height:"100%",style:{width:"100%",height:"100%",display:"block",...E.props?.style??{}}}):E})]})}),e&&Xe("div",{role:"dialog","aria-label":i?.shapesModalTitle??"Select a Shape",className:["rlc-shapes-modal",p?.shapesModal].filter(Boolean).join(" "),onKeyDown:I=>{I.key==="Escape"&&(I.stopPropagation(),x())},style:{position:"absolute",zIndex:1020,...S,...c?{}:{width:"240px",maxWidth:"calc(100vw - 24px)",maxHeight:"calc(100vh - 80px)",overflowY:"auto",overflowX:"hidden",padding:"4px",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"2px 2px 5px rgba(0, 0, 0, 0.25)",color:"inherit",boxSizing:"border-box"},...b?.shapesModal},children:[i?.shapesModalTitle&&Te("div",{className:["rlc-shapes-modal-header",p?.shapesModalHeader].filter(Boolean).join(" "),style:{...c?{}:{padding:"2px 4px 4px",fontSize:"11px",fontWeight:600,letterSpacing:"0.04em",color:"#000000",textTransform:"uppercase",borderBottom:"1px solid #767676",marginBottom:"4px"},...b?.shapesModalHeader},children:i.shapesModalTitle}),Te(ln,{shapeOptions:n,activeShape:r,isShapeToolActive:o,unstyled:c,classNames:p,styles:b,onSelectShape:h})]})]})}import{Fragment as Jt,jsx as ye,jsxs as Qt}from"react/jsx-runtime";function pn(e){let{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,enabledTools:s,customTools:i,labels:d,icons:c,unstyled:p,classNames:b,styles:g,arrowOptions:f,shapeOptions:u,arrowGroupLabel:v,currentArrowIcon:y,shapesGroupLabel:x,currentShapeIcon:h,isArrowToolActive:C,isShapeToolActive:S,arrowDropdownOpen:M,shapesModalOpen:E,arrowGroupRef:I,shapesGroupRef:m,setArrowDropdownOpen:w,setShapesModalOpen:R,getButtonClassName:B,getButtonStyle:F}=e,{activeTool:G,setActiveTool:$,activeShape:V,setActiveShape:T}=t,k=(P,O)=>a&&l?Qt(Jt,{children:[ye("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:P}),ye("span",{style:{whiteSpace:"nowrap"},children:O}),ye("span",{})]}):Qt(Jt,{children:[P,l&&ye("span",{children:O})]}),D=(P,O,_,H,K=!1)=>{let Z=G===P;return ye("button",{type:"button",disabled:!K&&o,"aria-disabled":!K&&o?!0:void 0,"aria-pressed":Z,"data-tool":P,"data-active":Z||void 0,title:`${O} (${_})`,className:B(Z),onClick:()=>{!K&&o||($(P),w(!1),R(!1))},style:F(Z),children:k(H,O)},P)};return Qt(Jt,{children:[s.map(P=>P==="select"?D("select",d?.select??"Select","V",c?.select??z.select,!0):P==="freedraw"?D("freedraw",d?.freedraw??"Free Draw","P",c?.freedraw??z.freedraw):P==="ruler"?D("ruler",d?.ruler??"Ruler","R",c?.ruler??z.ruler):P==="note"?D("note",d?.note??"Note Card","N",c?.note??z.note):P==="text"?D("text",d?.text??"Normal Text","T",c?.text??z.text):P==="arrow"?ye(an,{isOpen:M,readOnly:o,isArrowToolActive:C,activeTool:G,arrowOptions:f,arrowGroupLabel:v,currentArrowIcon:y,showToolLabels:l,labels:d,icons:c,unstyled:p,classNames:b,styles:g,position:r,orientation:n,arrowGroupRef:I,getButtonClassName:B,getButtonStyle:F,onToggle:()=>{o||(R(!1),w(O=>!O))},onSelectOption:O=>{$(O),w(!1)}},"arrow"):P==="shape"?ye(cn,{isOpen:E,readOnly:o,isShapeToolActive:S,activeShape:V,shapeOptions:u,shapesGroupLabel:x,currentShapeIcon:h,showToolLabels:l,labels:d,icons:c,unstyled:p,classNames:b,styles:g,position:r,orientation:n,shapesGroupRef:m,getButtonClassName:B,getButtonStyle:F,onToggle:()=>{o||(w(!1),R(O=>!O))},onSelectShape:O=>{T(O),$("shape"),R(!1)}},"shape"):null),i?.map(P=>{if(P.render)return ye(er.Fragment,{children:P.render(t)},P.id);let O=!!P.isActive;return ye("button",{type:"button",disabled:P.disabled,"aria-pressed":O,title:P.title??P.label,className:B(O),onClick:()=>P.onClick?.(t),style:F(O),children:k(P.icon,P.label??"")},P.id)})]})}import{jsx as eo,jsxs as tr}from"react/jsx-runtime";function un(e){let{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,collapsible:s,showCollapseButton:i,enabledTools:d,customTools:c,showHistoryControls:p,showDeleteButton:b,showClearButton:g,labels:f,icons:u,unstyled:v,classNames:y,styles:x,arrowOptions:h,shapeOptions:C,arrowGroupLabel:S,currentArrowIcon:M,shapesGroupLabel:E,currentShapeIcon:I,isArrowToolActive:m,isShapeToolActive:w,arrowDropdownOpen:R,shapesModalOpen:B,arrowGroupRef:F,shapesGroupRef:G,setArrowDropdownOpen:$,setShapesModalOpen:V,getButtonClassName:T,getButtonStyle:k,onCollapse:D}=e;return tr("div",{role:"toolbar","aria-label":"Map annotation tools",className:["rlc-toolbar-primary",y?.toolbarPrimary].filter(Boolean).join(" "),style:{...v?{}:{display:"flex",flexDirection:a?"column":"row",alignItems:a&&l?"stretch":"center",gap:"3px",padding:"3px",boxSizing:"border-box",minWidth:a?l?"auto":"38px":void 0,width:a?l?"auto":"38px":void 0,backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",color:"#000000"},...x?.toolbarPrimary},children:[eo(pn,{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,enabledTools:d,customTools:c,labels:f,icons:u,unstyled:v,classNames:y,styles:x,arrowOptions:h,shapeOptions:C,arrowGroupLabel:S,currentArrowIcon:M,shapesGroupLabel:E,currentShapeIcon:I,isArrowToolActive:m,isShapeToolActive:w,arrowDropdownOpen:R,shapesModalOpen:B,arrowGroupRef:F,shapesGroupRef:G,setArrowDropdownOpen:$,setShapesModalOpen:V,getButtonClassName:T,getButtonStyle:k}),eo(nn,{readOnly:o,showHistoryControls:p,showDeleteButton:b,showClearButton:g,showToolLabels:l,selectedItem:t.selectedItem,itemsCount:t.items.length,canUndo:t.canUndo,canRedo:t.canRedo,undo:t.undo,redo:t.redo,deleteSelected:t.deleteSelected,clearAll:t.clearAll,orientation:n,labels:f,icons:u,unstyled:v,classNames:y,styles:x}),s&&i&&eo(en,{position:r,orientation:n,isVertical:a,showToolLabels:l,unstyled:v,labels:f,icons:u,classNames:y,styles:x,onCollapse:D})]})}import{useEffect as or,useRef as no}from"react";import{jsx as to,jsxs as oo}from"react/jsx-runtime";function wt({label:e,value:t,options:o,onChange:r,control:n,unstyled:a,classNames:l,styles:s,icons:i}){let d=Array.from(new Set([...o,t])).sort((p,b)=>p-b),c=i?.dropdownChevron??z.dropdownChevron;return oo("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[to("span",{style:{fontSize:"12px",color:"inherit"},children:e}),oo("div",{style:{position:"relative",display:"inline-flex",alignItems:"center"},children:[to("select",{"aria-label":e,"data-control":n,value:t,onChange:p=>r(Number(p.target.value)),className:["rlc-toolbar-select",l?.toolbarSelect].filter(Boolean).join(" "),style:{...a?{}:{padding:"1px 16px 1px 4px",borderRadius:"2px",border:"1px solid #767676",backgroundColor:"#efefef",color:"#000000",fontSize:"12px",cursor:"pointer",appearance:"none",WebkitAppearance:"none"},...s?.toolbarSelect},children:d.map(p=>oo("option",{value:p,children:[p,"px"]},p))}),!a&&to("span",{"aria-hidden":"true",style:{position:"absolute",right:"3px",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.7,color:"currentColor"},children:c})]})]})}import{Fragment as ro,jsx as le,jsxs as ke}from"react/jsx-runtime";function fn(e){let{isArrowContext:t,isFreeDrawContext:o,isShapeContext:r,isRulerContext:n,isTextContext:a,isNoteContext:l,selectedItem:s,selectedShape:i,selectedArrow:d,selectedText:c,activeColor:p,setActiveColor:b,strokeWidth:g,setStrokeWidth:f,strokeWidthOptions:u,dashed:v,setDashed:y,shapeFilled:x,setShapeFilled:h,noteColor:C,setNoteColor:S,fontSize:M,setFontSize:E,fontSizeOptions:I,fontWeight:m,setFontWeight:w,updateItem:R,notifyChangeComplete:B,isEditingLabel:F,setEditingLabel:G,strokeColors:$,orientation:V="horizontal",labels:T,icons:k,unstyled:D,classNames:P,styles:O}=e,_=V==="vertical",H=no(null),K=no(null),Z=no(null),q=i?i.labelMode!==!1&&i.hasLabelMode!==!1:!1,oe=d?d.labelMode!==!1&&d.hasLabelMode!==!1:!1;or(()=>{F&&(i&&q&&H.current?(H.current.focus(),H.current.select()):d&&oe&&K.current&&(K.current.focus(),K.current.select()))},[F,i?.id,d?.id,q,oe]);let ne=(W,J=!1)=>({...D?{}:{padding:"2px 6px",borderRadius:"2px",border:W?"1px solid #4f4f4f":"1px solid #767676",backgroundColor:W?"#e0e0e0":"#efefef",color:"#000000",boxShadow:W?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",fontSize:"12px",fontWeight:J?700:void 0,cursor:"pointer"},...O?.actionButton,...W?O?.toolButtonActive:void 0}),j=W=>["rlc-action-btn",P?.actionButton,W?P?.toolButtonActive:void 0].filter(Boolean).join(" "),U=(W="105px")=>({...D?{}:{minWidth:"100px",width:_?"auto":W,flex:_?"1 1 auto":void 0,boxSizing:"border-box",padding:"2px 4px",borderRadius:"2px",border:"1px solid #767676",backgroundColor:"#ffffff",color:"#000000",fontSize:"12px"},...O?.toolbarInput}),L=le("div",{className:["rlc-toolbar-divider",P?.toolbarDivider].filter(Boolean).join(" "),style:{...D?{}:_?{width:"100%",height:"1px",backgroundColor:"#767676"}:{width:"1px",height:"16px",backgroundColor:"#767676"},...O?.toolbarDivider}}),A=!!(s&&(s.type==="arrow"||s.type==="freedraw"||s.type==="shape"||s.type==="ruler")?s.dashed:v),Y=!!(i?i.filled:x),ee=c?c.fontWeight==="bold":(m??"bold")==="bold";return ke("div",{className:["rlc-toolbar-secondary",P?.toolbarSecondary].filter(Boolean).join(" "),style:{...D?{}:{display:"flex",flexDirection:"row",flexWrap:_?"wrap":"nowrap",alignItems:"center",gap:_?"5px":"6px",padding:_?"6px 8px":"3px 6px",width:_?"230px":void 0,maxWidth:_?"230px":"min(92vw, 620px)",overflowX:_?"visible":"auto",scrollbarWidth:"none",boxSizing:"border-box",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",color:"#000000",fontSize:"12px"},...O?.toolbarSecondary},children:[(t||o||r||n||a)&&ke("div",{style:{display:"flex",alignItems:"center",gap:"4px",width:_?"100%":void 0},children:[le("span",{style:{fontSize:"12px",color:"inherit"},children:T?.color??"Color"}),$.map(W=>{let J=(s&&s.type!=="note"?s.color:p)===W;return le("button",{type:"button",title:`${T?.color??"Color"} ${W}`,"data-active":J||void 0,className:["rlc-swatch-btn",P?.swatchButton,J?P?.swatchButtonActive:void 0].filter(Boolean).join(" "),onClick:()=>b(W),style:{backgroundColor:W,...D?{}:{width:"16px",height:"16px",borderRadius:"999px",border:J?"2px solid #000000":"1px solid #767676",boxShadow:J?"0 0 0 1px #000000":"none",cursor:"pointer",padding:0},...O?.swatchButton,...J?O?.swatchButtonActive:void 0}},W)})]}),(t||o||r||n)&&ke(ro,{children:[L,le(wt,{label:T?.width??"Width",control:"stroke-width",value:s&&(s.type==="arrow"||s.type==="freedraw"||s.type==="shape"||s.type==="ruler")?s.strokeWidth:g,options:u??Pt,onChange:f,unstyled:D,classNames:P,styles:O,icons:k}),le("button",{type:"button","data-active":A||void 0,className:j(A),onClick:()=>y(!A),style:ne(A),children:T?.dashed??"Dashed"})]}),r&&ke(ro,{children:[le("button",{type:"button","data-active":Y||void 0,className:j(Y),onClick:()=>h(!Y),style:ne(Y),children:T?.filled??"Fill"}),i&&q&&le("input",{ref:H,type:"text","data-rlc-shape-label-input":i.id,"data-testid":"shape-label-input","data-label-mode":"true","data-editing-label":F?"true":void 0,placeholder:T?.shapeLabelPlaceholder??"Shape label...",value:i.label??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(i.id,{label:W.target.value}),onFocus:()=>G?.(!0),onBlur:W=>{let J=W.relatedTarget;J?.tagName==="INPUT"||J?.tagName==="TEXTAREA"||J?.closest("[data-rlc-toolbar], [data-rlc-inline-shape-label]")||(G?.(!1),B?.(i))},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(i))},style:U()})]}),d&&oe&&le("input",{ref:K,type:"text","data-rlc-arrow-label-input":d.id,"data-testid":"arrow-label-input","data-label-mode":"true","data-editing-label":F?"true":void 0,placeholder:T?.arrowLabelPlaceholder??"Arrow label...",value:d.label??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(d.id,{label:W.target.value}),onFocus:()=>G?.(!0),onBlur:()=>{G?.(!1),B?.(d)},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(d))},style:U()}),a&&ke(ro,{children:[L,le(wt,{label:T?.fontSize??"Size",control:"font-size",value:c?c.initialFontSize??M??16:M??16,options:I??Lt,onChange:W=>E?.(W),unstyled:D,classNames:P,styles:O,icons:k}),le("button",{type:"button","data-active":ee||void 0,title:T?.textBold??"Toggle bold","aria-pressed":ee,className:j(ee),onClick:()=>w?.(ee?"normal":"bold"),style:ne(ee,!0),children:k?.textBold??z.textBold??T?.textBold??"B"}),c&&le("input",{ref:Z,type:"text","data-rlc-text-input":c.id,"data-testid":"text-input","data-editing-label":F?"true":void 0,placeholder:T?.textPlaceholder??"Text...",value:c.text??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(c.id,{text:W.target.value}),onFocus:()=>G?.(!0),onBlur:W=>{let J=W.relatedTarget;J?.tagName==="INPUT"||J?.tagName==="TEXTAREA"||J?.closest("[data-rlc-text], [data-rlc-toolbar]")||(G?.(!1),B?.(c))},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(c))},style:U("120px")})]}),l&&ke("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[le("span",{style:{opacity:.75,fontSize:"11px"},children:T?.noteTheme??"Theme"}),ie.map(W=>{let J=(s?.type==="note"?s.backgroundColor:C)===W.bg;return le("button",{type:"button",title:W.name,"data-active":J||void 0,className:["rlc-swatch-btn",P?.swatchButton,J?P?.swatchButtonActive:void 0].filter(Boolean).join(" "),onClick:()=>S(W.bg),style:{backgroundColor:W.header,...D?{}:{width:"18px",height:"18px",borderRadius:"999px",border:J?"2px solid #111827":`1px solid ${W.border}`,boxShadow:J?"0 0 0 1px #111827":"none",cursor:"pointer",padding:0},...O?.swatchButton,...J?O?.swatchButtonActive:void 0}},W.name)})]})]})}import{useEffect as nr,useRef as hn,useState as mn}from"react";function gn(e,t){let{activeTool:o,selectedItem:r}=e,[n,a]=mn(!1),[l,s]=mn(!1),i=hn(null),d=hn(null);nr(()=>{if(!n&&!l)return;let h=C=>{n&&i.current&&!i.current.contains(C.target)&&a(!1),l&&d.current&&!d.current.contains(C.target)&&s(!1)};return window.addEventListener("pointerdown",h),()=>window.removeEventListener("pointerdown",h)},[n,l]);let c=Qo(o),p=o==="shape",b=c||r?.type==="arrow",g=o==="freedraw"||r?.type==="freedraw",f=p||r?.type==="shape",u=o==="ruler"||r?.type==="ruler",v=o==="note"||r?.type==="note",y=o==="text"||r?.type==="text";return{isArrowToolActive:c,isShapeToolActive:p,isArrowContext:b,isFreeDrawContext:g,isShapeContext:f,isRulerContext:u,isNoteContext:v,isTextContext:y,showSettingsBar:!t&&!n&&!l&&(b||g||f||u||y||v),arrowDropdownOpen:n,setArrowDropdownOpen:a,shapesModalOpen:l,setShapesModalOpen:s,arrowGroupRef:i,shapesGroupRef:d}}import{jsx as St,jsxs as ar}from"react/jsx-runtime";function ao({controller:e,position:t="top-center",orientation:o,collapsible:r=!0,defaultCollapsed:n=!1,collapsed:a,onCollapsedChange:l,showCollapseButton:s=!0,readOnly:i,enabledTools:d=Yo,customTools:c,showHistoryControls:p=!0,showDeleteButton:b=!0,showClearButton:g=!0,showToolLabels:f,labels:u,icons:v,unstyled:y=!1,classNames:x,styles:h,strokeColors:C=fo,strokeWidthOptions:S,fontSizeOptions:M,className:E,style:I}){let m=!!(i??e.readOnly),R=o??(t==="left"||t==="right"||t==="left-center"||t==="right-center"?"vertical":"horizontal"),B=R==="vertical",F=f??!B,[G,$]=rr(n),V=a!==void 0?a:G,T=se=>{a===void 0&&$(se),l?.(se)},{activeTool:k,activeShape:D,selectedItem:P}=e,{isArrowToolActive:O,isShapeToolActive:_,isArrowContext:H,isFreeDrawContext:K,isShapeContext:Z,isRulerContext:q,isNoteContext:oe,isTextContext:ne,showSettingsBar:j,arrowDropdownOpen:U,setArrowDropdownOpen:L,shapesModalOpen:A,setShapesModalOpen:Y,arrowGroupRef:ee,shapesGroupRef:W}=gn(e,m),J=Ko(u,v),ue=Xo(u,v),$e=J.find(se=>se.id===k),lo=u?.arrowGroup??($e?$e.label:"Arrows"),so=v?.arrowGroup??($e?$e.icon:z.arrowLinear),Ve=ue.find(se=>se.kind===D),co=u?.shapesGroup??(_&&Ve?Ve.label:"Shapes"),po=v?.shapesGroup??(_&&Ve?Ve.icon:z.shapesGroup),Dn=qo(k,O,so,lo,po,co,v,u),xe=se=>se.stopPropagation();return V?St("div",{"data-rlc-toolbar":!0,"data-readonly":m||void 0,"data-position":t,"data-orientation":R,"data-collapsed":"true",className:["rlc-toolbar","rlc-toolbar-collapsed",m?"rlc-toolbar-readonly":void 0,x?.toolbar,x?.toolbarCollapsed,E].filter(Boolean).join(" "),onClick:xe,onDoubleClick:xe,onPointerDown:xe,onWheel:xe,style:{position:"absolute",zIndex:1e3,pointerEvents:"auto",userSelect:"none",...Yt[t],...h?.toolbar,...h?.toolbarCollapsed,...I},children:St(tn,{position:t,orientation:R,showToolLabels:F,unstyled:y,activeToolInfo:Dn,labels:u,icons:v,classNames:x,styles:h,onExpand:()=>T(!1)})}):ar("div",{"data-rlc-toolbar":!0,"data-readonly":m||void 0,"data-position":t,"data-orientation":R,className:["rlc-toolbar",m?"rlc-toolbar-readonly":void 0,x?.toolbar,E].filter(Boolean).join(" "),onClick:xe,onDoubleClick:xe,onPointerDown:xe,onWheel:xe,style:{position:"absolute",zIndex:1e3,pointerEvents:"auto",userSelect:"none",...Yt[t],...Zo(t,B,y),...h?.toolbar,...I},children:[St(un,{controller:e,readOnly:m,position:t,orientation:R,isVertical:B,showToolLabels:F,collapsible:r,showCollapseButton:s,enabledTools:d,customTools:c,showHistoryControls:p,showDeleteButton:b,showClearButton:g,labels:u,icons:v,unstyled:y,classNames:x,styles:h,arrowOptions:J,shapeOptions:ue,arrowGroupLabel:lo,currentArrowIcon:so,shapesGroupLabel:co,currentShapeIcon:po,isArrowToolActive:O,isShapeToolActive:_,arrowDropdownOpen:U,shapesModalOpen:A,arrowGroupRef:ee,shapesGroupRef:W,setArrowDropdownOpen:L,setShapesModalOpen:Y,getButtonClassName:se=>Vo(se,x),getButtonStyle:se=>$o(se,B,F,m,y,h),onCollapse:()=>T(!0)}),j&&St(fn,{isArrowContext:H,isFreeDrawContext:K,isShapeContext:Z,isRulerContext:q,isTextContext:ne,isNoteContext:oe,selectedItem:P,selectedShape:P?.type==="shape"?P:null,selectedArrow:P?.type==="arrow"?P:null,selectedText:P?.type==="text"?P:null,activeColor:e.activeColor,setActiveColor:e.setActiveColor,strokeWidth:e.strokeWidth,setStrokeWidth:e.setStrokeWidth,strokeWidthOptions:S,dashed:e.dashed,setDashed:e.setDashed,shapeFilled:e.shapeFilled,setShapeFilled:e.setShapeFilled,noteColor:e.noteColor,setNoteColor:e.setNoteColor,fontSize:e.fontSize,setFontSize:e.setFontSize,fontSizeOptions:M,fontWeight:e.fontWeight,setFontWeight:e.setFontWeight,updateItem:e.updateItem,notifyChangeComplete:e.notifyChangeComplete,isEditingLabel:e.isEditingLabel,setEditingLabel:e.setEditingLabel,strokeColors:C,orientation:R,labels:u,icons:v,unstyled:y,classNames:x,styles:h})]})}import{createPortal as gr}from"react-dom";import{useMap as br}from"react-leaflet";import{jsx as Ie,jsxs as bn}from"react/jsx-runtime";function yn(e){let{map:t,canvasRef:o,viewport:r,isReadOnly:n,isDrawingTool:a,activeTool:l,hoverCursor:s,zIndex:i,className:d,style:c,classNames:p,styles:b,handleInteractionPointerDown:g,handleInteractionPointerMove:f,noteItems:u,textItems:v,selectedId:y,labels:x,icons:h,unstyled:C,clampOverlaysToViewport:S,autoMinimizeNotesZoom:M,autoMinimizeTextZoom:E,renderNote:I,renderText:m,setSelectedId:w,updateItem:R,removeItem:B,notifyChangeComplete:F,renderToolbar:G,showToolbar:$,controller:V,toolbarPosition:T,toolbarOrientation:k,collapsible:D,defaultCollapsed:P,collapsed:O,onCollapsedChange:_,showCollapseButton:H,enabledTools:K,customTools:Z,showHistoryControls:q,showDeleteButton:oe,showClearButton:ne,showToolLabels:j,strokeColors:U,strokeWidthOptions:L,fontSizeOptions:A}=e;return bn("div",{className:["rlc-overlay",n?"rlc-readonly":void 0,p?.overlay,d].filter(Boolean).join(" "),"data-rlc-overlay":!0,"data-readonly":n||void 0,style:{position:"absolute",inset:0,zIndex:i,pointerEvents:"none",overflow:"hidden",...b?.overlay,...c},children:[Ie("canvas",{ref:o,className:["rlc-canvas",p?.canvas].filter(Boolean).join(" "),style:{position:"absolute",inset:0,width:`${r.width}px`,height:`${r.height}px`,pointerEvents:"none",...b?.canvas}}),a&&Ie("div",{"data-rlc-drawing-surface":!0,className:["rlc-drawing-surface",p?.drawingSurface].filter(Boolean).join(" "),onPointerDown:g,onPointerMove:f,style:{position:"absolute",inset:0,pointerEvents:"auto",cursor:l==="text"?"text":"crosshair",...b?.drawingSurface}}),s&&!a&&Ie("style",{children:`.leaflet-container { cursor: ${s} !important; }`}),bn("div",{className:["rlc-items-container",p?.itemsContainer].filter(Boolean).join(" "),style:{position:"absolute",inset:0,pointerEvents:"none",...b?.itemsContainer},children:[u.map(Y=>Ie(Ao,{item:Y,screenPos:Q(t,Y.position),isSelected:!n&&Y.id===y,map:t,readOnly:n,labels:x,icons:h,unstyled:C,classNames:p,styles:b,clampToViewport:S,autoMinimizeZoomThreshold:M,renderNote:I,onSelect:w,onUpdate:R,onDelete:B,onComplete:F},Y.id)),v.map(Y=>Ie(zo,{item:Y,screenPos:Q(t,Y.position),isSelected:!n&&Y.id===y,isEditingLabel:!n&&Y.id===y&&!!V.isEditingLabel,map:t,readOnly:n,labels:x,icons:h,unstyled:C,classNames:p,styles:b,clampToViewport:S,autoMinimizeZoomThreshold:E,renderText:m,onSelect:w,onUpdate:R,onDelete:B,onComplete:F},Y.id)),!$&&V.isEditingLabel&&y&&(()=>{let Y=V.items.find(W=>W.id===y&&W.type==="shape");return!Y||!(Y.labelMode!==!1&&Y.hasLabelMode!==!1)?null:Ie(Co,{shape:Y,map:t,labels:x,onUpdate:R,onClose:()=>{V.setEditingLabel?.(!1),F(Y)}})})()]}),G?G(V):$&&Ie(ao,{controller:V,position:T,orientation:k,collapsible:D,defaultCollapsed:P,collapsed:O,onCollapsedChange:_,showCollapseButton:H,readOnly:n,enabledTools:K,customTools:Z,showHistoryControls:q,showDeleteButton:oe,showClearButton:ne,showToolLabels:j,labels:x,icons:h,unstyled:C,classNames:p,styles:b,strokeColors:U,strokeWidthOptions:L,fontSizeOptions:A})]})}import{useCallback as mr,useRef as Ln}from"react";import{useCallback as ir,useEffect as lr}from"react";function xn({map:e,viewport:t,canvasRef:o,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,draftShape:i,draftArrow:d,draftRuler:c,draftFreeDrawRef:p,activeColor:b,strokeWidth:g,dashed:f,shapeFilled:u,annotationTheme:v,arrowTheme:y,isReadOnly:x}){let h=ir(()=>{ht({map:e,canvas:o.current,width:t.width,height:t.height,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,draftShape:i,draftArrow:d,draftRuler:c,draftFreeDraw:p.current,activeColor:b,strokeWidth:g,dashed:f,shapeFilled:u,annotationTheme:v,arrowTheme:y,isReadOnly:x})},[e,o,t.width,t.height,a,n,r,l,s,i,d,c,p,b,g,f,u,v,y,x]);return lr(()=>{h()},[h,t.tick]),h}import{useEffect as sr}from"react";function vn({isReadOnly:e,selectedId:t,selectedItem:o,items:r,isEditingLabel:n,setEditingLabel:a,deleteSelected:l,setSelectedId:s,setActiveTool:i,setDraftArrow:d,setDraftShape:c,setDraftRuler:p,clearDraftFreeDraw:b,notifyChangeComplete:g}){sr(()=>{if(e)return;let f=u=>{let v=u.target;if(!(v&&(v.tagName==="INPUT"||v.tagName==="TEXTAREA"||v.isContentEditable))){if(u.key==="Escape")d(null),c(null),p?.(null),b(),s(null),i("select"),g?.();else if(u.key==="Delete"||u.key==="Backspace")t&&(u.preventDefault(),l());else if(u.key==="Enter"){let y=o??r?.find(x=>x.id===t);if(y&&y.type==="shape"){let x=y;if(x.labelMode!==!1&&x.hasLabelMode!==!1){u.preventDefault(),a?.(!0);let C=()=>{let S=document.querySelector(`[data-rlc-shape-label-input="${x.id}"], [data-rlc-shape-label-input], input[placeholder*="Shape label"]`);S&&(S.focus(),S.select())};C(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(C),setTimeout(C,0)}}else if(y&&y.type==="text"){u.preventDefault(),a?.(!0);let x=()=>{let h=document.querySelector(`[data-rlc-text="${y.id}"] textarea, [data-rlc-text="${y.id}"] input, [data-rlc-text] textarea`);h&&(h.focus(),"select"in h&&typeof h.select=="function"&&h.select())};x(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(x),setTimeout(x,0)}else if(y&&y.type==="note"){u.preventDefault(),a?.(!0);let x=()=>{let h=document.querySelector(`[data-rlc-note="${y.id}"] textarea, [data-rlc-note="${y.id}"] input, [data-rlc-note] textarea`);h&&h.focus()};x(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(x),setTimeout(x,0)}else if(y&&y.type==="arrow"){let x=y;if(x.labelMode!==!1&&x.hasLabelMode!==!1){u.preventDefault(),a?.(!0);let C=()=>{let S=document.querySelector(`[data-rlc-arrow-label-input="${x.id}"], [data-rlc-arrow-label-input], input[placeholder*="Arrow label"]`);S&&(S.focus(),S.select())};C(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(C),setTimeout(C,0)}}}else if(!u.metaKey&&!u.ctrlKey&&!u.altKey){let y=u.key.toLowerCase();y==="v"?i("select"):y==="p"?i("freedraw"):y==="r"?i("ruler"):y==="a"?i("arrow-linear"):y==="c"?i("arrow-curved"):y==="b"?i("arrow-bi"):y==="e"?i("arrow-elbow"):y==="s"?i("arrow-s-curve"):y==="n"?i("note"):y==="t"&&i("text")}}};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[e,t,o,r,a,l,s,i,d,c,p,b,g])}import{useEffect as dr,useState as cr}from"react";function Cn({map:e,activeTool:t,isReadOnly:o,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,setSelectedId:i,setEditingLabel:d,updateItem:c,notifyChangeComplete:p}){let[b,g]=cr(null);return dr(()=>{if(!e||t!=="select"||o){g(null);return}let f=e.getContainer(),u=h=>{let C=f.getBoundingClientRect();return{x:h.clientX-C.left,y:h.clientY-C.top}},v=h=>{if(h.target?.closest("[data-rlc-toolbar], [data-rlc-note], [data-rlc-text]")){g(null);return}let S=u(h),M=r.find(m=>m.id===s);if(M&&Ne(S,de(e,M),M)){g("crosshair");return}let E=n.find(m=>m.id===s);if(E&&He(S,ae(e,E))){g("nwse-resize");return}let I=l.find(m=>m.id===s);if(I&&je(S,ce(e,I))){g("crosshair");return}for(let m=r.length-1;m>=0;m-=1){let w=r[m];if(Be(S,de(e,w),w)){g("pointer");return}}for(let m=n.length-1;m>=0;m-=1)if(Me(S,ae(e,n[m]))){g("pointer");return}for(let m=a.length-1;m>=0;m-=1){let w=a[m];if(We(S,Pe(e,w),w)){g("pointer");return}}for(let m=l.length-1;m>=0;m-=1){let w=l[m];if(Fe(S,ce(e,w),w)){g("pointer");return}}g(null)},y=h=>{if(h.button!==0||h.target?.closest("[data-rlc-toolbar], [data-rlc-note], [data-rlc-text], .leaflet-control"))return;let S=u(h),M=r.find(m=>m.id===s);if(M){let m=de(e,M),w=Ne(S,m,M);if(w){h.stopPropagation(),h.preventDefault(),lt(e,M,m,w,u,c);return}}let E=n.find(m=>m.id===s);if(E){let m=ae(e,E),w=He(S,m);if(w){h.stopPropagation(),h.preventDefault(),st(e,E,m,w,u,c);return}}let I=l.find(m=>m.id===s);if(I){let m=ce(e,I),w=je(S,m);if(w){h.stopPropagation(),h.preventDefault(),ut(e,I,m,w,u,c);return}}for(let m=r.length-1;m>=0;m-=1){let w=r[m],R=de(e,w);if(Be(S,R,w)){h.stopPropagation(),h.preventDefault(),i(w.id),dt(e,w,R,S,u,c);return}}for(let m=n.length-1;m>=0;m-=1){let w=n[m],R=ae(e,w);if(Me(S,R)){h.stopPropagation(),h.preventDefault(),i(w.id),ct(e,w,R,S,u,c);return}}for(let m=a.length-1;m>=0;m-=1){let w=a[m],R=Pe(e,w);if(We(S,R,w)){h.stopPropagation(),h.preventDefault(),i(w.id),pt(e,w,R,S,u,c);return}}for(let m=l.length-1;m>=0;m-=1){let w=l[m],R=ce(e,w);if(Fe(S,R,w)){h.stopPropagation(),h.preventDefault(),i(w.id),ft(e,w,R,S,u,c);return}}s&&(i(null),p?.())},x=h=>{if(h.target?.closest("[data-rlc-toolbar], [data-rlc-note], [data-rlc-text], .leaflet-control"))return;let S=f.getBoundingClientRect(),M={x:h.clientX-S.left,y:h.clientY-S.top};for(let E=n.length-1;E>=0;E-=1){let I=n[E],m=ae(e,I);if(Me(M,m)){if(h.stopPropagation(),h.preventDefault(),i(I.id),I.labelMode!==!1&&I.hasLabelMode!==!1){d?.(!0);let R=()=>{let B=document.querySelector(`[data-rlc-shape-label-input="${I.id}"], [data-rlc-shape-label-input], input[placeholder*="Shape label"]`);B&&(B.focus(),B.select())};R(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(R),setTimeout(R,0)}return}}};return f.addEventListener("pointermove",v),f.addEventListener("pointerdown",y,{capture:!0}),f.addEventListener("dblclick",x,{capture:!0}),()=>{f.removeEventListener("pointermove",v),f.removeEventListener("pointerdown",y,{capture:!0}),f.removeEventListener("dblclick",x,{capture:!0})}},[e,t,r,n,a,s,i,d,c,o]),b}import{useRef as wn,useState as io}from"react";function Sn({map:e,activeTool:t,setActiveTool:o,activeShape:r,shapeFilled:n,activeColor:a,strokeWidth:l,dashed:s,noteColor:i,fontSize:d,fontWeight:c,labels:p,addItem:b,paintCanvas:g}){let[f,u]=io(null),[v,y]=io(null),[x,h]=io(null),C=wn(null),S=wn(null),M=()=>{C.current=null,S.current!==null&&(window.cancelAnimationFrame(S.current),S.current=null)},E=w=>{if(!e)return{x:0,y:0};let R=e.getContainer().getBoundingClientRect();return{x:w.clientX-R.left,y:w.clientY-R.top}};return{draftArrow:f,setDraftArrow:u,draftShape:v,setDraftShape:y,draftRuler:x,setDraftRuler:h,draftFreeDrawRef:C,clearDraftFreeDraw:M,handleInteractionPointerDown:w=>{if(w.button!==0||!e)return;w.stopPropagation(),w.preventDefault();let R=e.getContainer(),B=E(w),F=X(e,B);if(t==="freedraw"){ze(e,R,B,F,a,l,s,C,S,g,b,o);return}if(t==="shape"){rt(e,R,B,F,r,a,n,l,s,y,b,o);return}if(t==="ruler"){it(e,R,B,F,a,l,s,h,b,o);return}if(t==="note"){b(ot(F,i,p?.noteDefaultTitle)),w.shiftKey||o("select");return}if(t==="text"){let $=typeof e?.getZoom=="function"?e.getZoom():14;b(nt(F,a,d,c,$)),w.shiftKey||o("select");return}let G=Ae[t];if(G){if(f){let $=Q(e,f.startGeo),V=w.shiftKey?re($,B):B;b(Ge(f.arrowStyle,f.startGeo,X(e,V),a,l,s)),u(null),o("select");return}at(e,R,B,F,G,a,l,s,u,b,o)}},handleInteractionPointerMove:w=>{if(!f||!e)return;let R=E(w),B=Q(e,f.startGeo),F=w.shiftKey?re(B,R):R;u(G=>G?{...G,currentGeo:X(e,F)}:null)}}}import{useEffect as pr}from"react";function Tn(e){pr(()=>{if(e)return gt(e)},[e])}import{useEffect as ur,useMemo as fr,useRef as hr}from"react";function Re(e,t){let o=hr([]);return fr(()=>{let r=e.filter(n=>n.type===t);return o.current.length===r.length&&o.current.every((n,a)=>n===r[a])?o.current:(o.current=r,r)},[e,t])}function Pn(e,t,o,r,n,a,l){ur(()=>{if(!e||t)return;let s=i=>{if(i.button!==0)return;let d=i.target;e.getContainer().contains(d)||d?.closest?.("[data-rlc-overlay], [data-rlc-toolbar], [data-rlc-note], [data-rlc-text], .leaflet-control")||(o!=="select"&&r("select"),n&&a(null),l())};return window.addEventListener("pointerdown",s),()=>window.removeEventListener("pointerdown",s)},[e,t,o,r,n,a,l])}function In(e){let{map:t,controller:o,readOnly:r,showToolbar:n,annotationTheme:a,arrowTheme:l,labels:s,...i}=e,d=!!(r??o?.readOnly??!1),c=Ut({...i,readOnly:d}),p=o??c,b=n??!d,g=Ln(i);g.current=i;let f=mr(ue=>{p.notifyChangeComplete(ue),o&&(g.current.onItemsChangeComplete?.(p.items,ue),g.current.onChangeComplete?.(p.items,ue),g.current.onEditEnd?.(p.items,ue),g.current.onEditComplete?.(p.items,ue),ue&&g.current.onItemChangeComplete?.(ue))},[p,o]),{items:u,activeTool:v,setActiveTool:y,activeShape:x,shapeFilled:h,selectedId:C,setSelectedId:S,activeColor:M,strokeWidth:E,dashed:I,noteColor:m,fontSize:w,fontWeight:R,addItem:B,updateItem:F,removeItem:G,deleteSelected:$}=p;Pn(t,d,v,y,C,S,f);let V=Go(t),T=Ln(null),k=Re(u,"arrow"),D=Re(u,"freedraw"),P=Re(u,"shape"),O=Re(u,"ruler"),_=Re(u,"note"),H=Re(u,"text"),{draftArrow:K,setDraftArrow:Z,draftShape:q,setDraftShape:oe,draftRuler:ne,setDraftRuler:j,draftFreeDrawRef:U,clearDraftFreeDraw:L,handleInteractionPointerDown:A,handleInteractionPointerMove:Y}=Sn({map:t,activeTool:v,setActiveTool:y,activeShape:x,shapeFilled:h,activeColor:M,strokeWidth:E,dashed:I,noteColor:m,fontSize:w,fontWeight:R,labels:s,addItem:B,paintCanvas:()=>ee()}),ee=xn({map:t,viewport:V,canvasRef:T,arrowItems:k,shapeItems:P,freeDrawItems:D,rulerItems:O,selectedId:C,draftShape:q,draftArrow:K,draftRuler:ne,draftFreeDrawRef:U,activeColor:M,strokeWidth:E,dashed:I,shapeFilled:h,annotationTheme:a??l,isReadOnly:d});vn({isReadOnly:d,selectedId:C,selectedItem:p.selectedItem,items:p.items,isEditingLabel:p.isEditingLabel,setEditingLabel:p.setEditingLabel,deleteSelected:$,setSelectedId:S,setActiveTool:y,setDraftArrow:Z,setDraftShape:oe,setDraftRuler:j,clearDraftFreeDraw:L,notifyChangeComplete:f}),Tn(t);let W=Cn({map:t,activeTool:v,isReadOnly:d,arrowItems:k,shapeItems:P,freeDrawItems:D,rulerItems:O,selectedId:C,setSelectedId:S,setEditingLabel:p.setEditingLabel,updateItem:F,notifyChangeComplete:f});return{controller:p,isReadOnly:d,showToolbar:b,viewport:V,canvasRef:T,isDrawingTool:!d&&v!=="select",hoverCursor:W,arrowItems:k,shapeItems:P,freeDrawItems:D,noteItems:_,textItems:H,selectedId:C,setSelectedId:S,updateItem:F,removeItem:G,notifyChangeComplete:f,handleInteractionPointerDown:A,handleInteractionPointerMove:Y}}import{jsx as Tt}from"react/jsx-runtime";function yr(e){let t=br();return Tt(Rn,{...e,map:t})}function xr(e){return e.map!==void 0?Tt(Rn,{...e,map:e.map}):Tt(yr,{...e})}function Rn(e){let{map:t,toolbarPosition:o="top-center",toolbarOrientation:r,orientation:n,collapsible:a,defaultCollapsed:l,collapsed:s,onCollapsedChange:i,showCollapseButton:d,enabledTools:c,customTools:p,showHistoryControls:b,showDeleteButton:g,showClearButton:f,showToolLabels:u,labels:v,icons:y,zIndex:x=650,unstyled:h=!1,classNames:C,styles:S,strokeColors:M,strokeWidthOptions:E,fontSizeOptions:I,renderToolbar:m,renderNote:w,renderText:R,clampOverlaysToViewport:B=!0,autoMinimizeNotesZoom:F,autoMinimizeTextZoom:G,className:$,style:V}=e,T=In(e);return t?gr(Tt(yn,{map:t,canvasRef:T.canvasRef,viewport:T.viewport,isReadOnly:T.isReadOnly,isDrawingTool:T.isDrawingTool,activeTool:T.controller.activeTool,hoverCursor:T.hoverCursor,zIndex:x,className:$,style:V,classNames:C,styles:S,handleInteractionPointerDown:T.handleInteractionPointerDown,handleInteractionPointerMove:T.handleInteractionPointerMove,noteItems:T.noteItems,textItems:T.textItems,selectedId:T.selectedId,labels:v,icons:y,unstyled:h,clampOverlaysToViewport:B,autoMinimizeNotesZoom:F,autoMinimizeTextZoom:G,renderNote:w,renderText:R,setSelectedId:T.setSelectedId,updateItem:T.updateItem,removeItem:T.removeItem,notifyChangeComplete:T.notifyChangeComplete,renderToolbar:m,showToolbar:T.showToolbar,controller:T.controller,toolbarPosition:o,toolbarOrientation:r??n,collapsible:a,defaultCollapsed:l,collapsed:s,onCollapsedChange:i,showCollapseButton:d,enabledTools:c,customTools:p,showHistoryControls:b,showDeleteButton:g,showClearButton:f,showToolLabels:u,strokeColors:M,strokeWidthOptions:E,fontSizeOptions:I}),t.getContainer()):null}export{ao as CanvasToolbar,Tr as DEFAULT_ANNOTATION_THEME,Qe as DEFAULT_FONT_SIZE,Lt as DEFAULT_FONT_SIZE_OPTIONS,Je as DEFAULT_NOTE_BG,wr as DEFAULT_NOTE_TEXT,Ze as DEFAULT_STROKE_COLOR,qe as DEFAULT_STROKE_WIDTH,Pt as DEFAULT_STROKE_WIDTH_OPTIONS,Sr as FONT_SIZE_OPTIONS,Co as InlineShapeLabelEditor,xr as LeafletCanvas,ie as NOTE_COLOR_THEMES,Ao as NoteOverlay,wt as PixelSelect,fo as STROKE_COLORS,Cr as STROKE_WIDTH_OPTIONS,Ae as TOOL_TO_ARROW_STYLE,zo as TextOverlay,wa as VERSION,gt as bindBlockMapDblClick,mt as bindLeafletSync,Ge as buildArrowItem,En as buildRulerItem,Rt as calculateGeodesicDistance,Lr as calculateLineDistance,bo as calculateZoomFontSize,$r as clampNotePosition,qr as clampTextPosition,et as computeDefaultControlGeoPoint,re as constrainAngleTo45Degrees,Oe as constrainToAspectRatio,ot as createDraftNote,nt as createDraftText,ve as createId,kn as createLeafletCanvas,Bt as createLeafletCanvasController,xa as createLeafletTual,ca as createLeafletTualController,mo as distanceToQuadraticBezier,fe as distanceToSegment,Dt as drawArrowHead,he as drawCanvasHandle,De as drawCanvasLabelPill,yo as formatRealWorldDistance,Q as geoToScreen,Kt as getCollapseChevronRotation,Ue as getDropdownChevronRotation,Xt as getExpandChevronRotation,Ce as getMapDimensions,It as getQuadraticBezierPoint,tt as getQuadraticEndAngle,Be as hitTestArrow,Ne as hitTestArrowHandle,We as hitTestFreeDraw,Fe as hitTestRuler,je as hitTestRulerHandle,Me as hitTestShape,He as hitTestShapeHandle,ht as paintLeafletCanvas,de as projectArrow,Pe as projectFreeDraw,ce as projectRuler,ae as projectShape,Et as renderArrowOnCanvas,kt as renderFreeDrawOnCanvas,Nt as renderRulerOnCanvas,Ot as renderShapeOnCanvas,Xr as resolveNoteTheme,X as screenToGeo,dt as startArrowBodyDrag,at as startArrowDrag,lt as startArrowHandleDrag,pt as startFreeDrawBodyDrag,ze as startFreeDrawDrag,ft as startRulerBodyDrag,it as startRulerDrag,ut as startRulerHandleDrag,ct as startShapeBodyDrag,rt as startShapeDrag,st as startShapeHandleDrag,Mt as traceArrowPath,At as tracePolygonShape,go as truncateCanvasText,Ut as useLeafletCanvas,Go as useLeafletSync,ki as useLeafletTual};
2
+ var co={name:"leaflet-tual",version:"1.0.0",description:"Framework-agnostic interactive canvas and annotation toolkit for Leaflet maps \u2014 draw arrows, shapes, freehand sketches, rulers, notes, and text pinned to geo-coordinates. Optional React bindings.",type:"module",sideEffects:!1,main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"},default:"./dist/index.js"},"./core":{types:"./dist/index.d.ts",import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"},default:"./dist/index.js"},"./react":{types:"./dist/react.d.ts",import:{types:"./dist/react.d.ts",default:"./dist/react.js"},require:{types:"./dist/react.d.cts",default:"./dist/react.cjs"},default:"./dist/react.js"},"./package.json":"./package.json"},files:["dist","README.md"],author:"Yusuf Arslan",license:"MIT",repository:{type:"git",url:"git+https://github.com/yusufarsln98/leaflet-tual.git",directory:"packages/leaflet-tual"},bugs:{url:"https://github.com/yusufarsln98/leaflet-tual/issues"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},keywords:["leaflet","leaflet-tual","tual","tuval","canvas","annotation","map-tools","arrows","notes","gis","overlay","framework-agnostic","vanilla-js","react","react-leaflet"],scripts:{build:"tsup",dev:"tsup --watch",lint:"eslint src --ext ts,tsx",typecheck:"tsc --noEmit",format:'prettier --write "src/**/*.{ts,tsx}"',"format:check":'prettier --check "src/**/*.{ts,tsx}"',test:"vitest run","test:watch":"vitest",version:"changeset version",release:"npm run build && changeset publish"},peerDependencies:{leaflet:"^1.9.0",react:"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0","react-leaflet":"^4.0.0 || ^5.0.0"},peerDependenciesMeta:{react:{optional:!0},"react-dom":{optional:!0},"react-leaflet":{optional:!0}},devDependencies:{"@changesets/cli":"^2.27.1","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.2.0","@types/leaflet":"^1.9.16","@types/node":"^22.13.0","@types/react":"^19.0.0","@types/react-dom":"^19.0.0",eslint:"^9.20.0","eslint-plugin-react-hooks":"^5.1.0",jsdom:"^26.0.0",leaflet:"^1.9.4",prettier:"^3.5.0",react:"^19.0.0","react-dom":"^19.0.0","react-leaflet":"^5.0.0",tsup:"^8.5.1",typescript:"^5.7.0","typescript-eslint":"^8.24.0",vitest:"^3.0.0"}};var Ae={"arrow-linear":"linear","arrow-curved":"curved","arrow-bi":"bi","arrow-elbow":"elbow","arrow-s-curve":"s-curve"},po=["#000000","#4b5563","#2563eb","#dc2626","#16a34a","#d97706","#9333ea","#0891b2"],ie=[{name:"Amber",bg:"#fef9c3",border:"#fde047",header:"#fef08a",text:"#422006"},{name:"Sky",bg:"#e0f2fe",border:"#7dd3fc",header:"#bae6fd",text:"#0c4a6e"},{name:"Emerald",bg:"#dcfce7",border:"#86efac",header:"#bbf7d0",text:"#064e3b"},{name:"Rose",bg:"#ffe4e6",border:"#fda4af",header:"#fecdd3",text:"#881337"},{name:"Violet",bg:"#f3e8ff",border:"#d8b4fe",header:"#e9d5ff",text:"#3b0764"},{name:"Dark Slate",bg:"#1e293b",border:"#334155",header:"#0f172a",text:"#f8fafc"},{name:"Midnight",bg:"#111827",border:"#374151",header:"#030712",text:"#f9fafb"}],Ze="#000000",qe=2,Pt=[1,2,3,4,5,6,8,10,12],wr=Pt,Je="#fef9c3",Tr="#422006",Qe=16,Lt=[10,12,14,16,18,20,24,28,32,36,40,48],Sr=Lt,vr={selectionGlowColor:"rgba(0, 0, 0, 0.2)",selectionGlowWidth:6,guideLineDash:[4,4],guideLineColor:"rgba(100, 100, 100, 0.6)",guideLineWidth:1.2,endpointHandleColor:"#4f4f4f",controlHandleColor:"#4f4f4f",handleFillColor:"#ffffff",handleRadius:5,handleStrokeWidth:2,shadowColor:"rgba(0, 0, 0, 0.2)",shadowBlur:3,shadowOffsetY:1.5,labelBackgroundColor:"#ffffff",labelTextColor:"#000000",labelFont:"12px system-ui, -apple-system, sans-serif",labelBorderWidth:1,labelBorderRadius:2,labelPaddingX:6,labelPaddingY:18,shapeDefaultFillOpacity:.16,shapeBorderRadius:0};var uo=0;function we(e="rlc"){uo+=1;let t=Math.random().toString(36).slice(2,8);return`${e}-${Date.now().toString(36)}-${uo}-${t}`}function Q(e,t){let o=e.latLngToContainerPoint([t.lat,t.lng]);return{x:o.x,y:o.y}}function X(e,t){let o=e.containerPointToLatLng([t.x,t.y]);return{lat:o.lat,lng:o.lng}}function Oe(e,t,o=1){let r=o>0?o:1,n=t.x-e.x,a=t.y-e.y,l=Math.abs(n),s=Math.abs(a),i=n>=0?1:-1,d=a>=0?1:-1;return l/r>=s?{x:e.x+i*l,y:e.y+d*(l/r)}:{x:e.x+i*(s*r),y:e.y+d*s}}function re(e,t){let o=t.x-e.x,r=t.y-e.y,n=Math.hypot(o,r);if(n===0)return t;let a=Math.atan2(r,o),l=Math.PI/4,s=Math.round(a/l)*l;return{x:e.x+Math.cos(s)*n,y:e.y+Math.sin(s)*n}}function et(e,t,o=.25){let r=(e.lat+t.lat)/2,n=(e.lng+t.lng)/2,a=t.lat-e.lat,l=t.lng-e.lng;return{lat:r+l*o,lng:n-a*o}}function It(e,t,o,r){let n=1-r;return{x:n*n*e.x+2*n*r*t.x+r*r*o.x,y:n*n*e.y+2*n*r*t.y+r*r*o.y}}function tt(e,t,o){let r=o.x-t.x,n=o.y-t.y;return Math.hypot(r,n)<.001?Math.atan2(o.y-e.y,o.x-e.x):Math.atan2(n,r)}function fe(e,t,o){let r=(o.x-t.x)**2+(o.y-t.y)**2;if(r===0)return Math.hypot(e.x-t.x,e.y-t.y);let n=((e.x-t.x)*(o.x-t.x)+(e.y-t.y)*(o.y-t.y))/r;n=Math.max(0,Math.min(1,n));let a=t.x+n*(o.x-t.x),l=t.y+n*(o.y-t.y);return Math.hypot(e.x-a,e.y-l)}function fo(e,t,o,r,n=24){let a=1/0,l=t;for(let s=1;s<=n;s+=1){let i=It(t,o,r,s/n),d=fe(e,l,i);d<a&&(a=d),l=i}return a}function Te(e){if(!e)return null;try{let t=e.getSize?.();if(t&&t.x>0&&t.y>0)return{width:t.x,height:t.y}}catch{}try{let t=e.getContainer?.()?.getBoundingClientRect?.();if(t&&t.width>0&&t.height>0)return{width:t.width,height:t.height}}catch{}return null}function ho(e,t,o){if(!t||o<=0)return"";if(e.measureText(t).width<=o)return t;let r="\u2026";if(e.measureText(r).width>=o)return"";let n=0,a=t.length,l="";for(;n<=a;){let s=Math.floor((n+a)/2),i=t.slice(0,s)+r;e.measureText(i).width<=o?(l=i,n=s+1):a=s-1}return l||r}function mo(e=16,t,o=14,r){if(t===null||typeof t!="number")return e;let n=r?.scaleFactor??1.22,a=r?.min??9,l=r?.max??72,s=e*Math.pow(n,t-o);return Math.round(Math.max(a,Math.min(l,s)))}function Rt(e,t){let r=(t.lat-e.lat)*Math.PI/180,n=(t.lng-e.lng)*Math.PI/180,a=e.lat*Math.PI/180,l=t.lat*Math.PI/180,s=Math.sin(r/2),i=Math.sin(n/2),d=s*s+Math.cos(a)*Math.cos(l)*i*i;return 6371e3*(2*Math.atan2(Math.sqrt(d),Math.sqrt(1-d)))}function go(e,t="metric"){if(t==="imperial"){let r=e*3.28084;if(r<1e3)return`${Math.round(r)} ft`;let n=r/5280;return`${n>=10?n.toFixed(1):n.toFixed(2)} mi`}if(e<1e3)return`${Math.round(e)} m`;let o=e/1e3;return`${o>=10?o.toFixed(1):o.toFixed(2)} km`}function Pr(e){let t=0;for(let o=0;o<e.length-1;o+=1)t+=Rt(e[o],e[o+1]);return t}function he(e,t,o,r,n,a=2){e.save(),e.beginPath(),e.arc(t.x,t.y,n,0,Math.PI*2),e.fillStyle=r,e.fill(),e.lineWidth=a,e.strokeStyle=o,e.stroke(),e.restore()}function De(e,t,o,r,n,a,l){e.save(),e.font=l?.labelFont??"12px system-ui, -apple-system, sans-serif";let s=l?.labelPaddingX??6,i=Math.max(10,a-s*2),d=ho(e,t,i);if(d){let c=e.measureText(d),p=Math.round(c.width+s*2),b=l?.labelPaddingY??18,g=Math.round(o-p/2),f=Math.round(r-b/2),u=l?.labelBorderRadius??2;l?.labelShadowColor&&(e.shadowColor=l.labelShadowColor,e.shadowBlur=l.labelShadowBlur??3),e.fillStyle=l?.labelBackgroundColor??"#ffffff",e.strokeStyle=l?.labelBorderColor??n,e.lineWidth=l?.labelBorderWidth??1,e.beginPath(),typeof e.roundRect=="function"?e.roundRect(g,f,p,b,u):e.rect(g,f,p,b),e.fill(),e.stroke(),e.fillStyle=l?.labelTextColor??"#000000",e.textAlign="center",e.textBaseline="middle",e.fillText(d,o,r)}e.restore()}function Dt(e,t,o,r,n,a=!0){let l=Math.PI/6.5,s=t.x-r*Math.cos(o-l),i=t.y-r*Math.sin(o-l),d=t.x-r*Math.cos(o+l),c=t.y-r*Math.sin(o+l);e.save(),e.setLineDash([]),e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(s,i),a?(e.lineTo(d,c),e.closePath(),e.fillStyle=n,e.fill()):(e.moveTo(t.x,t.y),e.lineTo(d,c),e.strokeStyle=n,e.lineWidth=Math.max(2,r/4.5),e.lineCap="round",e.stroke()),e.restore()}function Mt(e,t,o){let{start:r,end:n,control:a}=t;if(e.moveTo(r.x,r.y),o==="curved")e.quadraticCurveTo(a.x,a.y,n.x,n.y);else if(o==="elbow")e.lineTo(a.x,r.y),e.lineTo(a.x,n.y),e.lineTo(n.x,n.y);else if(o==="s-curve"){let l=n.x-r.x,s=n.y-r.y;e.bezierCurveTo(r.x+l*.5,r.y,r.x+l*.5,r.y+s,n.x,n.y)}else e.lineTo(n.x,n.y)}function de(e,t){let o=Q(e,t.start),r=Q(e,t.end),n=t.arrowStyle==="curved"||t.arrowStyle==="s-curve",a=t.controlPoint?t.controlPoint:n?et(t.start,t.end):{lat:(t.start.lat+t.end.lat)/2,lng:(t.start.lng+t.end.lng)/2},l=Q(e,a);return{start:o,end:r,control:l}}function Et(e,t,o,r={}){let{start:n,end:a,control:l}=t,s=Math.hypot(a.x-n.x,a.y-n.y);if(s<2)return;let i=r.theme,d=Math.max(12,o.strokeWidth*3.8),c=Math.atan2(a.y-n.y,a.x-n.x),p=Math.atan2(n.y-a.y,n.x-a.x);if(o.arrowStyle==="curved")c=tt(n,l,a),p=tt(a,l,n);else if(o.arrowStyle==="elbow"){let f=a.x-l.x,u=a.y-n.y;c=Math.abs(f)>1?Math.atan2(0,f):Math.atan2(u,0);let w=n.x-l.x;p=Math.abs(w)>1?Math.atan2(0,w):Math.atan2(-u,0)}else if(o.arrowStyle==="s-curve"){let f=a.x-n.x;c=tt(n,{x:n.x+f*.5,y:a.y},a)}e.save(),r.isPreview&&(e.globalAlpha=.85),r.isSelected&&(e.save(),e.beginPath(),Mt(e,t,o.arrowStyle),e.strokeStyle=i?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(i?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=i?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=i?.shadowBlur??3,e.shadowOffsetY=i?.shadowOffsetY??1.5,e.beginPath(),Mt(e,t,o.arrowStyle),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round";let b=!!(o.dashed||o.arrowStyle==="dashed");e.setLineDash(b?[o.strokeWidth*3,o.strokeWidth*2]:[]),e.stroke();let g=o.headStyle??(o.arrowStyle==="bi"?"both":"triangle");if(g!=="none"&&(Dt(e,a,c,d,o.color,g!=="open"),g==="both"&&Dt(e,n,p,d,o.color,!0)),e.restore(),o.label){let f=typeof i?.labelMinShapeSize=="number"?i.labelMinShapeSize:24;if(f<=0||s>=f){let u=o.arrowStyle==="curved"?It(n,l,a,.5):o.arrowStyle==="elbow"?{x:l.x,y:(n.y+a.y)/2}:{x:(n.x+a.x)/2,y:(n.y+a.y)/2},w=i?.fitLabelsToShape!==!1,y=i?.labelMaxTextWidth??(w?Math.max(48,Math.min(280,s*1.6)):1/0);De(e,o.label,Math.round(u.x),Math.round(u.y),o.color,y,i)}}if(r.isSelected){let f=i?.handleRadius??5,u=i?.handleFillColor??"#ffffff",w=i?.endpointHandleColor??"#4f4f4f",y=i?.controlHandleColor??"#767676",x=i?.handleStrokeWidth??2;(o.arrowStyle==="curved"||o.arrowStyle==="elbow")&&(e.save(),e.beginPath(),e.setLineDash(i?.guideLineDash?[...i.guideLineDash]:[4,4]),e.moveTo(n.x,n.y),e.lineTo(l.x,l.y),e.lineTo(a.x,a.y),e.strokeStyle=i?.guideLineColor??"rgba(100, 100, 100, 0.6)",e.lineWidth=i?.guideLineWidth??1.2,e.stroke(),e.restore(),he(e,l,y,u,f+.5,x)),he(e,n,w,u,f,x),he(e,a,w,u,f,x)}e.restore()}function Ne(e,t,o,r=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=r?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=r?"start":(o.arrowStyle==="curved"||o.arrowStyle==="elbow")&&Math.hypot(e.x-t.control.x,e.y-t.control.y)<=r?"control":null}function Be(e,t,o,r=9){let n=Math.max(r,o.strokeWidth/2+6);if(o.arrowStyle==="curved")return fo(e,t.start,t.control,t.end)<=n;if(o.arrowStyle==="elbow"){let a={x:t.control.x,y:t.start.y},l={x:t.control.x,y:t.end.y};return fe(e,t.start,a)<=n||fe(e,a,l)<=n||fe(e,l,t.end)<=n}return fe(e,t.start,t.end)<=n}function Pe(e,t){return t.points.map(o=>Q(e,o))}function bo(e,t){if(t.length===0)return;if(e.moveTo(t[0].x,t[0].y),t.length===1){e.lineTo(t[0].x+.5,t[0].y+.5);return}if(t.length===2){e.lineTo(t[1].x,t[1].y);return}for(let r=1;r<t.length-1;r+=1){let n=(t[r].x+t[r+1].x)/2,a=(t[r].y+t[r+1].y)/2;e.quadraticCurveTo(t[r].x,t[r].y,n,a)}let o=t[t.length-1];e.lineTo(o.x,o.y)}function kt(e,t,o,r={}){if(t.length===0)return;let n=r.theme;e.save(),r.isPreview&&(e.globalAlpha=.9),r.isSelected&&(e.save(),e.beginPath(),bo(e,t),e.strokeStyle=n?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(n?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=n?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=n?.shadowBlur??3,e.shadowOffsetY=n?.shadowOffsetY??1,e.beginPath(),bo(e,t),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round",o.dashed?e.setLineDash([o.strokeWidth*3,o.strokeWidth*2]):e.setLineDash([]),e.stroke(),e.restore(),e.restore()}function We(e,t,o,r=9){if(t.length===0)return!1;let n=Math.max(r,o.strokeWidth/2+6);if(t.length===1)return Math.hypot(e.x-t[0].x,e.y-t[0].y)<=n;let a=1/0,l=1/0,s=-1/0,i=-1/0;for(let d=0;d<t.length;d+=1){let c=t[d];c.x<a&&(a=c.x),c.y<l&&(l=c.y),c.x>s&&(s=c.x),c.y>i&&(i=c.y)}if(e.x<a-n||e.x>s+n||e.y<l-n||e.y>i+n)return!1;for(let d=0;d<t.length-1;d+=1)if(fe(e,t[d],t[d+1])<=n)return!0;return!1}function At(e,t,o,r){let{minX:n,minY:a,maxX:l,maxY:s,width:i,height:d,cx:c,cy:p}=t;if(o==="square"){let b=r?.shapeBorderRadius??0;b>0&&typeof e.roundRect=="function"?e.roundRect(n,a,i,d,b):e.rect(n,a,i,d);return}if(o==="circle"){e.ellipse(c,p,i/2,d/2,0,0,Math.PI*2);return}if(o==="triangle"){e.moveTo(c,a),e.lineTo(l,s),e.lineTo(n,s),e.closePath();return}if(o==="diamond"){e.moveTo(c,a),e.lineTo(l,p),e.lineTo(c,s),e.lineTo(n,p),e.closePath();return}if(o==="hexagon"){let b=i/2,g=d/2;for(let f=0;f<6;f+=1){let u=Math.PI/3*f-Math.PI/6,w=c+b*Math.cos(u),y=p+g*Math.sin(u);f===0?e.moveTo(w,y):e.lineTo(w,y)}e.closePath();return}if(o==="star"){let g=i/2,f=d/2,u=g*.42,w=f*.42;for(let y=0;y<10;y+=1){let x=y%2===0?g:u,h=y%2===0?f:w,T=y*Math.PI/5-Math.PI/2,v=c+x*Math.cos(T),M=p+h*Math.sin(T);y===0?e.moveTo(v,M):e.lineTo(v,M)}e.closePath();return}if(o==="marker"||o==="cloud"){let b=i/2,g=d*.36,f=a+g;e.moveTo(c,s),e.bezierCurveTo(n+i*.05,a+d*.7,n,a+d*.5,n,f),e.ellipse(c,f,b,g,0,Math.PI,0,!1),e.bezierCurveTo(l,a+d*.5,l-i*.05,a+d*.7,c,s),e.closePath();let u=b*.35,w=g*.35;u>=2.5&&w>=2.5&&(e.moveTo(c+u,f),e.ellipse(c,f,u,w,0,Math.PI*2,0,!0),e.closePath());return}if(o==="actor"){let b=Math.min(i,d)*.16,g=a+b+d*.04,f=g+b,u=a+d*.64,w=a+d*.42,y=i*.36,x=i*.32;e.moveTo(c+b,g),e.arc(c,g,b,0,Math.PI*2),e.closePath(),e.moveTo(c,f),e.lineTo(c,u),e.moveTo(c-y,w),e.lineTo(c+y,w),e.moveTo(c,u),e.lineTo(c-x,s),e.moveTo(c,u),e.lineTo(c+x,s)}}function ae(e,t){let o=Q(e,t.start),r=Q(e,t.end),n=Math.min(o.x,r.x),a=Math.min(o.y,r.y),l=Math.max(o.x,r.x),s=Math.max(o.y,r.y),i=Math.max(4,l-n),d=Math.max(4,s-a);return{start:o,end:r,minX:n,minY:a,maxX:l,maxY:s,width:i,height:d,cx:n+i/2,cy:a+d/2}}function Ot(e,t,o,r={}){if(t.width<4&&t.height<4)return;let n=r.theme;if(e.save(),r.isPreview&&(e.globalAlpha=.85),r.isSelected&&(e.save(),e.beginPath(),At(e,t,o.shape,n),e.strokeStyle=n?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(n?.selectionGlowWidth??6),e.lineCap="round",e.lineJoin="round",e.stroke(),e.restore()),e.save(),e.shadowColor=n?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=n?.shadowBlur??3,e.shadowOffsetY=n?.shadowOffsetY??1.5,e.beginPath(),At(e,t,o.shape,n),o.filled){let a=n?.shapeDefaultFillOpacity??.16,l=Math.round(Math.min(1,Math.max(0,a))*255).toString(16).padStart(2,"0");e.fillStyle=o.fillColor??`${o.color}${l}`,e.fill()}if(e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",e.lineJoin="round",e.setLineDash(o.dashed?[o.strokeWidth*3,o.strokeWidth*2]:[]),e.stroke(),e.restore(),o.label){let a=typeof n?.labelMinShapeSize=="number"?n.labelMinShapeSize:18;if(a<=0||Math.max(t.width,t.height)>=a&&t.width>=8&&t.height>=8){let l=o.shape==="actor"?t.maxY+14:t.cy,s=n?.fitLabelsToShape!==!1,i=n?.labelMaxTextWidth??(s?Math.max(48,Math.min(280,t.width*2.2)):1/0);De(e,o.label,Math.round(t.cx),Math.round(l),o.color,i,n)}}if(r.isSelected){let a=n?.handleRadius??5,l=n?.handleFillColor??"#ffffff",s=n?.endpointHandleColor??"#4f4f4f",i=n?.handleStrokeWidth??2;e.save(),e.setLineDash(n?.guideLineDash?[...n.guideLineDash]:[4,4]),e.strokeStyle=n?.guideLineColor??"rgba(100, 100, 100, 0.6)",e.lineWidth=n?.guideLineWidth??1.2,e.strokeRect(t.minX,t.minY,t.width,t.height),e.restore(),he(e,t.start,s,l,a,i),he(e,t.end,s,l,a,i)}e.restore()}function He(e,t,o=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=o?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=o?"start":null}function Me(e,t,o=8){return e.x>=t.minX-o&&e.x<=t.maxX+o&&e.y>=t.minY-o&&e.y<=t.maxY+o}function ce(e,t){let o=Q(e,t.start),r=Q(e,t.end),n={x:(o.x+r.x)/2,y:(o.y+r.y)/2},a=Math.hypot(r.x-o.x,r.y-o.y),l=Math.atan2(r.y-o.y,r.x-o.x);return{start:o,end:r,mid:n,lengthPx:a,angle:l}}function Nt(e,t,o,r={}){let{start:n,end:a,mid:l,lengthPx:s,angle:i}=t;if(s<2)return;let d=r.theme;e.save(),r.isPreview&&(e.globalAlpha=.9),r.isSelected&&(e.save(),e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y),e.strokeStyle=d?.selectionGlowColor??"rgba(0, 0, 0, 0.2)",e.lineWidth=o.strokeWidth+(d?.selectionGlowWidth??6),e.lineCap="round",e.stroke(),e.restore()),e.save(),e.shadowColor=d?.shadowColor??"rgba(0, 0, 0, 0.2)",e.shadowBlur=d?.shadowBlur??3,e.shadowOffsetY=d?.shadowOffsetY??1.5,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y),e.strokeStyle=o.color,e.lineWidth=o.strokeWidth,e.lineCap="round",o.dashed?e.setLineDash([o.strokeWidth*3,o.strokeWidth*2]):e.setLineDash([]),e.stroke();let c=i+Math.PI/2,p=Math.max(7,o.strokeWidth*3.2),b=Math.cos(c)*p,g=Math.sin(c)*p;e.beginPath(),e.setLineDash([]),e.moveTo(n.x-b,n.y-g),e.lineTo(n.x+b,n.y+g),e.moveTo(a.x-b,a.y-g),e.lineTo(a.x+b,a.y+g),e.stroke(),e.restore();let f=Rt(o.start,o.end),u=o.label?o.label:go(f,o.unit);if(u){let w=d?.fitLabelsToShape!==!1,y=d?.labelMaxTextWidth??(w?Math.max(50,Math.min(300,s*1.5)):1/0);De(e,u,Math.round(l.x),Math.round(l.y),o.color,y,d)}if(r.isSelected){let w=d?.handleRadius??5,y=d?.handleFillColor??"#ffffff",x=d?.endpointHandleColor??"#4f4f4f",h=d?.handleStrokeWidth??2;he(e,n,x,y,w,h),he(e,a,x,y,w,h)}e.restore()}function je(e,t,o=11){return Math.hypot(e.x-t.end.x,e.y-t.end.y)<=o?"end":Math.hypot(e.x-t.start.x,e.y-t.start.y)<=o?"start":null}function Fe(e,t,o,r=9){let n=Math.max(r,o.strokeWidth/2+6);return fe(e,t.start,t.end)<=n}function Kr(e){let t=ie.find(r=>r.bg===e);if(t)return t;let o=e?.startsWith("#")&&e.length===7&&parseInt(e.slice(1),16)<8947848||e==="#111827"||e==="#1e293b"||e==="#0f172a";return{name:"Custom",bg:e,border:o?"rgba(255, 255, 255, 0.16)":"rgba(0, 0, 0, 0.12)",header:o?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.06)",text:o?"#f8fafc":"#0f172a"}}function Xr(e,t,o,r,n,a=!0){let l=a!==!1?Te(e):null;if(!l||n||!(t.x>=-120&&t.x<=l.width+120&&t.y>=-120&&t.y<=l.height+120))return t;let i=r?95:o.width??230,d=r?22:o.height??100,c=8,p=16+c,b=Math.max(p,l.width-i+16-c),g=12+c,f=Math.max(g,l.height-d+12-c);return{x:Math.max(p,Math.min(b,t.x)),y:Math.max(g,Math.min(f,t.y))}}function Zr(e,t,o,r,n,a,l=!0){let s=l!==!1?Te(e):null;if(!s||a||!(t.x>=-100&&t.x<=s.width+100&&t.y>=-100&&t.y<=s.height+100))return t;let d=n?35:Math.max(24,(o.text||"Text").length*r/3.6),c=n?11:r/2+4,p=8,b=d+p,g=Math.max(b,s.width-d-p),f=c+p,u=Math.max(f,s.height-c-p);return{x:Math.max(b,Math.min(g,t.x)),y:Math.max(f,Math.min(u,t.y))}}function ze(e,t,o,r,n,a,l,s,i,d,c,p){s.current={screenPoints:[o],geoPoints:[r]},e.dragging.disable(),d();let b=f=>{if(!s.current)return;let u=t.getBoundingClientRect(),w={x:f.clientX-u.left,y:f.clientY-u.top},y=s.current.screenPoints,x=y[y.length-1];Math.hypot(w.x-x.x,w.y-x.y)<2.5||(y.push(w),s.current.geoPoints.push(X(e,w)),i.current===null&&(i.current=window.requestAnimationFrame(()=>{i.current=null,d()})))},g=f=>{window.removeEventListener("pointermove",b),window.removeEventListener("pointerup",g),e.dragging.enable(),i.current!==null&&(window.cancelAnimationFrame(i.current),i.current=null);let u=s.current;s.current=null,u&&u.geoPoints.length>=1?(c({id:we("freedraw"),type:"freedraw",points:u.geoPoints,color:n,strokeWidth:a,dashed:l,createdAt:Date.now()}),f.shiftKey||p("select")):d()};window.addEventListener("pointermove",b),window.addEventListener("pointerup",g)}function ot(e,t,o="Field Note"){let r=ie.find(n=>n.bg===t)??ie[0];return{id:we("note"),type:"note",position:e,title:o,text:"",backgroundColor:r.bg,textColor:r.text,width:230,createdAt:Date.now()}}function nt(e,t,o,r,n){return{id:we("text"),type:"text",position:e,text:"",color:t,initialFontSize:o,baseZoom:n,fontWeight:r,createdAt:Date.now()}}function rt(e,t,o,r,n,a,l,s,i,d,c,p){d({shape:n,startGeo:r,currentGeo:r}),e.dragging.disable();let b=f=>{let u=t.getBoundingClientRect(),w={x:f.clientX-u.left,y:f.clientY-u.top},y=f.shiftKey?Oe(o,w,1):w;d({shape:n,startGeo:r,currentGeo:X(e,y)})},g=f=>{window.removeEventListener("pointermove",b),window.removeEventListener("pointerup",g),e.dragging.enable();let u=t.getBoundingClientRect(),w={x:f.clientX-u.left,y:f.clientY-u.top},y=f.shiftKey?Oe(o,w,1):w,x=Math.hypot(w.x-o.x,w.y-o.y),h=x>=10?r:X(e,{x:o.x-45,y:o.y-45}),T=x>=10?X(e,y):X(e,{x:o.x+45,y:o.y+45});c({id:we("shape"),type:"shape",shape:n,start:h,end:T,color:a,filled:l,strokeWidth:s,dashed:i,createdAt:Date.now()}),d(null),p("select")};window.addEventListener("pointermove",b),window.addEventListener("pointerup",g)}function Ge(e,t,o,r,n,a){return{id:we("arrow"),type:"arrow",arrowStyle:e,start:t,end:o,controlPoint:e==="curved"?et(t,o):e==="elbow"?{lat:(t.lat+o.lat)/2,lng:(t.lng+o.lng)/2}:void 0,color:r,strokeWidth:n,dashed:a,headStyle:e==="bi"?"both":"triangle",createdAt:Date.now()}}function at(e,t,o,r,n,a,l,s,i,d,c){i({arrowStyle:n,startGeo:r,currentGeo:r}),e.dragging.disable();let p=g=>{let f=t.getBoundingClientRect(),u={x:g.clientX-f.left,y:g.clientY-f.top},w=g.shiftKey?re(o,u):u;i({arrowStyle:n,startGeo:r,currentGeo:X(e,w)})},b=g=>{window.removeEventListener("pointermove",p),window.removeEventListener("pointerup",b),e.dragging.enable();let f=t.getBoundingClientRect(),u={x:g.clientX-f.left,y:g.clientY-f.top},w=g.shiftKey?re(o,u):u;Math.hypot(u.x-o.x,u.y-o.y)>=8&&(d(Ge(n,r,X(e,w),a,l,s)),i(null),c("select"))};window.addEventListener("pointermove",p),window.addEventListener("pointerup",b)}function En(e,t,o,r,n){return{id:we("ruler"),type:"ruler",start:e,end:t,color:o,strokeWidth:r,dashed:n,unit:"metric",createdAt:Date.now()}}function it(e,t,o,r,n,a,l,s,i,d){s({startGeo:r,currentGeo:r}),e.dragging.disable();let c=b=>{let g=t.getBoundingClientRect(),f={x:b.clientX-g.left,y:b.clientY-g.top},u=b.shiftKey?re(o,f):f;s({startGeo:r,currentGeo:X(e,u)})},p=b=>{window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",p),e.dragging.enable();let g=t.getBoundingClientRect(),f={x:b.clientX-g.left,y:b.clientY-g.top},u=b.shiftKey?re(o,f):f;Math.hypot(f.x-o.x,f.y-o.y)>=8&&(i(En(r,X(e,u),n,a,l)),s(null),d("select"))};window.addEventListener("pointermove",c),window.addEventListener("pointerup",p)}function Le(e,t){e.dragging.disable();let o=()=>{e.dragging.enable(),window.removeEventListener("pointermove",t),window.removeEventListener("pointerup",o)};window.addEventListener("pointermove",t),window.addEventListener("pointerup",o)}function lt(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=l.shiftKey;if(r==="start"){let d=i?re(o.end,s):s;a(t.id,{start:X(e,d)})}else if(r==="end"){let d=i?re(o.start,s):s;a(t.id,{end:X(e,d)})}else r==="control"&&a(t.id,{controlPoint:X(e,s)})})}function st(e,t,o,r,n,a){let l=r==="start"?o.end:o.start,s=o.width>4&&o.height>4?o.width/o.height:1;Le(e,i=>{let d=n(i),c=i.shiftKey?Oe(l,d,s):d,p=X(e,c);a(t.id,r==="start"?{start:p}:{end:p})})}function dt(e,t,o,r,n,a){let l=o.start,s=o.end,i=o.control,d=!!t.controlPoint;Le(e,c=>{let p=n(c),b=p.x-r.x,g=p.y-r.y,f={start:X(e,{x:l.x+b,y:l.y+g}),end:X(e,{x:s.x+b,y:s.y+g})};(t.arrowStyle==="curved"||t.arrowStyle==="elbow")&&d&&(f.controlPoint=X(e,{x:i.x+b,y:i.y+g})),a(t.id,f)})}function ct(e,t,o,r,n,a){let l=o.start,s=o.end;Le(e,i=>{let d=n(i),c=d.x-r.x,p=d.y-r.y;a(t.id,{start:X(e,{x:l.x+c,y:l.y+p}),end:X(e,{x:s.x+c,y:s.y+p})})})}function pt(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=s.x-r.x,d=s.y-r.y;a(t.id,{points:o.map(c=>X(e,{x:c.x+i,y:c.y+d}))})})}function ut(e,t,o,r,n,a){Le(e,l=>{let s=n(l),i=l.shiftKey;if(r==="start"){let d=i?re(o.end,s):s;a(t.id,{start:X(e,d)})}else if(r==="end"){let d=i?re(o.start,s):s;a(t.id,{end:X(e,d)})}})}function ft(e,t,o,r,n,a){let l=o.start,s=o.end;Le(e,i=>{let d=n(i),c=d.x-r.x,p=d.y-r.y;a(t.id,{start:X(e,{x:l.x+c,y:l.y+p}),end:X(e,{x:s.x+c,y:s.y+p})})})}function ht({map:e,canvas:t,width:o,height:r,arrowItems:n,shapeItems:a,freeDrawItems:l,rulerItems:s,selectedId:i,draftShape:d,draftArrow:c,draftRuler:p,draftFreeDraw:b,activeColor:g,strokeWidth:f,dashed:u,shapeFilled:w,annotationTheme:y,arrowTheme:x,isReadOnly:h}){if(!e||!t||o===0||r===0)return;let T=y??x,v=typeof window<"u"&&window.devicePixelRatio||1,M=Math.round(o*v),E=Math.round(r*v);t.width!==M&&(t.width=M),t.height!==E&&(t.height=E);let I=t.getContext("2d");if(I){I.save(),typeof I.scale=="function"&&I.scale(v,v),I.clearRect(0,0,o,r);for(let m of l){let S=Pe(e,m);kt(I,S,m,{isSelected:!h&&m.id===i,theme:T})}for(let m of a){let S=ae(e,m);Ot(I,S,m,{isSelected:!h&&m.id===i,theme:T})}for(let m of n){let S=de(e,m);Et(I,S,m,{isSelected:!h&&m.id===i,theme:T})}for(let m of s){let S=ce(e,m);Nt(I,S,m,{isSelected:!h&&m.id===i,theme:T})}if(!h&&b&&b.screenPoints.length>0&&kt(I,b.screenPoints,{color:g,strokeWidth:f,dashed:u},{isPreview:!0,theme:T}),!h&&d){let m={id:"draft-shape",type:"shape",shape:d.shape,start:d.startGeo,end:d.currentGeo,color:g,filled:w,strokeWidth:f,dashed:u,createdAt:0},S=ae(e,m);Ot(I,S,m,{isPreview:!0,isSelected:!0,theme:T})}if(!h&&c){let m={id:"draft-arrow",type:"arrow",arrowStyle:c.arrowStyle,start:c.startGeo,end:c.currentGeo,color:g,strokeWidth:f,dashed:u,createdAt:0},S=de(e,m);Et(I,S,m,{isPreview:!0,isSelected:!0,theme:T})}if(!h&&p){let m={id:"draft-ruler",type:"ruler",start:p.startGeo,end:p.currentGeo,color:g,strokeWidth:f,dashed:u,unit:"metric",createdAt:0},S=ce(e,m);Nt(I,S,m,{isPreview:!0,isSelected:!0,theme:T})}I.restore()}}function mt(e,t){let o=()=>{let r=e.getSize();t({width:r.x,height:r.y})};return o(),e.on("move",o),e.on("zoom",o),e.on("zoomanim",o),e.on("viewreset",o),e.on("resize",o),()=>{e.off("move",o),e.off("zoom",o),e.off("zoomanim",o),e.off("viewreset",o),e.off("resize",o)}}function gt(e){let t=e.getContainer();if(!t)return()=>{};let o=n=>{let a=n.target;if(!a?.closest?.("[data-tual-overlay], input, textarea, select, button, .rlc-overlay"))return;let l=Object.prototype.hasOwnProperty.call(a,"_leaflet_disable_events"),s=a._leaflet_disable_events;a._leaflet_disable_events=!0;let i=!!e.doubleClickZoom?.enabled?.();i&&e.doubleClickZoom.disable(),setTimeout(()=>{l?a._leaflet_disable_events=s:delete a._leaflet_disable_events,i&&e.doubleClickZoom.enable()},0)},r=n=>{if(n.target?.closest?.("textarea, input, select, button, [data-tual-note-resize], .rlc-note-resize-handle")&&e.dragging?.enabled?.()){e.dragging.disable();let l=()=>{e.dragging.enable(),window.removeEventListener("mouseup",l,!0),window.removeEventListener("touchend",l,!0),window.removeEventListener("pointerup",l,!0)};window.addEventListener("mouseup",l,{capture:!0,once:!0}),window.addEventListener("touchend",l,{capture:!0,once:!0}),window.addEventListener("pointerup",l,{capture:!0,once:!0})}};return t.addEventListener("dblclick",o,!0),t.addEventListener("mousedown",r,!0),t.addEventListener("touchstart",r,!0),()=>{t.removeEventListener("dblclick",o,!0),t.removeEventListener("mousedown",r,!0),t.removeEventListener("touchstart",r,!0)}}function yo(e={}){let t=Math.max(0,(e.maxHistory??50)-1),o=[],r=e.items??e.initialItems??[],n=[],a=r,l=e.initialTool??"select",s=!!(e.readOnly??!1),i=null,d=!1,c=e.defaultShape??"square",p=!0,b=e.defaultColor??Ze,g=e.defaultStrokeWidth??qe,f=!1,u=e.defaultNoteColor??Je,w=e.defaultFontSize??Qe,y="bold",x=new Set,h=()=>{for(let L of x)L(U)},T=L=>{e.onItemsChange?.(L),e.onChange?.(L)},v=(L,A)=>{e.onItemsChangeComplete?.(L,A),e.onChangeComplete?.(L,A),e.onEditEnd?.(L,A),e.onEditComplete?.(L,A),A&&e.onItemChangeComplete?.(A)},M=L=>{let A=L(r);return r=A,T(A),h(),A},E=L=>{if(r===a)return;let A=a;a=r,o=[...o,A].slice(-t),n=[],v(r,L),h()},I=L=>{if(i!==L){let A=i;i=L,d=!1,A!==null&&L===null&&E(),e.onItemSelect?.(r.find(Y=>Y.id===L)??null),h()}},m=L=>{s&&L!=="select"||(l=L,e.onToolChange?.(L),h())},S=L=>{s=!!L,s&&l!=="select"&&(l="select"),h()},R=(L,A)=>{i&&M(Y=>Y.map(ee=>ee.id===i&&L(ee)?A(ee):ee))},B=L=>{s||(c=L,R(A=>A.type==="shape",A=>({...A,shape:L})),h())},F=L=>{s||(p=L,R(A=>A.type==="shape",A=>({...A,filled:L})),h())},G=L=>{s||(b=L,R(A=>A.type!=="note",A=>({...A,color:L})),h())},$=L=>{s||(g=L,R(A=>A.type==="arrow"||A.type==="freedraw"||A.type==="shape"||A.type==="ruler",A=>({...A,strokeWidth:L})),h())},V=L=>{s||(f=L,R(A=>A.type==="arrow"||A.type==="freedraw"||A.type==="shape"||A.type==="ruler",A=>({...A,dashed:L})),h())},C=L=>{if(s)return;u=L;let A=ie.find(Y=>Y.bg===L);R(Y=>Y.type==="note",Y=>({...Y,backgroundColor:L,textColor:A?.text??Y.textColor})),h()},k=L=>{s||(w=L,R(A=>A.type==="text",A=>({...A,initialFontSize:L})),h())},D=L=>{s||(y=L,R(A=>A.type==="text",A=>({...A,fontWeight:L})),h())},P=L=>{d=L,h()},O=L=>{s||(M(A=>[...A,L]),I(L.id),e.onItemCreate?.(L))},_=(L,A)=>{if(s){let ee=Object.keys(A);if(ee.length!==1||ee[0]!=="minimized")return}let Y;M(ee=>ee.map(W=>W.id===L?(Y={...W,...A},Y):W)),Y&&e.onItemChange?.(Y)},H=L=>{s||(M(A=>A.filter(Y=>Y.id!==L)),i===L&&I(null),e.onItemDelete?.(L),E())},K=()=>{!s&&i&&H(i)},Z=()=>{s||(M(()=>[]),I(null),E())},U={get items(){return r},get activeTool(){return l},setActiveTool:m,get readOnly(){return s},setReadOnly:S,get activeShape(){return c},setActiveShape:B,get shapeFilled(){return p},setShapeFilled:F,get selectedId(){return i},setSelectedId:I,get selectedItem(){return r.find(L=>L.id===i)??null},get isEditingLabel(){return d},setEditingLabel:P,get labelEditMode(){return d},setLabelEditMode:P,get activeColor(){return b},setActiveColor:G,get strokeWidth(){return g},setStrokeWidth:$,get dashed(){return f},setDashed:V,get noteColor(){return u},setNoteColor:C,get fontSize(){return w},setFontSize:k,get fontWeight(){return y},setFontWeight:D,addItem:O,updateItem:_,removeItem:H,deleteSelected:K,clearAll:Z,clear:Z,deleteItem:H,setTool:m,selectItem:I,undo:()=>{if(s||o.length===0)return;let L=o[o.length-1];n=[r,...n],o=o.slice(0,-1),r=L,a=L,T(L),v(L,null),h()},redo:()=>{if(s||n.length===0)return;let L=n[0];o=[...o,r],n=n.slice(1),r=L,a=L,T(L),v(L,null),h()},get canUndo(){return!s&&o.length>0},get canRedo(){return!s&&n.length>0},notifyChangeComplete:E,exportJSON:()=>JSON.stringify(r,null,2),importJSON:L=>{if(s)return!1;try{let A=JSON.parse(L);return Array.isArray(A)?(M(()=>A),I(null),E(),!0):!1}catch{return!1}},subscribe(L){return x.add(L),()=>{x.delete(L)}},getState(){return U},destroy(){x.clear()}};return U}function ba(e,t={}){let{controller:o,annotationTheme:r,arrowTheme:n,labels:a,zIndex:l=650,...s}=t,i=o??yo(s),d=e.getContainer(),c=document.createElement("div");c.setAttribute("data-tual-overlay","true"),c.style.position="absolute",c.style.inset="0",c.style.pointerEvents="none",c.style.zIndex=String(l),c.style.overflow="hidden";let p=document.createElement("canvas");p.style.position="absolute",p.style.top="0",p.style.left="0",p.style.pointerEvents="none";let b=document.createElement("div");b.style.position="absolute",b.style.inset="0",b.style.pointerEvents="none",c.appendChild(p),c.appendChild(b),d.appendChild(c);let g={width:0,height:0},f=null,u=null,w=null,y={current:null},x={current:null},h=C=>{f=C,I()},T=C=>{u=C,I()},v=C=>{w=C,I()},M=()=>{y.current=null,x.current!==null&&typeof window<"u"&&(window.cancelAnimationFrame(x.current),x.current=null)},E=()=>{let C=!i.readOnly&&i.activeTool!=="select";b.style.pointerEvents=C?"auto":"none",b.style.cursor=C?"crosshair":"default",p.style.width=`${g.width}px`,p.style.height=`${g.height}px`},I=()=>{E();let C=i.items;ht({map:e,canvas:p,width:g.width,height:g.height,arrowItems:C.filter(k=>k.type==="arrow"),shapeItems:C.filter(k=>k.type==="shape"),freeDrawItems:C.filter(k=>k.type==="freedraw"),rulerItems:C.filter(k=>k.type==="ruler"),selectedId:i.selectedId,draftShape:u,draftArrow:f,draftRuler:w,draftFreeDraw:y.current,activeColor:i.activeColor,strokeWidth:i.strokeWidth,dashed:i.dashed,shapeFilled:i.shapeFilled,annotationTheme:r,arrowTheme:n,isReadOnly:i.readOnly})},m=C=>{let k=d.getBoundingClientRect();return{x:C.clientX-k.left,y:C.clientY-k.top}},S=C=>{if(C.button!==0||i.readOnly)return;C.stopPropagation(),C.preventDefault();let k=m(C),D=X(e,k),{activeTool:P,activeShape:O,shapeFilled:_,activeColor:H,strokeWidth:K,dashed:Z,noteColor:q,fontSize:oe,fontWeight:ne}=i;if(P==="freedraw"){ze(e,d,k,D,H,K,Z,y,x,I,i.addItem,i.setActiveTool);return}if(P==="shape"){rt(e,d,k,D,O,H,_,K,Z,T,i.addItem,i.setActiveTool);return}if(P==="note"){i.addItem(ot(D,q,a?.noteDefaultTitle??"Field Note")),i.setActiveTool("select");return}if(P==="text"){i.addItem(nt(D,H,oe,ne,e.getZoom?.()??14)),i.setActiveTool("select");return}if(P==="ruler"){it(e,d,k,D,H,K,Z,v,i.addItem,i.setActiveTool);return}let j=Ae[P];if(j)if(!f)at(e,d,k,D,j,H,K,Z,h,i.addItem,i.setActiveTool);else{let U=Q(e,f.startGeo),L=C.shiftKey?re(U,k):k;Math.hypot(L.x-U.x,L.y-U.y)>=4&&i.addItem(Ge(f.arrowStyle,f.startGeo,X(e,L),H,K,Z)),h(null),i.setActiveTool("select")}},R=C=>{if(!f)return;let k=m(C),D=Q(e,f.startGeo),P=C.shiftKey?re(D,k):k;h({...f,currentGeo:X(e,P)})},B=C=>{if(C.button!==0||i.readOnly||i.activeTool!=="select"||C.target?.closest("[data-tual-toolbar], [data-tual-note], [data-tual-text], .leaflet-control"))return;let D=m(C),P=i.items,O=P.filter(j=>j.type==="arrow"),_=P.filter(j=>j.type==="shape"),H=P.filter(j=>j.type==="freedraw"),K=P.filter(j=>j.type==="ruler"),Z=i.selectedId,q=O.find(j=>j.id===Z);if(q){let j=de(e,q),U=Ne(D,j,q);if(U){C.stopPropagation(),C.preventDefault(),lt(e,q,j,U,m,i.updateItem);return}}let oe=_.find(j=>j.id===Z);if(oe){let j=ae(e,oe),U=He(D,j);if(U){C.stopPropagation(),C.preventDefault(),st(e,oe,j,U,m,i.updateItem);return}}let ne=K.find(j=>j.id===Z);if(ne){let j=ce(e,ne),U=je(D,j);if(U){C.stopPropagation(),C.preventDefault(),ut(e,ne,j,U,m,i.updateItem);return}}for(let j=O.length-1;j>=0;j-=1){let U=O[j],L=de(e,U);if(Be(D,L,U)){C.stopPropagation(),C.preventDefault(),i.setSelectedId(U.id),dt(e,U,L,D,m,i.updateItem);return}}for(let j=_.length-1;j>=0;j-=1){let U=_[j],L=ae(e,U);if(Me(D,L)){C.stopPropagation(),C.preventDefault(),i.setSelectedId(U.id),ct(e,U,L,D,m,i.updateItem);return}}for(let j=H.length-1;j>=0;j-=1){let U=H[j],L=Pe(e,U);if(We(D,L,U)){C.stopPropagation(),C.preventDefault(),i.setSelectedId(U.id),pt(e,U,L,D,m,i.updateItem);return}}for(let j=K.length-1;j>=0;j-=1){let U=K[j],L=ce(e,U);if(Fe(D,L,U)){C.stopPropagation(),C.preventDefault(),i.setSelectedId(U.id),ft(e,U,L,D,m,i.updateItem);return}}Z&&(i.setSelectedId(null),i.notifyChangeComplete())},F=C=>{if(i.readOnly)return;let k=C.target;k&&(k.tagName==="INPUT"||k.tagName==="TEXTAREA"||k.isContentEditable)||(C.key==="Escape"?(f=null,u=null,w=null,M(),i.setSelectedId(null),i.setActiveTool("select"),i.notifyChangeComplete(),I()):(C.key==="Delete"||C.key==="Backspace")&&i.selectedId&&(C.preventDefault(),i.deleteSelected()))};b.addEventListener("pointerdown",S),b.addEventListener("pointermove",R),d.addEventListener("pointerdown",B,{capture:!0}),typeof window<"u"&&window.addEventListener("keydown",F);let G=mt(e,C=>{g=C,I()}),$=gt(e),V=i.subscribe(()=>{I()});return I(),{controller:i,container:c,canvas:p,repaint:I,destroy(){b.removeEventListener("pointerdown",S),b.removeEventListener("pointermove",R),d.removeEventListener("pointerdown",B,{capture:!0}),typeof window<"u"&&window.removeEventListener("keydown",F),M(),G(),$(),V(),o||i.destroy(),c.remove()}}}var wa=co.version;import{useEffect as kn,useRef as An,useState as On}from"react";import{jsx as xo}from"react/jsx-runtime";function wo({shape:e,map:t,labels:o,onUpdate:r,onClose:n}){let[a,l]=On(e.label??""),s=An(null);kn(()=>{s.current?.focus(),s.current?.select()},[]);let i=ae(t,e),d=Math.round(i.cx),c=Math.round(e.shape==="actor"?i.maxY+14:i.cy);return xo("div",{"data-tual-inline-shape-label":!0,style:{position:"absolute",left:`${d}px`,top:`${c}px`,transform:"translate(-50%, -50%)",zIndex:1e3,pointerEvents:"auto"},onClick:p=>p.stopPropagation(),onPointerDown:p=>p.stopPropagation(),children:xo("input",{ref:s,type:"text","data-tual-shape-label-input":e.id,"data-testid":"inline-shape-label-input","data-label-mode":"true",placeholder:o?.shapeLabelPlaceholder??"Shape label...",value:a,onChange:p=>{l(p.target.value),r(e.id,{label:p.target.value})},onBlur:n,onKeyDown:p=>{(p.key==="Enter"||p.key==="Escape")&&(p.preventDefault(),n())},style:{minWidth:"100px",padding:"2px 6px",borderRadius:"4px",border:"1px solid #2563eb",backgroundColor:"#ffffff",color:"#000000",fontSize:"12px",boxShadow:"0 2px 6px rgba(0, 0, 0, 0.25)",outline:"none"}})})}import jn,{useEffect as Eo,useRef as Wt,useState as Fn}from"react";function To(e){let t=ie.find(r=>r.bg===e);if(t)return t;let o=e?.startsWith("#")&&e.length===7&&parseInt(e.slice(1),16)<8947848||e==="#111827"||e==="#1e293b"||e==="#0f172a";return{name:"Custom",bg:e,border:o?"rgba(255, 255, 255, 0.16)":"rgba(0, 0, 0, 0.12)",header:o?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.06)",text:o?"#f8fafc":"#0f172a"}}function So(e,t,o,r,n,a=!0){let l=a!==!1?Te(e):null;if(!l||n||!(t.x>=-120&&t.x<=l.width+120&&t.y>=-120&&t.y<=l.height+120))return t;let i=r?95:o.width??230,d=r?22:o.height??100,c=8,p=16+c,b=Math.max(p,l.width-i+16-c),g=12+c,f=Math.max(g,l.height-d+12-c);return{x:Math.max(p,Math.min(b,t.x)),y:Math.max(g,Math.min(f,t.y))}}function vo(e,t,o,r,n,a,l){return l?{transform:"translate(-16px, -12px)"}:o?{transform:"translate(-16px, -12px)",width:"auto",minWidth:"24px",maxWidth:"130px",height:"22px",boxSizing:"border-box",backgroundColor:e.backgroundColor,color:e.textColor||t.text,border:`1px solid ${!n&&r?"#4b5563":t.border}`,borderRadius:"9999px",overflow:"hidden",boxShadow:!n&&r?"0 2px 6px rgba(0, 0, 0, 0.25)":"0 1px 3px rgba(0, 0, 0, 0.12)",fontFamily:"Inter, system-ui, -apple-system, sans-serif",display:"inline-flex",alignItems:"center",padding:"0 8px",gap:"4px",cursor:n?"default":a?"grabbing":"grab",transition:"none"}:{transform:"translate(-16px, -12px)",width:`${e.width??230}px`,boxSizing:"border-box",backgroundColor:e.backgroundColor,color:e.textColor||t.text,border:`1px solid ${!n&&r?"#4b5563":t.border}`,borderRadius:"2px",overflow:"hidden",boxShadow:!n&&r?"0 2px 6px rgba(0, 0, 0, 0.2)":"0 1px 3px rgba(0, 0, 0, 0.12)",fontFamily:"Inter, system-ui, -apple-system, sans-serif",transition:"none"}}import{useEffect as Nn,useRef as bt,useState as Bn}from"react";function Co(e){let{e:t,item:o,map:r,cardRef:n,textareaRef:a,onSelect:l,onUpdate:s,onComplete:i}=e;t.stopPropagation(),t.preventDefault(),l(o.id),n.current&&(n.current.style.transition="none",n.current.setAttribute("data-resizing","true"));let d=t.currentTarget,c=t.pointerId;try{d?.setPointerCapture?.(c)}catch{}let p=t.clientX,b=t.clientY,g=o.width??230,f=o.height??a.current?.offsetHeight??62;r.dragging.disable();let u=null,w=g,y=f,x=!1,h=typeof process<"u"&&process.env?.NODE_ENV==="test",T=()=>{u=null;let E={width:w};(x||o.height!==void 0)&&(E.height=y),s(o.id,E)},v=E=>{let I=E.clientX-p,m=E.clientY-b;w=Math.max(160,Math.min(600,Math.round(g+I))),y=Math.max(50,Math.min(800,Math.round(f+m))),m!==0&&(x=!0),n.current&&(n.current.style.width=`${w}px`),a.current&&(x||o.height!==void 0)&&(a.current.style.height=`${y}px`),h?T():u===null&&(u=requestAnimationFrame(T))},M=()=>{u!==null&&cancelAnimationFrame(u),n.current&&(n.current.style.transition="none",n.current.removeAttribute("data-resizing")),r.dragging.enable();try{d?.releasePointerCapture?.(c)}catch{}let E={width:w};(x||o.height!==void 0)&&(E.height=y),s(o.id,E),i?.(),window.removeEventListener("pointermove",v),window.removeEventListener("pointerup",M),window.removeEventListener("pointercancel",M)};window.addEventListener("pointermove",v),window.addEventListener("pointerup",M),window.addEventListener("pointercancel",M)}function Po({item:e,screenPos:t,map:o,readOnly:r,isCompact:n,cardRef:a,textareaRef:l,onSelect:s,onUpdate:i,onComplete:d}){let[c,p]=Bn(!1),b=bt({dx:0,dy:0}),g=bt(!1),f=bt({x:0,y:0}),u=bt({timer:null}),w=(T,v)=>{u.current.timer&&(clearTimeout(u.current.timer),u.current.timer=null),o.dragging?.enable?.(),a.current&&(a.current.style.transition="none");let M={};T>0&&Math.abs(T-(e.width??230))>2&&(M.width=Math.max(160,Math.min(600,T))),v>0&&Math.abs(v-(e.height??0))>2&&(M.height=Math.max(50,Math.min(800,v))),Object.keys(M).length>0&&(i(e.id,M),d?.())};return Nn(()=>{let T=l.current;if(!T||typeof ResizeObserver>"u")return;let v=new ResizeObserver(E=>{for(let I of E){let m=Math.round(I.borderBoxSize?.[0]?.inlineSize??I.contentRect.width),S=Math.round(I.borderBoxSize?.[0]?.blockSize??I.contentRect.height);if(m<50||S<20)continue;let R=Math.abs(m-(e.width??230)),B=Math.abs(S-(e.height??T.offsetHeight));(R>2||B>2)&&(a.current&&R>2&&(a.current.style.transition="none",a.current.style.width=`${m}px`),o.dragging?.disable?.(),u.current.timer&&clearTimeout(u.current.timer),u.current.timer=setTimeout(()=>{w(m,S)},150))}});v.observe(T);let M=()=>{u.current.timer&&w(l.current?.offsetWidth??0,l.current?.offsetHeight??0)};return window.addEventListener("pointerup",M),window.addEventListener("mouseup",M),()=>{v.disconnect(),window.removeEventListener("pointerup",M),window.removeEventListener("mouseup",M),u.current.timer&&(clearTimeout(u.current.timer),u.current.timer=null)}},[e.id,e.width,e.height,o,i,d]),{isDragging:c,didDragRef:g,commitResize:w,handleHeaderPointerDown:T=>{if(r||T.target.closest("button, input, textarea"))return;T.stopPropagation(),T.preventDefault(),s(e.id),p(!0),g.current=!1,f.current={x:T.clientX,y:T.clientY};let v=o.getContainer().getBoundingClientRect();b.current={dx:T.clientX-v.left-t.x,dy:T.clientY-v.top-t.y},o.dragging.disable();let M=null,E=e.position,I=typeof process<"u"&&process.env?.NODE_ENV==="test",m=()=>{M=null,i(e.id,{position:E})},S=B=>{Math.hypot(B.clientX-f.current.x,B.clientY-f.current.y)>2&&(g.current=!0);let F=B.clientX-v.left-b.current.dx,G=B.clientY-v.top-b.current.dy;a.current&&(a.current.style.left=`${F}px`,a.current.style.top=`${G}px`),E=X(o,{x:F,y:G}),I?m():M===null&&(M=requestAnimationFrame(m))},R=()=>{M!==null&&cancelAnimationFrame(M),p(!1),o.dragging.enable(),g.current&&(i(e.id,{position:E}),d?.()),window.removeEventListener("pointermove",S),window.removeEventListener("pointerup",R),window.removeEventListener("pointercancel",R)};window.addEventListener("pointermove",S),window.addEventListener("pointerup",R),window.addEventListener("pointercancel",R)},handleResizePointerDown:T=>{r||n||Co({e:T,item:e,map:o,cardRef:a,textareaRef:l,onSelect:s,onUpdate:i,onComplete:d})},handleTextareaPointerDown:T=>{T.stopPropagation(),o.dragging.disable();let v=l.current?.offsetWidth??0,M=l.current?.offsetHeight??0;a.current&&(a.current.style.transition="none");let E=()=>{let I=l.current?.offsetWidth??0,m=l.current?.offsetHeight??0;Math.abs(I-v)>2||Math.abs(m-M)>2?w(I,m):(o.dragging?.enable?.(),a.current&&(a.current.style.transition="none")),window.removeEventListener("pointerup",E),window.removeEventListener("mouseup",E)};window.addEventListener("pointerup",E,{once:!0}),window.addEventListener("mouseup",E,{once:!0})}}}import{jsx as N,jsxs as te}from"react/jsx-runtime";var z={select:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"m3 3 7.07 16.97 2.51-7.39 7.39-2.51L3 3z"}),N("path",{d:"m13 13 6 6"})]}),freedraw:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}),N("path",{d:"m15 5 4 4"})]}),arrowLinear:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M7 7h10v10"}),N("path",{d:"M7 17 17 7"})]}),arrowCurved:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M4 19C4 10 11 5 20 5"}),N("polyline",{points:"15 2 20 5 16 10"})]}),arrowBi:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M11 19H5v-6"}),N("path",{d:"M13 5h6v6"}),N("path",{d:"M19 5 5 19"})]}),arrowElbow:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("polyline",{points:"4 18 12 18 12 6 20 6"}),N("polyline",{points:"16 2 20 6 16 10"})]}),arrowSCurve:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M5 19C9 19 11 15 12 12C13 9 15 9 19 5"}),N("polyline",{points:"13 5 19 5 19 11"})]}),shapesGroup:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"}),N("rect",{x:"3",y:"14",width:"7",height:"7",rx:"1"}),N("circle",{cx:"17.5",cy:"17.5",r:"3.5"})]}),shapeSquare:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"})}),shapeCircle:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("circle",{cx:"12",cy:"12",r:"10"})}),shapeStar:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"})}),shapeActor:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"}),N("circle",{cx:"12",cy:"7",r:"4"})]}),shapeTriangle:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M13.73 4a2 2 0 0 0-3.46 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"})}),shapeDiamond:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z"})}),shapeHexagon:N("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"})}),shapeMarker:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"}),N("circle",{cx:"12",cy:"10",r:"3"})]}),dropdownChevron:N("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),ruler:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21.3 8.7 8.7 21.3a1 1 0 0 1-1.4 0l-4.6-4.6a1 1 0 0 1 0-1.4L15.3 2.7a1 1 0 0 1 1.4 0l4.6 4.6a1 1 0 0 1 0 1.4Z"}),N("path",{d:"m14.5 3.5 2 2"}),N("path",{d:"m11.5 6.5 2 2"}),N("path",{d:"m8.5 9.5 2 2"}),N("path",{d:"m5.5 12.5 2 2"})]}),note:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z"}),N("path",{d:"M15 3v5a1 1 0 0 0 1 1h5"})]}),text:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M12 4v16"}),N("path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}),N("path",{d:"M9 20h6"})]}),undo:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M9 14 4 9l5-5"}),N("path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"})]}),redo:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"m15 14 5-5-5-5"}),N("path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"})]}),collapseToolbar:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m18 15-6-6-6 6"})}),expandToolbar:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),delete:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M10 11v6"}),N("path",{d:"M14 11v6"}),N("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}),N("path",{d:"M3 6h18"}),N("path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]}),clear:te("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("circle",{cx:"12",cy:"12",r:"10"}),N("path",{d:"m15 9-6 6"}),N("path",{d:"m9 9 6 6"})]}),noteExpand:N("svg",{width:"8",height:"8",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.8",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"m6 9 6 6 6-6"})}),noteCollapse:N("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M5 12h14"})}),noteDelete:te("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:[N("path",{d:"M18 6 6 18"}),N("path",{d:"m6 6 12 12"})]}),textBold:N("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",shapeRendering:"geometricPrecision",children:N("path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8"})})};import{jsx as Bt,jsxs as Lo}from"react/jsx-runtime";function Io({item:e,theme:t,readOnly:o,unstyled:r,labels:n,icons:a,classNames:l,styles:s,onHeaderPointerDown:i,onCollapse:d,onSelect:c,onUpdate:p,onDelete:b,onComplete:g}){let f=r?{}:{border:"none",background:"transparent",color:e.textColor||t.text,width:"20px",height:"20px",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"12px",fontWeight:700,lineHeight:1,opacity:.75,borderRadius:"2px",flexShrink:0};return Lo("div",{onPointerDown:i,className:["rlc-note-header",l?.noteHeader].filter(Boolean).join(" "),style:{cursor:o?"default":"grab",...r?{}:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:"6px",padding:"6px 8px 6px 10px",backgroundColor:t.header,borderBottom:`1px solid ${t.border}`,boxSizing:"border-box"},...s?.noteHeader},children:[Bt("input",{type:"text",readOnly:o,value:e.title??"",placeholder:n?.noteTitlePlaceholder??"Note title...","aria-label":n?.noteTitlePlaceholder??"Note title",title:e.title||n?.noteTitlePlaceholder||"Note",className:["rlc-note-title-input",l?.noteTitleInput].filter(Boolean).join(" "),onFocus:()=>{o||c(e.id)},onBlur:()=>g?.(),onChange:u=>{o||p(e.id,{title:u.target.value})},onPointerDown:u=>u.stopPropagation(),style:{...r?{}:{flex:1,minWidth:0,background:"transparent",border:"none",outline:"none",fontWeight:600,fontSize:"12px",color:e.textColor||t.text,fontFamily:"inherit",cursor:o?"default":"text",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"},...s?.noteTitleInput}}),Lo("div",{className:["rlc-note-header-actions",l?.noteHeaderActions].filter(Boolean).join(" "),style:{...r?{}:{display:"flex",alignItems:"center",gap:"3px",flexShrink:0},...s?.noteHeaderActions},children:[Bt("button",{type:"button",title:n?.noteCollapse??"Collapse note","aria-label":n?.noteCollapse??"Collapse note",className:["rlc-note-header-btn",l?.noteHeaderButton].filter(Boolean).join(" "),onClick:u=>{u.stopPropagation(),d()},style:{...f,...s?.noteHeaderButton},children:a?.noteCollapse??z.noteCollapse}),!o&&Bt("button",{type:"button",title:n?.noteDelete??"Delete note","aria-label":n?.noteDelete??"Delete note",className:["rlc-note-header-btn","rlc-note-delete-btn",l?.noteHeaderButton,l?.noteDeleteButton].filter(Boolean).join(" "),onClick:u=>{u.stopPropagation(),b(e.id)},style:{...f,...s?.noteHeaderButton,...s?.noteDeleteButton},children:a?.noteDelete??z.noteDelete})]})]})}import{Fragment as Wn,jsx as _e,jsxs as Ro}from"react/jsx-runtime";function Do({item:e,theme:t,isCompact:o,isDragging:r,readOnly:n,unstyled:a,labels:l,icons:s,classNames:i,styles:d,textareaRef:c,onHeaderPointerDown:p,onExpandFromCompact:b,onCollapse:g,onSelect:f,onUpdate:u,onDelete:w,onComplete:y,onTextareaPointerDown:x}){return o?Ro("div",{onPointerDown:p,className:["rlc-note-header",i?.noteHeader].filter(Boolean).join(" "),style:{cursor:n?"default":r?"grabbing":"grab",display:"inline-flex",alignItems:"center",gap:"4px",width:"100%",height:"100%",userSelect:"none"},children:[_e("span",{style:{fontSize:"11px",fontWeight:600,lineHeight:1,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"90px",color:e.textColor||t.text},title:e.title||l?.noteTitlePlaceholder||"Note",children:e.title||l?.noteTitlePlaceholder||"Note"}),_e("button",{type:"button",title:l?.noteExpand??"Expand note","aria-label":l?.noteExpand??"Expand note",className:["rlc-note-header-btn",i?.noteHeaderButton].filter(Boolean).join(" "),onClick:b,style:{border:"none",background:"transparent",color:e.textColor||t.text,width:"12px",height:"12px",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:"pointer",opacity:.75,flexShrink:0},children:s?.noteExpand??z.noteExpand})]}):Ro(Wn,{children:[_e(Io,{item:e,theme:t,readOnly:n,unstyled:a,labels:l,icons:s,classNames:i,styles:d,onHeaderPointerDown:p,onCollapse:g,onSelect:f,onUpdate:u,onDelete:w,onComplete:y}),_e("div",{className:["rlc-note-body",i?.noteBody].filter(Boolean).join(" "),style:{...a?{}:{padding:0},...d?.noteBody},children:_e("textarea",{ref:c,readOnly:n,value:e.text,placeholder:l?.noteTextPlaceholder??"Write a note on the map...","aria-label":l?.noteTextPlaceholder??"Note text",rows:3,className:["rlc-note-textarea",i?.noteTextarea].filter(Boolean).join(" "),onFocus:()=>{n||f(e.id)},onBlur:()=>y?.(),onChange:h=>{n||u(e.id,{text:h.target.value})},onPointerDown:x,onMouseDown:h=>h.stopPropagation(),style:{...a?{}:{width:"100%",height:e.height?`${e.height}px`:void 0,boxSizing:"border-box",display:"block",margin:0,background:"transparent",border:"none",borderRadius:0,padding:"6px 10px 8px",outline:"none",resize:n?"none":"both",minWidth:"160px",maxWidth:"600px",minHeight:"56px",maxHeight:"800px",fontSize:"12px",lineHeight:1.45,color:e.textColor||t.text,fontFamily:"inherit",cursor:n?"default":"text"},...d?.noteTextarea}})})]})}import{jsx as Hn}from"react/jsx-runtime";function Mo({item:e,screenPos:t,isSelected:o,isDragging:r,readOnly:n,isCompact:a,cardClassName:l,structuralRootStyle:s,styles:i,renderNote:d,onCardClick:c,onCardDoubleClick:p,handleHeaderPointerDown:b,handleResizePointerDown:g,onSelect:f,onUpdate:u,onDelete:w}){return Hn("div",{"data-tual-note":e.id,"data-collapsed":a?"true":void 0,"data-compact":a?"true":void 0,"data-selected":!n&&o||void 0,className:l,onClick:c,onDoubleClick:p,onWheel:y=>y.stopPropagation(),style:{...s,...i?.noteCard,...a?{...i?.noteCollapsed,...i?.noteCompact}:void 0,...!n&&o?i?.noteCardSelected:void 0},children:d({item:e,screenPos:t,isSelected:!n&&o,isDragging:r,readOnly:n,isCompact:a,dragHandleProps:{onPointerDown:b,style:{cursor:n?"default":r?"grabbing":"grab"}},resizeHandleProps:{onPointerDown:g,style:{cursor:n||a?"default":"nwse-resize"}},onSelect:()=>{n||f(e.id)},onUpdate:y=>{(!n||Object.keys(y).length<=2&&("minimized"in y||"collapseState"in y))&&u(e.id,y)},onDelete:()=>{n||w(e.id)}})})}import{jsx as Ht}from"react/jsx-runtime";var ko=jn.memo(function({item:t,screenPos:o,isSelected:r,map:n,readOnly:a=!1,labels:l,icons:s,unstyled:i=!1,classNames:d,styles:c,clampToViewport:p=!0,autoMinimizeZoomThreshold:b,renderNote:g,onSelect:f,onUpdate:u,onDelete:w,onComplete:y}){let x=Wt(null),h=Wt(null),T=typeof n?.getZoom=="function"?n.getZoom():null,[v,M]=Fn(!1),E=Wt(T);Eo(()=>{T!==null&&(E.current!==null&&E.current!==T&&M(!1),E.current=T)},[T]);let I=typeof b=="number"&&T!==null&&!v&&T<b,m=!v&&(I||t.collapseState==="compact"||t.collapseState==="collapsed"||t.minimized===!0||t.minimized==="compact"),{isDragging:S,didDragRef:R,handleHeaderPointerDown:B,handleResizePointerDown:F,handleTextareaPointerDown:G}=Po({item:t,screenPos:o,map:n,readOnly:a,isCompact:m,cardRef:x,textareaRef:h,onSelect:f,onUpdate:u,onComplete:y});Eo(()=>{let H=x.current;if(!H)return;let K=Z=>{let q=Z.target;q?.closest(".rlc-note-header")&&!q.closest("button, input")||Z.stopPropagation()};return H.addEventListener("mousedown",K),H.addEventListener("touchstart",K),()=>{H.removeEventListener("mousedown",K),H.removeEventListener("touchstart",K)}},[]);let $=H=>{H?.stopPropagation(),M(!0),a||f(t.id),u(t.id,{minimized:!1})},V=To(t.backgroundColor),{x:C,y:k}=So(n,o,t,m,S,p),D={position:"absolute",left:`${C}px`,top:`${k}px`,pointerEvents:"auto",zIndex:!a&&r?30:20,userSelect:a?"text":"none"},P=["rlc-note-card",m?"rlc-note-compact rlc-note-collapsed":void 0,d?.noteCard,m?d?.noteCompact:void 0,m?d?.noteCollapsed:void 0,!a&&r?d?.noteCardSelected:void 0].filter(Boolean).join(" "),O=H=>{if(H.stopPropagation(),R.current){R.current=!1;return}if(m){$(H);return}a||f(t.id)},_=H=>{if(H.stopPropagation(),R.current){R.current=!1;return}m&&$(H)};return g?Ht(Mo,{item:t,screenPos:o,isSelected:r,isDragging:S,readOnly:a,isCompact:m,cardClassName:P,structuralRootStyle:D,styles:c,renderNote:g,onCardClick:O,onCardDoubleClick:_,handleHeaderPointerDown:B,handleResizePointerDown:F,onSelect:f,onUpdate:u,onDelete:w}):Ht("div",{ref:x,"data-tual-note":t.id,"data-collapsed":m?"true":void 0,"data-compact":m?"true":void 0,"data-selected":!a&&r||void 0,"data-dragging":S||void 0,className:P,onClick:O,onDoubleClick:_,onWheel:H=>H.stopPropagation(),style:{...D,...vo(t,V,m,r,a,S,i),...c?.noteCard,...m?{borderRadius:"9999px",...c?.noteCollapsed,...c?.noteCompact}:void 0,...!a&&r?c?.noteCardSelected:void 0},children:Ht(Do,{item:t,theme:V,isCompact:m,isDragging:S,readOnly:a,unstyled:i,labels:l,icons:s,classNames:d,styles:c,textareaRef:h,onHeaderPointerDown:B,onExpandFromCompact:$,onCollapse:()=>{M(!1),u(t.id,{minimized:!0})},onSelect:f,onUpdate:u,onDelete:w,onComplete:y,onTextareaPointerDown:G})})});import _n,{useEffect as zt,useRef as Ho,useState as jo}from"react";function Ao(e,t,o,r,n,a,l=!0){let s=l!==!1?Te(e):null;if(!s||a||!(t.x>=-100&&t.x<=s.width+100&&t.y>=-100&&t.y<=s.height+100))return t;let d=n?35:Math.max(24,(o.text||"Text").length*r/3.6),c=n?11:r/2+4,p=8,b=d+p,g=Math.max(b,s.width-d-p),f=c+p,u=Math.max(f,s.height-c-p);return{x:Math.max(b,Math.min(g,t.x)),y:Math.max(f,Math.min(u,t.y))}}function Oo(e,t,o,r){return e?r?"pointer":"default":t?"text":o?"grabbing":r?"pointer":"grab"}import{useRef as jt,useState as zn}from"react";function No({item:e,screenPos:t,map:o,readOnly:r,isEditing:n,onSelect:a,onUpdate:l}){let[s,i]=zn(!1),d=jt({dx:0,dy:0}),c=jt(!1),p=jt({x:0,y:0});return{isDragging:s,didDragRef:c,handlePointerDown:g=>{if(r||n||g.target.closest("button, textarea, input"))return;g.stopPropagation(),g.preventDefault(),a(e.id),i(!0),c.current=!1,p.current={x:g.clientX,y:g.clientY};let f=o.getContainer().getBoundingClientRect();d.current={dx:g.clientX-f.left-t.x,dy:g.clientY-f.top-t.y},o.dragging.disable();let u=y=>{Math.hypot(y.clientX-p.current.x,y.clientY-p.current.y)>2&&(c.current=!0);let x=y.clientX-f.left-d.current.dx,h=y.clientY-f.top-d.current.dy;l(e.id,{position:X(o,{x,y:h})})},w=()=>{i(!1),o.dragging.enable(),window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",w)};window.addEventListener("pointermove",u),window.addEventListener("pointerup",w)}}}import{jsx as Ft}from"react/jsx-runtime";function Bo({item:e,map:t,isCompact:o,isEditing:r,isSelected:n,readOnly:a,unstyled:l,dynamicFontSize:s,labels:i,classNames:d,styles:c,inputRef:p,setIsEditing:b,onUpdate:g,onComplete:f}){if(o)return Ft("div",{"data-compact":"true",className:["rlc-text-display","rlc-text-compact-pill",d?.textDisplay,d?.textCompact].filter(Boolean).join(" "),style:{...l?{}:{display:"inline-flex",alignItems:"center",height:"22px",padding:"0 8px",backgroundColor:e.backgroundColor??"#ffffff",color:e.color,border:`1px solid ${e.color?`${e.color}40`:"#cbd5e1"}`,borderRadius:"9999px",fontSize:"11px",fontWeight:600,lineHeight:1,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"120px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.12)",cursor:"pointer",userSelect:"none"},...c?.textDisplay,...c?.textCompact},title:e.text||"Text",children:e.text||i?.textEmptyFallback||"Text"});let u=()=>{b(!1),e.text.trim()||g(e.id,{text:i?.textEmptyFallback??"Label"}),f?.()};return r?Ft("textarea",{ref:p,value:e.text,placeholder:i?.textPlaceholder??"Type text...","aria-label":i?.textPlaceholder??"Map text annotation",rows:Math.max(1,e.text.split(`
3
+ `).length),className:["rlc-text-input",d?.textInput].filter(Boolean).join(" "),onChange:w=>g(e.id,{text:w.target.value}),onBlur:u,onKeyDown:w=>{(w.key==="Escape"||w.key==="Enter"&&!w.shiftKey)&&(w.preventDefault(),u())},onPointerDown:w=>{w.stopPropagation(),t.dragging.disable();let y=()=>{t.dragging.enable(),window.removeEventListener("pointerup",y)};window.addEventListener("pointerup",y)},onMouseDown:w=>{w.stopPropagation(),t.dragging.disable();let y=()=>{t.dragging.enable(),window.removeEventListener("mouseup",y)};window.addEventListener("mouseup",y)},style:{fontSize:`${s}px`,fontWeight:e.fontWeight??"bold",color:e.color,...l?{}:{minWidth:"80px",padding:"2px 4px",backgroundColor:"#ffffff",border:"1px solid #767676",borderRadius:"2px",outline:"none",fontFamily:"inherit",resize:"both",lineHeight:1.25,boxShadow:"none"},...c?.textInput}}):Ft("div",{className:["rlc-text-display",d?.textDisplay].filter(Boolean).join(" "),style:{fontSize:`${s}px`,fontWeight:e.fontWeight??"bold",color:e.color,...l?{}:{padding:"2px 4px",backgroundColor:e.backgroundColor??"#ffffff",borderRadius:"2px",border:!a&&n?"1px dashed #767676":"1px solid transparent",boxShadow:"none",whiteSpace:"pre-wrap",lineHeight:1.25},...c?.textDisplay},children:e.text||(a?"":i?.textEmptyFallback??"Double-click to edit")})}import{jsx as Gn}from"react/jsx-runtime";function Wo({item:e,screenPos:t,isSelected:o,isEditing:r,isDragging:n,readOnly:a,isCompact:l,dynamicFontSize:s,dragHandleProps:i,wrapperClassName:d,structuralWrapperStyle:c,styles:p,renderText:b,onClick:g,onDoubleClick:f,setIsEditing:u,onSelect:w,onUpdate:y,onDelete:x}){return Gn("div",{"data-tual-text":e.id,"data-compact":l?"true":void 0,"data-selected":!a&&o||void 0,className:d,onClick:g,onDoubleClick:f,onWheel:h=>h.stopPropagation(),style:{...c,...p?.textWrapper,...l?p?.textCompact:void 0,...!a&&o?p?.textWrapperSelected:void 0},children:b({item:e,screenPos:t,isSelected:!a&&o,isEditing:!a&&r,isDragging:n,readOnly:a,isCompact:l,dynamicFontSize:s,setIsEditing:u,dragHandleProps:i,onSelect:()=>{a||w(e.id)},onUpdate:h=>{a||y(e.id,h)},onDelete:()=>{a||x(e.id)}})})}import{jsx as Gt}from"react/jsx-runtime";var Fo=_n.memo(function({item:t,screenPos:o,isSelected:r,isEditingLabel:n,map:a,readOnly:l=!1,labels:s,icons:i,unstyled:d=!1,classNames:c,styles:p,clampToViewport:b=!0,autoMinimizeZoomThreshold:g,renderText:f,onSelect:u,onUpdate:w,onDelete:y,onComplete:x}){let[h,T]=jo(!l&&t.text===""),[v,M]=jo(!1),E=Ho(null),{isDragging:I,didDragRef:m,handlePointerDown:S}=No({item:t,screenPos:o,map:a,readOnly:l,isEditing:h,onSelect:u,onUpdate:w}),R=typeof a?.getZoom=="function"?a.getZoom():null,B=Ho(R),F=t.initialFontSize??t.fontSize??16,G=t.baseZoom??14,$=mo(F,R,G);zt(()=>{R!==null&&(B.current!==null&&B.current!==R&&M(!1),B.current=R)},[R]);let C=typeof g=="number"&&R!==null&&R<g&&!r&&!h&&!v;zt(()=>{r&&n&&!l&&T(!0)},[r,n,l]),zt(()=>{h&&E.current&&(E.current.focus(),E.current.select())},[h]);let k=Oo(l,h,I,C),D={onPointerDown:S,style:{cursor:k}},P=["rlc-text-wrapper",C?"rlc-text-compact":void 0,c?.textWrapper,C?c?.textCompact:void 0,!l&&r?c?.textWrapperSelected:void 0].filter(Boolean).join(" "),{x:O,y:_}=Ao(a,o,t,$,C,I,b),H={position:"absolute",left:`${O}px`,top:`${_}px`,transform:"translate(-50%, -50%)",pointerEvents:"auto",zIndex:!l&&r?28:18,cursor:k,userSelect:l||h?"text":"none"},K=q=>{if(q.stopPropagation(),m.current){m.current=!1;return}C&&M(!0),l||u(t.id)},Z=q=>{q.stopPropagation(),C&&M(!0),l||(u(t.id),T(!0))};return f?Gt(Wo,{item:t,screenPos:o,isSelected:r,isEditing:h,isDragging:I,readOnly:l,isCompact:C,dynamicFontSize:$,dragHandleProps:D,wrapperClassName:P,structuralWrapperStyle:H,styles:p,renderText:f,onClick:K,onDoubleClick:Z,setIsEditing:q=>{l||T(q)},onSelect:u,onUpdate:w,onDelete:y}):Gt("div",{"data-tual-text":t.id,"data-compact":C?"true":void 0,"data-selected":!l&&r||void 0,className:P,onPointerDown:S,onClick:K,onDoubleClick:Z,onWheel:q=>q.stopPropagation(),style:{...H,...d?{}:{fontFamily:"Inter, system-ui, -apple-system, sans-serif"},...p?.textWrapper,...C?p?.textCompact:void 0,...!l&&r?p?.textWrapperSelected:void 0},children:Gt(Bo,{item:t,map:a,isCompact:C,isEditing:h,isSelected:r,readOnly:l,unstyled:d,dynamicFontSize:$,labels:s,classNames:c,styles:p,inputRef:E,setIsEditing:T,onUpdate:w,onComplete:x})})});import{useEffect as Un,useState as Yn}from"react";function zo(e){let[t,o]=Yn({width:0,height:0,tick:0});return Un(()=>{if(e)return mt(e,({width:r,height:n})=>{o(a=>({width:r,height:n,tick:a.tick+1}))})},[e]),t}import{useCallback as pe,useEffect as Xn,useMemo as $n,useRef as Vn,useState as xt}from"react";import{useCallback as Ee,useRef as yt,useState as Kn}from"react";function Go(e){let{initialItems:t=[],items:o,maxHistory:r=50}=e,n=Math.max(0,r-1),a=yt(e);a.current=e;let[l,s]=Kn({past:[],present:t,future:[]}),i=yt(l);i.current=l;let d=o??l.present,c=yt(d);c.current=d;let p=yt(d),b=Ee(x=>{a.current.onItemsChange?.(x),a.current.onChange?.(x)},[]),g=Ee((x,h)=>{a.current.onItemsChangeComplete?.(x,h),a.current.onChangeComplete?.(x,h),a.current.onEditEnd?.(x,h),a.current.onEditComplete?.(x,h),h&&a.current.onItemChangeComplete?.(h)},[]),f=Ee(x=>{let h=x(c.current);return c.current=h,b(h),s(T=>({...T,present:h})),h},[b]),u=Ee(x=>{let h=c.current;if(h===p.current)return;let T=p.current;p.current=h,s(v=>({past:[...v.past,T].slice(-n),present:h,future:[]})),g(h,x)},[n,g]),w=Ee(x=>{x||s(h=>{if(h.past.length===0)return h;let T=h.past[h.past.length-1];return c.current=T,p.current=T,b(T),g(T,null),{past:h.past.slice(0,-1),present:T,future:[h.present,...h.future]}})},[b,g]),y=Ee(x=>{x||s(h=>{if(h.future.length===0)return h;let T=h.future[0];return c.current=T,p.current=T,b(T),g(T,null),{past:[...h.past,h.present],present:T,future:h.future.slice(1)}})},[b,g]);return{items:d,history:l,historyRef:i,callbacksRef:a,commitItems:f,notifyChangeComplete:u,undo:w,redo:y}}import{useCallback as ge,useState as Se}from"react";function _o(e){let{defaultColor:t=Ze,defaultStrokeWidth:o=qe,defaultNoteColor:r=Je,defaultFontSize:n=Qe,defaultShape:a="square",readOnly:l,selectedId:s,commitItems:i}=e,[d,c]=Se(a),[p,b]=Se(!0),[g,f]=Se(t),[u,w]=Se(o),[y,x]=Se(!1),[h,T]=Se(r),[v,M]=Se(n),[E,I]=Se("bold"),m=ge((k,D)=>{s&&i(P=>P.map(O=>O.id===s&&k(O)?D(O):O))},[s,i]),S=ge(k=>{l||(c(k),m(D=>D.type==="shape",D=>({...D,shape:k})))},[l,m]),R=ge(k=>{l||(b(k),m(D=>D.type==="shape",D=>({...D,filled:k})))},[l,m]),B=ge(k=>{l||(f(k),m(D=>D.type!=="note",D=>({...D,color:k})))},[l,m]),F=ge(k=>{l||(w(k),m(D=>D.type==="arrow"||D.type==="freedraw"||D.type==="shape"||D.type==="ruler",D=>({...D,strokeWidth:k})))},[l,m]),G=ge(k=>{l||(x(k),m(D=>D.type==="arrow"||D.type==="freedraw"||D.type==="shape"||D.type==="ruler",D=>({...D,dashed:k})))},[l,m]),$=ge(k=>{if(l)return;T(k);let D=ie.find(P=>P.bg===k);m(P=>P.type==="note",P=>({...P,backgroundColor:k,textColor:D?.text??P.textColor}))},[l,m]),V=ge(k=>{l||(M(k),m(D=>D.type==="text",D=>({...D,initialFontSize:k})))},[l,m]),C=ge(k=>{l||(I(k),m(D=>D.type==="text",D=>({...D,fontWeight:k})))},[l,m]);return{activeShape:d,setActiveShape:S,shapeFilled:p,setShapeFilled:R,activeColor:g,setActiveColor:B,strokeWidth:u,setStrokeWidth:F,dashed:y,setDashed:G,noteColor:h,setNoteColor:$,fontSize:v,setFontSize:V,fontWeight:E,setFontWeight:C}}function Uo(e={}){let{items:t,initialTool:o="select",defaultColor:r,defaultStrokeWidth:n,defaultNoteColor:a,defaultFontSize:l,defaultShape:s}=e,{items:i,history:d,historyRef:c,callbacksRef:p,commitItems:b,notifyChangeComplete:g,undo:f,redo:u}=Go(e),[w,y]=xt(o),[x,h]=xt(!!(e.readOnly??!1)),T=Vn(e.readOnly);Xn(()=>{e.readOnly!==void 0&&e.readOnly!==T.current&&(T.current=e.readOnly,h(!!e.readOnly))},[e.readOnly]);let[v,M]=xt(null),[E,I]=xt(!1),m=_o({defaultColor:r,defaultStrokeWidth:n,defaultNoteColor:a,defaultFontSize:l,defaultShape:s,readOnly:x,selectedId:v,commitItems:b}),S=pe(P=>{M(O=>{let _=typeof P=="function"?P(O):P;if(O!==_){I(!1),O!==null&&_===null&&g();let H=t??c.current.present;p.current.onItemSelect?.(H.find(K=>K.id===_)??null)}return _})},[t,g,c,p]),R=pe(P=>{x&&P!=="select"||(y(P),p.current.onToolChange?.(P))},[x,p]),B=pe(P=>{x||(b(O=>[...O,P]),S(P.id),p.current.onItemCreate?.(P))},[x,b,S,p]),F=pe((P,O)=>{if(x){let H=Object.keys(O);if(H.length!==1||H[0]!=="minimized")return}let _;b(H=>H.map(K=>K.id===P?(_={...K,...O},_):K)),_&&p.current.onItemChange?.(_)},[x,b,p]),G=pe(P=>{x||(b(O=>O.filter(_=>_.id!==P)),S(O=>O===P?null:O),p.current.onItemDelete?.(P),g())},[x,b,S,g,p]),$=pe(()=>{!x&&v&&G(v)},[x,v,G]),V=pe(()=>{x||(b(()=>[]),S(null),g())},[x,b,S,g]),C=$n(()=>i.find(P=>P.id===v)??null,[i,v]),k=pe(()=>JSON.stringify(i,null,2),[i]),D=pe(P=>{if(x)return!1;try{let O=JSON.parse(P);return Array.isArray(O)?(b(()=>O),S(null),g(),!0):!1}catch{return!1}},[x,b,S,g]);return{items:i,activeTool:w,setActiveTool:R,readOnly:x,setReadOnly:h,...m,selectedId:v,setSelectedId:S,selectedItem:C,isEditingLabel:E,setEditingLabel:I,labelEditMode:E,setLabelEditMode:I,addItem:B,updateItem:F,removeItem:G,deleteSelected:$,clearAll:V,clear:V,deleteItem:G,setTool:R,selectItem:S,undo:pe(()=>f(x),[f,x]),redo:pe(()=>u(x),[u,x]),canUndo:!x&&d.past.length>0,canRedo:!x&&d.future.length>0,notifyChangeComplete:g,exportJSON:k,importJSON:D}}import{useState as nr}from"react";var Yo=["select","freedraw","arrow","shape","ruler","note","text"],_t={top:{top:"14px",left:"50%",transform:"translateX(-50%)"},bottom:{bottom:"24px",left:"50%",transform:"translateX(-50%)"},left:{top:"50%",left:"14px",transform:"translateY(-50%)"},right:{top:"50%",right:"14px",transform:"translateY(-50%)"},"top-center":{top:"14px",left:"50%",transform:"translateX(-50%)"},"bottom-center":{bottom:"24px",left:"50%",transform:"translateX(-50%)"},"left-center":{top:"50%",left:"14px",transform:"translateY(-50%)"},"right-center":{top:"50%",right:"14px",transform:"translateY(-50%)"}};function Ko(e,t){return[{id:"arrow-linear",style:"linear",label:e?.arrowLinear??"Linear Arrow",shortcut:"A",icon:t?.arrowLinear??z.arrowLinear},{id:"arrow-curved",style:"curved",label:e?.arrowCurved??"Curved Arrow",shortcut:"C",icon:t?.arrowCurved??z.arrowCurved},{id:"arrow-bi",style:"bi",label:e?.arrowBi??"Double-Headed",shortcut:"B",icon:t?.arrowBi??z.arrowBi},{id:"arrow-elbow",style:"elbow",label:e?.arrowElbow??"Elbow / Step",shortcut:"E",icon:t?.arrowElbow??z.arrowElbow},{id:"arrow-s-curve",style:"s-curve",label:e?.arrowSCurve??"S-Curve Arrow",shortcut:"S",icon:t?.arrowSCurve??z.arrowSCurve}]}function Xo(e,t){return[{kind:"square",label:e?.shapeSquare??"Square",icon:t?.shapeSquare??z.shapeSquare},{kind:"circle",label:e?.shapeCircle??"Circle",icon:t?.shapeCircle??z.shapeCircle},{kind:"star",label:e?.shapeStar??"Star",icon:t?.shapeStar??z.shapeStar},{kind:"actor",label:e?.shapeActor??"Actor",icon:t?.shapeActor??z.shapeActor},{kind:"triangle",label:e?.shapeTriangle??"Triangle",icon:t?.shapeTriangle??z.shapeTriangle},{kind:"diamond",label:e?.shapeDiamond??"Diamond",icon:t?.shapeDiamond??z.shapeDiamond},{kind:"hexagon",label:e?.shapeHexagon??"Hexagon",icon:t?.shapeHexagon??z.shapeHexagon},{kind:"marker",label:e?.shapeMarker??"Marker",icon:t?.shapeMarker??z.shapeMarker}]}function $o(e,t,o,r,n,a){return{...n?{}:t&&o?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:e?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:e?"#e0e0e0":"#efefef",color:"#000000",fontWeight:"normal",fontSize:"12px",lineHeight:"16px",cursor:"pointer",boxShadow:e?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",flexShrink:0,whiteSpace:"nowrap"}:{display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",gap:o?"6px":"0px",padding:t?"0":o?"2px 7px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",minWidth:t?"30px":void 0,minHeight:t?"30px":void 0,borderRadius:"2px",border:e?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:e?"#e0e0e0":"#efefef",color:"#000000",fontWeight:"normal",fontSize:"12px",lineHeight:"16px",cursor:"pointer",boxShadow:e?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",flexShrink:0,whiteSpace:"nowrap"},...a?.toolButton,...e?a?.toolButtonActive:void 0,...t&&!o?{padding:"0",width:a?.toolButton?.width??"30px",height:a?.toolButton?.height??"30px"}:void 0,...r&&!e?{opacity:.45,cursor:"not-allowed"}:void 0}}function Vo(e,t){return["rlc-tool-btn",t?.toolButton,e?t?.toolButtonActive:void 0].filter(Boolean).join(" ")}function wt(e,t,o=!1){let r=t==="vertical",n=e.includes("right"),a=e.includes("left"),l=e.includes("bottom");return r?{...l?{bottom:0}:{top:0},...n?{right:"calc(100% + 8px)"}:{left:"calc(100% + 8px)"}}:{...n?{right:0}:a||!o?{left:0}:{left:"50%",transform:"translateX(-50%)"},...l?{bottom:"calc(100% + 8px)"}:{top:"calc(100% + 8px)"}}}function Zo(e,t,o){return o?{}:t?{display:"flex",flexDirection:e==="right"||e==="right-center"?"row-reverse":"row",alignItems:"flex-start",gap:"8px",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}:{display:"flex",flexDirection:e==="bottom"||e==="bottom-center"?"column-reverse":"column",alignItems:"center",gap:"8px",fontFamily:"Inter, system-ui, -apple-system, sans-serif"}}function qo(e,t,o,r,n,a,l,s){return e==="select"?{icon:l?.select??z.select,label:s?.select??"Select"}:e==="freedraw"?{icon:l?.freedraw??z.freedraw,label:s?.freedraw??"Free Draw"}:e==="ruler"?{icon:l?.ruler??z.ruler,label:s?.ruler??"Ruler"}:t?{icon:o,label:r}:e==="shape"?{icon:n,label:a}:e==="note"?{icon:l?.note??z.note,label:s?.note??"Note Card"}:e==="text"?{icon:l?.text??z.text,label:s?.text??"Normal Text"}:{icon:l?.shapesGroup??z.shapesGroup,label:"Tools"}}var Jo=["arrow-linear","arrow-curved","arrow-bi","arrow-elbow","arrow-s-curve"];function Qo(e){return Jo.includes(e)}function Ue(e,t="top-center",o="horizontal"){return o==="vertical"?t==="right"||t==="right-center"?e?"rotate(-90deg)":"rotate(90deg)":e?"rotate(90deg)":"rotate(-90deg)":t==="bottom"||t==="bottom-center"?e?"rotate(0deg)":"rotate(180deg)":e?"rotate(180deg)":"rotate(0deg)"}function Ut(e="top-center",t="horizontal"){return t==="vertical"?e==="right"||e==="right-center"?"rotate(90deg)":"rotate(-90deg)":e==="bottom"||e==="bottom-center"?"rotate(180deg)":"rotate(0deg)"}function Yt(e="top-center",t="horizontal"){return t==="vertical"?e==="right"||e==="right-center"?"rotate(90deg)":"rotate(-90deg)":e==="bottom"||e==="bottom-center"?"rotate(180deg)":"rotate(0deg)"}import{Fragment as Zn,jsx as ve,jsxs as on}from"react/jsx-runtime";function en({position:e,orientation:t,isVertical:o,showToolLabels:r,unstyled:n,labels:a,icons:l,classNames:s,styles:i,onCollapse:d}){let c=Ut(e,t),p=l?.collapseToolbar??z.collapseToolbar;return ve("button",{type:"button","aria-label":a?.collapseToolbar??"Collapse toolbar",title:a?.collapseToolbar??"Collapse toolbar","data-toolbar-collapse":"true",className:["rlc-toolbar-collapse-btn",s?.toolbarCollapseButton].filter(Boolean).join(" "),onClick:d,style:{...n?{}:o&&r?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",cursor:"pointer",boxShadow:"none",flexShrink:0,whiteSpace:"nowrap"}:{display:"inline-flex",alignItems:"center",justifyContent:"center",padding:o?"0":r?"2px 6px":"3px 6px",width:o?"30px":"auto",height:o?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",cursor:"pointer",boxShadow:"none",flexShrink:0},...i?.toolButton,...i?.toolbarCollapseButton},children:o&&r?on(Zn,{children:[ve("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:ve("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",transform:c,transition:"transform 0.15s ease"},children:p})}),ve("span",{style:{whiteSpace:"nowrap"},children:a?.collapseToolbar??"Collapse"}),ve("span",{})]}):ve("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",transform:c,transition:"transform 0.15s ease"},children:p})})}function tn({position:e,orientation:t,showToolLabels:o,unstyled:r,activeToolInfo:n,labels:a,icons:l,classNames:s,styles:i,onExpand:d}){return on("button",{type:"button","aria-label":a?.expandToolbar??"Expand toolbar",title:a?.expandToolbar??"Expand toolbar","data-toolbar-expand":"true",className:["rlc-toolbar-expand-btn",s?.toolbarCollapseButton].filter(Boolean).join(" "),onClick:d,style:{...r?{}:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",padding:"3px 7px",borderRadius:"2px",backgroundColor:"#efefef",border:"1px solid #767676",boxShadow:"0 1px 2px rgba(0, 0, 0, 0.15)",color:"#000000",cursor:"pointer",fontSize:"12px",fontWeight:"normal",boxSizing:"border-box"},...i?.toolbarCollapseButton},children:[n.icon,o&&ve("span",{children:n.label}),ve("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.8,transform:Yt(e,t),transition:"transform 0.15s ease"},children:l?.expandToolbar??z.expandToolbar})]})}function Kt(e,t,o,r,n){return{...r?{}:t&&o?{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"6px",padding:"8px 10px",flexGrow:1,flexShrink:0,flexBasis:0,width:"auto",height:"auto",minHeight:"28px",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",opacity:e?1:.45,cursor:e?"pointer":"not-allowed",boxShadow:"none",fontSize:"12px",fontWeight:"normal",whiteSpace:"nowrap"}:{padding:t?"0":o?"2px 6px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:"#000000",opacity:e?1:.45,cursor:e?"pointer":"not-allowed",boxShadow:"none",fontSize:"12px",fontWeight:"normal",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",flexShrink:0},...n?.actionButton,...t&&!o?{padding:"0",width:n?.actionButton?.width??"30px",height:n?.actionButton?.height??"30px"}:void 0,...e?void 0:n?.actionButtonDisabled}}function Xt(e,t,o,r,n,a){return{...r?{}:t&&o?{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",padding:"8px 12px",textAlign:"left",width:"100%",height:"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:e,cursor:"pointer",fontSize:"12px",fontWeight:"normal",whiteSpace:"nowrap",boxShadow:"none",flexShrink:0}:{padding:t?"0":o?"2px 6px":"3px 6px",width:t?"30px":"auto",height:t?"30px":"auto",borderRadius:"2px",border:"1px solid #767676",boxSizing:"border-box",backgroundColor:"#efefef",color:e,cursor:"pointer",fontSize:"12px",fontWeight:"normal",display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"4px",boxShadow:"none",flexShrink:0},...a,...n?.actionButton,...t&&!o?{padding:"0",width:n?.actionButton?.width??"30px",height:n?.actionButton?.height??"30px"}:void 0}}import{Fragment as Tt,jsx as be,jsxs as Ye}from"react/jsx-runtime";function nn({readOnly:e,showHistoryControls:t,showDeleteButton:o,showClearButton:r,showToolLabels:n=!0,selectedItem:a,itemsCount:l,canUndo:s,canRedo:i,undo:d,redo:c,deleteSelected:p,clearAll:b,orientation:g="horizontal",labels:f,icons:u,unstyled:w,classNames:y,styles:x}){let h=g==="vertical";if(!(t||!e&&o&&a||!e&&r&&l>0))return null;let v=(m,S)=>h&&n?Ye(Tt,{children:[be("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:m}),be("span",{style:{whiteSpace:"nowrap"},children:S}),be("span",{})]}):Ye(Tt,{children:[m,n&&be("span",{children:S})]}),M=m=>["rlc-action-btn",m?void 0:"rlc-action-btn-disabled",y?.actionButton,m?void 0:y?.actionButtonDisabled].filter(Boolean).join(" "),E=be("button",{type:"button",title:f?.undo??"Undo","aria-label":f?.undo??"Undo",disabled:!s,className:M(s),onClick:d,style:Kt(s,h,n,!!w,x),children:u?.undo??z.undo},"undo"),I=be("button",{type:"button",title:f?.redo??"Redo","aria-label":f?.redo??"Redo",disabled:!i,className:M(i),onClick:c,style:Kt(i,h,n,!!w,x),children:u?.redo??z.redo},"redo");return Ye(Tt,{children:[be("div",{className:["rlc-toolbar-divider",y?.toolbarDivider].filter(Boolean).join(" "),style:{...w?{}:h?{width:n?"100%":"18px",height:"1px",backgroundColor:"#767676",margin:n?"3px 0":"3px auto"}:{width:"1px",height:"18px",backgroundColor:"#767676",margin:"0 3px"},...x?.toolbarDivider}}),t&&(h?Ye("div",{style:{display:"flex",flexDirection:n?"row":"column",alignItems:"center",justifyContent:"center",gap:"4px",width:n?"100%":"auto"},children:[E,I]}):Ye(Tt,{children:[E,I]})),!e&&o&&a&&be("button",{type:"button",title:f?.delete??"Delete selected item (Del)","aria-label":f?.delete??"Delete selected item",className:["rlc-action-btn","rlc-delete-btn",y?.actionButton,y?.deleteButton].filter(Boolean).join(" "),onClick:p,style:Xt("#b91c1c",h,n,!!w,x,x?.deleteButton),children:v(u?.delete??z.delete,f?.delete??"Delete")}),!e&&r&&l>0&&be("button",{type:"button",title:f?.clear??"Clear all annotations","aria-label":f?.clear??"Clear all annotations",className:["rlc-action-btn",y?.actionButton].filter(Boolean).join(" "),onClick:b,style:Xt("#000000",h,n,!!w,x),children:v(u?.clear??z.clear,f?.clear??"Clear")})]})}import Qn from"react";import $t from"react";import{Fragment as rn,jsx as me,jsxs as Ke}from"react/jsx-runtime";function an({isOpen:e,readOnly:t,isArrowToolActive:o,activeTool:r,arrowOptions:n,arrowGroupLabel:a,currentArrowIcon:l,showToolLabels:s,icons:i,unstyled:d,classNames:c,styles:p,position:b="top-center",orientation:g="horizontal",arrowGroupRef:f,getButtonClassName:u,getButtonStyle:w,onToggle:y,onSelectOption:x}){let[h,T]=$t.useState(null),v=g==="vertical",M=wt(b,g),E=Ue(e,b,g),I=i?.dropdownChevron??z.dropdownChevron;return Ke("div",{ref:f,className:["rlc-arrow-group",c?.arrowGroupWrapper].filter(Boolean).join(" "),style:{position:"relative",display:v?"flex":"inline-flex",width:v?s?"100%":"30px":"auto",height:v?s?"auto":"30px":"auto",alignItems:"center",justifyContent:"center",boxSizing:"border-box",...p?.arrowGroupWrapper},children:[me("button",{type:"button",disabled:t,"aria-disabled":t||void 0,"aria-pressed":o,"aria-haspopup":"menu","aria-expanded":e,"data-tool":"arrow-group","data-active":o||void 0,title:`${a} \u2014 click to choose arrow type`,className:u(o),onClick:y,style:w(o),children:v&&s?Ke(rn,{children:[me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:l}),me("span",{style:{whiteSpace:"nowrap"},children:a}),me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.9,transform:E,transition:"transform 0.15s ease"},children:I})]}):Ke(rn,{children:[Ke("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:s?"6px":"0px",...v&&!s?{transform:"translate(-1px, -1px)"}:void 0},children:[l,s&&me("span",{children:a})]}),me("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.85,...v&&!s?{position:"absolute",right:"2px",bottom:"2px",width:"8px",height:"8px",lineHeight:0,pointerEvents:"none"}:{marginLeft:s?"6px":"2px"},transform:v&&!s?e?"rotate(180deg)":"rotate(0deg)":E,transition:"transform 0.15s ease"},children:v&&!s&&$t.isValidElement(I)?$t.cloneElement(I,{width:"100%",height:"100%",style:{width:"100%",height:"100%",display:"block",...I.props?.style??{}}}):I})]})}),e&&me("div",{role:"menu","aria-label":"Arrow type options",className:["rlc-arrow-dropdown",c?.arrowDropdownMenu].filter(Boolean).join(" "),style:{position:"absolute",zIndex:1020,...M,...d?{}:{minWidth:"190px",display:"flex",flexDirection:"column",gap:"2px",padding:"4px",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"2px 2px 5px rgba(0, 0, 0, 0.25)",color:"inherit",boxSizing:"border-box"},...p?.arrowDropdownMenu},children:n.map(m=>{let S=r===m.id,R=h===m.id;return Ke("button",{type:"button",role:"menuitemradio","aria-checked":S,"data-tool":m.id,"data-active":S||void 0,className:["rlc-arrow-dropdown-item",c?.arrowDropdownItem,S?c?.arrowDropdownItemActive:void 0].filter(Boolean).join(" "),onClick:()=>x(m.id),onPointerEnter:()=>T(m.id),onPointerLeave:()=>T(null),style:{...d?{}:{display:"grid",gridTemplateColumns:"20px 1fr auto",alignItems:"center",columnGap:"10px",width:"100%",padding:"6px 10px",borderRadius:"2px",border:S?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:S?"#e0e0e0":R?"#e8e8e8":"#efefef",color:"inherit",fontSize:"12px",fontWeight:"normal",cursor:"pointer",textAlign:"left",boxShadow:S?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none"},...p?.arrowDropdownItem,...S?p?.arrowDropdownItemActive:void 0},children:[me("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:m.icon}),me("span",{style:{whiteSpace:"nowrap"},children:m.label}),me("span",{style:{fontSize:"11px",opacity:S?.9:.65,fontWeight:500},children:m.shortcut})]},m.id)})})]})}import sn from"react";import qn from"react";import{jsx as Vt,jsxs as Jn}from"react/jsx-runtime";function ln({shapeOptions:e,activeShape:t,isShapeToolActive:o,unstyled:r,classNames:n,styles:a,onSelectShape:l}){let[s,i]=qn.useState(null);return Vt("div",{className:["rlc-shapes-modal-grid",n?.shapesModalGrid].filter(Boolean).join(" "),style:{...r?{}:{display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"4px",width:"100%",boxSizing:"border-box"},...a?.shapesModalGrid},children:e.map(d=>{let c=o&&t===d.kind,p=s===d.kind;return Jn("button",{type:"button","data-shape":d.kind,"data-active":c||void 0,className:["rlc-shapes-modal-item",n?.shapesModalItem,c?n?.shapesModalItemActive:void 0].filter(Boolean).join(" "),onClick:()=>l(d.kind),onPointerEnter:()=>i(d.kind),onPointerLeave:()=>i(null),style:{...r?{}:{display:"flex",flexDirection:"row",alignItems:"center",gap:"8px",width:"100%",minWidth:0,padding:"6px 8px",borderRadius:"2px",border:c?"1px solid #4f4f4f":"1px solid #767676",boxSizing:"border-box",backgroundColor:c?"#e0e0e0":p?"#e8e8e8":"#efefef",color:"#000000",fontSize:"12px",fontWeight:c?600:"normal",cursor:"pointer",textAlign:"left",transition:"background-color 0.1s ease",boxShadow:c?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none"},...a?.shapesModalItem,...c?a?.shapesModalItemActive:void 0},children:[Vt("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:"18px",height:"18px"},children:d.icon}),Vt("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",textAlign:"left"},children:d.label})]},d.kind)})})}import{Fragment as dn,jsx as Ce,jsxs as Xe}from"react/jsx-runtime";function cn({isOpen:e,readOnly:t,isShapeToolActive:o,activeShape:r,shapeOptions:n,shapesGroupLabel:a,currentShapeIcon:l,showToolLabels:s,labels:i,icons:d,unstyled:c,classNames:p,styles:b,position:g="top-center",orientation:f="horizontal",shapesGroupRef:u,getButtonClassName:w,getButtonStyle:y,onToggle:x,onSelectShape:h}){let T=f==="vertical",v=wt(g,f),M=Ue(e,g,f),E=d?.dropdownChevron??z.dropdownChevron;return Xe("div",{ref:u,className:["rlc-shapes-group",p?.shapesGroupWrapper].filter(Boolean).join(" "),style:{position:"relative",display:T?"flex":"inline-flex",width:T?s?"100%":"30px":"auto",height:T?s?"auto":"30px":"auto",alignItems:"center",justifyContent:"center",boxSizing:"border-box",...b?.shapesGroupWrapper},children:[Ce("button",{type:"button",disabled:t,"aria-disabled":t||void 0,"aria-pressed":o,"aria-haspopup":"dialog","aria-expanded":e,"data-tool":"shape-group","data-active":o||void 0,title:`${a} \u2014 open shapes modal`,className:w(o),onClick:x,style:y(o),children:T&&s?Xe(dn,{children:[Ce("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:l}),Ce("span",{style:{whiteSpace:"nowrap"},children:a}),Ce("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.9,transform:M,transition:"transform 0.15s ease"},children:E})]}):Xe(dn,{children:[Xe("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:s?"6px":"0px",...T&&!s?{transform:"translate(-1px, -1px)"}:void 0},children:[l,s&&Ce("span",{children:a})]}),Ce("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.85,...T&&!s?{position:"absolute",right:"2px",bottom:"2px",width:"8px",height:"8px",lineHeight:0,pointerEvents:"none"}:{marginLeft:s?"6px":"2px"},transform:T&&!s?e?"rotate(180deg)":"rotate(0deg)":M,transition:"transform 0.15s ease"},children:T&&!s&&sn.isValidElement(E)?sn.cloneElement(E,{width:"100%",height:"100%",style:{width:"100%",height:"100%",display:"block",...E.props?.style??{}}}):E})]})}),e&&Xe("div",{role:"dialog","aria-label":i?.shapesModalTitle??"Select a Shape",className:["rlc-shapes-modal",p?.shapesModal].filter(Boolean).join(" "),onKeyDown:I=>{I.key==="Escape"&&(I.stopPropagation(),x())},style:{position:"absolute",zIndex:1020,...v,...c?{}:{width:"240px",maxWidth:"calc(100vw - 24px)",maxHeight:"calc(100vh - 80px)",overflowY:"auto",overflowX:"hidden",padding:"4px",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"2px 2px 5px rgba(0, 0, 0, 0.25)",color:"inherit",boxSizing:"border-box"},...b?.shapesModal},children:[i?.shapesModalTitle&&Ce("div",{className:["rlc-shapes-modal-header",p?.shapesModalHeader].filter(Boolean).join(" "),style:{...c?{}:{padding:"2px 4px 4px",fontSize:"11px",fontWeight:600,letterSpacing:"0.04em",color:"#000000",textTransform:"uppercase",borderBottom:"1px solid #767676",marginBottom:"4px"},...b?.shapesModalHeader},children:i.shapesModalTitle}),Ce(ln,{shapeOptions:n,activeShape:r,isShapeToolActive:o,unstyled:c,classNames:p,styles:b,onSelectShape:h})]})]})}import{Fragment as Zt,jsx as ye,jsxs as qt}from"react/jsx-runtime";function pn(e){let{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,enabledTools:s,customTools:i,labels:d,icons:c,unstyled:p,classNames:b,styles:g,arrowOptions:f,shapeOptions:u,arrowGroupLabel:w,currentArrowIcon:y,shapesGroupLabel:x,currentShapeIcon:h,isArrowToolActive:T,isShapeToolActive:v,arrowDropdownOpen:M,shapesModalOpen:E,arrowGroupRef:I,shapesGroupRef:m,setArrowDropdownOpen:S,setShapesModalOpen:R,getButtonClassName:B,getButtonStyle:F}=e,{activeTool:G,setActiveTool:$,activeShape:V,setActiveShape:C}=t,k=(P,O)=>a&&l?qt(Zt,{children:[ye("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:"20px"},children:P}),ye("span",{style:{whiteSpace:"nowrap"},children:O}),ye("span",{})]}):qt(Zt,{children:[P,l&&ye("span",{children:O})]}),D=(P,O,_,H,K=!1)=>{let Z=G===P;return ye("button",{type:"button",disabled:!K&&o,"aria-disabled":!K&&o?!0:void 0,"aria-pressed":Z,"data-tool":P,"data-active":Z||void 0,title:`${O} (${_})`,className:B(Z),onClick:()=>{!K&&o||($(P),S(!1),R(!1))},style:F(Z),children:k(H,O)},P)};return qt(Zt,{children:[s.map(P=>P==="select"?D("select",d?.select??"Select","V",c?.select??z.select,!0):P==="freedraw"?D("freedraw",d?.freedraw??"Free Draw","P",c?.freedraw??z.freedraw):P==="ruler"?D("ruler",d?.ruler??"Ruler","R",c?.ruler??z.ruler):P==="note"?D("note",d?.note??"Note Card","N",c?.note??z.note):P==="text"?D("text",d?.text??"Normal Text","T",c?.text??z.text):P==="arrow"?ye(an,{isOpen:M,readOnly:o,isArrowToolActive:T,activeTool:G,arrowOptions:f,arrowGroupLabel:w,currentArrowIcon:y,showToolLabels:l,labels:d,icons:c,unstyled:p,classNames:b,styles:g,position:r,orientation:n,arrowGroupRef:I,getButtonClassName:B,getButtonStyle:F,onToggle:()=>{o||(R(!1),S(O=>!O))},onSelectOption:O=>{$(O),S(!1)}},"arrow"):P==="shape"?ye(cn,{isOpen:E,readOnly:o,isShapeToolActive:v,activeShape:V,shapeOptions:u,shapesGroupLabel:x,currentShapeIcon:h,showToolLabels:l,labels:d,icons:c,unstyled:p,classNames:b,styles:g,position:r,orientation:n,shapesGroupRef:m,getButtonClassName:B,getButtonStyle:F,onToggle:()=>{o||(S(!1),R(O=>!O))},onSelectShape:O=>{C(O),$("shape"),R(!1)}},"shape"):null),i?.map(P=>{if(P.render)return ye(Qn.Fragment,{children:P.render(t)},P.id);let O=!!P.isActive;return ye("button",{type:"button",disabled:P.disabled,"aria-pressed":O,title:P.title??P.label,className:B(O),onClick:()=>P.onClick?.(t),style:F(O),children:k(P.icon,P.label??"")},P.id)})]})}import{jsx as Jt,jsxs as er}from"react/jsx-runtime";function un(e){let{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,collapsible:s,showCollapseButton:i,enabledTools:d,customTools:c,showHistoryControls:p,showDeleteButton:b,showClearButton:g,labels:f,icons:u,unstyled:w,classNames:y,styles:x,arrowOptions:h,shapeOptions:T,arrowGroupLabel:v,currentArrowIcon:M,shapesGroupLabel:E,currentShapeIcon:I,isArrowToolActive:m,isShapeToolActive:S,arrowDropdownOpen:R,shapesModalOpen:B,arrowGroupRef:F,shapesGroupRef:G,setArrowDropdownOpen:$,setShapesModalOpen:V,getButtonClassName:C,getButtonStyle:k,onCollapse:D}=e;return er("div",{role:"toolbar","aria-label":"Map annotation tools",className:["rlc-toolbar-primary",y?.toolbarPrimary].filter(Boolean).join(" "),style:{...w?{}:{display:"flex",flexDirection:a?"column":"row",alignItems:a&&l?"stretch":"center",gap:"3px",padding:"3px",boxSizing:"border-box",minWidth:a?l?"auto":"38px":void 0,width:a?l?"auto":"38px":void 0,backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",color:"#000000"},...x?.toolbarPrimary},children:[Jt(pn,{controller:t,readOnly:o,position:r,orientation:n,isVertical:a,showToolLabels:l,enabledTools:d,customTools:c,labels:f,icons:u,unstyled:w,classNames:y,styles:x,arrowOptions:h,shapeOptions:T,arrowGroupLabel:v,currentArrowIcon:M,shapesGroupLabel:E,currentShapeIcon:I,isArrowToolActive:m,isShapeToolActive:S,arrowDropdownOpen:R,shapesModalOpen:B,arrowGroupRef:F,shapesGroupRef:G,setArrowDropdownOpen:$,setShapesModalOpen:V,getButtonClassName:C,getButtonStyle:k}),Jt(nn,{readOnly:o,showHistoryControls:p,showDeleteButton:b,showClearButton:g,showToolLabels:l,selectedItem:t.selectedItem,itemsCount:t.items.length,canUndo:t.canUndo,canRedo:t.canRedo,undo:t.undo,redo:t.redo,deleteSelected:t.deleteSelected,clearAll:t.clearAll,orientation:n,labels:f,icons:u,unstyled:w,classNames:y,styles:x}),s&&i&&Jt(en,{position:r,orientation:n,isVertical:a,showToolLabels:l,unstyled:w,labels:f,icons:u,classNames:y,styles:x,onCollapse:D})]})}import{useEffect as tr,useRef as to}from"react";import{jsx as Qt,jsxs as eo}from"react/jsx-runtime";function St({label:e,value:t,options:o,onChange:r,control:n,unstyled:a,classNames:l,styles:s,icons:i}){let d=Array.from(new Set([...o,t])).sort((p,b)=>p-b),c=i?.dropdownChevron??z.dropdownChevron;return eo("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:[Qt("span",{style:{fontSize:"12px",color:"inherit"},children:e}),eo("div",{style:{position:"relative",display:"inline-flex",alignItems:"center"},children:[Qt("select",{"aria-label":e,"data-control":n,value:t,onChange:p=>r(Number(p.target.value)),className:["rlc-toolbar-select",l?.toolbarSelect].filter(Boolean).join(" "),style:{...a?{}:{padding:"1px 16px 1px 4px",borderRadius:"2px",border:"1px solid #767676",backgroundColor:"#efefef",color:"#000000",fontSize:"12px",cursor:"pointer",appearance:"none",WebkitAppearance:"none"},...s?.toolbarSelect},children:d.map(p=>eo("option",{value:p,children:[p,"px"]},p))}),!a&&Qt("span",{"aria-hidden":"true",style:{position:"absolute",right:"3px",top:"50%",transform:"translateY(-50%)",pointerEvents:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",opacity:.7,color:"currentColor"},children:c})]})]})}import{Fragment as oo,jsx as le,jsxs as ke}from"react/jsx-runtime";function fn(e){let{isArrowContext:t,isFreeDrawContext:o,isShapeContext:r,isRulerContext:n,isTextContext:a,isNoteContext:l,selectedItem:s,selectedShape:i,selectedArrow:d,selectedText:c,activeColor:p,setActiveColor:b,strokeWidth:g,setStrokeWidth:f,strokeWidthOptions:u,dashed:w,setDashed:y,shapeFilled:x,setShapeFilled:h,noteColor:T,setNoteColor:v,fontSize:M,setFontSize:E,fontSizeOptions:I,fontWeight:m,setFontWeight:S,updateItem:R,notifyChangeComplete:B,isEditingLabel:F,setEditingLabel:G,strokeColors:$,orientation:V="horizontal",labels:C,icons:k,unstyled:D,classNames:P,styles:O}=e,_=V==="vertical",H=to(null),K=to(null),Z=to(null),q=i?i.labelMode!==!1&&i.hasLabelMode!==!1:!1,oe=d?d.labelMode!==!1&&d.hasLabelMode!==!1:!1;tr(()=>{F&&(i&&q&&H.current?(H.current.focus(),H.current.select()):d&&oe&&K.current&&(K.current.focus(),K.current.select()))},[F,i?.id,d?.id,q,oe]);let ne=(W,J=!1)=>({...D?{}:{padding:"2px 6px",borderRadius:"2px",border:W?"1px solid #4f4f4f":"1px solid #767676",backgroundColor:W?"#e0e0e0":"#efefef",color:"#000000",boxShadow:W?"inset 1px 1px 2px rgba(0, 0, 0, 0.2)":"none",fontSize:"12px",fontWeight:J?700:void 0,cursor:"pointer"},...O?.actionButton,...W?O?.toolButtonActive:void 0}),j=W=>["rlc-action-btn",P?.actionButton,W?P?.toolButtonActive:void 0].filter(Boolean).join(" "),U=(W="105px")=>({...D?{}:{minWidth:"100px",width:_?"auto":W,flex:_?"1 1 auto":void 0,boxSizing:"border-box",padding:"2px 4px",borderRadius:"2px",border:"1px solid #767676",backgroundColor:"#ffffff",color:"#000000",fontSize:"12px"},...O?.toolbarInput}),L=le("div",{className:["rlc-toolbar-divider",P?.toolbarDivider].filter(Boolean).join(" "),style:{...D?{}:_?{width:"100%",height:"1px",backgroundColor:"#767676"}:{width:"1px",height:"16px",backgroundColor:"#767676"},...O?.toolbarDivider}}),A=!!(s&&(s.type==="arrow"||s.type==="freedraw"||s.type==="shape"||s.type==="ruler")?s.dashed:w),Y=!!(i?i.filled:x),ee=c?c.fontWeight==="bold":(m??"bold")==="bold";return ke("div",{className:["rlc-toolbar-secondary",P?.toolbarSecondary].filter(Boolean).join(" "),style:{...D?{}:{display:"flex",flexDirection:"row",flexWrap:_?"wrap":"nowrap",alignItems:"center",gap:_?"5px":"6px",padding:_?"6px 8px":"3px 6px",width:_?"230px":void 0,maxWidth:_?"230px":"min(92vw, 620px)",overflowX:_?"visible":"auto",scrollbarWidth:"none",boxSizing:"border-box",backgroundColor:"#f0f0f0",border:"1px solid #767676",borderRadius:"2px",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",color:"#000000",fontSize:"12px"},...O?.toolbarSecondary},children:[(t||o||r||n||a)&&ke("div",{style:{display:"flex",alignItems:"center",gap:"4px",width:_?"100%":void 0},children:[le("span",{style:{fontSize:"12px",color:"inherit"},children:C?.color??"Color"}),$.map(W=>{let J=(s&&s.type!=="note"?s.color:p)===W;return le("button",{type:"button",title:`${C?.color??"Color"} ${W}`,"data-active":J||void 0,className:["rlc-swatch-btn",P?.swatchButton,J?P?.swatchButtonActive:void 0].filter(Boolean).join(" "),onClick:()=>b(W),style:{backgroundColor:W,...D?{}:{width:"16px",height:"16px",borderRadius:"999px",border:J?"2px solid #000000":"1px solid #767676",boxShadow:J?"0 0 0 1px #000000":"none",cursor:"pointer",padding:0},...O?.swatchButton,...J?O?.swatchButtonActive:void 0}},W)})]}),(t||o||r||n)&&ke(oo,{children:[L,le(St,{label:C?.width??"Width",control:"stroke-width",value:s&&(s.type==="arrow"||s.type==="freedraw"||s.type==="shape"||s.type==="ruler")?s.strokeWidth:g,options:u??Pt,onChange:f,unstyled:D,classNames:P,styles:O,icons:k}),le("button",{type:"button","data-active":A||void 0,className:j(A),onClick:()=>y(!A),style:ne(A),children:C?.dashed??"Dashed"})]}),r&&ke(oo,{children:[le("button",{type:"button","data-active":Y||void 0,className:j(Y),onClick:()=>h(!Y),style:ne(Y),children:C?.filled??"Fill"}),i&&q&&le("input",{ref:H,type:"text","data-tual-shape-label-input":i.id,"data-testid":"shape-label-input","data-label-mode":"true","data-editing-label":F?"true":void 0,placeholder:C?.shapeLabelPlaceholder??"Shape label...",value:i.label??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(i.id,{label:W.target.value}),onFocus:()=>G?.(!0),onBlur:W=>{let J=W.relatedTarget;J?.tagName==="INPUT"||J?.tagName==="TEXTAREA"||J?.closest("[data-tual-toolbar], [data-tual-inline-shape-label]")||(G?.(!1),B?.(i))},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(i))},style:U()})]}),d&&oe&&le("input",{ref:K,type:"text","data-tual-arrow-label-input":d.id,"data-testid":"arrow-label-input","data-label-mode":"true","data-editing-label":F?"true":void 0,placeholder:C?.arrowLabelPlaceholder??"Arrow label...",value:d.label??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(d.id,{label:W.target.value}),onFocus:()=>G?.(!0),onBlur:()=>{G?.(!1),B?.(d)},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(d))},style:U()}),a&&ke(oo,{children:[L,le(St,{label:C?.fontSize??"Size",control:"font-size",value:c?c.initialFontSize??M??16:M??16,options:I??Lt,onChange:W=>E?.(W),unstyled:D,classNames:P,styles:O,icons:k}),le("button",{type:"button","data-active":ee||void 0,title:C?.textBold??"Toggle bold","aria-pressed":ee,className:j(ee),onClick:()=>S?.(ee?"normal":"bold"),style:ne(ee,!0),children:k?.textBold??z.textBold??C?.textBold??"B"}),c&&le("input",{ref:Z,type:"text","data-tual-text-input":c.id,"data-testid":"text-input","data-editing-label":F?"true":void 0,placeholder:C?.textPlaceholder??"Text...",value:c.text??"",className:["rlc-toolbar-input",P?.toolbarInput].filter(Boolean).join(" "),onChange:W=>R(c.id,{text:W.target.value}),onFocus:()=>G?.(!0),onBlur:W=>{let J=W.relatedTarget;J?.tagName==="INPUT"||J?.tagName==="TEXTAREA"||J?.closest("[data-tual-text], [data-tual-toolbar]")||(G?.(!1),B?.(c))},onKeyDown:W=>{(W.key==="Enter"||W.key==="Escape")&&(W.preventDefault(),G?.(!1),W.currentTarget.blur(),B?.(c))},style:U("120px")})]}),l&&ke("div",{style:{display:"flex",alignItems:"center",gap:"6px"},children:[le("span",{style:{opacity:.75,fontSize:"11px"},children:C?.noteTheme??"Theme"}),ie.map(W=>{let J=(s?.type==="note"?s.backgroundColor:T)===W.bg;return le("button",{type:"button",title:W.name,"data-active":J||void 0,className:["rlc-swatch-btn",P?.swatchButton,J?P?.swatchButtonActive:void 0].filter(Boolean).join(" "),onClick:()=>v(W.bg),style:{backgroundColor:W.header,...D?{}:{width:"18px",height:"18px",borderRadius:"999px",border:J?"2px solid #111827":`1px solid ${W.border}`,boxShadow:J?"0 0 0 1px #111827":"none",cursor:"pointer",padding:0},...O?.swatchButton,...J?O?.swatchButtonActive:void 0}},W.name)})]})]})}import{useEffect as or,useRef as hn,useState as mn}from"react";function gn(e,t){let{activeTool:o,selectedItem:r}=e,[n,a]=mn(!1),[l,s]=mn(!1),i=hn(null),d=hn(null);or(()=>{if(!n&&!l)return;let h=T=>{n&&i.current&&!i.current.contains(T.target)&&a(!1),l&&d.current&&!d.current.contains(T.target)&&s(!1)};return window.addEventListener("pointerdown",h),()=>window.removeEventListener("pointerdown",h)},[n,l]);let c=Qo(o),p=o==="shape",b=c||r?.type==="arrow",g=o==="freedraw"||r?.type==="freedraw",f=p||r?.type==="shape",u=o==="ruler"||r?.type==="ruler",w=o==="note"||r?.type==="note",y=o==="text"||r?.type==="text";return{isArrowToolActive:c,isShapeToolActive:p,isArrowContext:b,isFreeDrawContext:g,isShapeContext:f,isRulerContext:u,isNoteContext:w,isTextContext:y,showSettingsBar:!t&&!n&&!l&&(b||g||f||u||y||w),arrowDropdownOpen:n,setArrowDropdownOpen:a,shapesModalOpen:l,setShapesModalOpen:s,arrowGroupRef:i,shapesGroupRef:d}}import{jsx as vt,jsxs as rr}from"react/jsx-runtime";function no({controller:e,position:t="top-center",orientation:o,collapsible:r=!0,defaultCollapsed:n=!1,collapsed:a,onCollapsedChange:l,showCollapseButton:s=!0,readOnly:i,enabledTools:d=Yo,customTools:c,showHistoryControls:p=!0,showDeleteButton:b=!0,showClearButton:g=!0,showToolLabels:f,labels:u,icons:w,unstyled:y=!1,classNames:x,styles:h,strokeColors:T=po,strokeWidthOptions:v,fontSizeOptions:M,className:E,style:I}){let m=!!(i??e.readOnly),R=o??(t==="left"||t==="right"||t==="left-center"||t==="right-center"?"vertical":"horizontal"),B=R==="vertical",F=f??!B,[G,$]=nr(n),V=a!==void 0?a:G,C=se=>{a===void 0&&$(se),l?.(se)},{activeTool:k,activeShape:D,selectedItem:P}=e,{isArrowToolActive:O,isShapeToolActive:_,isArrowContext:H,isFreeDrawContext:K,isShapeContext:Z,isRulerContext:q,isNoteContext:oe,isTextContext:ne,showSettingsBar:j,arrowDropdownOpen:U,setArrowDropdownOpen:L,shapesModalOpen:A,setShapesModalOpen:Y,arrowGroupRef:ee,shapesGroupRef:W}=gn(e,m),J=Ko(u,w),ue=Xo(u,w),$e=J.find(se=>se.id===k),ao=u?.arrowGroup??($e?$e.label:"Arrows"),io=w?.arrowGroup??($e?$e.icon:z.arrowLinear),Ve=ue.find(se=>se.kind===D),lo=u?.shapesGroup??(_&&Ve?Ve.label:"Shapes"),so=w?.shapesGroup??(_&&Ve?Ve.icon:z.shapesGroup),Dn=qo(k,O,io,ao,so,lo,w,u),xe=se=>se.stopPropagation();return V?vt("div",{"data-tual-toolbar":!0,"data-readonly":m||void 0,"data-position":t,"data-orientation":R,"data-collapsed":"true",className:["rlc-toolbar","rlc-toolbar-collapsed",m?"rlc-toolbar-readonly":void 0,x?.toolbar,x?.toolbarCollapsed,E].filter(Boolean).join(" "),onClick:xe,onDoubleClick:xe,onPointerDown:xe,onWheel:xe,style:{position:"absolute",zIndex:1e3,pointerEvents:"auto",userSelect:"none",..._t[t],...h?.toolbar,...h?.toolbarCollapsed,...I},children:vt(tn,{position:t,orientation:R,showToolLabels:F,unstyled:y,activeToolInfo:Dn,labels:u,icons:w,classNames:x,styles:h,onExpand:()=>C(!1)})}):rr("div",{"data-tual-toolbar":!0,"data-readonly":m||void 0,"data-position":t,"data-orientation":R,className:["rlc-toolbar",m?"rlc-toolbar-readonly":void 0,x?.toolbar,E].filter(Boolean).join(" "),onClick:xe,onDoubleClick:xe,onPointerDown:xe,onWheel:xe,style:{position:"absolute",zIndex:1e3,pointerEvents:"auto",userSelect:"none",..._t[t],...Zo(t,B,y),...h?.toolbar,...I},children:[vt(un,{controller:e,readOnly:m,position:t,orientation:R,isVertical:B,showToolLabels:F,collapsible:r,showCollapseButton:s,enabledTools:d,customTools:c,showHistoryControls:p,showDeleteButton:b,showClearButton:g,labels:u,icons:w,unstyled:y,classNames:x,styles:h,arrowOptions:J,shapeOptions:ue,arrowGroupLabel:ao,currentArrowIcon:io,shapesGroupLabel:lo,currentShapeIcon:so,isArrowToolActive:O,isShapeToolActive:_,arrowDropdownOpen:U,shapesModalOpen:A,arrowGroupRef:ee,shapesGroupRef:W,setArrowDropdownOpen:L,setShapesModalOpen:Y,getButtonClassName:se=>Vo(se,x),getButtonStyle:se=>$o(se,B,F,m,y,h),onCollapse:()=>C(!0)}),j&&vt(fn,{isArrowContext:H,isFreeDrawContext:K,isShapeContext:Z,isRulerContext:q,isTextContext:ne,isNoteContext:oe,selectedItem:P,selectedShape:P?.type==="shape"?P:null,selectedArrow:P?.type==="arrow"?P:null,selectedText:P?.type==="text"?P:null,activeColor:e.activeColor,setActiveColor:e.setActiveColor,strokeWidth:e.strokeWidth,setStrokeWidth:e.setStrokeWidth,strokeWidthOptions:v,dashed:e.dashed,setDashed:e.setDashed,shapeFilled:e.shapeFilled,setShapeFilled:e.setShapeFilled,noteColor:e.noteColor,setNoteColor:e.setNoteColor,fontSize:e.fontSize,setFontSize:e.setFontSize,fontSizeOptions:M,fontWeight:e.fontWeight,setFontWeight:e.setFontWeight,updateItem:e.updateItem,notifyChangeComplete:e.notifyChangeComplete,isEditingLabel:e.isEditingLabel,setEditingLabel:e.setEditingLabel,strokeColors:T,orientation:R,labels:u,icons:w,unstyled:y,classNames:x,styles:h})]})}import{createPortal as mr}from"react-dom";import{useMap as gr}from"react-leaflet";import{jsx as Ie,jsxs as bn}from"react/jsx-runtime";function yn(e){let{map:t,canvasRef:o,viewport:r,isReadOnly:n,isDrawingTool:a,activeTool:l,hoverCursor:s,zIndex:i,className:d,style:c,classNames:p,styles:b,handleInteractionPointerDown:g,handleInteractionPointerMove:f,noteItems:u,textItems:w,selectedId:y,labels:x,icons:h,unstyled:T,clampOverlaysToViewport:v,autoMinimizeNotesZoom:M,autoMinimizeTextZoom:E,renderNote:I,renderText:m,setSelectedId:S,updateItem:R,removeItem:B,notifyChangeComplete:F,renderToolbar:G,showToolbar:$,controller:V,toolbarPosition:C,toolbarOrientation:k,collapsible:D,defaultCollapsed:P,collapsed:O,onCollapsedChange:_,showCollapseButton:H,enabledTools:K,customTools:Z,showHistoryControls:q,showDeleteButton:oe,showClearButton:ne,showToolLabels:j,strokeColors:U,strokeWidthOptions:L,fontSizeOptions:A}=e;return bn("div",{className:["rlc-overlay",n?"rlc-readonly":void 0,p?.overlay,d].filter(Boolean).join(" "),"data-tual-overlay":!0,"data-readonly":n||void 0,style:{position:"absolute",inset:0,zIndex:i,pointerEvents:"none",overflow:"hidden",...b?.overlay,...c},children:[Ie("canvas",{ref:o,className:["rlc-canvas",p?.canvas].filter(Boolean).join(" "),style:{position:"absolute",inset:0,width:`${r.width}px`,height:`${r.height}px`,pointerEvents:"none",...b?.canvas}}),a&&Ie("div",{"data-tual-drawing-surface":!0,className:["rlc-drawing-surface",p?.drawingSurface].filter(Boolean).join(" "),onPointerDown:g,onPointerMove:f,style:{position:"absolute",inset:0,pointerEvents:"auto",cursor:l==="text"?"text":"crosshair",...b?.drawingSurface}}),s&&!a&&Ie("style",{children:`.leaflet-container { cursor: ${s} !important; }`}),bn("div",{className:["rlc-items-container",p?.itemsContainer].filter(Boolean).join(" "),style:{position:"absolute",inset:0,pointerEvents:"none",...b?.itemsContainer},children:[u.map(Y=>Ie(ko,{item:Y,screenPos:Q(t,Y.position),isSelected:!n&&Y.id===y,map:t,readOnly:n,labels:x,icons:h,unstyled:T,classNames:p,styles:b,clampToViewport:v,autoMinimizeZoomThreshold:M,renderNote:I,onSelect:S,onUpdate:R,onDelete:B,onComplete:F},Y.id)),w.map(Y=>Ie(Fo,{item:Y,screenPos:Q(t,Y.position),isSelected:!n&&Y.id===y,isEditingLabel:!n&&Y.id===y&&!!V.isEditingLabel,map:t,readOnly:n,labels:x,icons:h,unstyled:T,classNames:p,styles:b,clampToViewport:v,autoMinimizeZoomThreshold:E,renderText:m,onSelect:S,onUpdate:R,onDelete:B,onComplete:F},Y.id)),!$&&V.isEditingLabel&&y&&(()=>{let Y=V.items.find(W=>W.id===y&&W.type==="shape");return!Y||!(Y.labelMode!==!1&&Y.hasLabelMode!==!1)?null:Ie(wo,{shape:Y,map:t,labels:x,onUpdate:R,onClose:()=>{V.setEditingLabel?.(!1),F(Y)}})})()]}),G?G(V):$&&Ie(no,{controller:V,position:C,orientation:k,collapsible:D,defaultCollapsed:P,collapsed:O,onCollapsedChange:_,showCollapseButton:H,readOnly:n,enabledTools:K,customTools:Z,showHistoryControls:q,showDeleteButton:oe,showClearButton:ne,showToolLabels:j,labels:x,icons:h,unstyled:T,classNames:p,styles:b,strokeColors:U,strokeWidthOptions:L,fontSizeOptions:A})]})}import{useCallback as hr,useRef as Ln}from"react";import{useCallback as ar,useEffect as ir}from"react";function xn({map:e,viewport:t,canvasRef:o,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,draftShape:i,draftArrow:d,draftRuler:c,draftFreeDrawRef:p,activeColor:b,strokeWidth:g,dashed:f,shapeFilled:u,annotationTheme:w,arrowTheme:y,isReadOnly:x}){let h=ar(()=>{ht({map:e,canvas:o.current,width:t.width,height:t.height,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,draftShape:i,draftArrow:d,draftRuler:c,draftFreeDraw:p.current,activeColor:b,strokeWidth:g,dashed:f,shapeFilled:u,annotationTheme:w,arrowTheme:y,isReadOnly:x})},[e,o,t.width,t.height,a,n,r,l,s,i,d,c,p,b,g,f,u,w,y,x]);return ir(()=>{h()},[h,t.tick]),h}import{useEffect as lr}from"react";function wn({isReadOnly:e,selectedId:t,selectedItem:o,items:r,isEditingLabel:n,setEditingLabel:a,deleteSelected:l,setSelectedId:s,setActiveTool:i,setDraftArrow:d,setDraftShape:c,setDraftRuler:p,clearDraftFreeDraw:b,notifyChangeComplete:g}){lr(()=>{if(e)return;let f=u=>{let w=u.target;if(!(w&&(w.tagName==="INPUT"||w.tagName==="TEXTAREA"||w.isContentEditable))){if(u.key==="Escape")d(null),c(null),p?.(null),b(),s(null),i("select"),g?.();else if(u.key==="Delete"||u.key==="Backspace")t&&(u.preventDefault(),l());else if(u.key==="Enter"){let y=o??r?.find(x=>x.id===t);if(y&&y.type==="shape"){let x=y;if(x.labelMode!==!1&&x.hasLabelMode!==!1){u.preventDefault(),a?.(!0);let T=()=>{let v=document.querySelector(`[data-tual-shape-label-input="${x.id}"], [data-tual-shape-label-input], input[placeholder*="Shape label"]`);v&&(v.focus(),v.select())};T(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(T),setTimeout(T,0)}}else if(y&&y.type==="text"){u.preventDefault(),a?.(!0);let x=()=>{let h=document.querySelector(`[data-tual-text="${y.id}"] textarea, [data-tual-text="${y.id}"] input, [data-tual-text] textarea`);h&&(h.focus(),"select"in h&&typeof h.select=="function"&&h.select())};x(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(x),setTimeout(x,0)}else if(y&&y.type==="note"){u.preventDefault(),a?.(!0);let x=()=>{let h=document.querySelector(`[data-tual-note="${y.id}"] textarea, [data-tual-note="${y.id}"] input, [data-tual-note] textarea`);h&&h.focus()};x(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(x),setTimeout(x,0)}else if(y&&y.type==="arrow"){let x=y;if(x.labelMode!==!1&&x.hasLabelMode!==!1){u.preventDefault(),a?.(!0);let T=()=>{let v=document.querySelector(`[data-tual-arrow-label-input="${x.id}"], [data-tual-arrow-label-input], input[placeholder*="Arrow label"]`);v&&(v.focus(),v.select())};T(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(T),setTimeout(T,0)}}}else if(!u.metaKey&&!u.ctrlKey&&!u.altKey){let y=u.key.toLowerCase();y==="v"?i("select"):y==="p"?i("freedraw"):y==="r"?i("ruler"):y==="a"?i("arrow-linear"):y==="c"?i("arrow-curved"):y==="b"?i("arrow-bi"):y==="e"?i("arrow-elbow"):y==="s"?i("arrow-s-curve"):y==="n"?i("note"):y==="t"&&i("text")}}};return window.addEventListener("keydown",f),()=>window.removeEventListener("keydown",f)},[e,t,o,r,a,l,s,i,d,c,p,b,g])}import{useEffect as sr,useState as dr}from"react";function Tn({map:e,activeTool:t,isReadOnly:o,arrowItems:r,shapeItems:n,freeDrawItems:a,rulerItems:l,selectedId:s,setSelectedId:i,setEditingLabel:d,updateItem:c,notifyChangeComplete:p}){let[b,g]=dr(null);return sr(()=>{if(!e||t!=="select"||o){g(null);return}let f=e.getContainer(),u=h=>{let T=f.getBoundingClientRect();return{x:h.clientX-T.left,y:h.clientY-T.top}},w=h=>{if(h.target?.closest("[data-tual-toolbar], [data-tual-note], [data-tual-text]")){g(null);return}let v=u(h),M=r.find(m=>m.id===s);if(M&&Ne(v,de(e,M),M)){g("crosshair");return}let E=n.find(m=>m.id===s);if(E&&He(v,ae(e,E))){g("nwse-resize");return}let I=l.find(m=>m.id===s);if(I&&je(v,ce(e,I))){g("crosshair");return}for(let m=r.length-1;m>=0;m-=1){let S=r[m];if(Be(v,de(e,S),S)){g("pointer");return}}for(let m=n.length-1;m>=0;m-=1)if(Me(v,ae(e,n[m]))){g("pointer");return}for(let m=a.length-1;m>=0;m-=1){let S=a[m];if(We(v,Pe(e,S),S)){g("pointer");return}}for(let m=l.length-1;m>=0;m-=1){let S=l[m];if(Fe(v,ce(e,S),S)){g("pointer");return}}g(null)},y=h=>{if(h.button!==0||h.target?.closest("[data-tual-toolbar], [data-tual-note], [data-tual-text], .leaflet-control"))return;let v=u(h),M=r.find(m=>m.id===s);if(M){let m=de(e,M),S=Ne(v,m,M);if(S){h.stopPropagation(),h.preventDefault(),lt(e,M,m,S,u,c);return}}let E=n.find(m=>m.id===s);if(E){let m=ae(e,E),S=He(v,m);if(S){h.stopPropagation(),h.preventDefault(),st(e,E,m,S,u,c);return}}let I=l.find(m=>m.id===s);if(I){let m=ce(e,I),S=je(v,m);if(S){h.stopPropagation(),h.preventDefault(),ut(e,I,m,S,u,c);return}}for(let m=r.length-1;m>=0;m-=1){let S=r[m],R=de(e,S);if(Be(v,R,S)){h.stopPropagation(),h.preventDefault(),i(S.id),dt(e,S,R,v,u,c);return}}for(let m=n.length-1;m>=0;m-=1){let S=n[m],R=ae(e,S);if(Me(v,R)){h.stopPropagation(),h.preventDefault(),i(S.id),ct(e,S,R,v,u,c);return}}for(let m=a.length-1;m>=0;m-=1){let S=a[m],R=Pe(e,S);if(We(v,R,S)){h.stopPropagation(),h.preventDefault(),i(S.id),pt(e,S,R,v,u,c);return}}for(let m=l.length-1;m>=0;m-=1){let S=l[m],R=ce(e,S);if(Fe(v,R,S)){h.stopPropagation(),h.preventDefault(),i(S.id),ft(e,S,R,v,u,c);return}}s&&(i(null),p?.())},x=h=>{if(h.target?.closest("[data-tual-toolbar], [data-tual-note], [data-tual-text], .leaflet-control"))return;let v=f.getBoundingClientRect(),M={x:h.clientX-v.left,y:h.clientY-v.top};for(let E=n.length-1;E>=0;E-=1){let I=n[E],m=ae(e,I);if(Me(M,m)){if(h.stopPropagation(),h.preventDefault(),i(I.id),I.labelMode!==!1&&I.hasLabelMode!==!1){d?.(!0);let R=()=>{let B=document.querySelector(`[data-tual-shape-label-input="${I.id}"], [data-tual-shape-label-input], input[placeholder*="Shape label"]`);B&&(B.focus(),B.select())};R(),typeof requestAnimationFrame=="function"&&requestAnimationFrame(R),setTimeout(R,0)}return}}};return f.addEventListener("pointermove",w),f.addEventListener("pointerdown",y,{capture:!0}),f.addEventListener("dblclick",x,{capture:!0}),()=>{f.removeEventListener("pointermove",w),f.removeEventListener("pointerdown",y,{capture:!0}),f.removeEventListener("dblclick",x,{capture:!0})}},[e,t,r,n,a,s,i,d,c,o]),b}import{useRef as Sn,useState as ro}from"react";function vn({map:e,activeTool:t,setActiveTool:o,activeShape:r,shapeFilled:n,activeColor:a,strokeWidth:l,dashed:s,noteColor:i,fontSize:d,fontWeight:c,labels:p,addItem:b,paintCanvas:g}){let[f,u]=ro(null),[w,y]=ro(null),[x,h]=ro(null),T=Sn(null),v=Sn(null),M=()=>{T.current=null,v.current!==null&&(window.cancelAnimationFrame(v.current),v.current=null)},E=S=>{if(!e)return{x:0,y:0};let R=e.getContainer().getBoundingClientRect();return{x:S.clientX-R.left,y:S.clientY-R.top}};return{draftArrow:f,setDraftArrow:u,draftShape:w,setDraftShape:y,draftRuler:x,setDraftRuler:h,draftFreeDrawRef:T,clearDraftFreeDraw:M,handleInteractionPointerDown:S=>{if(S.button!==0||!e)return;S.stopPropagation(),S.preventDefault();let R=e.getContainer(),B=E(S),F=X(e,B);if(t==="freedraw"){ze(e,R,B,F,a,l,s,T,v,g,b,o);return}if(t==="shape"){rt(e,R,B,F,r,a,n,l,s,y,b,o);return}if(t==="ruler"){it(e,R,B,F,a,l,s,h,b,o);return}if(t==="note"){b(ot(F,i,p?.noteDefaultTitle)),S.shiftKey||o("select");return}if(t==="text"){let $=typeof e?.getZoom=="function"?e.getZoom():14;b(nt(F,a,d,c,$)),S.shiftKey||o("select");return}let G=Ae[t];if(G){if(f){let $=Q(e,f.startGeo),V=S.shiftKey?re($,B):B;b(Ge(f.arrowStyle,f.startGeo,X(e,V),a,l,s)),u(null),o("select");return}at(e,R,B,F,G,a,l,s,u,b,o)}},handleInteractionPointerMove:S=>{if(!f||!e)return;let R=E(S),B=Q(e,f.startGeo),F=S.shiftKey?re(B,R):R;u(G=>G?{...G,currentGeo:X(e,F)}:null)}}}import{useEffect as cr}from"react";function Cn(e){cr(()=>{if(e)return gt(e)},[e])}import{useEffect as pr,useMemo as ur,useRef as fr}from"react";function Re(e,t){let o=fr([]);return ur(()=>{let r=e.filter(n=>n.type===t);return o.current.length===r.length&&o.current.every((n,a)=>n===r[a])?o.current:(o.current=r,r)},[e,t])}function Pn(e,t,o,r,n,a,l){pr(()=>{if(!e||t)return;let s=i=>{if(i.button!==0)return;let d=i.target;e.getContainer().contains(d)||d?.closest?.("[data-tual-overlay], [data-tual-toolbar], [data-tual-note], [data-tual-text], .leaflet-control")||(o!=="select"&&r("select"),n&&a(null),l())};return window.addEventListener("pointerdown",s),()=>window.removeEventListener("pointerdown",s)},[e,t,o,r,n,a,l])}function In(e){let{map:t,controller:o,readOnly:r,showToolbar:n,annotationTheme:a,arrowTheme:l,labels:s,...i}=e,d=!!(r??o?.readOnly??!1),c=Uo({...i,readOnly:d}),p=o??c,b=n??!d,g=Ln(i);g.current=i;let f=hr(ue=>{p.notifyChangeComplete(ue),o&&(g.current.onItemsChangeComplete?.(p.items,ue),g.current.onChangeComplete?.(p.items,ue),g.current.onEditEnd?.(p.items,ue),g.current.onEditComplete?.(p.items,ue),ue&&g.current.onItemChangeComplete?.(ue))},[p,o]),{items:u,activeTool:w,setActiveTool:y,activeShape:x,shapeFilled:h,selectedId:T,setSelectedId:v,activeColor:M,strokeWidth:E,dashed:I,noteColor:m,fontSize:S,fontWeight:R,addItem:B,updateItem:F,removeItem:G,deleteSelected:$}=p;Pn(t,d,w,y,T,v,f);let V=zo(t),C=Ln(null),k=Re(u,"arrow"),D=Re(u,"freedraw"),P=Re(u,"shape"),O=Re(u,"ruler"),_=Re(u,"note"),H=Re(u,"text"),{draftArrow:K,setDraftArrow:Z,draftShape:q,setDraftShape:oe,draftRuler:ne,setDraftRuler:j,draftFreeDrawRef:U,clearDraftFreeDraw:L,handleInteractionPointerDown:A,handleInteractionPointerMove:Y}=vn({map:t,activeTool:w,setActiveTool:y,activeShape:x,shapeFilled:h,activeColor:M,strokeWidth:E,dashed:I,noteColor:m,fontSize:S,fontWeight:R,labels:s,addItem:B,paintCanvas:()=>ee()}),ee=xn({map:t,viewport:V,canvasRef:C,arrowItems:k,shapeItems:P,freeDrawItems:D,rulerItems:O,selectedId:T,draftShape:q,draftArrow:K,draftRuler:ne,draftFreeDrawRef:U,activeColor:M,strokeWidth:E,dashed:I,shapeFilled:h,annotationTheme:a??l,isReadOnly:d});wn({isReadOnly:d,selectedId:T,selectedItem:p.selectedItem,items:p.items,isEditingLabel:p.isEditingLabel,setEditingLabel:p.setEditingLabel,deleteSelected:$,setSelectedId:v,setActiveTool:y,setDraftArrow:Z,setDraftShape:oe,setDraftRuler:j,clearDraftFreeDraw:L,notifyChangeComplete:f}),Cn(t);let W=Tn({map:t,activeTool:w,isReadOnly:d,arrowItems:k,shapeItems:P,freeDrawItems:D,rulerItems:O,selectedId:T,setSelectedId:v,setEditingLabel:p.setEditingLabel,updateItem:F,notifyChangeComplete:f});return{controller:p,isReadOnly:d,showToolbar:b,viewport:V,canvasRef:C,isDrawingTool:!d&&w!=="select",hoverCursor:W,arrowItems:k,shapeItems:P,freeDrawItems:D,noteItems:_,textItems:H,selectedId:T,setSelectedId:v,updateItem:F,removeItem:G,notifyChangeComplete:f,handleInteractionPointerDown:A,handleInteractionPointerMove:Y}}import{jsx as Ct}from"react/jsx-runtime";function br(e){let t=gr();return Ct(Rn,{...e,map:t})}function yr(e){return e.map!==void 0?Ct(Rn,{...e,map:e.map}):Ct(br,{...e})}function Rn(e){let{map:t,toolbarPosition:o="top-center",toolbarOrientation:r,orientation:n,collapsible:a,defaultCollapsed:l,collapsed:s,onCollapsedChange:i,showCollapseButton:d,enabledTools:c,customTools:p,showHistoryControls:b,showDeleteButton:g,showClearButton:f,showToolLabels:u,labels:w,icons:y,zIndex:x=650,unstyled:h=!1,classNames:T,styles:v,strokeColors:M,strokeWidthOptions:E,fontSizeOptions:I,renderToolbar:m,renderNote:S,renderText:R,clampOverlaysToViewport:B=!0,autoMinimizeNotesZoom:F,autoMinimizeTextZoom:G,className:$,style:V}=e,C=In(e);return t?mr(Ct(yn,{map:t,canvasRef:C.canvasRef,viewport:C.viewport,isReadOnly:C.isReadOnly,isDrawingTool:C.isDrawingTool,activeTool:C.controller.activeTool,hoverCursor:C.hoverCursor,zIndex:x,className:$,style:V,classNames:T,styles:v,handleInteractionPointerDown:C.handleInteractionPointerDown,handleInteractionPointerMove:C.handleInteractionPointerMove,noteItems:C.noteItems,textItems:C.textItems,selectedId:C.selectedId,labels:w,icons:y,unstyled:h,clampOverlaysToViewport:B,autoMinimizeNotesZoom:F,autoMinimizeTextZoom:G,renderNote:S,renderText:R,setSelectedId:C.setSelectedId,updateItem:C.updateItem,removeItem:C.removeItem,notifyChangeComplete:C.notifyChangeComplete,renderToolbar:m,showToolbar:C.showToolbar,controller:C.controller,toolbarPosition:o,toolbarOrientation:r??n,collapsible:a,defaultCollapsed:l,collapsed:s,onCollapsedChange:i,showCollapseButton:d,enabledTools:c,customTools:p,showHistoryControls:b,showDeleteButton:g,showClearButton:f,showToolLabels:u,strokeColors:M,strokeWidthOptions:E,fontSizeOptions:I}),t.getContainer()):null}export{vr as DEFAULT_ANNOTATION_THEME,Qe as DEFAULT_FONT_SIZE,Lt as DEFAULT_FONT_SIZE_OPTIONS,Je as DEFAULT_NOTE_BG,Tr as DEFAULT_NOTE_TEXT,Ze as DEFAULT_STROKE_COLOR,qe as DEFAULT_STROKE_WIDTH,Pt as DEFAULT_STROKE_WIDTH_OPTIONS,Sr as FONT_SIZE_OPTIONS,wo as InlineShapeLabelEditor,yr as LeafletTual,ie as NOTE_COLOR_THEMES,ko as NoteOverlay,St as PixelSelect,po as STROKE_COLORS,wr as STROKE_WIDTH_OPTIONS,Ae as TOOL_TO_ARROW_STYLE,Fo as TextOverlay,no as TualToolbar,wa as VERSION,gt as bindBlockMapDblClick,mt as bindLeafletSync,Ge as buildArrowItem,En as buildRulerItem,Rt as calculateGeodesicDistance,Pr as calculateLineDistance,mo as calculateZoomFontSize,Xr as clampNotePosition,Zr as clampTextPosition,et as computeDefaultControlGeoPoint,re as constrainAngleTo45Degrees,Oe as constrainToAspectRatio,ot as createDraftNote,nt as createDraftText,we as createId,ba as createLeafletTual,yo as createLeafletTualController,fo as distanceToQuadraticBezier,fe as distanceToSegment,Dt as drawArrowHead,he as drawTualHandle,De as drawTualLabelPill,go as formatRealWorldDistance,Q as geoToScreen,Ut as getCollapseChevronRotation,Ue as getDropdownChevronRotation,Yt as getExpandChevronRotation,Te as getMapDimensions,It as getQuadraticBezierPoint,tt as getQuadraticEndAngle,Be as hitTestArrow,Ne as hitTestArrowHandle,We as hitTestFreeDraw,Fe as hitTestRuler,je as hitTestRulerHandle,Me as hitTestShape,He as hitTestShapeHandle,ht as paintLeafletTual,de as projectArrow,Pe as projectFreeDraw,ce as projectRuler,ae as projectShape,Et as renderArrowOnCanvas,kt as renderFreeDrawOnCanvas,Nt as renderRulerOnCanvas,Ot as renderShapeOnCanvas,Kr as resolveNoteTheme,X as screenToGeo,dt as startArrowBodyDrag,at as startArrowDrag,lt as startArrowHandleDrag,pt as startFreeDrawBodyDrag,ze as startFreeDrawDrag,ft as startRulerBodyDrag,it as startRulerDrag,ut as startRulerHandleDrag,ct as startShapeBodyDrag,rt as startShapeDrag,st as startShapeHandleDrag,Mt as traceArrowPath,At as tracePolygonShape,ho as truncateTualText,zo as useLeafletSync,Uo as useLeafletTual};
4
4
  //# sourceMappingURL=react.js.map