@dwelle/excalidraw 0.6.0-rc.2 → 0.6.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +1 -3
  2. package/dist/dev/{chunk-LCPOPWNR.js → chunk-FCTATTEX.js} +2 -2
  3. package/dist/dev/{chunk-NGUTX5QY.js → chunk-GPAPUEH7.js} +14 -14
  4. package/dist/dev/{chunk-NGUTX5QY.js.map → chunk-GPAPUEH7.js.map} +2 -2
  5. package/dist/dev/data/{image-2IPPJHZ4.js → image-KIZE4OBD.js} +3 -3
  6. package/dist/dev/index.js +170 -145
  7. package/dist/dev/index.js.map +2 -2
  8. package/dist/dev/subset-shared.chunk.js +1 -1
  9. package/dist/dev/subset-worker.chunk.js +1 -1
  10. package/dist/prod/{chunk-BE2LY6VO.js → chunk-DZ7HA6XS.js} +1 -1
  11. package/dist/prod/{chunk-R7OERAXD.js → chunk-TQDSDB2B.js} +4 -4
  12. package/dist/prod/data/image-SCXWNX5A.js +1 -0
  13. package/dist/prod/index.js +11 -11
  14. package/dist/prod/subset-shared.chunk.js +1 -1
  15. package/dist/prod/subset-worker.chunk.js +1 -1
  16. package/dist/types/excalidraw/actions/actionAddToLibrary.d.ts +3 -3
  17. package/dist/types/excalidraw/actions/actionAlign.d.ts +6 -6
  18. package/dist/types/excalidraw/actions/actionBoundText.d.ts +3 -3
  19. package/dist/types/excalidraw/actions/actionCanvas.d.ts +13 -13
  20. package/dist/types/excalidraw/actions/actionClipboard.d.ts +13 -13
  21. package/dist/types/excalidraw/actions/actionCropEditor.d.ts +1 -1
  22. package/dist/types/excalidraw/actions/actionDeleteSelected.d.ts +3 -3
  23. package/dist/types/excalidraw/actions/actionDistribute.d.ts +2 -2
  24. package/dist/types/excalidraw/actions/actionDuplicateSelection.d.ts +1 -1
  25. package/dist/types/excalidraw/actions/actionElementLink.d.ts +4 -4
  26. package/dist/types/excalidraw/actions/actionElementLock.d.ts +2 -2
  27. package/dist/types/excalidraw/actions/actionExport.d.ts +11 -11
  28. package/dist/types/excalidraw/actions/actionFinalize.d.ts +2 -2
  29. package/dist/types/excalidraw/actions/actionFlip.d.ts +2 -2
  30. package/dist/types/excalidraw/actions/actionFrame.d.ts +7 -7
  31. package/dist/types/excalidraw/actions/actionGroup.d.ts +4 -4
  32. package/dist/types/excalidraw/actions/actionLinearEditor.d.ts +1 -1
  33. package/dist/types/excalidraw/actions/actionLink.d.ts +1 -1
  34. package/dist/types/excalidraw/actions/actionMenu.d.ts +3 -3
  35. package/dist/types/excalidraw/actions/actionNavigate.d.ts +2 -2
  36. package/dist/types/excalidraw/actions/actionProperties.d.ts +15 -15
  37. package/dist/types/excalidraw/actions/actionSelectAll.d.ts +1 -1
  38. package/dist/types/excalidraw/actions/actionStyles.d.ts +3 -3
  39. package/dist/types/excalidraw/actions/actionTextAutoResize.d.ts +1 -1
  40. package/dist/types/excalidraw/actions/actionToggleGridMode.d.ts +1 -1
  41. package/dist/types/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +1 -1
  42. package/dist/types/excalidraw/actions/actionToggleSearchMenu.d.ts +2 -2
  43. package/dist/types/excalidraw/actions/actionToggleStats.d.ts +1 -1
  44. package/dist/types/excalidraw/actions/actionToggleViewMode.d.ts +1 -1
  45. package/dist/types/excalidraw/actions/actionToggleZenMode.d.ts +1 -1
  46. package/dist/types/excalidraw/actions/actionZindex.d.ts +4 -4
  47. package/dist/types/excalidraw/actions/types.d.ts +2 -2
  48. package/dist/types/excalidraw/components/App.d.ts +12 -2
  49. package/dist/types/excalidraw/element/embeddable.d.ts +1 -1
  50. package/dist/types/excalidraw/index.d.ts +1 -1
  51. package/dist/types/excalidraw/store.d.ts +6 -6
  52. package/dist/types/excalidraw/types.d.ts +2 -2
  53. package/package.json +2 -10
  54. package/dist/prod/data/image-DXJVNPGL.js +0 -1
  55. /package/dist/dev/{chunk-LCPOPWNR.js.map → chunk-FCTATTEX.js.map} +0 -0
  56. /package/dist/dev/data/{image-2IPPJHZ4.js.map → image-KIZE4OBD.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as L}from"./chunk-BE2LY6VO.js";import{c as E6,d as P}from"./chunk-SRAX5OIU.js";import m6 from"png-chunks-extract";import b6 from"png-chunk-text";import Q3 from"png-chunks-encode";import{deflate as W3,inflate as z3}from"pako";var mo=/Mac|iPod|iPhone|iPad/.test(navigator.platform),ex=/^Win/.test(navigator.platform),qs=/\b(android)\b/i.test(navigator.userAgent),tx="netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,g6=navigator.userAgent.indexOf("Chrome")!==-1,nx=!g6&&navigator.userAgent.indexOf("Safari")!==-1,Gs=/iPad|iPhone/.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,rx=()=>navigator.brave?.isBrave?.name==="isBrave",ox=typeof window<"u"&&"ResizeObserver"in window,ix="Excalidraw",Xs=36,ks=10,Zs=8,ax=5,sx=1,dx=30,$t=Math.PI/12,cx="red",bo={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},lx={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},Ux={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"};var fx={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},je={TEST:"test"},px={SHAPE_ACTIONS_MENU:"App-menu__left",ZOOM_ACTIONS:"zoom-actions",SEARCH_MENU_INPUT_WRAPPER:"layer-ui__search-inputWrapper"},Dn="Xiaolai",Ln="Segoe UI Emoji",ye={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9},ln={[Dn]:100,[Ln]:1e3},Eo=e=>{switch(e){case ye.Excalifont:return[Dn,Ln];default:return[Ln]}},Xe={LIGHT:"light",DARK:"dark"},Ne={strokeColor:"#bbb",strokeWidth:2,strokeStyle:"solid",fillStyle:"solid",roughness:0,roundness:null,backgroundColor:"transparent",radius:8,nameOffsetY:3,nameColorLightTheme:"#999999",nameColorDarkTheme:"#7a7a7a",nameFontSize:14,nameLineHeight:1.25},go=1,Ut=20,Pt=ye.Excalifont,qn="left",xo="top";var gr=2,ho=1,Un="#ffffff",Gn="#1e1e1e",xr="transparent",hr=2*gr,x6=1e-5,ux=2*hr-x6,mx="#a2f1a6";var yo=20,Io=5,wo={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},K={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawlib:"application/vnd.excalidrawlib+json","excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...wo},Ws=[K.text,K.html,...Object.values(wo)],bx={png:"png",svg:"svg",clipboard:"clipboard"},ke={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},Xi=window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,Ex=500,gx=300,xx=500;var hx=100,yx=.1,zs=.1,Qs=30,Ix=300;var Ro="invert(93%) hue-rotate(180deg)",wx={addLibrary:"addLibrary"},Rx={addLibrary:"addLibrary"},Tx={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Mx=800,Lx=1e3,Dx=500,Sx=1229;var Xn=2,js=[1,2,3],ed=10,vx=1440,$x=4*1024*1024,ne="http://www.w3.org/2000/svg";var ki={excalidraw:2,excalidrawLibrary:2},Se=5,td=.7,nd=11,Gt={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},Zi={LEFT:"left",CENTER:"center",RIGHT:"right"},rd=20,To=.25,od=32,nt={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Wi={architect:0,artist:1,cartoonist:2},Px={thin:1,bold:2,extraBold:4},Ie={strokeColor:Gn,backgroundColor:xr,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Wi.artist,opacity:100,locked:!1},h6="library",Nx="search",id={name:"default",defaultTab:h6},Fx=new Set(["iframe","embeddable","image"]),fn={selection:"selection",rectangle:"rectangle",diamond:"diamond",ellipse:"ellipse",arrow:"arrow",line:"line",freedraw:"freedraw",text:"text",image:"image",eraser:"eraser",hand:"hand",frame:"frame",magicframe:"magicframe",embeddable:"embeddable",laser:"laser"},Ox={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},ad="Untitled",zi={generalStats:1,elementProperties:2},_x=1,sd={sharp:"sharp",round:"round",elbow:"elbow"},dd=.3,yr="element",cd=Symbol.for("__test__originalId__"),y6=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(y6||{});import{nanoid as q3}from"nanoid";var I6=js.includes(devicePixelRatio)?devicePixelRatio:1,pn=()=>({showWelcomeScreen:!1,theme:Xe.LIGHT,collaborators:new Map,currentChartType:"bar",currentItemBackgroundColor:Ie.backgroundColor,currentItemEndArrowhead:"arrow",currentItemFillStyle:Ie.fillStyle,currentItemFontFamily:Pt,currentItemFontSize:Ut,currentItemOpacity:Ie.opacity,currentItemRoughness:Ie.roughness,currentItemStartArrowhead:null,currentItemStrokeColor:Ie.strokeColor,currentItemRoundness:"round",currentItemArrowType:sd.round,currentItemStrokeStyle:Ie.strokeStyle,currentItemStrokeWidth:Ie.strokeWidth,currentItemTextAlign:qn,currentHoveredFontFamily:null,cursorButton:"up",activeEmbeddable:null,newElement:null,editingTextElement:null,editingGroupId:null,editingLinearElement:null,activeTool:{type:"selection",customType:null,locked:Ie.locked,lastActiveTool:null},penMode:!1,penDetected:!1,errorMessage:null,exportBackground:!0,exportScale:I6,exportEmbedScene:!1,exportWithDarkMode:!1,fileHandle:null,gridSize:yo,gridStep:Io,gridModeEnabled:!1,isBindingEnabled:!0,defaultSidebarDockedPreference:!1,isLoading:!1,isResizing:!1,isRotating:!1,lastPointerDownWith:"mouse",multiElement:null,name:null,contextMenu:null,openMenu:null,openPopup:null,openSidebar:null,openDialog:null,pasteDialog:{shown:!1,data:null},previousSelectedElementIds:{},resizingElement:null,scrolledOutside:!1,scrollX:0,scrollY:0,selectedElementIds:{},hoveredElementIds:{},selectedGroupIds:{},selectedElementsAreBeingDragged:!1,selectionElement:null,shouldCacheIgnoreZoom:!1,stats:{open:!1,panels:zi.generalStats|zi.elementProperties},startBoundElement:null,suggestedBindings:[],frameRendering:{enabled:!0,clip:!0,name:!0,outline:!0},frameToHighlight:null,editingFrame:null,elementsToHighlight:null,toast:null,viewBackgroundColor:Un,zenModeEnabled:!1,zoom:{value:ho},viewModeEnabled:!1,pendingImageElementId:null,showHyperlinkPopup:!1,selectedLinearElement:null,snapLines:[],originSnapOffset:{x:0,y:0},objectsSnapModeEnabled:!1,userToFollow:null,followedBy:new Set,isCropping:!1,croppingElementId:null,searchMatches:[]}),w6=(e=>e)({showWelcomeScreen:{browser:!0,export:!1,server:!1},theme:{browser:!0,export:!1,server:!1},collaborators:{browser:!1,export:!1,server:!1},currentChartType:{browser:!0,export:!1,server:!1},currentItemBackgroundColor:{browser:!0,export:!1,server:!1},currentItemEndArrowhead:{browser:!0,export:!1,server:!1},currentItemFillStyle:{browser:!0,export:!1,server:!1},currentItemFontFamily:{browser:!0,export:!1,server:!1},currentItemFontSize:{browser:!0,export:!1,server:!1},currentItemRoundness:{browser:!0,export:!1,server:!1},currentItemArrowType:{browser:!0,export:!1,server:!1},currentItemOpacity:{browser:!0,export:!1,server:!1},currentItemRoughness:{browser:!0,export:!1,server:!1},currentItemStartArrowhead:{browser:!0,export:!1,server:!1},currentItemStrokeColor:{browser:!0,export:!1,server:!1},currentItemStrokeStyle:{browser:!0,export:!1,server:!1},currentItemStrokeWidth:{browser:!0,export:!1,server:!1},currentItemTextAlign:{browser:!0,export:!1,server:!1},currentHoveredFontFamily:{browser:!1,export:!1,server:!1},cursorButton:{browser:!0,export:!1,server:!1},activeEmbeddable:{browser:!1,export:!1,server:!1},newElement:{browser:!1,export:!1,server:!1},editingTextElement:{browser:!1,export:!1,server:!1},editingGroupId:{browser:!0,export:!1,server:!1},editingLinearElement:{browser:!1,export:!1,server:!1},activeTool:{browser:!0,export:!1,server:!1},penMode:{browser:!0,export:!1,server:!1},penDetected:{browser:!0,export:!1,server:!1},errorMessage:{browser:!1,export:!1,server:!1},exportBackground:{browser:!0,export:!1,server:!1},exportEmbedScene:{browser:!0,export:!1,server:!1},exportScale:{browser:!0,export:!1,server:!1},exportWithDarkMode:{browser:!0,export:!1,server:!1},fileHandle:{browser:!1,export:!1,server:!1},gridSize:{browser:!0,export:!0,server:!0},gridStep:{browser:!0,export:!0,server:!0},gridModeEnabled:{browser:!0,export:!0,server:!0},height:{browser:!1,export:!1,server:!1},isBindingEnabled:{browser:!1,export:!1,server:!1},defaultSidebarDockedPreference:{browser:!0,export:!1,server:!1},isLoading:{browser:!1,export:!1,server:!1},isResizing:{browser:!1,export:!1,server:!1},isRotating:{browser:!1,export:!1,server:!1},lastPointerDownWith:{browser:!0,export:!1,server:!1},multiElement:{browser:!1,export:!1,server:!1},name:{browser:!0,export:!1,server:!1},offsetLeft:{browser:!1,export:!1,server:!1},offsetTop:{browser:!1,export:!1,server:!1},contextMenu:{browser:!1,export:!1,server:!1},openMenu:{browser:!0,export:!1,server:!1},openPopup:{browser:!1,export:!1,server:!1},openSidebar:{browser:!0,export:!1,server:!1},openDialog:{browser:!1,export:!1,server:!1},pasteDialog:{browser:!1,export:!1,server:!1},previousSelectedElementIds:{browser:!0,export:!1,server:!1},resizingElement:{browser:!1,export:!1,server:!1},scrolledOutside:{browser:!0,export:!1,server:!1},scrollX:{browser:!0,export:!1,server:!1},scrollY:{browser:!0,export:!1,server:!1},selectedElementIds:{browser:!0,export:!1,server:!1},hoveredElementIds:{browser:!1,export:!1,server:!1},selectedGroupIds:{browser:!0,export:!1,server:!1},selectedElementsAreBeingDragged:{browser:!1,export:!1,server:!1},selectionElement:{browser:!1,export:!1,server:!1},shouldCacheIgnoreZoom:{browser:!0,export:!1,server:!1},stats:{browser:!0,export:!1,server:!1},startBoundElement:{browser:!1,export:!1,server:!1},suggestedBindings:{browser:!1,export:!1,server:!1},frameRendering:{browser:!1,export:!1,server:!1},frameToHighlight:{browser:!1,export:!1,server:!1},editingFrame:{browser:!1,export:!1,server:!1},elementsToHighlight:{browser:!1,export:!1,server:!1},toast:{browser:!1,export:!1,server:!1},viewBackgroundColor:{browser:!0,export:!0,server:!0},width:{browser:!1,export:!1,server:!1},zenModeEnabled:{browser:!0,export:!1,server:!1},zoom:{browser:!0,export:!1,server:!1},viewModeEnabled:{browser:!1,export:!1,server:!1},pendingImageElementId:{browser:!1,export:!1,server:!1},showHyperlinkPopup:{browser:!1,export:!1,server:!1},selectedLinearElement:{browser:!0,export:!1,server:!1},snapLines:{browser:!1,export:!1,server:!1},originSnapOffset:{browser:!1,export:!1,server:!1},objectsSnapModeEnabled:{browser:!0,export:!1,server:!1},userToFollow:{browser:!1,export:!1,server:!1},followedBy:{browser:!1,export:!1,server:!1},isCropping:{browser:!1,export:!1,server:!1},croppingElementId:{browser:!1,export:!1,server:!1},searchMatches:{browser:!1,export:!1,server:!1}}),Qi=(e,t)=>{let n={};for(let r of Object.keys(e))if(w6[r]?.[t]){let i=e[r];n[r]=i}return n},Kx=e=>Qi(e,"browser"),Mo=e=>Qi(e,"export"),ld=e=>Qi(e,"server"),Ud=({activeTool:e})=>e.type==="eraser",fd=({activeTool:e})=>e.type==="hand";import d3 from"lodash.throttle";import $6 from"es6-promise-pool";var se=(e,t,n)=>Math.min(Math.max(e,t),n),pd=(e,t,n="round")=>{let r=Math.pow(10,t);return Math[n]((e+Number.EPSILON)*r)/r},Yx=(e,t,n="round")=>{let r=1/t;return Math[n](e*r)/r},Ir=(e,t)=>(e+t)/2,Lo=e=>typeof e=="number"&&Number.isFinite(e),ji=(e,t,n=1e-4)=>Math.abs(e-t)<n;var wr=e=>e<0?e+2*Math.PI:e>=2*Math.PI?e-2*Math.PI:e;function Rr(e){return e*Math.PI/180}function ud(e){return e*180/Math.PI}function md(e){return Math.abs(Math.sin(2*e))<1e-4}function ve(e,t,n=0,r=0){return[e-n,t-r]}function _(e,t=[0,0]){return ve(e[0]-t[0],e[1]-t[1])}function Me(e,t){return e[0]*t[1]-t[0]*e[1]}function R6(e,t){return e[0]*t[0]+e[1]*t[1]}function it(e,t){return[e[0]+t[0],e[1]+t[1]]}function Do(e,t){return[e[0]-t[0],e[1]-t[1]]}function me(e,t){return ve(e[0]*t,e[1]*t)}function T6(e){return e[0]*e[0]+e[1]*e[1]}function M6(e){return Math.sqrt(T6(e))}var Ae=e=>{let t=M6(e);return t===0?ve(0,0):ve(e[0]/t,e[1]/t)};function u(e,t){return[e,t]}function Tr(e){return e.length===2?u(e[0],e[1]):void 0}function V(e,t=u(0,0)){return u(t[0]+e[0],t[1]+e[1])}function So(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="number"&&!isNaN(e[0])&&typeof e[1]=="number"&&!isNaN(e[1])}function He(e,t){let n=Math.abs;return n(e[0]-t[0])<1e-4&&n(e[1]-t[1])<1e-4}function T([e,t],[n,r],o){return u((e-n)*Math.cos(o)-(t-r)*Math.sin(o)+n,(e-n)*Math.sin(o)+(t-r)*Math.cos(o)+r)}function un(e,t=[0,0]){return u(e[0]+t[0],e[1]+t[1])}function Xt(e,t){return u((e[0]+t[0])/2,(e[1]+t[1])/2)}function oe(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1])}function Mr(e,t){let n=t[0]-e[0],r=t[1]-e[1];return n*n+r*r}var pt=(e,t,n)=>un(t,me(_(e,t),n)),vo=(e,t,n)=>t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1]);function Lr(e,t){return[e,t]}function bd(e,t){let n=e[1][1]-e[0][1],r=e[0][0]-e[1][0],o=t[1][1]-t[0][1],i=t[0][0]-t[1][0],a=n*i-o*r;if(a!==0){let s=n*e[0][0]+r*e[0][1],d=o*t[0][0]+i*t[0][1];return u((s*i-d*r)/a,(n*d-o*s)/a)}return null}function B(e,t){return[e,t]}var Nt=(e,t,n=1e-4)=>{let r=$o(e,t);return r===0?!0:r<n},$o=(e,t)=>{let[n,r]=e,[[o,i],[a,s]]=t,d=n-o,c=r-i,l=a-o,U=s-i,p=d*l+c*U,m=l*l+U*U,b=-1;m!==0&&(b=p/m);let E,g;b<0?(E=o,g=i):b>1?(E=a,g=s):(E=o+b*l,g=i+b*U);let y=n-E,x=r-g;return Math.sqrt(y*y+x*x)};function mn(e,t){let n=bd(Lr(e[0],e[1]),Lr(t[0],t[1]));return!n||!Nt(n,t)||!Nt(n,e)?null:n}function Dr(e,t){return[e,t]}function Ed(e,t){return[B(e[0],u(e[1][0],e[0][1])),B(u(e[1][0],e[0][1]),e[1]),B(e[1],u(e[0][0],e[1][1])),B(u(e[0][0],e[1][1]),e[0])].map(n=>mn(t,n)).filter(n=>!!n)}function ut(e,t,n,r){return[e,t,n,r]}function gd(e,t,n,r=1e-6){return[(e(t+r,n)-e(t-r,n))/(2*r),(e(t,n+r)-e(t,n-r))/(2*r)]}function L6(e,t,n,r=.001,o=10){let i=1/0,a=0;for(;i>=r;){if(a>=o)return null;let s=e(t,n),d=[gd((E,g)=>e(E,g)[0],t,n),gd((E,g)=>e(E,g)[1],t,n)],c=[[-s[0]],[-s[1]]],l=d[0][0]*d[1][1]-d[0][1]*d[1][0];if(l===0)return null;let U=[[d[1][1]/l,-d[0][1]/l],[-d[1][0]/l,d[0][0]/l]],p=[[U[0][0]*c[0][0]+U[0][1]*c[1][0]],[U[1][0]*c[0][0]+U[1][1]*c[1][0]]];t=t+p[0][0],n=n+p[1][0];let[m,b]=e(t,n);i=Math.max(Math.abs(m),Math.abs(b)),a+=1}return[t,n]}var Sr=(e,t)=>u((1-t)**3*e[0][0]+3*(1-t)**2*t*e[1][0]+3*(1-t)*t**2*e[2][0]+t**3*e[3][0],(1-t)**3*e[0][1]+3*(1-t)**2*t*e[1][1]+3*(1-t)*t**2*e[2][1]+t**3*e[3][1]);function ea(e,t){let n=S6(e);if(Ed(Dr(u(n[0],n[1]),u(n[2],n[3])),t).length===0)return[];let r=s=>u(t[0][0]+s*(t[1][0]-t[0][0]),t[0][1]+s*(t[1][1]-t[0][1])),o=[[.5,0],[.2,0],[.8,0]],i=([s,d])=>{let c=L6((p,m)=>{let b=Sr(e,p),E=r(m);return[b[0]-E[0],b[1]-E[1]]},s,d);if(!c)return null;let[l,U]=c;return l<0||l>1||U<0||U>1?null:Sr(e,l)},a=i(o[0]);return a?[a]:(a=i(o[1]),a?[a]:(a=i(o[2]),a?[a]:[]))}function D6(e,t,n=.001){let r=(c,l,U,p=n)=>{let m=c,b=l,E;for(;b-m>p;)E=(b+m)/2,U(E-p)<U(E+p)?b=E:m=E;return E},i=0;for(let c=1/0,l=0;l<30;l++){let U=oe(t,Sr(e,l/30));U<c&&(c=U,i=l)}let a=Math.max((i-1)/30,0),s=Math.min((i+1)/30,1),d=r(a,s,c=>oe(t,Sr(e,c)));return d?Sr(e,d):null}function ta(e,t){let n=D6(e,t);return n?oe(t,n):0}function S6(e){let[t,n,r,o]=e,i=[t[0],n[0],r[0],o[0]],a=[t[1],n[1],r[1],o[1]];return[Math.min(...i),Math.min(...a),Math.max(...i),Math.max(...a)]}function na(...e){return hd(e)}function kn(e){return hd(e)}var ra=(e,t)=>{let n=e[0],r=e[1],o=!1;for(let i=0,a=t.length-1;i<t.length;a=i++){let s=t[i][0],d=t[i][1],c=t[a][0],l=t[a][1];(d>r&&l<=r||d<=r&&l>r)&&n<(c-s)*(r-d)/(l-d)+s&&(o=!o)}return o},xd=(e,t,n=1e-4)=>{let r=!1;for(let o=0,i=t.length-1;o<i;o++)if(Nt(e,B(t[o],t[o+1]),n)){r=!0;break}return r};function hd(e){return v6(e)?e:[...e,e[0]]}function v6(e){return He(e[0],e[e.length-1])}function _e(e,t){return Ve([e,t])}var vr=([e,t],[n,r])=>e<=n?t>=n:e>=n?r>=e:!1,$r=([e,t],[n,r])=>{let o=Math.max(e,n),i=Math.min(t,r);return o<=i?Ve([o,i]):null},Pr=(e,[t,n])=>e>=t&&e<=n;function Sn([e,t,n],r){let o=(l,U,p)=>(l[0]-p[0])*(U[1]-p[1])-(U[0]-p[0])*(l[1]-p[1]),i=o(r,e,t),a=o(r,t,n),s=o(r,n,e),d=i<0||a<0||s<0,c=i>0||a>0||s>0;return!(d&&c)}var yd=null;var kh=()=>{if(yd)return yd;let e=new Date,t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0"),o=`${e.getHours()}`.padStart(2,"0"),i=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${o}${i}`},Zh=e=>e.charAt(0).toUpperCase()+e.slice(1),Wh=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),P6=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,zh=e=>P6(e)||e instanceof Element&&!!e.closest("label, button"),Qh=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&(e.type==="text"||e.type==="number"||e.type==="password"),oa=({fontFamily:e})=>{for(let[t,n]of Object.entries(ye))if(n===e)return`${t}${Eo(n).map(r=>`, ${r}`).join("")}`;return Ln},Ee=({fontSize:e,fontFamily:t})=>`${e}px ${oa({fontFamily:t})}`,Po=(e,t)=>{let n=0,r=null,o=(...i)=>{r=i,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...i)},t)};return o.flush=()=>{if(clearTimeout(n),r){let i=r;r=null,e(...i)}},o.cancel=()=>{r=null,clearTimeout(n)},o},Rd=(e,t)=>{let n=null,r=null,o=null,i=s=>{n=window.requestAnimationFrame(()=>{n=null,e(...s),r=null,o&&(r=o,o=null,i(r))})},a=(...s)=>{if(L.MODE==="test"){e(...s);return}r=s,n===null?i(r):t?.trailing&&(o=s)};return a.flush=()=>{n!==null&&(cancelAnimationFrame(n),n=null),r&&(e(...o||r),r=o=null)},a.cancel=()=>{r=o=null,n!==null&&(cancelAnimationFrame(n),n=null)},a},Td=e=>1-Math.pow(1-e,4),Id=(e,t,n)=>(t-e)*Td(n)+e,jh=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:i,onEnd:a,onCancel:s})=>{let d=!1,c=0,l;function U(p){if(d)return;l===void 0&&(l=p,i?.());let m=Math.min(p-l,r),b=Td(m/r),E={};if(Object.keys(e).forEach(g=>{let y=g,x=(t[y]-e[y])*b+e[y];E[y]=x}),n(E),m<r){let g=m/r,y={};Object.keys(e).forEach(x=>{let h=x,I=e[h],w=t[h],v;v=o?o(I,w,g,h):Id(I,w,g),v==null&&(v=Id(I,w,g)),y[h]=v}),n(y),c=window.requestAnimationFrame(U)}else n(t),a?.()}return c=window.requestAnimationFrame(U),()=>{s?.(),d=!0,window.cancelAnimationFrame(c)}},e4=(e,t)=>{if(!e.length||t<1)return[];let n=0,r=0,o=Array(Math.ceil(e.length/t));for(;n<e.length;)o[r++]=e.slice(n,n+=t);return o};var at=(e,t)=>Math.abs(e-t),Fr=(e,t)=>t.type==="custom"?{...e.activeTool,type:"custom",customType:t.customType,locked:t.locked??e.activeTool.locked}:{...e.activeTool,lastActiveTool:t.lastActiveToolBeforeEraser===void 0?e.activeTool.lastActiveTool:t.lastActiveToolBeforeEraser,type:t.type,customType:null,locked:t.locked??e.activeTool.locked};var t4=e=>(e=e.replace(/\bAlt\b/i,"Alt").replace(/\bShift\b/i,"Shift").replace(/\b(Enter|Return)\b/i,"Enter"),mo?e.replace(/\bCtrlOrCmd\b/gi,"Cmd").replace(/\bAlt\b/i,"Option"):e.replace(/\bCtrlOrCmd\b/gi,"Ctrl")),vn=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:i,scrollY:a})=>{let s=(e-r)/n.value-i,d=(t-o)/n.value-a;return{x:s,y:d}},ia=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:i,scrollY:a})=>{let s=(e+i)*n.value+r,d=(t+a)*n.value+o;return{x:s,y:d}},n4=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),N6="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",F6="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",O6=new RegExp(`^[^${N6}]*[${F6}]`),No=e=>O6.test(e),kt=e=>{let[t,n]=e;return{x:t,y:n}},r4=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},o4=(e,t,n=0)=>{n<0&&(n=e.length+n),n=Math.min(e.length,Math.max(n,0));let r=n-1;for(;++r<e.length;)if(t(e[r],r,e))return r;return-1},i4=(e,t,n=e.length-1)=>{n<0&&(n=e.length+n),n=Math.min(e.length-1,Math.max(n,0));let r=n+1;for(;--r>-1;)if(t(e[r],r,e))return r;return-1},Zt=e=>{let t=e.length===5&&e.substr(4,1)==="0",n=e.length===9&&e.substr(7,2)==="00";return t||n||e===xr},Fo=e=>e.fillStyle!=="solid"||Zt(e.backgroundColor),a4=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n};var s4=e=>{let t=e.parentElement;for(;t;){if(t===document.body)return document;let{overflowY:n}=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&(n==="auto"||n==="scroll"||n==="overlay"))return t;t=t.parentElement}return document},d4=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},c4=e=>{e.preventDefault(),e.returnValue=""},Md=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),Wt=()=>Ot()?1:Date.now(),ee=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),l4=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),Ft=(e,t)=>e.reduce((n,r)=>(n[t?t(r):String(r)]=r,n),{}),U4=e=>e.reduce((t,n,r)=>{let o={...n,prev:null,next:null};if(r!==0){let i=t[r-1];if(o.prev=i,i.next=o,r===e.length-1){let a=t[0];o.next=a,a.prev=o}}return t.push(o),t},[]),Ot=()=>L.MODE==="test",f4=()=>L.MODE==="development",Ld=()=>typeof process<"u"&&!0,p4=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),u4=(e,t)=>{let n=!1;for(let r in t){let o=t[r];if(typeof o<"u"){if(e[r]===o&&(typeof o!="object"||o===null))continue;n=!0}}return n?{...e,...t}:e};var m4=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}};var Oo=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,b4=e=>{let t=e?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");return t?Array.from(t).filter(n=>n.tabIndex>-1&&!n.disabled):[]},wd=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,zt=(e,t,n,r=!1)=>{let o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let a of n)if(!(e[a]===t[a]||wd(e[a],t[a])))return r&&console.warn(`%cisShallowEqual: ${a} not equal ->`,"color: #8B4000",e[a],t[a]),!1;return!0}return o.every(a=>{let s=n?.[a],d=s?s(e[a],t[a]):e[a]===t[a]||wd(e[a],t[a]);return!d&&r&&console.warn(`%cisShallowEqual: ${a} not equal ->`,"color: #8B4000",e[a],t[a]),d})},E4=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},$n=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function Be(e,t){if(!e)throw new Error(t)}var g4=e=>{let t,n,r=function(o){let i=Object.entries(o);if(t){let s=!0;for(let[d,c]of i)if(t.get(d)!==c){s=!1;break}if(s)return n}let a=e(o);return t=new Map(i),n=a,a};return r.clear=()=>{t=void 0,n=void 0},r},Dd=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),x4=e=>JSON.parse(JSON.stringify(e)),h4=(e,t)=>zt(e,t)?e:t;function y4(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function I4(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],o=e[1],i=e[2],a=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${o[0].toFixed(2)},${o[1].toFixed(2)} ${Ir(o[0],i[0]).toFixed(2)},${Ir(o[1],i[1]).toFixed(2)} T`;for(let s=2,d=n-1;s<d;s++)r=e[s],o=e[s+1],a+=`${Ir(r[0],o[0]).toFixed(2)},${Ir(r[1],o[1]).toFixed(2)} `;return t&&(a+="Z"),a}var Sd=e=>e.replace(/\r?\n|\r/g,`
1
+ import{a as L}from"./chunk-DZ7HA6XS.js";import{c as E6,d as P}from"./chunk-SRAX5OIU.js";import m6 from"png-chunks-extract";import b6 from"png-chunk-text";import Q3 from"png-chunks-encode";import{deflate as W3,inflate as z3}from"pako";var mo=/Mac|iPod|iPhone|iPad/.test(navigator.platform),ex=/^Win/.test(navigator.platform),qs=/\b(android)\b/i.test(navigator.userAgent),tx="netscape"in window&&navigator.userAgent.indexOf("rv:")>1&&navigator.userAgent.indexOf("Gecko")>1,g6=navigator.userAgent.indexOf("Chrome")!==-1,nx=!g6&&navigator.userAgent.indexOf("Safari")!==-1,Gs=/iPad|iPhone/.test(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,rx=()=>navigator.brave?.isBrave?.name==="isBrave",ox=typeof window<"u"&&"ResizeObserver"in window,ix="Excalidraw",Xs=36,ks=10,Zs=8,ax=5,sx=1,dx=30,$t=Math.PI/12,cx="red",bo={TEXT:"text",CROSSHAIR:"crosshair",GRABBING:"grabbing",GRAB:"grab",POINTER:"pointer",MOVE:"move",AUTO:""},lx={MAIN:0,WHEEL:1,SECONDARY:2,TOUCH:-1,ERASER:5},Ux={enabled:"all",disabled:"none",inheritFromUI:"var(--ui-pointerEvents)"};var fx={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},je={TEST:"test"},px={SHAPE_ACTIONS_MENU:"App-menu__left",ZOOM_ACTIONS:"zoom-actions",SEARCH_MENU_INPUT_WRAPPER:"layer-ui__search-inputWrapper"},Dn="Xiaolai",Ln="Segoe UI Emoji",ye={Virgil:1,Helvetica:2,Cascadia:3,Excalifont:5,Nunito:6,"Lilita One":7,"Comic Shanns":8,"Liberation Sans":9},ln={[Dn]:100,[Ln]:1e3},Eo=e=>{switch(e){case ye.Excalifont:return[Dn,Ln];default:return[Ln]}},Xe={LIGHT:"light",DARK:"dark"},Ne={strokeColor:"#bbb",strokeWidth:2,strokeStyle:"solid",fillStyle:"solid",roughness:0,roundness:null,backgroundColor:"transparent",radius:8,nameOffsetY:3,nameColorLightTheme:"#999999",nameColorDarkTheme:"#7a7a7a",nameFontSize:14,nameLineHeight:1.25},go=1,Ut=20,Pt=ye.Excalifont,qn="left",xo="top";var gr=2,ho=1,Un="#ffffff",Gn="#1e1e1e",xr="transparent",hr=2*gr,x6=1e-5,ux=2*hr-x6,mx="#a2f1a6";var yo=20,Io=5,wo={svg:"image/svg+xml",png:"image/png",jpg:"image/jpeg",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",ico:"image/x-icon",avif:"image/avif",jfif:"image/jfif"},K={text:"text/plain",html:"text/html",json:"application/json",excalidraw:"application/vnd.excalidraw+json",excalidrawlib:"application/vnd.excalidrawlib+json","excalidraw.svg":"image/svg+xml","excalidraw.png":"image/png",binary:"application/octet-stream",...wo},Ws=[K.text,K.html,...Object.values(wo)],bx={png:"png",svg:"svg",clipboard:"clipboard"},ke={excalidraw:"excalidraw",excalidrawClipboard:"excalidraw/clipboard",excalidrawLibrary:"excalidrawlib",excalidrawClipboardWithAPI:"excalidraw-api/clipboard"},Xi=window.EXCALIDRAW_EXPORT_SOURCE||window.location.origin,Ex=500,gx=300,xx=500;var hx=100,yx=.1,zs=.1,Qs=30,Ix=300;var Ro="invert(93%) hue-rotate(180deg)",wx={addLibrary:"addLibrary"},Rx={addLibrary:"addLibrary"},Tx={canvasActions:{changeViewBackgroundColor:!0,clearCanvas:!0,export:{saveFileToDisk:!0},loadScene:!0,saveToActiveFile:!0,toggleTheme:null,saveAsImage:!0},tools:{image:!0}},Mx=800,Lx=1e3,Dx=500,Sx=1229;var Xn=2,js=[1,2,3],ed=10,vx=1440,$x=4*1024*1024,ne="http://www.w3.org/2000/svg";var ki={excalidraw:2,excalidrawLibrary:2},Se=5,td=.7,nd=11,Gt={TOP:"top",MIDDLE:"middle",BOTTOM:"bottom"},Zi={LEFT:"left",CENTER:"center",RIGHT:"right"},rd=20,To=.25,od=32,nt={LEGACY:1,PROPORTIONAL_RADIUS:2,ADAPTIVE_RADIUS:3},Wi={architect:0,artist:1,cartoonist:2},Px={thin:1,bold:2,extraBold:4},Ie={strokeColor:Gn,backgroundColor:xr,fillStyle:"solid",strokeWidth:2,strokeStyle:"solid",roughness:Wi.artist,opacity:100,locked:!1},h6="library",Nx="search",id={name:"default",defaultTab:h6},Fx=new Set(["iframe","embeddable","image"]),fn={selection:"selection",rectangle:"rectangle",diamond:"diamond",ellipse:"ellipse",arrow:"arrow",line:"line",freedraw:"freedraw",text:"text",image:"image",eraser:"eraser",hand:"hand",frame:"frame",magicframe:"magicframe",embeddable:"embeddable",laser:"laser"},Ox={OAI_API_KEY:"excalidraw-oai-api-key",MERMAID_TO_EXCALIDRAW:"mermaid-to-excalidraw",PUBLISH_LIBRARY:"publish-library-data"},ad="Untitled",zi={generalStats:1,elementProperties:2},_x=1,sd={sharp:"sharp",round:"round",elbow:"elbow"},dd=.3,yr="element",cd=Symbol.for("__test__originalId__"),y6=(r=>(r.ACTIVE="active",r.AWAY="away",r.IDLE="idle",r))(y6||{});import{nanoid as q3}from"nanoid";var I6=js.includes(devicePixelRatio)?devicePixelRatio:1,pn=()=>({showWelcomeScreen:!1,theme:Xe.LIGHT,collaborators:new Map,currentChartType:"bar",currentItemBackgroundColor:Ie.backgroundColor,currentItemEndArrowhead:"arrow",currentItemFillStyle:Ie.fillStyle,currentItemFontFamily:Pt,currentItemFontSize:Ut,currentItemOpacity:Ie.opacity,currentItemRoughness:Ie.roughness,currentItemStartArrowhead:null,currentItemStrokeColor:Ie.strokeColor,currentItemRoundness:"round",currentItemArrowType:sd.round,currentItemStrokeStyle:Ie.strokeStyle,currentItemStrokeWidth:Ie.strokeWidth,currentItemTextAlign:qn,currentHoveredFontFamily:null,cursorButton:"up",activeEmbeddable:null,newElement:null,editingTextElement:null,editingGroupId:null,editingLinearElement:null,activeTool:{type:"selection",customType:null,locked:Ie.locked,lastActiveTool:null},penMode:!1,penDetected:!1,errorMessage:null,exportBackground:!0,exportScale:I6,exportEmbedScene:!1,exportWithDarkMode:!1,fileHandle:null,gridSize:yo,gridStep:Io,gridModeEnabled:!1,isBindingEnabled:!0,defaultSidebarDockedPreference:!1,isLoading:!1,isResizing:!1,isRotating:!1,lastPointerDownWith:"mouse",multiElement:null,name:null,contextMenu:null,openMenu:null,openPopup:null,openSidebar:null,openDialog:null,pasteDialog:{shown:!1,data:null},previousSelectedElementIds:{},resizingElement:null,scrolledOutside:!1,scrollX:0,scrollY:0,selectedElementIds:{},hoveredElementIds:{},selectedGroupIds:{},selectedElementsAreBeingDragged:!1,selectionElement:null,shouldCacheIgnoreZoom:!1,stats:{open:!1,panels:zi.generalStats|zi.elementProperties},startBoundElement:null,suggestedBindings:[],frameRendering:{enabled:!0,clip:!0,name:!0,outline:!0},frameToHighlight:null,editingFrame:null,elementsToHighlight:null,toast:null,viewBackgroundColor:Un,zenModeEnabled:!1,zoom:{value:ho},viewModeEnabled:!1,pendingImageElementId:null,showHyperlinkPopup:!1,selectedLinearElement:null,snapLines:[],originSnapOffset:{x:0,y:0},objectsSnapModeEnabled:!1,userToFollow:null,followedBy:new Set,isCropping:!1,croppingElementId:null,searchMatches:[]}),w6=(e=>e)({showWelcomeScreen:{browser:!0,export:!1,server:!1},theme:{browser:!0,export:!1,server:!1},collaborators:{browser:!1,export:!1,server:!1},currentChartType:{browser:!0,export:!1,server:!1},currentItemBackgroundColor:{browser:!0,export:!1,server:!1},currentItemEndArrowhead:{browser:!0,export:!1,server:!1},currentItemFillStyle:{browser:!0,export:!1,server:!1},currentItemFontFamily:{browser:!0,export:!1,server:!1},currentItemFontSize:{browser:!0,export:!1,server:!1},currentItemRoundness:{browser:!0,export:!1,server:!1},currentItemArrowType:{browser:!0,export:!1,server:!1},currentItemOpacity:{browser:!0,export:!1,server:!1},currentItemRoughness:{browser:!0,export:!1,server:!1},currentItemStartArrowhead:{browser:!0,export:!1,server:!1},currentItemStrokeColor:{browser:!0,export:!1,server:!1},currentItemStrokeStyle:{browser:!0,export:!1,server:!1},currentItemStrokeWidth:{browser:!0,export:!1,server:!1},currentItemTextAlign:{browser:!0,export:!1,server:!1},currentHoveredFontFamily:{browser:!1,export:!1,server:!1},cursorButton:{browser:!0,export:!1,server:!1},activeEmbeddable:{browser:!1,export:!1,server:!1},newElement:{browser:!1,export:!1,server:!1},editingTextElement:{browser:!1,export:!1,server:!1},editingGroupId:{browser:!0,export:!1,server:!1},editingLinearElement:{browser:!1,export:!1,server:!1},activeTool:{browser:!0,export:!1,server:!1},penMode:{browser:!0,export:!1,server:!1},penDetected:{browser:!0,export:!1,server:!1},errorMessage:{browser:!1,export:!1,server:!1},exportBackground:{browser:!0,export:!1,server:!1},exportEmbedScene:{browser:!0,export:!1,server:!1},exportScale:{browser:!0,export:!1,server:!1},exportWithDarkMode:{browser:!0,export:!1,server:!1},fileHandle:{browser:!1,export:!1,server:!1},gridSize:{browser:!0,export:!0,server:!0},gridStep:{browser:!0,export:!0,server:!0},gridModeEnabled:{browser:!0,export:!0,server:!0},height:{browser:!1,export:!1,server:!1},isBindingEnabled:{browser:!1,export:!1,server:!1},defaultSidebarDockedPreference:{browser:!0,export:!1,server:!1},isLoading:{browser:!1,export:!1,server:!1},isResizing:{browser:!1,export:!1,server:!1},isRotating:{browser:!1,export:!1,server:!1},lastPointerDownWith:{browser:!0,export:!1,server:!1},multiElement:{browser:!1,export:!1,server:!1},name:{browser:!0,export:!1,server:!1},offsetLeft:{browser:!1,export:!1,server:!1},offsetTop:{browser:!1,export:!1,server:!1},contextMenu:{browser:!1,export:!1,server:!1},openMenu:{browser:!0,export:!1,server:!1},openPopup:{browser:!1,export:!1,server:!1},openSidebar:{browser:!0,export:!1,server:!1},openDialog:{browser:!1,export:!1,server:!1},pasteDialog:{browser:!1,export:!1,server:!1},previousSelectedElementIds:{browser:!0,export:!1,server:!1},resizingElement:{browser:!1,export:!1,server:!1},scrolledOutside:{browser:!0,export:!1,server:!1},scrollX:{browser:!0,export:!1,server:!1},scrollY:{browser:!0,export:!1,server:!1},selectedElementIds:{browser:!0,export:!1,server:!1},hoveredElementIds:{browser:!1,export:!1,server:!1},selectedGroupIds:{browser:!0,export:!1,server:!1},selectedElementsAreBeingDragged:{browser:!1,export:!1,server:!1},selectionElement:{browser:!1,export:!1,server:!1},shouldCacheIgnoreZoom:{browser:!0,export:!1,server:!1},stats:{browser:!0,export:!1,server:!1},startBoundElement:{browser:!1,export:!1,server:!1},suggestedBindings:{browser:!1,export:!1,server:!1},frameRendering:{browser:!1,export:!1,server:!1},frameToHighlight:{browser:!1,export:!1,server:!1},editingFrame:{browser:!1,export:!1,server:!1},elementsToHighlight:{browser:!1,export:!1,server:!1},toast:{browser:!1,export:!1,server:!1},viewBackgroundColor:{browser:!0,export:!0,server:!0},width:{browser:!1,export:!1,server:!1},zenModeEnabled:{browser:!0,export:!1,server:!1},zoom:{browser:!0,export:!1,server:!1},viewModeEnabled:{browser:!1,export:!1,server:!1},pendingImageElementId:{browser:!1,export:!1,server:!1},showHyperlinkPopup:{browser:!1,export:!1,server:!1},selectedLinearElement:{browser:!0,export:!1,server:!1},snapLines:{browser:!1,export:!1,server:!1},originSnapOffset:{browser:!1,export:!1,server:!1},objectsSnapModeEnabled:{browser:!0,export:!1,server:!1},userToFollow:{browser:!1,export:!1,server:!1},followedBy:{browser:!1,export:!1,server:!1},isCropping:{browser:!1,export:!1,server:!1},croppingElementId:{browser:!1,export:!1,server:!1},searchMatches:{browser:!1,export:!1,server:!1}}),Qi=(e,t)=>{let n={};for(let r of Object.keys(e))if(w6[r]?.[t]){let i=e[r];n[r]=i}return n},Kx=e=>Qi(e,"browser"),Mo=e=>Qi(e,"export"),ld=e=>Qi(e,"server"),Ud=({activeTool:e})=>e.type==="eraser",fd=({activeTool:e})=>e.type==="hand";import d3 from"lodash.throttle";import $6 from"es6-promise-pool";var se=(e,t,n)=>Math.min(Math.max(e,t),n),pd=(e,t,n="round")=>{let r=Math.pow(10,t);return Math[n]((e+Number.EPSILON)*r)/r},Yx=(e,t,n="round")=>{let r=1/t;return Math[n](e*r)/r},Ir=(e,t)=>(e+t)/2,Lo=e=>typeof e=="number"&&Number.isFinite(e),ji=(e,t,n=1e-4)=>Math.abs(e-t)<n;var wr=e=>e<0?e+2*Math.PI:e>=2*Math.PI?e-2*Math.PI:e;function Rr(e){return e*Math.PI/180}function ud(e){return e*180/Math.PI}function md(e){return Math.abs(Math.sin(2*e))<1e-4}function ve(e,t,n=0,r=0){return[e-n,t-r]}function _(e,t=[0,0]){return ve(e[0]-t[0],e[1]-t[1])}function Me(e,t){return e[0]*t[1]-t[0]*e[1]}function R6(e,t){return e[0]*t[0]+e[1]*t[1]}function it(e,t){return[e[0]+t[0],e[1]+t[1]]}function Do(e,t){return[e[0]-t[0],e[1]-t[1]]}function me(e,t){return ve(e[0]*t,e[1]*t)}function T6(e){return e[0]*e[0]+e[1]*e[1]}function M6(e){return Math.sqrt(T6(e))}var Ae=e=>{let t=M6(e);return t===0?ve(0,0):ve(e[0]/t,e[1]/t)};function u(e,t){return[e,t]}function Tr(e){return e.length===2?u(e[0],e[1]):void 0}function V(e,t=u(0,0)){return u(t[0]+e[0],t[1]+e[1])}function So(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="number"&&!isNaN(e[0])&&typeof e[1]=="number"&&!isNaN(e[1])}function He(e,t){let n=Math.abs;return n(e[0]-t[0])<1e-4&&n(e[1]-t[1])<1e-4}function T([e,t],[n,r],o){return u((e-n)*Math.cos(o)-(t-r)*Math.sin(o)+n,(e-n)*Math.sin(o)+(t-r)*Math.cos(o)+r)}function un(e,t=[0,0]){return u(e[0]+t[0],e[1]+t[1])}function Xt(e,t){return u((e[0]+t[0])/2,(e[1]+t[1])/2)}function oe(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1])}function Mr(e,t){let n=t[0]-e[0],r=t[1]-e[1];return n*n+r*r}var pt=(e,t,n)=>un(t,me(_(e,t),n)),vo=(e,t,n)=>t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1]);function Lr(e,t){return[e,t]}function bd(e,t){let n=e[1][1]-e[0][1],r=e[0][0]-e[1][0],o=t[1][1]-t[0][1],i=t[0][0]-t[1][0],a=n*i-o*r;if(a!==0){let s=n*e[0][0]+r*e[0][1],d=o*t[0][0]+i*t[0][1];return u((s*i-d*r)/a,(n*d-o*s)/a)}return null}function B(e,t){return[e,t]}var Nt=(e,t,n=1e-4)=>{let r=$o(e,t);return r===0?!0:r<n},$o=(e,t)=>{let[n,r]=e,[[o,i],[a,s]]=t,d=n-o,c=r-i,l=a-o,U=s-i,p=d*l+c*U,m=l*l+U*U,b=-1;m!==0&&(b=p/m);let E,g;b<0?(E=o,g=i):b>1?(E=a,g=s):(E=o+b*l,g=i+b*U);let y=n-E,x=r-g;return Math.sqrt(y*y+x*x)};function mn(e,t){let n=bd(Lr(e[0],e[1]),Lr(t[0],t[1]));return!n||!Nt(n,t)||!Nt(n,e)?null:n}function Dr(e,t){return[e,t]}function Ed(e,t){return[B(e[0],u(e[1][0],e[0][1])),B(u(e[1][0],e[0][1]),e[1]),B(e[1],u(e[0][0],e[1][1])),B(u(e[0][0],e[1][1]),e[0])].map(n=>mn(t,n)).filter(n=>!!n)}function ut(e,t,n,r){return[e,t,n,r]}function gd(e,t,n,r=1e-6){return[(e(t+r,n)-e(t-r,n))/(2*r),(e(t,n+r)-e(t,n-r))/(2*r)]}function L6(e,t,n,r=.001,o=10){let i=1/0,a=0;for(;i>=r;){if(a>=o)return null;let s=e(t,n),d=[gd((E,g)=>e(E,g)[0],t,n),gd((E,g)=>e(E,g)[1],t,n)],c=[[-s[0]],[-s[1]]],l=d[0][0]*d[1][1]-d[0][1]*d[1][0];if(l===0)return null;let U=[[d[1][1]/l,-d[0][1]/l],[-d[1][0]/l,d[0][0]/l]],p=[[U[0][0]*c[0][0]+U[0][1]*c[1][0]],[U[1][0]*c[0][0]+U[1][1]*c[1][0]]];t=t+p[0][0],n=n+p[1][0];let[m,b]=e(t,n);i=Math.max(Math.abs(m),Math.abs(b)),a+=1}return[t,n]}var Sr=(e,t)=>u((1-t)**3*e[0][0]+3*(1-t)**2*t*e[1][0]+3*(1-t)*t**2*e[2][0]+t**3*e[3][0],(1-t)**3*e[0][1]+3*(1-t)**2*t*e[1][1]+3*(1-t)*t**2*e[2][1]+t**3*e[3][1]);function ea(e,t){let n=S6(e);if(Ed(Dr(u(n[0],n[1]),u(n[2],n[3])),t).length===0)return[];let r=s=>u(t[0][0]+s*(t[1][0]-t[0][0]),t[0][1]+s*(t[1][1]-t[0][1])),o=[[.5,0],[.2,0],[.8,0]],i=([s,d])=>{let c=L6((p,m)=>{let b=Sr(e,p),E=r(m);return[b[0]-E[0],b[1]-E[1]]},s,d);if(!c)return null;let[l,U]=c;return l<0||l>1||U<0||U>1?null:Sr(e,l)},a=i(o[0]);return a?[a]:(a=i(o[1]),a?[a]:(a=i(o[2]),a?[a]:[]))}function D6(e,t,n=.001){let r=(c,l,U,p=n)=>{let m=c,b=l,E;for(;b-m>p;)E=(b+m)/2,U(E-p)<U(E+p)?b=E:m=E;return E},i=0;for(let c=1/0,l=0;l<30;l++){let U=oe(t,Sr(e,l/30));U<c&&(c=U,i=l)}let a=Math.max((i-1)/30,0),s=Math.min((i+1)/30,1),d=r(a,s,c=>oe(t,Sr(e,c)));return d?Sr(e,d):null}function ta(e,t){let n=D6(e,t);return n?oe(t,n):0}function S6(e){let[t,n,r,o]=e,i=[t[0],n[0],r[0],o[0]],a=[t[1],n[1],r[1],o[1]];return[Math.min(...i),Math.min(...a),Math.max(...i),Math.max(...a)]}function na(...e){return hd(e)}function kn(e){return hd(e)}var ra=(e,t)=>{let n=e[0],r=e[1],o=!1;for(let i=0,a=t.length-1;i<t.length;a=i++){let s=t[i][0],d=t[i][1],c=t[a][0],l=t[a][1];(d>r&&l<=r||d<=r&&l>r)&&n<(c-s)*(r-d)/(l-d)+s&&(o=!o)}return o},xd=(e,t,n=1e-4)=>{let r=!1;for(let o=0,i=t.length-1;o<i;o++)if(Nt(e,B(t[o],t[o+1]),n)){r=!0;break}return r};function hd(e){return v6(e)?e:[...e,e[0]]}function v6(e){return He(e[0],e[e.length-1])}function _e(e,t){return Ve([e,t])}var vr=([e,t],[n,r])=>e<=n?t>=n:e>=n?r>=e:!1,$r=([e,t],[n,r])=>{let o=Math.max(e,n),i=Math.min(t,r);return o<=i?Ve([o,i]):null},Pr=(e,[t,n])=>e>=t&&e<=n;function Sn([e,t,n],r){let o=(l,U,p)=>(l[0]-p[0])*(U[1]-p[1])-(U[0]-p[0])*(l[1]-p[1]),i=o(r,e,t),a=o(r,t,n),s=o(r,n,e),d=i<0||a<0||s<0,c=i>0||a>0||s>0;return!(d&&c)}var yd=null;var kh=()=>{if(yd)return yd;let e=new Date,t=e.getFullYear(),n=`${e.getMonth()+1}`.padStart(2,"0"),r=`${e.getDate()}`.padStart(2,"0"),o=`${e.getHours()}`.padStart(2,"0"),i=`${e.getMinutes()}`.padStart(2,"0");return`${t}-${n}-${r}-${o}${i}`},Zh=e=>e.charAt(0).toUpperCase()+e.slice(1),Wh=e=>e instanceof HTMLElement&&e.className.includes("ToolIcon"),P6=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement,zh=e=>P6(e)||e instanceof Element&&!!e.closest("label, button"),Qh=e=>e instanceof HTMLElement&&e.dataset.type==="wysiwyg"||e instanceof HTMLBRElement||e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&(e.type==="text"||e.type==="number"||e.type==="password"),oa=({fontFamily:e})=>{for(let[t,n]of Object.entries(ye))if(n===e)return`${t}${Eo(n).map(r=>`, ${r}`).join("")}`;return Ln},Ee=({fontSize:e,fontFamily:t})=>`${e}px ${oa({fontFamily:t})}`,Po=(e,t)=>{let n=0,r=null,o=(...i)=>{r=i,clearTimeout(n),n=window.setTimeout(()=>{r=null,e(...i)},t)};return o.flush=()=>{if(clearTimeout(n),r){let i=r;r=null,e(...i)}},o.cancel=()=>{r=null,clearTimeout(n)},o},Rd=(e,t)=>{let n=null,r=null,o=null,i=s=>{n=window.requestAnimationFrame(()=>{n=null,e(...s),r=null,o&&(r=o,o=null,i(r))})},a=(...s)=>{if(L.MODE==="test"){e(...s);return}r=s,n===null?i(r):t?.trailing&&(o=s)};return a.flush=()=>{n!==null&&(cancelAnimationFrame(n),n=null),r&&(e(...o||r),r=o=null)},a.cancel=()=>{r=o=null,n!==null&&(cancelAnimationFrame(n),n=null)},a},Td=e=>1-Math.pow(1-e,4),Id=(e,t,n)=>(t-e)*Td(n)+e,jh=({fromValues:e,toValues:t,onStep:n,duration:r=250,interpolateValue:o,onStart:i,onEnd:a,onCancel:s})=>{let d=!1,c=0,l;function U(p){if(d)return;l===void 0&&(l=p,i?.());let m=Math.min(p-l,r),b=Td(m/r),E={};if(Object.keys(e).forEach(g=>{let y=g,x=(t[y]-e[y])*b+e[y];E[y]=x}),n(E),m<r){let g=m/r,y={};Object.keys(e).forEach(x=>{let h=x,I=e[h],w=t[h],v;v=o?o(I,w,g,h):Id(I,w,g),v==null&&(v=Id(I,w,g)),y[h]=v}),n(y),c=window.requestAnimationFrame(U)}else n(t),a?.()}return c=window.requestAnimationFrame(U),()=>{s?.(),d=!0,window.cancelAnimationFrame(c)}},e4=(e,t)=>{if(!e.length||t<1)return[];let n=0,r=0,o=Array(Math.ceil(e.length/t));for(;n<e.length;)o[r++]=e.slice(n,n+=t);return o};var at=(e,t)=>Math.abs(e-t),Fr=(e,t)=>t.type==="custom"?{...e.activeTool,type:"custom",customType:t.customType,locked:t.locked??e.activeTool.locked}:{...e.activeTool,lastActiveTool:t.lastActiveToolBeforeEraser===void 0?e.activeTool.lastActiveTool:t.lastActiveToolBeforeEraser,type:t.type,customType:null,locked:t.locked??e.activeTool.locked};var t4=e=>(e=e.replace(/\bAlt\b/i,"Alt").replace(/\bShift\b/i,"Shift").replace(/\b(Enter|Return)\b/i,"Enter"),mo?e.replace(/\bCtrlOrCmd\b/gi,"Cmd").replace(/\bAlt\b/i,"Option"):e.replace(/\bCtrlOrCmd\b/gi,"Ctrl")),vn=({clientX:e,clientY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:i,scrollY:a})=>{let s=(e-r)/n.value-i,d=(t-o)/n.value-a;return{x:s,y:d}},ia=({sceneX:e,sceneY:t},{zoom:n,offsetLeft:r,offsetTop:o,scrollX:i,scrollY:a})=>{let s=(e+i)*n.value+r,d=(t+a)*n.value+o;return{x:s,y:d}},n4=e=>getComputedStyle(document.documentElement).getPropertyValue(`--${e}`),N6="A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u0300-\u0590\u0800-\u1FFF\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF",F6="\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC",O6=new RegExp(`^[^${N6}]*[${F6}]`),No=e=>O6.test(e),kt=e=>{let[t,n]=e;return{x:t,y:n}},r4=e=>{if(e?.name==="AbortError"){console.warn(e);return}throw e},o4=(e,t,n=0)=>{n<0&&(n=e.length+n),n=Math.min(e.length,Math.max(n,0));let r=n-1;for(;++r<e.length;)if(t(e[r],r,e))return r;return-1},i4=(e,t,n=e.length-1)=>{n<0&&(n=e.length+n),n=Math.min(e.length-1,Math.max(n,0));let r=n+1;for(;--r>-1;)if(t(e[r],r,e))return r;return-1},Zt=e=>{let t=e.length===5&&e.substr(4,1)==="0",n=e.length===9&&e.substr(7,2)==="00";return t||n||e===xr},Fo=e=>e.fillStyle!=="solid"||Zt(e.backgroundColor),a4=()=>{let e,t,n=new Promise((r,o)=>{e=r,t=o});return n.resolve=e,n.reject=t,n};var s4=e=>{let t=e.parentElement;for(;t;){if(t===document.body)return document;let{overflowY:n}=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&(n==="auto"||n==="scroll"||n==="overlay"))return t;t=t.parentElement}return document},d4=e=>{let t=e.parentElement;for(;t;){if(t.tabIndex>-1){t.focus();return}t=t.parentElement}},c4=e=>{e.preventDefault(),e.returnValue=""},Md=e=>Array.from(e).map(t=>`0${t.toString(16)}`.slice(-2)).join(""),Wt=()=>Ot()?1:Date.now(),ee=e=>e instanceof Map?e:e.reduce((t,n)=>(t.set(typeof n=="string"?n:n.id,n),t),new Map),l4=e=>e.reduce((t,n,r)=>(t.set(n.id,[n,r]),t),new Map),Ft=(e,t)=>e.reduce((n,r)=>(n[t?t(r):String(r)]=r,n),{}),U4=e=>e.reduce((t,n,r)=>{let o={...n,prev:null,next:null};if(r!==0){let i=t[r-1];if(o.prev=i,i.next=o,r===e.length-1){let a=t[0];o.next=a,a.prev=o}}return t.push(o),t},[]),Ot=()=>L.MODE==="test",f4=()=>L.MODE==="development",Ld=()=>typeof process<"u"&&!0,p4=(e,t)=>new CustomEvent(e,{detail:{nativeEvent:t},cancelable:!0}),u4=(e,t)=>{let n=!1;for(let r in t){let o=t[r];if(typeof o<"u"){if(e[r]===o&&(typeof o!="object"||o===null))continue;n=!0}}return n?{...e,...t}:e};var m4=()=>{try{return window.self===window.top?"top":"iframe"}catch{return"iframe"}};var Oo=e=>!!e&&typeof e=="object"&&"then"in e&&"catch"in e&&"finally"in e,b4=e=>{let t=e?.querySelectorAll("button, a, input, select, textarea, div[tabindex], label[tabindex]");return t?Array.from(t).filter(n=>n.tabIndex>-1&&!n.disabled):[]},wd=(e,t)=>Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t,zt=(e,t,n,r=!1)=>{let o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return r&&console.warn("%cisShallowEqual: objects don't have same properties ->","color: #8B4000",e,t),!1;if(n&&Array.isArray(n)){for(let a of n)if(!(e[a]===t[a]||wd(e[a],t[a])))return r&&console.warn(`%cisShallowEqual: ${a} not equal ->`,"color: #8B4000",e[a],t[a]),!1;return!0}return o.every(a=>{let s=n?.[a],d=s?s(e[a],t[a]):e[a]===t[a]||wd(e[a],t[a]);return!d&&r&&console.warn(`%cisShallowEqual: ${a} not equal ->`,"color: #8B4000",e[a],t[a]),d})},E4=(e,t,{checkForDefaultPrevented:n=!0}={})=>function(o){if(e?.(o),!n||!o?.defaultPrevented)return t?.(o)},$n=(e,t,n)=>{if(!t)return e;if(n)return console.error(t),e;throw new Error(t)};function Be(e,t){if(!e)throw new Error(t)}var g4=e=>{let t,n,r=function(o){let i=Object.entries(o);if(t){let s=!0;for(let[d,c]of i)if(t.get(d)!==c){s=!1;break}if(s)return n}let a=e(o);return t=new Map(i),n=a,a};return r.clear=()=>{t=void 0,n=void 0},r},Dd=(e,t)=>e instanceof Set||e instanceof Map?e.has(t):"includes"in e?e.includes(t):e.hasOwnProperty(t),x4=e=>JSON.parse(JSON.stringify(e)),h4=(e,t)=>zt(e,t)?e:t;function y4(e,t,n,r){return e?(e?.addEventListener?.(t,n,r),()=>{e?.removeEventListener?.(t,n,r)}):()=>{}}function I4(e,t=!0){let n=e.length;if(n<4)return"";let r=e[0],o=e[1],i=e[2],a=`M${r[0].toFixed(2)},${r[1].toFixed(2)} Q${o[0].toFixed(2)},${o[1].toFixed(2)} ${Ir(o[0],i[0]).toFixed(2)},${Ir(o[1],i[1]).toFixed(2)} T`;for(let s=2,d=n-1;s<d;s++)r=e[s],o=e[s+1],a+=`${Ir(r[0],o[0]).toFixed(2)},${Ir(r[1],o[1]).toFixed(2)} `;return t&&(a+="Z"),a}var Sd=e=>e.replace(/\r?\n|\r/g,`
2
2
  `),Ve=e=>e,bn=async(e,...t)=>new Promise(n=>{n(e(...t))}),vd=(...e)=>Math.max(...e.map(t=>t?1:0))>0;var Nr=class{constructor(t,n){P(this,"pool");P(this,"entries",{});this.pool=new $6(t,n)}all(){let t=n=>{if(n.data.result){let[r,o]=n.data.result;this.entries[r]=o}};return this.pool.addEventListener("fulfilled",t),this.pool.start().then(()=>(setTimeout(()=>{this.pool.removeEventListener("fulfilled",t)}),Object.values(this.entries)))}},Zn=e=>e.replace(/"/g,"&quot;"),w4=e=>Array.isArray(e)?e:[e],$d=(e,t)=>t.reduce((n,r)=>(r in e&&(n[r]=e[r]),n),{});var _t=e=>!!e&&e.type==="image"&&!!e.fileId,Ke=e=>!!e&&e.type==="image",_o=e=>!!e&&e.type==="embeddable",Bo=e=>!!e&&e.type==="iframe",mt=e=>!!e&&(e.type==="iframe"||e.type==="embeddable"),G=e=>e!=null&&e.type==="text",Pd=e=>e!=null&&e.type==="frame",Nd=e=>e!=null&&e.type==="magicframe",de=e=>e!=null&&(e.type==="frame"||e.type==="magicframe"),Je=e=>e!=null&&_6(e.type),_6=e=>e==="freedraw",ie=e=>e!=null&&aa(e.type),j=e=>e!=null&&e.type==="arrow",k=e=>j(e)&&e.elbowed,aa=e=>e==="arrow"||e==="line",Or=(e,t=!0)=>e!=null&&(!e.locked||t===!0)&&B6(e.type),B6=e=>e==="arrow",bt=(e,t=!0)=>e!=null&&(!e.locked||t===!0)&&(e.type==="rectangle"||e.type==="diamond"||e.type==="ellipse"||e.type==="image"||e.type==="iframe"||e.type==="embeddable"||e.type==="frame"||e.type==="magicframe"||e.type==="text"&&!e.containerId),Fd=e=>e!=null&&(e.type==="rectangle"||e.type==="diamond"||e.type==="image"||e.type==="iframe"||e.type==="embeddable"||e.type==="frame"||e.type==="magicframe"||e.type==="text"&&!e.containerId);var A6=(e,t=!0)=>e!=null&&(!e.locked||t===!0)&&(e.type==="rectangle"||e.type==="diamond"||e.type==="ellipse"||j(e)),sa=e=>{let t=e?.type;if(!t)return!1;switch(t){case"text":case"diamond":case"rectangle":case"iframe":case"embeddable":case"ellipse":case"arrow":case"freedraw":case"line":case"frame":case"magicframe":case"image":case"selection":return!0;default:return $n(t,null),!1}},S4=e=>e.type==="rectangle"||e.type==="ellipse"||e.type==="diamond",En=e=>A6(e)&&!!e.boundElements?.some(({type:t})=>t==="text"),Fe=e=>e!==null&&"containerId"in e&&e.containerId!==null&&G(e),Ao=e=>e==="rectangle"||e==="embeddable"||e==="iframe"||e==="image",Od=e=>e==="line"||e==="arrow"||e==="diamond",v4=(e,t)=>!!((e===nt.ADAPTIVE_RADIUS||e===nt.LEGACY)&&Ao(t.type)||e===nt.PROPORTIONAL_RADIUS&&Od(t.type)),$4=e=>Od(e.type)?{type:nt.PROPORTIONAL_RADIUS}:Ao(e.type)?{type:nt.ADAPTIVE_RADIUS}:null,Pn=e=>Object.hasOwn(e,"fixedPoint")&&e.fixedPoint!=null;var Et=(e,t,n)=>{let r=e.split(`
3
3
  `).map(s=>s||" ").join(`
4
4
  `),o=parseFloat(t),i=H6(r,o,n);return{width:Kd(r,t),height:i}},_d="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toLocaleUpperCase(),Bd=(e,t)=>{let n=K6(e);return n===0?Et(_d.split("").join(`
@@ -30,17 +30,17 @@ import{a as L}from"./chunk-BE2LY6VO.js";import{c as E6,d as P}from"./chunk-SRAX5
30
30
  </svg>
31
31
  `)}`;e.style.cursor=`url(${n}) 5 20, auto`}else t.activeTool.type!=="image"&&(e.style.cursor=bo.AUTO)};import{Random as zE}from"roughjs/bin/math";import{nanoid as QE}from"nanoid";var jE=new zE(Date.now()),eg=0,Ct=()=>Math.floor(jE.next()*2**31);var Tt=()=>Ot()?`id${eg++}`:QE();var Mt=(e,{x:t,y:n,strokeColor:r=Ie.strokeColor,backgroundColor:o=Ie.backgroundColor,fillStyle:i=Ie.fillStyle,strokeWidth:a=Ie.strokeWidth,strokeStyle:s=Ie.strokeStyle,roughness:d=Ie.roughness,opacity:c=Ie.opacity,width:l=0,height:U=0,angle:p=0,groupIds:m=[],frameId:b=null,index:E=null,roundness:g=null,boundElements:y=null,link:x=null,locked:h=Ie.locked,...I})=>((t<-1e6||t>1e6||n<-1e6||n>1e6||l<-1e6||l>1e6||U<-1e6||U>1e6)&&console.error("New element size or position is too large",{x:t,y:n,width:l,height:U,points:I.points}),{id:I.id||Tt(),type:e,x:t,y:n,width:l,height:U,angle:p,strokeColor:r,backgroundColor:o,fillStyle:i,strokeWidth:a,strokeStyle:s,roughness:d,opacity:c,groupIds:m,frameId:b,index:E,roundness:g,seed:I.seed??Ct(),version:I.version||1,versionNonce:I.versionNonce??0,isDeleted:!1,boundElements:y,updated:Wt(),link:x,locked:h,customData:I.customData}),Zr=e=>Mt(e.type,e),qO=e=>Mt("embeddable",e),GO=e=>({...Mt("iframe",e)}),XO=e=>Lt({...Mt("frame",e),type:"frame",name:e?.name||null},{}),kO=e=>Lt({...Mt("magicframe",e),type:"magicframe",name:e?.name||null},{}),O2=(e,t)=>({x:e.textAlign==="center"?t.width/2:e.textAlign==="right"?t.width:0,y:e.verticalAlign==="middle"?t.height/2:0}),Yt=e=>{let t=e.fontFamily||Pt,n=e.fontSize||Ut,r=e.lineHeight||Qo(t),o=ca(e.text),i=Et(o,Ee({fontFamily:t,fontSize:n}),r),a=e.textAlign||qn,s=e.verticalAlign||xo,d=O2({textAlign:a,verticalAlign:s},i),c={...Mt("text",e),text:o,fontSize:n,fontFamily:t,textAlign:a,verticalAlign:s,x:e.x-d.x,y:e.y-d.y,width:i.width,height:i.height,containerId:e.containerId||null,originalText:e.originalText??o,autoResize:e.autoResize??!0,lineHeight:r};return Lt(c,{})},tg=(e,t,n)=>{let{width:r,height:o}=Et(n,Ee(e),e.lineHeight);e.autoResize||(r=e.width);let{textAlign:i,verticalAlign:a}=e,s,d;if(i==="center"&&a===Gt.MIDDLE&&!e.containerId&&e.autoResize){let c=Et(e.text,Ee(e),e.lineHeight),l=O2(e,{width:r-c.width,height:o-c.height});s=e.x-l.x,d=e.y-l.y}else{let[c,l,U,p]=Y(e,t),[m,b,E,g]=yt(e,r,o,!1),y=(c-m)/2,x=(l-b)/2,h=(U-E)/2,I=(p-g)/2;[s,d]=ng({s:!0,e:i==="center"||i==="left",w:i==="center"||i==="right"},e.x,e.y,e.angle,y,x,h,I)}return{width:r,height:o,x:Number.isFinite(s)?s:e.x,y:Number.isFinite(d)?d:e.y}},ng=(e,t,n,r,o,i,a,s)=>{let d=Math.cos(r),c=Math.sin(r);return e.e&&e.w?t+=o+a:e.e?(t+=o*(1+d),n+=o*c,t+=a*(1-d),n+=a*-c):e.w&&(t+=o*(1-d),n+=o*-c,t+=a*(1+d),n+=a*c),e.n&&e.s?n+=i+s:e.n?(t+=i*c,n+=i*(1-d),t+=s*-c,n+=s*(1+d)):e.s&&(t+=i*-c,n+=i*(1+d),t+=s*c,n+=s*(1-d)),[t,n]},as=(e,t,n,r=e.text)=>{if(e.isDeleted)return;(t||!e.autoResize)&&(r=jt(r,Ee(e),t?It(t,e):e.width));let o=tg(e,n,r);return{text:r,...o}},ZO=e=>({...Mt(e.type,e),points:e.points||[],pressures:e.pressures||[],simulatePressure:e.simulatePressure,lastCommittedPoint:null}),An=e=>({...Mt(e.type,e),points:e.points||[],lastCommittedPoint:null,startBinding:null,endBinding:null,startArrowhead:null,endArrowhead:null}),rg=e=>e.elbowed?{...Mt(e.type,e),points:e.points||[],lastCommittedPoint:null,startBinding:null,endBinding:null,startArrowhead:e.startArrowhead||null,endArrowhead:e.endArrowhead||null,elbowed:!0,fixedSegments:e.fixedSegments||[],startIsSpecial:!1,endIsSpecial:!1}:{...Mt(e.type,e),points:e.points||[],lastCommittedPoint:null,startBinding:null,endBinding:null,startArrowhead:e.startArrowhead||null,endArrowhead:e.endArrowhead||null,elbowed:!1},og=e=>({...Mt("image",e),strokeColor:"transparent",status:e.status??"pending",fileId:e.fileId??null,scale:e.scale??[1,1],crop:e.crop??null}),wi=(e,t=0)=>{if(e==null||typeof e!="object")return e;let n=Object.prototype.toString.call(e);if(n==="[object Object]"){let r=typeof e.constructor=="function"?Object.create(Object.getPrototypeOf(e)):{};for(let o in e)if(e.hasOwnProperty(o)){if(t===0&&(o==="shape"||o==="canvas"))continue;r[o]=wi(e[o],t+1)}return r}if(Array.isArray(e)){let r=e.length,o=new Array(r);for(;r--;)o[r]=wi(e[r],t+1);return o}return L.DEV&&n!=="[object Object]"&&n!=="[object Array]"&&n.startsWith("[object ")&&console.warn(`_deepCloneElement: unexpected object type ${n}. This value will not be cloned!`),e},Wr=e=>wi(e),_2=(e,t)=>{Object.defineProperty(e,cd,{value:t,writable:!1,enumerable:!1})},Ri=()=>Tt(),ig=(e,t,n,r)=>{let o=Wr(n);return Ot()&&_2(o,n.id),o.id=Ri(),o.boundElements=null,o.updated=Wt(),o.seed=Ct(),o.groupIds=E2(o.groupIds,e,i=>(t.has(i)||t.set(i,Ri()),t.get(i))),r&&(o=Object.assign(o,r)),o},WO=(e,t)=>{let n=[],r=ee(e),o=new Map,i=s=>{if(o.has(s))return o.get(s);if(r.has(s)){let d=Ri();return o.set(s,d),d}return null},a=new Map;for(let s of e){let d=wi(s);if(d.id=i(s.id),Ot()&&_2(d,s.id),t?.randomizeSeed&&(d.seed=Ct(),zr(d)),d.groupIds&&(d.groupIds=d.groupIds.map(c=>(a.has(c)||a.set(c,Ri()),a.get(c)))),"containerId"in d&&d.containerId){let c=i(d.containerId);d.containerId=c}if("boundElements"in d&&d.boundElements&&(d.boundElements=d.boundElements.reduce((c,l)=>{let U=i(l.id);return U&&c.push({...l,id:U}),c},[])),"endBinding"in d&&d.endBinding){let c=i(d.endBinding.elementId);d.endBinding=c?{...d.endBinding,elementId:c}:null}if("startBinding"in d&&d.startBinding){let c=i(d.startBinding.elementId);d.startBinding=c?{...d.startBinding,elementId:c}:null}d.frameId&&(d.frameId=i(d.frameId)),n.push(d)}return n};import{generateNKeysBetween as ag}from"fractional-indexing";var ds=(e,{shouldThrow:t=!1,includeBoundTextValidation:n=!1,ignoreLogs:r,reconciliationContext:o})=>{let i=[],a=d=>`${d?.index}:${d?.id}:${d?.type}:${d?.isDeleted}:${d?.version}:${d?.versionNonce}`,s=e.map(d=>d.index);for(let[d,c]of s.entries()){let l=s[d-1],U=s[d+1];if(ss(c,l,U)||i.push(`Fractional indices invariant has been compromised: "${a(e[d-1])}", "${a(e[d])}", "${a(e[d+1])}"`),n&&En(e[d])){let p=e[d],m=re(p,ee(e));m&&m.index<=p.index&&i.push(`Fractional indices invariant for bound elements has been compromised: "${a(m)}", "${a(p)}"`)}}if(i.length){let d=new ko,c=[];if(o&&(c.push("Additional reconciliation context:"),c.push(o.localElements.map(l=>a(l))),c.push(o.remoteElements.map(l=>a(l)))),r||console.error(i.join(`
32
32
 
33
- `),d.stack,e.map(l=>a(l)),...c),t)throw d}},A2=e=>e.sort((t,n)=>B2(t)&&B2(n)?t.index<n.index?-1:t.index>n.index?1:t.id<n.id?-1:1:1),Qr=(e,t)=>{try{let n=sg(e,t),r=H2(e,n),o=e.map(i=>r.has(i)?{...i,...r.get(i)}:i);ds(o,{includeBoundTextValidation:!1,shouldThrow:!0,ignoreLogs:!0});for(let[i,a]of r)C(i,a,!1)}catch{Hn(e)}return e},Hn=e=>{let t=dg(e),n=H2(e,t);for(let[r,o]of n)C(r,o,!1);return e},sg=(e,t)=>{let n=[],r=0;for(;r<e.length;)if(t.has(e[r].id)){let o=[r-1,r];for(;++r<e.length&&t.has(e[r].id);)o.push(r);o.push(r),n.push(o)}else r++;return n},dg=e=>{let t=[],n,r,o=-1,i=0,a=c=>{let l=e[o]?e[o].index:void 0,U=e[c-1]?.index;return!l&&U||l&&U&&U>l?[U,c-1]:[l,o]},s=c=>{let l=e[i]?e[i].index:void 0;if(l&&c<i)return[l,i];let U=i;for(;++U<e.length;){let p=e[U]?.index;if(!l&&p||l&&p&&p>l)return[p,U]}return[void 0,U]},d=0;for(;d<e.length;){let c=e[d].index;if([n,o]=a(d),[r,i]=s(d),ss(c,n,r))d++;else{let l=[o,d];for(;++d<e.length;){let U=e[d].index,[p,m]=a(d),[b,E]=s(d);if(ss(U,p,b))break;[n,o]=[p,m],[r,i]=[b,E],l.push(d)}l.push(i),t.push(l)}}return t},ss=(e,t,n)=>e?t&&n?t<e&&e<n:!t&&n?e<n:t&&!n?t<e:!!e:!1,H2=(e,t)=>{let n=new Map;for(let r of t){let o=r.shift(),i=r.pop(),a=ag(e[o]?.index,e[i]?.index,r.length);for(let s=0;s<r.length;s++){let d=e[r[s]];n.set(d,{index:a[s]})}}return n},B2=e=>!!e.index;var Le=class e{constructor(t,n){this.deleted=t;this.inserted=n}static create(t,n,r,o){let i=r&&o!=="inserted"?r(t):t,a=r&&o!=="deleted"?r(n):n;return new e(i,a)}static calculate(t,n,r,o){if(t===n)return e.empty();let i={},a={};for(let c of this.distinctKeysIterator("full",t,n))i[c]=t[c],a[c]=n[c];let[s,d]=o?o(i,a):[i,a];return e.create(s,d,r)}static empty(){return new e({},{})}static isEmpty(t){return!Object.keys(t.deleted).length&&!Object.keys(t.inserted).length}static mergeObjects(t,n,r){let o={...t};for(let i of Object.keys(r))delete o[i];return{...o,...n}}static mergeArrays(t,n,r,o){return Object.values(e.mergeObjects(Ft(t??[],o),Ft(n??[],o),Ft(r??[],o)))}static diffObjects(t,n,r,o){if(!(!t[r]&&!n[r])&&(typeof t[r]=="object"||typeof n[r]=="object")){let i=t[r]??{},a=n[r]??{},s=e.getLeftDifferences(i,a).reduce((c,l)=>(c[l]=o(i[l]),c),{}),d=e.getRightDifferences(i,a).reduce((c,l)=>(c[l]=o(a[l]),c),{});Object.keys(s).length||Object.keys(d).length?(Reflect.set(t,r,s),Reflect.set(n,r,d)):(Reflect.deleteProperty(t,r),Reflect.deleteProperty(n,r))}}static diffArrays(t,n,r,o){if(!(!t[r]&&!n[r])&&(Array.isArray(t[r])||Array.isArray(n[r]))){let i=Array.isArray(t[r])?t[r]:[],a=Array.isArray(n[r])?n[r]:[],s=Ft(e.getLeftDifferences(Ft(i,o),Ft(a,o))),d=Ft(e.getRightDifferences(Ft(i,o),Ft(a,o)));if(Object.keys(s).length||Object.keys(d).length){let c=i.filter(U=>s[o?o(U):String(U)]),l=a.filter(U=>d[o?o(U):String(U)]);Reflect.set(t,r,c),Reflect.set(n,r,l)}else Reflect.deleteProperty(t,r),Reflect.deleteProperty(n,r)}}static isLeftDifferent(t,n,r=!1){return!!this.distinctKeysIterator("left",t,n,r).next().value}static isRightDifferent(t,n,r=!1){return!!this.distinctKeysIterator("right",t,n,r).next().value}static getLeftDifferences(t,n,r=!1){return Array.from(this.distinctKeysIterator("left",t,n,r))}static getRightDifferences(t,n,r=!1){return Array.from(this.distinctKeysIterator("right",t,n,r))}static*distinctKeysIterator(t,n,r,o=!1){if(n===r)return;let i=[];t==="left"?i=Object.keys(n):t==="right"?i=Object.keys(r):t==="full"?i=Array.from(new Set([...Object.keys(n),...Object.keys(r)])):$n(t,`Unknown distinctKeysIterator's join param "${t}"`,!0);for(let a of i){let s=n[a],d=r[a];if(s!==d){if(!o&&typeof s=="object"&&typeof d=="object"&&s!==null&&d!==null&&zt(s,d))continue;yield a}}}},jr=class e{constructor(t){this.delta=t}static calculate(t,n){let r=Le.calculate(t,n,void 0,e.postProcess);return new e(r)}static empty(){return new e(Le.create({},{}))}inverse(){let t=Le.create(this.delta.inserted,this.delta.deleted);return new e(t)}applyTo(t,n){try{let{selectedElementIds:r={},selectedGroupIds:o={}}=this.delta.deleted,{selectedElementIds:i={},selectedGroupIds:a={},selectedLinearElementId:s,editingLinearElementId:d,...c}=this.delta.inserted,l=Le.mergeObjects(t.selectedElementIds,i,r),U=Le.mergeObjects(t.selectedGroupIds,a,o),p=s&&n.has(s)?new W(n.get(s)):null,m=d&&n.has(d)?new W(n.get(d)):null,b={...t,...c,selectedElementIds:l,selectedGroupIds:U,selectedLinearElement:typeof s<"u"?p:t.selectedLinearElement,editingLinearElement:typeof d<"u"?m:t.editingLinearElement},E=this.filterInvisibleChanges(t,b,n);return[b,E]}catch(r){if(console.error("Couldn't apply appstate change",r),L.DEV||L.MODE===je.TEST)throw r;return[t,!1]}}isEmpty(){return Le.isEmpty(this.delta)}static postProcess(t,n){try{Le.diffObjects(t,n,"selectedElementIds",r=>!0),Le.diffObjects(t,n,"selectedGroupIds",r=>r??!1)}catch(r){if(console.error("Couldn't postprocess appstate change deltas."),L.DEV||L.MODE===je.TEST)throw r}finally{return[t,n]}}filterInvisibleChanges(t,n,r){let o=to(t),i=to(n),a=Le.isRightDifferent(e.stripElementsProps(o),e.stripElementsProps(i)),s=Le.isRightDifferent(e.stripStandaloneProps(o),e.stripStandaloneProps(i));if(!a&&!s)return!1;let d={value:a};if(s){let c=Le.getRightDifferences(e.stripStandaloneProps(o),e.stripStandaloneProps(i)),l=new Set;(c.includes("editingGroupId")||c.includes("selectedGroupIds"))&&(l=g2(r));for(let U of c)switch(U){case"selectedElementIds":n[U]=e.filterSelectedElements(n[U],r,d);break;case"selectedGroupIds":n[U]=e.filterSelectedGroups(n[U],l,d);break;case"croppingElementId":{let E=n[U],g=E&&r.get(E);g&&!g.isDeleted?d.value=!0:n[U]=null;break}case"editingGroupId":let p=n[U];p?l.has(p)?d.value=!0:n[U]=null:d.value=!0;break;case"selectedLinearElementId":case"editingLinearElementId":let m=e.convertToAppStateKey(U),b=n[m];if(!b)d.value=!0;else{let E=r.get(b.elementId);E&&!E.isDeleted?d.value=!0:n[m]=null}break;default:$n(U,`Unknown ObservedElementsAppState's key "${U}"`,!0)}}return d.value}static convertToAppStateKey(t){switch(t){case"selectedLinearElementId":return"selectedLinearElement";case"editingLinearElementId":return"editingLinearElement"}}static filterSelectedElements(t,n,r){let o=Object.keys(t);if(!o.length)return r.value=!0,t;let i={...t};for(let a of o){let s=n.get(a);s&&!s.isDeleted?r.value=!0:delete i[a]}return i}static filterSelectedGroups(t,n,r){if(!Object.keys(t).length)return r.value=!0,t;let i={...t};for(let a of Object.keys(i))n.has(a)?r.value=!0:delete i[a];return i}static stripElementsProps(t){let{editingGroupId:n,selectedGroupIds:r,selectedElementIds:o,editingLinearElementId:i,selectedLinearElementId:a,croppingElementId:s,...d}=t;return d}static stripStandaloneProps(t){let{name:n,viewBackgroundColor:r,...o}=t;return o}},Ue=class Ue{constructor(t,n,r){this.added=t;this.removed=n;this.updated=r}static create(t,n,r,o={shouldRedistribute:!1}){let i;if(o.shouldRedistribute){let a=new Map,s=new Map,d=new Map,c=[...t,...n,...r];for(let[l,U]of c)this.satisfiesAddition(U)?a.set(l,U):this.satisfiesRemoval(U)?s.set(l,U):d.set(l,U);i=new Ue(a,s,d)}else i=new Ue(t,n,r);return(L.DEV||L.MODE===je.TEST)&&(Ue.validate(i,"added",this.satisfiesAddition),Ue.validate(i,"removed",this.satisfiesRemoval),Ue.validate(i,"updated",this.satisfiesUpdate)),i}static validate(t,n,r){for(let[o,i]of t[n].entries())if(!r(i))throw console.error(`Broken invariant for "${n}" delta, element "${o}", delta:`,i),new Error(`ElementsChange invariant broken for element "${o}".`)}static calculate(t,n){if(t===n)return Ue.empty();let r=new Map,o=new Map,i=new Map;for(let a of t.values())if(!n.get(a.id)){let d={...a,isDeleted:!1},c={isDeleted:!0},l=Le.create(d,c,Ue.stripIrrelevantProps);o.set(a.id,l)}for(let a of n.values()){let s=t.get(a.id);if(!s){let d={isDeleted:!0},c={...a,isDeleted:!1},l=Le.create(d,c,Ue.stripIrrelevantProps);r.set(a.id,l);continue}if(s.versionNonce!==a.versionNonce){let d=Le.calculate(s,a,Ue.stripIrrelevantProps,Ue.postProcess);if(typeof s.isDeleted=="boolean"&&typeof a.isDeleted=="boolean"&&s.isDeleted!==a.isDeleted){s.isDeleted&&!a.isDeleted?r.set(a.id,d):o.set(a.id,d);continue}Le.isEmpty(d)||i.set(a.id,d)}}return Ue.create(r,o,i)}static empty(){return Ue.create(new Map,new Map,new Map)}inverse(){let t=i=>{let a=new Map;for(let[s,d]of i.entries())a.set(s,Le.create(d.inserted,d.deleted));return a},n=t(this.added),r=t(this.removed),o=t(this.updated);return Ue.create(r,n,o)}isEmpty(){return this.added.size===0&&this.removed.size===0&&this.updated.size===0}applyLatestChanges(t){let n=s=>d=>{let c={};for(let l of Object.keys(d))switch(l){case"boundElements":c[l]=d[l];break;default:c[l]=s[l]}return c},r=s=>{let d=new Map;for(let[c,l]of s.entries()){let U=t.get(c);if(U){let p=Le.create(l.deleted,l.inserted,n(U),"inserted");d.set(c,p)}else d.set(c,l)}return d},o=r(this.added),i=r(this.removed),a=r(this.updated);return Ue.create(o,i,a,{shouldRedistribute:!0})}applyTo(t,n){let r=Ve(new Map(t)),o,i={containsVisibleDifference:!1,containsZindexDifference:!1};try{let a=Ue.createApplier(r,n,i),s=a(this.added),d=a(this.removed),c=a(this.updated),l=this.resolveConflicts(t,r);o=new Map([...s,...d,...c,...l])}catch(a){if(console.error("Couldn't apply elements change",a),L.DEV||L.MODE===je.TEST)throw a;return[t,!0]}try{Ue.redrawTextBoundingBoxes(r,o),r=Ue.reorderElements(r,o,i),Ue.redrawBoundArrows(r,o)}catch(a){if(console.error("Couldn't mutate elements after applying elements change",a),L.DEV||L.MODE===je.TEST)throw a}finally{return[r,i.containsVisibleDifference]}}static applyDelta(t,n,r={containsVisibleDifference:!0,containsZindexDifference:!0}){let{boundElements:o,...i}=n.inserted;if(n.deleted.boundElements?.length||n.inserted.boundElements?.length){let a=Le.mergeArrays(t.boundElements,n.inserted.boundElements,n.deleted.boundElements,s=>s.id);Object.assign(i,{boundElements:a})}if(Ke(t)){let a=n;(a.deleted.crop||a.inserted.crop)&&Object.assign(i,{crop:a.inserted.crop??null})}if(!r.containsVisibleDifference){let{index:a,...s}=i,d=Ue.checkForVisibleDifference(t,s);r.containsVisibleDifference=d}return r.containsZindexDifference||(r.containsZindexDifference=n.deleted.index!==n.inserted.index),Lt(t,i)}static checkForVisibleDifference(t,n){return t.isDeleted&&n.isDeleted!==!1?!1:t.isDeleted&&n.isDeleted===!1||t.isDeleted===!1&&n.isDeleted?!0:Le.isRightDifferent(t,n)}resolveConflicts(t,n){let r=new Map,o=(c,l)=>{let U=n.get(c.id);if(!U)return;let p;t.get(c.id)===U?p=Lt(U,l):p=C(U,l),r.set(p.id,p),n.set(p.id,p)};for(let[c]of this.removed)Ue.unbindAffected(t,n,c,o);for(let[c]of this.added)Ue.rebindAffected(t,n,c,o);for(let[c]of Array.from(this.updated).filter(([l,U])=>Object.keys({...U.deleted,...U.inserted}).find(p=>p2.has(p)))){let l=n.get(c);!l||l.isDeleted||Ue.rebindAffected(t,n,c,o)}let i=new Map(Array.from(t).filter(([c])=>r.has(c))),{added:a,removed:s,updated:d}=Ue.calculate(i,r);for(let[c,l]of a)this.added.set(c,l);for(let[c,l]of s)this.removed.set(c,l);for(let[c,l]of d)this.updated.set(c,l);return r}static unbindAffected(t,n,r,o){let i=()=>t.get(r),a=()=>n.get(r);nn.unbindAffected(n,i(),o),nn.unbindAffected(n,a(),o),rn.unbindAffected(n,i(),o),rn.unbindAffected(n,a(),o)}static rebindAffected(t,n,r,o){let i=()=>t.get(r),a=()=>n.get(r);nn.unbindAffected(n,i(),o),nn.rebindAffected(n,a(),o),rn.unbindAffected(n,i(),(s,d)=>{G(s)&&o(s,d)}),rn.rebindAffected(n,a(),o)}static redrawTextBoundingBoxes(t,n){let r=new Map;for(let o of n.values()){if(Fe(o)){let{containerId:i}=o,a=i?t.get(i):void 0;a&&r.set(a.id,{container:a,boundText:o})}if(En(o)){let i=Kt(o),a=i?t.get(i):void 0;a&&r.set(o.id,{container:o,boundText:a})}}for(let{container:o,boundText:i}of r.values())o.isDeleted||i.isDeleted||is(i,o,t,!1)}static redrawBoundArrows(t,n){for(let r of n.values())!r.isDeleted&&bt(r)&&Ht(r,t,{changedElements:n})}static reorderElements(t,n,r){if(!r.containsZindexDifference)return t;let o=Array.from(t.values()),i=A2([...o]),a=Le.getRightDifferences(o,i,!0).reduce((s,d)=>{let c=o[Number(d)];return c&&n.has(c.id)&&s.set(c.id,c),s},new Map);return!r.containsVisibleDifference&&a.size&&(r.containsVisibleDifference=!0),ee(Qr(i,a))}static postProcess(t,n){try{Le.diffArrays(t,n,"boundElements",r=>r.id)}catch(r){if(console.error("Couldn't postprocess elements change deltas."),L.DEV||L.MODE===je.TEST)throw r}finally{return[t,n]}}static stripIrrelevantProps(t){let{id:n,updated:r,version:o,versionNonce:i,seed:a,...s}=t;return s}};P(Ue,"satisfiesAddition",({deleted:t,inserted:n})=>t.isDeleted===!0&&!n.isDeleted),P(Ue,"satisfiesRemoval",({deleted:t,inserted:n})=>!t.isDeleted&&n.isDeleted===!0),P(Ue,"satisfiesUpdate",({deleted:t,inserted:n})=>!!t.isDeleted==!!n.isDeleted),P(Ue,"createApplier",(t,n,r)=>{let o=Ue.createGetter(t,n,r);return i=>Array.from(i.entries()).reduce((a,[s,d])=>{let c=o(s,d.inserted);if(c){let l=Ue.applyDelta(c,d,r);t.set(l.id,l),a.set(l.id,l)}return a},new Map)}),P(Ue,"createGetter",(t,n,r)=>(o,i)=>{let a=t.get(o);return a||(a=n.get(o),a&&(r.containsZindexDifference=!0,(i.isDeleted===!1||i.isDeleted!==!0&&a.isDeleted===!1)&&(r.containsVisibleDifference=!0))),a});var eo=Ue;var Ti=class{constructor(){P(this,"subscribers",[])}on(...t){let n=t.flat().filter(r=>typeof r=="function");return this.subscribers.push(...n),()=>this.off(n)}once(...t){let n=t.flat().filter(o=>typeof o=="function");n.push(()=>r());let r=this.on(...n);return r}off(...t){let n=t.flat();this.subscribers=this.subscribers.filter(r=>!n.includes(r))}trigger(...t){for(let n of this.subscribers)n(...t);return this}clear(){this.subscribers=[]}};var J2="__observedAppState",to=e=>{let t={name:e.name,editingGroupId:e.editingGroupId,viewBackgroundColor:e.viewBackgroundColor,selectedElementIds:e.selectedElementIds,selectedGroupIds:e.selectedGroupIds,editingLinearElementId:e.editingLinearElement?.elementId||null,selectedLinearElementId:e.selectedLinearElement?.elementId||null,croppingElementId:e.croppingElementId};return Reflect.defineProperty(t,J2,{value:!0,enumerable:!1}),t},cg=e=>!!Reflect.get(e,J2),Ur={CAPTURE:"capture",UPDATE:"update",NONE:"none"},cs=class{constructor(t,n){this.elementsChange=t;this.appStateChange=n}},K2=class{constructor(){P(this,"onStoreIncrementEmitter",new Ti);P(this,"scheduledActions",new Set);P(this,"_snapshot",Mi.empty());P(this,"shouldCaptureIncrement",()=>{this.scheduleAction(Ur.CAPTURE)});P(this,"shouldUpdateSnapshot",()=>{this.scheduleAction(Ur.UPDATE)});P(this,"scheduleAction",t=>{this.scheduledActions.add(t),this.satisfiesScheduledActionsInvariant()});P(this,"commit",(t,n)=>{try{this.scheduledActions.has(Ur.CAPTURE)?this.captureIncrement(t,n):this.scheduledActions.has(Ur.UPDATE)&&this.updateSnapshot(t,n)}finally{this.satisfiesScheduledActionsInvariant(),this.scheduledActions=new Set}});P(this,"captureIncrement",(t,n)=>{let r=this.snapshot,o=this.snapshot.maybeClone(t,n);if(r!==o){let i=o.meta.didElementsChange?eo.calculate(r.elements,o.elements):eo.empty(),a=o.meta.didAppStateChange?jr.calculate(r.appState,o.appState):jr.empty();(!i.isEmpty()||!a.isEmpty())&&this.onStoreIncrementEmitter.trigger(new cs(i,a)),this.snapshot=o}});P(this,"updateSnapshot",(t,n)=>{let r=this.snapshot.maybeClone(t,n);this.snapshot!==r&&(this.snapshot=r)});P(this,"filterUncomittedElements",(t,n)=>{for(let[r,o]of t.entries()){if(!n.get(r))continue;let a=this.snapshot.elements.get(r);a?a.version<o.version&&n.set(r,a):n.delete(r)}return n});P(this,"clear",()=>{this.snapshot=Mi.empty(),this.scheduledActions=new Set});P(this,"satisfiesScheduledActionsInvariant",()=>{if(!(this.scheduledActions.size>=0&&this.scheduledActions.size<=3)){let t=`There can be at most three store actions scheduled at the same time, but there are "${this.scheduledActions.size}".`;if(console.error(t,this.scheduledActions.values()),L.DEV||L.MODE===je.TEST)throw new Error(t)}})}get snapshot(){return this._snapshot}set snapshot(t){this._snapshot=t}},Mi=class e{constructor(t,n,r={didElementsChange:!1,didAppStateChange:!1,isEmpty:!1}){this.elements=t;this.appState=n;this.meta=r}static empty(){return new e(new Map,to(pn()),{didElementsChange:!1,didAppStateChange:!1,isEmpty:!0})}isEmpty(){return this.meta.isEmpty}maybeClone(t,n){let r=this.maybeCreateElementsSnapshot(t),o=this.maybeCreateAppStateSnapshot(n),i=!1,a=!1;return this.elements!==r&&(i=!0),this.appState!==o&&(a=!0),!i&&!a?this:new e(r,o,{didElementsChange:i,didAppStateChange:a})}maybeCreateAppStateSnapshot(t){if(!t)return this.appState;let n=cg(t)?t:to(t);return this.detectChangedAppState(n)?n:this.appState}detectChangedAppState(t){return!zt(this.appState,t,{selectedElementIds:zt,selectedGroupIds:zt})}maybeCreateElementsSnapshot(t){return t?this.detectChangedElements(t)?this.createElementsSnapshot(t):this.elements:this.elements}detectChangedElements(t){if(this.elements===t)return!1;if(this.elements.size!==t.size)return!0;let n=Array.from(t.keys());for(let r=n.length-1;r>=0;r--){let o=this.elements.get(n[r]),i=t.get(n[r]);if(!o||!i||o.id!==i.id||o.versionNonce!==i.versionNonce)return!0}return!1}createElementsSnapshot(t){let n=new Map;for(let[r,o]of this.elements.entries())t.get(r)?n.set(r,o):n.set(r,Lt(o,{isDeleted:!0}));for(let[r,o]of t.entries()){let i=n.get(r);(!i||i&&i.versionNonce!==o.versionNonce)&&n.set(r,Wr(o))}return n}};var Vt=new Map,lg=/^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|&t=|\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/,Ug=/^(?:http(?:s)?:\/\/)?(?:(?:w){3}\.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/,fg=/^https:\/\/(?:www\.)?figma\.com/,C2=/^https:\/\/gist\.github\.com\/([\w_-]+)\/([\w_-]+)/,pg=/^<script[\s\S]*?\ssrc=["'](https:\/\/gist\.github\.com\/.*?)\.js["']/i,Y2=/(?:https?:\/\/)?(?:(?:w){3}\.)?(?:twitter|x)\.com\/[^/]+\/status\/(\d+)/,ug=/^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:twitter|x)\.com\/[^"']*)/i,mg=/^https:\/\/(?:www\.)?val\.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/,bg=/^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i,V2=/giphy.com\/(?:clips|embed|gifs)\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/,q2=/^(?:http(?:s)?:\/\/)?(?:www\.)?reddit\.com\/r\/([a-zA-Z0-9_]+)\/comments\/([a-zA-Z0-9_]+)\/([a-zA-Z0-9_]+)\/?(?:\?[^#\s]*)?(?:#[^\s]*)?$/,Eg=/^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:www\.)?reddit\.com\/[^"']*)/i,Us=new Set(["youtube.com","youtu.be","vimeo.com","player.vimeo.com","figma.com","link.excalidraw.com","gist.github.com","twitter.com","x.com","*.simplepdf.eu","stackblitz.com","val.town","giphy.com","reddit.com"]),G2=new Set(["youtube.com","youtu.be","vimeo.com","player.vimeo.com","figma.com","twitter.com","x.com","*.simplepdf.eu","stackblitz.com","reddit.com"]),ls=e=>`<html><body>${e}</body></html>`,X2=e=>{if(!e)return null;if(Vt.has(e))return Vt.get(e);let t=e,n=G2.has(fs(e,G2)||""),r="generic",o={w:560,h:840},i=e.match(lg);if(i?.[2]){let c=i[3]?`&start=${i[3]}`:"",l=e.includes("shorts");switch(r="video",i[1]){case"embed/":case"watch?v=":case"shorts/":e=`https://www.youtube.com/embed/${i[2]}?enablejsapi=1${c}`;break;case"playlist?list=":case"embed/videoseries?list=":e=`https://www.youtube.com/embed/videoseries?list=${i[2]}&enablejsapi=1${c}`;break;default:e=`https://www.youtube.com/embed/${i[2]}?enablejsapi=1${c}`;break}return o=l?{w:315,h:560}:{w:560,h:315},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}}let a=e.match(Ug);if(a?.[1]){let c=a?.[1],l=/^\d+$/.test(c)?void 0:new URIError("Invalid embed link format");return r="video",e=`https://player.vimeo.com/video/${c}?api=1`,o={w:560,h:315},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,error:l,sandbox:{allowSameOrigin:n}}}if(e.match(fg))return r="generic",e=`https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(e)}`,o={w:550,h:550},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}};let d=e.match(mg);if(d)return e=d[1]==="embed"?d[0]:d[0].replace("/v","/embed"),Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}};if(Y2.test(e)){let c=e.match(Y2)[1],l=Zn(`https://twitter.com/x/status/${c}`),U={type:"document",srcdoc:p=>ls(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${p}"><a href="${l}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>`),intrinsicSize:{w:480,h:480},sandbox:{allowSameOrigin:n}};return Vt.set(t,U),U}if(q2.test(e)){let[,c,l,U]=e.match(q2),p=Zn(`https://reddit.com/r/${c}/comments/${l}/${U}`),m={type:"document",srcdoc:b=>ls(`<blockquote class="reddit-embed-bq" data-embed-theme="${b}"><a href="${p}"></a><br></blockquote><script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"><\/script>`),intrinsicSize:{w:480,h:480},sandbox:{allowSameOrigin:n}};return Vt.set(t,m),m}if(C2.test(e)){let[,c,l]=e.match(C2),U=Zn(`https://gist.github.com/${c}/${l}`),p={type:"document",srcdoc:()=>ls(`
33
+ `),d.stack,e.map(l=>a(l)),...c),t)throw d}},A2=e=>e.sort((t,n)=>B2(t)&&B2(n)?t.index<n.index?-1:t.index>n.index?1:t.id<n.id?-1:1:1),Qr=(e,t)=>{try{let n=sg(e,t),r=H2(e,n),o=e.map(i=>r.has(i)?{...i,...r.get(i)}:i);ds(o,{includeBoundTextValidation:!1,shouldThrow:!0,ignoreLogs:!0});for(let[i,a]of r)C(i,a,!1)}catch{Hn(e)}return e},Hn=e=>{let t=dg(e),n=H2(e,t);for(let[r,o]of n)C(r,o,!1);return e},sg=(e,t)=>{let n=[],r=0;for(;r<e.length;)if(t.has(e[r].id)){let o=[r-1,r];for(;++r<e.length&&t.has(e[r].id);)o.push(r);o.push(r),n.push(o)}else r++;return n},dg=e=>{let t=[],n,r,o=-1,i=0,a=c=>{let l=e[o]?e[o].index:void 0,U=e[c-1]?.index;return!l&&U||l&&U&&U>l?[U,c-1]:[l,o]},s=c=>{let l=e[i]?e[i].index:void 0;if(l&&c<i)return[l,i];let U=i;for(;++U<e.length;){let p=e[U]?.index;if(!l&&p||l&&p&&p>l)return[p,U]}return[void 0,U]},d=0;for(;d<e.length;){let c=e[d].index;if([n,o]=a(d),[r,i]=s(d),ss(c,n,r))d++;else{let l=[o,d];for(;++d<e.length;){let U=e[d].index,[p,m]=a(d),[b,E]=s(d);if(ss(U,p,b))break;[n,o]=[p,m],[r,i]=[b,E],l.push(d)}l.push(i),t.push(l)}}return t},ss=(e,t,n)=>e?t&&n?t<e&&e<n:!t&&n?e<n:t&&!n?t<e:!!e:!1,H2=(e,t)=>{let n=new Map;for(let r of t){let o=r.shift(),i=r.pop(),a=ag(e[o]?.index,e[i]?.index,r.length);for(let s=0;s<r.length;s++){let d=e[r[s]];n.set(d,{index:a[s]})}}return n},B2=e=>!!e.index;var Le=class e{constructor(t,n){this.deleted=t;this.inserted=n}static create(t,n,r,o){let i=r&&o!=="inserted"?r(t):t,a=r&&o!=="deleted"?r(n):n;return new e(i,a)}static calculate(t,n,r,o){if(t===n)return e.empty();let i={},a={};for(let c of this.distinctKeysIterator("full",t,n))i[c]=t[c],a[c]=n[c];let[s,d]=o?o(i,a):[i,a];return e.create(s,d,r)}static empty(){return new e({},{})}static isEmpty(t){return!Object.keys(t.deleted).length&&!Object.keys(t.inserted).length}static mergeObjects(t,n,r){let o={...t};for(let i of Object.keys(r))delete o[i];return{...o,...n}}static mergeArrays(t,n,r,o){return Object.values(e.mergeObjects(Ft(t??[],o),Ft(n??[],o),Ft(r??[],o)))}static diffObjects(t,n,r,o){if(!(!t[r]&&!n[r])&&(typeof t[r]=="object"||typeof n[r]=="object")){let i=t[r]??{},a=n[r]??{},s=e.getLeftDifferences(i,a).reduce((c,l)=>(c[l]=o(i[l]),c),{}),d=e.getRightDifferences(i,a).reduce((c,l)=>(c[l]=o(a[l]),c),{});Object.keys(s).length||Object.keys(d).length?(Reflect.set(t,r,s),Reflect.set(n,r,d)):(Reflect.deleteProperty(t,r),Reflect.deleteProperty(n,r))}}static diffArrays(t,n,r,o){if(!(!t[r]&&!n[r])&&(Array.isArray(t[r])||Array.isArray(n[r]))){let i=Array.isArray(t[r])?t[r]:[],a=Array.isArray(n[r])?n[r]:[],s=Ft(e.getLeftDifferences(Ft(i,o),Ft(a,o))),d=Ft(e.getRightDifferences(Ft(i,o),Ft(a,o)));if(Object.keys(s).length||Object.keys(d).length){let c=i.filter(U=>s[o?o(U):String(U)]),l=a.filter(U=>d[o?o(U):String(U)]);Reflect.set(t,r,c),Reflect.set(n,r,l)}else Reflect.deleteProperty(t,r),Reflect.deleteProperty(n,r)}}static isLeftDifferent(t,n,r=!1){return!!this.distinctKeysIterator("left",t,n,r).next().value}static isRightDifferent(t,n,r=!1){return!!this.distinctKeysIterator("right",t,n,r).next().value}static getLeftDifferences(t,n,r=!1){return Array.from(this.distinctKeysIterator("left",t,n,r))}static getRightDifferences(t,n,r=!1){return Array.from(this.distinctKeysIterator("right",t,n,r))}static*distinctKeysIterator(t,n,r,o=!1){if(n===r)return;let i=[];t==="left"?i=Object.keys(n):t==="right"?i=Object.keys(r):t==="full"?i=Array.from(new Set([...Object.keys(n),...Object.keys(r)])):$n(t,`Unknown distinctKeysIterator's join param "${t}"`,!0);for(let a of i){let s=n[a],d=r[a];if(s!==d){if(!o&&typeof s=="object"&&typeof d=="object"&&s!==null&&d!==null&&zt(s,d))continue;yield a}}}},jr=class e{constructor(t){this.delta=t}static calculate(t,n){let r=Le.calculate(t,n,void 0,e.postProcess);return new e(r)}static empty(){return new e(Le.create({},{}))}inverse(){let t=Le.create(this.delta.inserted,this.delta.deleted);return new e(t)}applyTo(t,n){try{let{selectedElementIds:r={},selectedGroupIds:o={}}=this.delta.deleted,{selectedElementIds:i={},selectedGroupIds:a={},selectedLinearElementId:s,editingLinearElementId:d,...c}=this.delta.inserted,l=Le.mergeObjects(t.selectedElementIds,i,r),U=Le.mergeObjects(t.selectedGroupIds,a,o),p=s&&n.has(s)?new W(n.get(s)):null,m=d&&n.has(d)?new W(n.get(d)):null,b={...t,...c,selectedElementIds:l,selectedGroupIds:U,selectedLinearElement:typeof s<"u"?p:t.selectedLinearElement,editingLinearElement:typeof d<"u"?m:t.editingLinearElement},E=this.filterInvisibleChanges(t,b,n);return[b,E]}catch(r){if(console.error("Couldn't apply appstate change",r),L.DEV||L.MODE===je.TEST)throw r;return[t,!1]}}isEmpty(){return Le.isEmpty(this.delta)}static postProcess(t,n){try{Le.diffObjects(t,n,"selectedElementIds",r=>!0),Le.diffObjects(t,n,"selectedGroupIds",r=>r??!1)}catch(r){if(console.error("Couldn't postprocess appstate change deltas."),L.DEV||L.MODE===je.TEST)throw r}finally{return[t,n]}}filterInvisibleChanges(t,n,r){let o=to(t),i=to(n),a=Le.isRightDifferent(e.stripElementsProps(o),e.stripElementsProps(i)),s=Le.isRightDifferent(e.stripStandaloneProps(o),e.stripStandaloneProps(i));if(!a&&!s)return!1;let d={value:a};if(s){let c=Le.getRightDifferences(e.stripStandaloneProps(o),e.stripStandaloneProps(i)),l=new Set;(c.includes("editingGroupId")||c.includes("selectedGroupIds"))&&(l=g2(r));for(let U of c)switch(U){case"selectedElementIds":n[U]=e.filterSelectedElements(n[U],r,d);break;case"selectedGroupIds":n[U]=e.filterSelectedGroups(n[U],l,d);break;case"croppingElementId":{let E=n[U],g=E&&r.get(E);g&&!g.isDeleted?d.value=!0:n[U]=null;break}case"editingGroupId":let p=n[U];p?l.has(p)?d.value=!0:n[U]=null:d.value=!0;break;case"selectedLinearElementId":case"editingLinearElementId":let m=e.convertToAppStateKey(U),b=n[m];if(!b)d.value=!0;else{let E=r.get(b.elementId);E&&!E.isDeleted?d.value=!0:n[m]=null}break;default:$n(U,`Unknown ObservedElementsAppState's key "${U}"`,!0)}}return d.value}static convertToAppStateKey(t){switch(t){case"selectedLinearElementId":return"selectedLinearElement";case"editingLinearElementId":return"editingLinearElement"}}static filterSelectedElements(t,n,r){let o=Object.keys(t);if(!o.length)return r.value=!0,t;let i={...t};for(let a of o){let s=n.get(a);s&&!s.isDeleted?r.value=!0:delete i[a]}return i}static filterSelectedGroups(t,n,r){if(!Object.keys(t).length)return r.value=!0,t;let i={...t};for(let a of Object.keys(i))n.has(a)?r.value=!0:delete i[a];return i}static stripElementsProps(t){let{editingGroupId:n,selectedGroupIds:r,selectedElementIds:o,editingLinearElementId:i,selectedLinearElementId:a,croppingElementId:s,...d}=t;return d}static stripStandaloneProps(t){let{name:n,viewBackgroundColor:r,...o}=t;return o}},Ue=class Ue{constructor(t,n,r){this.added=t;this.removed=n;this.updated=r}static create(t,n,r,o={shouldRedistribute:!1}){let i;if(o.shouldRedistribute){let a=new Map,s=new Map,d=new Map,c=[...t,...n,...r];for(let[l,U]of c)this.satisfiesAddition(U)?a.set(l,U):this.satisfiesRemoval(U)?s.set(l,U):d.set(l,U);i=new Ue(a,s,d)}else i=new Ue(t,n,r);return(L.DEV||L.MODE===je.TEST)&&(Ue.validate(i,"added",this.satisfiesAddition),Ue.validate(i,"removed",this.satisfiesRemoval),Ue.validate(i,"updated",this.satisfiesUpdate)),i}static validate(t,n,r){for(let[o,i]of t[n].entries())if(!r(i))throw console.error(`Broken invariant for "${n}" delta, element "${o}", delta:`,i),new Error(`ElementsChange invariant broken for element "${o}".`)}static calculate(t,n){if(t===n)return Ue.empty();let r=new Map,o=new Map,i=new Map;for(let a of t.values())if(!n.get(a.id)){let d={...a,isDeleted:!1},c={isDeleted:!0},l=Le.create(d,c,Ue.stripIrrelevantProps);o.set(a.id,l)}for(let a of n.values()){let s=t.get(a.id);if(!s){let d={isDeleted:!0},c={...a,isDeleted:!1},l=Le.create(d,c,Ue.stripIrrelevantProps);r.set(a.id,l);continue}if(s.versionNonce!==a.versionNonce){let d=Le.calculate(s,a,Ue.stripIrrelevantProps,Ue.postProcess);if(typeof s.isDeleted=="boolean"&&typeof a.isDeleted=="boolean"&&s.isDeleted!==a.isDeleted){s.isDeleted&&!a.isDeleted?r.set(a.id,d):o.set(a.id,d);continue}Le.isEmpty(d)||i.set(a.id,d)}}return Ue.create(r,o,i)}static empty(){return Ue.create(new Map,new Map,new Map)}inverse(){let t=i=>{let a=new Map;for(let[s,d]of i.entries())a.set(s,Le.create(d.inserted,d.deleted));return a},n=t(this.added),r=t(this.removed),o=t(this.updated);return Ue.create(r,n,o)}isEmpty(){return this.added.size===0&&this.removed.size===0&&this.updated.size===0}applyLatestChanges(t){let n=s=>d=>{let c={};for(let l of Object.keys(d))switch(l){case"boundElements":c[l]=d[l];break;default:c[l]=s[l]}return c},r=s=>{let d=new Map;for(let[c,l]of s.entries()){let U=t.get(c);if(U){let p=Le.create(l.deleted,l.inserted,n(U),"inserted");d.set(c,p)}else d.set(c,l)}return d},o=r(this.added),i=r(this.removed),a=r(this.updated);return Ue.create(o,i,a,{shouldRedistribute:!0})}applyTo(t,n){let r=Ve(new Map(t)),o,i={containsVisibleDifference:!1,containsZindexDifference:!1};try{let a=Ue.createApplier(r,n,i),s=a(this.added),d=a(this.removed),c=a(this.updated),l=this.resolveConflicts(t,r);o=new Map([...s,...d,...c,...l])}catch(a){if(console.error("Couldn't apply elements change",a),L.DEV||L.MODE===je.TEST)throw a;return[t,!0]}try{Ue.redrawTextBoundingBoxes(r,o),r=Ue.reorderElements(r,o,i),Ue.redrawBoundArrows(r,o)}catch(a){if(console.error("Couldn't mutate elements after applying elements change",a),L.DEV||L.MODE===je.TEST)throw a}finally{return[r,i.containsVisibleDifference]}}static applyDelta(t,n,r={containsVisibleDifference:!0,containsZindexDifference:!0}){let{boundElements:o,...i}=n.inserted;if(n.deleted.boundElements?.length||n.inserted.boundElements?.length){let a=Le.mergeArrays(t.boundElements,n.inserted.boundElements,n.deleted.boundElements,s=>s.id);Object.assign(i,{boundElements:a})}if(Ke(t)){let a=n;(a.deleted.crop||a.inserted.crop)&&Object.assign(i,{crop:a.inserted.crop??null})}if(!r.containsVisibleDifference){let{index:a,...s}=i,d=Ue.checkForVisibleDifference(t,s);r.containsVisibleDifference=d}return r.containsZindexDifference||(r.containsZindexDifference=n.deleted.index!==n.inserted.index),Lt(t,i)}static checkForVisibleDifference(t,n){return t.isDeleted&&n.isDeleted!==!1?!1:t.isDeleted&&n.isDeleted===!1||t.isDeleted===!1&&n.isDeleted?!0:Le.isRightDifferent(t,n)}resolveConflicts(t,n){let r=new Map,o=(c,l)=>{let U=n.get(c.id);if(!U)return;let p;t.get(c.id)===U?p=Lt(U,l):p=C(U,l),r.set(p.id,p),n.set(p.id,p)};for(let[c]of this.removed)Ue.unbindAffected(t,n,c,o);for(let[c]of this.added)Ue.rebindAffected(t,n,c,o);for(let[c]of Array.from(this.updated).filter(([l,U])=>Object.keys({...U.deleted,...U.inserted}).find(p=>p2.has(p)))){let l=n.get(c);!l||l.isDeleted||Ue.rebindAffected(t,n,c,o)}let i=new Map(Array.from(t).filter(([c])=>r.has(c))),{added:a,removed:s,updated:d}=Ue.calculate(i,r);for(let[c,l]of a)this.added.set(c,l);for(let[c,l]of s)this.removed.set(c,l);for(let[c,l]of d)this.updated.set(c,l);return r}static unbindAffected(t,n,r,o){let i=()=>t.get(r),a=()=>n.get(r);nn.unbindAffected(n,i(),o),nn.unbindAffected(n,a(),o),rn.unbindAffected(n,i(),o),rn.unbindAffected(n,a(),o)}static rebindAffected(t,n,r,o){let i=()=>t.get(r),a=()=>n.get(r);nn.unbindAffected(n,i(),o),nn.rebindAffected(n,a(),o),rn.unbindAffected(n,i(),(s,d)=>{G(s)&&o(s,d)}),rn.rebindAffected(n,a(),o)}static redrawTextBoundingBoxes(t,n){let r=new Map;for(let o of n.values()){if(Fe(o)){let{containerId:i}=o,a=i?t.get(i):void 0;a&&r.set(a.id,{container:a,boundText:o})}if(En(o)){let i=Kt(o),a=i?t.get(i):void 0;a&&r.set(o.id,{container:o,boundText:a})}}for(let{container:o,boundText:i}of r.values())o.isDeleted||i.isDeleted||is(i,o,t,!1)}static redrawBoundArrows(t,n){for(let r of n.values())!r.isDeleted&&bt(r)&&Ht(r,t,{changedElements:n})}static reorderElements(t,n,r){if(!r.containsZindexDifference)return t;let o=Array.from(t.values()),i=A2([...o]),a=Le.getRightDifferences(o,i,!0).reduce((s,d)=>{let c=o[Number(d)];return c&&n.has(c.id)&&s.set(c.id,c),s},new Map);return!r.containsVisibleDifference&&a.size&&(r.containsVisibleDifference=!0),ee(Qr(i,a))}static postProcess(t,n){try{Le.diffArrays(t,n,"boundElements",r=>r.id)}catch(r){if(console.error("Couldn't postprocess elements change deltas."),L.DEV||L.MODE===je.TEST)throw r}finally{return[t,n]}}static stripIrrelevantProps(t){let{id:n,updated:r,version:o,versionNonce:i,seed:a,...s}=t;return s}};P(Ue,"satisfiesAddition",({deleted:t,inserted:n})=>t.isDeleted===!0&&!n.isDeleted),P(Ue,"satisfiesRemoval",({deleted:t,inserted:n})=>!t.isDeleted&&n.isDeleted===!0),P(Ue,"satisfiesUpdate",({deleted:t,inserted:n})=>!!t.isDeleted==!!n.isDeleted),P(Ue,"createApplier",(t,n,r)=>{let o=Ue.createGetter(t,n,r);return i=>Array.from(i.entries()).reduce((a,[s,d])=>{let c=o(s,d.inserted);if(c){let l=Ue.applyDelta(c,d,r);t.set(l.id,l),a.set(l.id,l)}return a},new Map)}),P(Ue,"createGetter",(t,n,r)=>(o,i)=>{let a=t.get(o);return a||(a=n.get(o),a&&(r.containsZindexDifference=!0,(i.isDeleted===!1||i.isDeleted!==!0&&a.isDeleted===!1)&&(r.containsVisibleDifference=!0))),a});var eo=Ue;var Ti=class{constructor(){P(this,"subscribers",[])}on(...t){let n=t.flat().filter(r=>typeof r=="function");return this.subscribers.push(...n),()=>this.off(n)}once(...t){let n=t.flat().filter(o=>typeof o=="function");n.push(()=>r());let r=this.on(...n);return r}off(...t){let n=t.flat();this.subscribers=this.subscribers.filter(r=>!n.includes(r))}trigger(...t){for(let n of this.subscribers)n(...t);return this}clear(){this.subscribers=[]}};var J2="__observedAppState",to=e=>{let t={name:e.name,editingGroupId:e.editingGroupId,viewBackgroundColor:e.viewBackgroundColor,selectedElementIds:e.selectedElementIds,selectedGroupIds:e.selectedGroupIds,editingLinearElementId:e.editingLinearElement?.elementId||null,selectedLinearElementId:e.selectedLinearElement?.elementId||null,croppingElementId:e.croppingElementId};return Reflect.defineProperty(t,J2,{value:!0,enumerable:!1}),t},cg=e=>!!Reflect.get(e,J2),Ur={IMMEDIATELY:"IMMEDIATELY",NEVER:"NEVER",EVENTUALLY:"EVENTUALLY"},cs=class{constructor(t,n){this.elementsChange=t;this.appStateChange=n}},K2=class{constructor(){P(this,"onStoreIncrementEmitter",new Ti);P(this,"scheduledActions",new Set);P(this,"_snapshot",Mi.empty());P(this,"shouldCaptureIncrement",()=>{this.scheduleAction(Ur.IMMEDIATELY)});P(this,"shouldUpdateSnapshot",()=>{this.scheduleAction(Ur.NEVER)});P(this,"scheduleAction",t=>{this.scheduledActions.add(t),this.satisfiesScheduledActionsInvariant()});P(this,"commit",(t,n)=>{try{this.scheduledActions.has(Ur.IMMEDIATELY)?this.captureIncrement(t,n):this.scheduledActions.has(Ur.NEVER)&&this.updateSnapshot(t,n)}finally{this.satisfiesScheduledActionsInvariant(),this.scheduledActions=new Set}});P(this,"captureIncrement",(t,n)=>{let r=this.snapshot,o=this.snapshot.maybeClone(t,n);if(r!==o){let i=o.meta.didElementsChange?eo.calculate(r.elements,o.elements):eo.empty(),a=o.meta.didAppStateChange?jr.calculate(r.appState,o.appState):jr.empty();(!i.isEmpty()||!a.isEmpty())&&this.onStoreIncrementEmitter.trigger(new cs(i,a)),this.snapshot=o}});P(this,"updateSnapshot",(t,n)=>{let r=this.snapshot.maybeClone(t,n);this.snapshot!==r&&(this.snapshot=r)});P(this,"filterUncomittedElements",(t,n)=>{for(let[r,o]of t.entries()){if(!n.get(r))continue;let a=this.snapshot.elements.get(r);a?a.version<o.version&&n.set(r,a):n.delete(r)}return n});P(this,"clear",()=>{this.snapshot=Mi.empty(),this.scheduledActions=new Set});P(this,"satisfiesScheduledActionsInvariant",()=>{if(!(this.scheduledActions.size>=0&&this.scheduledActions.size<=3)){let t=`There can be at most three store actions scheduled at the same time, but there are "${this.scheduledActions.size}".`;if(console.error(t,this.scheduledActions.values()),L.DEV||L.MODE===je.TEST)throw new Error(t)}})}get snapshot(){return this._snapshot}set snapshot(t){this._snapshot=t}},Mi=class e{constructor(t,n,r={didElementsChange:!1,didAppStateChange:!1,isEmpty:!1}){this.elements=t;this.appState=n;this.meta=r}static empty(){return new e(new Map,to(pn()),{didElementsChange:!1,didAppStateChange:!1,isEmpty:!0})}isEmpty(){return this.meta.isEmpty}maybeClone(t,n){let r=this.maybeCreateElementsSnapshot(t),o=this.maybeCreateAppStateSnapshot(n),i=!1,a=!1;return this.elements!==r&&(i=!0),this.appState!==o&&(a=!0),!i&&!a?this:new e(r,o,{didElementsChange:i,didAppStateChange:a})}maybeCreateAppStateSnapshot(t){if(!t)return this.appState;let n=cg(t)?t:to(t);return this.detectChangedAppState(n)?n:this.appState}detectChangedAppState(t){return!zt(this.appState,t,{selectedElementIds:zt,selectedGroupIds:zt})}maybeCreateElementsSnapshot(t){return t?this.detectChangedElements(t)?this.createElementsSnapshot(t):this.elements:this.elements}detectChangedElements(t){if(this.elements===t)return!1;if(this.elements.size!==t.size)return!0;let n=Array.from(t.keys());for(let r=n.length-1;r>=0;r--){let o=this.elements.get(n[r]),i=t.get(n[r]);if(!o||!i||o.id!==i.id||o.versionNonce!==i.versionNonce)return!0}return!1}createElementsSnapshot(t){let n=new Map;for(let[r,o]of this.elements.entries())t.get(r)?n.set(r,o):n.set(r,Lt(o,{isDeleted:!0}));for(let[r,o]of t.entries()){let i=n.get(r);(!i||i&&i.versionNonce!==o.versionNonce)&&n.set(r,Wr(o))}return n}};var Vt=new Map,lg=/^(?:http(?:s)?:\/\/)?(?:www\.)?youtu(?:be\.com|\.be)\/(embed\/|watch\?v=|shorts\/|playlist\?list=|embed\/videoseries\?list=)?([a-zA-Z0-9_-]+)(?:\?t=|&t=|\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\s]*$/,Ug=/^(?:http(?:s)?:\/\/)?(?:(?:w){3}\.)?(?:player\.)?vimeo\.com\/(?:video\/)?([^?\s]+)(?:\?.*)?$/,fg=/^https:\/\/(?:www\.)?figma\.com/,C2=/^https:\/\/gist\.github\.com\/([\w_-]+)\/([\w_-]+)/,pg=/^<script[\s\S]*?\ssrc=["'](https:\/\/gist\.github\.com\/.*?)\.js["']/i,Y2=/(?:https?:\/\/)?(?:(?:w){3}\.)?(?:twitter|x)\.com\/[^/]+\/status\/(\d+)/,ug=/^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:twitter|x)\.com\/[^"']*)/i,mg=/^https:\/\/(?:www\.)?val\.town\/(v|embed)\/[a-zA-Z_$][0-9a-zA-Z_$]+\.[a-zA-Z_$][0-9a-zA-Z_$]+/,bg=/^<(?:iframe|blockquote)[\s\S]*?\s(?:src|href)=["']([^"']*)["'][\s\S]*?>$/i,V2=/giphy.com\/(?:clips|embed|gifs)\/[a-zA-Z0-9]*?-?([a-zA-Z0-9]+)(?:[^a-zA-Z0-9]|$)/,q2=/^(?:http(?:s)?:\/\/)?(?:www\.)?reddit\.com\/r\/([a-zA-Z0-9_]+)\/comments\/([a-zA-Z0-9_]+)\/([a-zA-Z0-9_]+)\/?(?:\?[^#\s]*)?(?:#[^\s]*)?$/,Eg=/^<blockquote[\s\S]*?\shref=["'](https?:\/\/(?:www\.)?reddit\.com\/[^"']*)/i,Us=new Set(["youtube.com","youtu.be","vimeo.com","player.vimeo.com","figma.com","link.excalidraw.com","gist.github.com","twitter.com","x.com","*.simplepdf.eu","stackblitz.com","val.town","giphy.com","reddit.com"]),G2=new Set(["youtube.com","youtu.be","vimeo.com","player.vimeo.com","figma.com","twitter.com","x.com","*.simplepdf.eu","stackblitz.com","reddit.com"]),ls=e=>`<html><body>${e}</body></html>`,X2=e=>{if(!e)return null;if(Vt.has(e))return Vt.get(e);let t=e,n=G2.has(fs(e,G2)||""),r="generic",o={w:560,h:840},i=e.match(lg);if(i?.[2]){let c=i[3]?`&start=${i[3]}`:"",l=e.includes("shorts");switch(r="video",i[1]){case"embed/":case"watch?v=":case"shorts/":e=`https://www.youtube.com/embed/${i[2]}?enablejsapi=1${c}`;break;case"playlist?list=":case"embed/videoseries?list=":e=`https://www.youtube.com/embed/videoseries?list=${i[2]}&enablejsapi=1${c}`;break;default:e=`https://www.youtube.com/embed/${i[2]}?enablejsapi=1${c}`;break}return o=l?{w:315,h:560}:{w:560,h:315},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}}let a=e.match(Ug);if(a?.[1]){let c=a?.[1],l=/^\d+$/.test(c)?void 0:new URIError("Invalid embed link format");return r="video",e=`https://player.vimeo.com/video/${c}?api=1`,o={w:560,h:315},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,error:l,sandbox:{allowSameOrigin:n}}}if(e.match(fg))return r="generic",e=`https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(e)}`,o={w:550,h:550},Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}};let d=e.match(mg);if(d)return e=d[1]==="embed"?d[0]:d[0].replace("/v","/embed"),Vt.set(t,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}};if(Y2.test(e)){let c=e.match(Y2)[1],l=Zn(`https://twitter.com/x/status/${c}`),U={type:"document",srcdoc:p=>ls(`<blockquote class="twitter-tweet" data-dnt="true" data-theme="${p}"><a href="${l}"></a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"><\/script>`),intrinsicSize:{w:480,h:480},sandbox:{allowSameOrigin:n}};return Vt.set(t,U),U}if(q2.test(e)){let[,c,l,U]=e.match(q2),p=Zn(`https://reddit.com/r/${c}/comments/${l}/${U}`),m={type:"document",srcdoc:b=>ls(`<blockquote class="reddit-embed-bq" data-embed-theme="${b}"><a href="${p}"></a><br></blockquote><script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"><\/script>`),intrinsicSize:{w:480,h:480},sandbox:{allowSameOrigin:n}};return Vt.set(t,m),m}if(C2.test(e)){let[,c,l]=e.match(C2),U=Zn(`https://gist.github.com/${c}/${l}`),p={type:"document",srcdoc:()=>ls(`
34
34
  <script src="${U}.js"><\/script>
35
35
  <style type="text/css">
36
36
  * { margin: 0px; }
37
37
  table, .gist { height: 100%; }
38
38
  .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }
39
39
  </style>
40
- `),intrinsicSize:{w:550,h:720},sandbox:{allowSameOrigin:n}};return Vt.set(e,p),p}return Vt.set(e,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}},Li=e=>{let t;Bo(e)?t="IFrame element":t=!e.link||e?.link===""?"Empty Web-Embed":e.link;let n=Math.max(Math.min(e.width/2,e.width/t.length),e.width/30),r=ye.Helvetica,o=Ee({fontSize:n,fontFamily:r});return Yt({x:e.x+e.width/2,y:e.y+e.height/2,strokeColor:e.strokeColor!=="transparent"?e.strokeColor:"black",backgroundColor:"transparent",fontFamily:r,fontSize:n,text:jt(t,o,e.width-20),textAlign:"center",verticalAlign:Gt.MIDDLE,angle:e.angle??0})},J_=v2({name:"setEmbeddableAsActiveTool",trackEvent:{category:"toolbar"},target:"Tool",label:"toolBar.embeddable",perform:(e,t,n,r)=>{let o=Fr(t,{type:"embeddable"});return F2(r.canvas,{...t,activeTool:o}),{elements:e,appState:{...t,activeTool:Fr(t,{type:"embeddable"})},storeAction:Ur.NONE}}}),fs=(e,t)=>{try{let{hostname:n}=new URL(e),r=n.replace(/^www\./,"");if(t instanceof Set){if(Us.has(r))return r;let i=r.replace(/^([^.]+)/,"*");return Us.has(i)?i:null}let o=t.replace(/^www\./,"");if(r===o)return o}catch{}return null},C_=e=>{let t=e.match(ug);if(t&&t.length===2)return t[1];let n=e.match(Eg);if(n&&n.length===2)return n[1];let r=e.match(pg);if(r&&r.length===2)return r[1];if(V2.test(e))return`https://giphy.com/embed/${V2.exec(e)[1]}`;let o=e.match(bg);return o&&o.length===2?o[1]:e},Y_=(e,t)=>{if(!e)return!1;if(t!=null)if(typeof t=="function"){let n=t(e);if(typeof n=="boolean")return n}else{if(typeof t=="boolean")return t;if(t instanceof RegExp)return t.test(e);if(Array.isArray(t)){for(let n of t)if(n instanceof RegExp){if(e.match(n))return!0}else if(fs(e,n))return!0;return!1}}return!!fs(e,Us)};var no=(e,t,n)=>{if(typeof n>"u")return e.draw(t);let r={sets:t.sets,shape:t.shape,options:{...t.options,fixedDecimalPlaceDigits:n}};return e.draw(r)},ro=(e,t,n,r,o)=>{if(!r.enabled||!r.clip)return null;let i=We(e,o);if(i){let a=t.ownerDocument.createElementNS(ne,"g");return a.setAttributeNS(ne,"clip-path",`url(#${i.id})`),n.forEach(s=>a.appendChild(s)),a}return null},Di=(e,t,n,r,o,i,a,s)=>{let d={x:i,y:a},[c,l,U,p]=Y(e,t),m=(U-c)/2-(e.x-c),b=(p-l)/2-(e.y-l);if(G(e)){let h=Ye(e,t);if(j(h)){let[I,w,v,M]=Y(h,t),S=W.getBoundTextElementPosition(h,e,t);m=(v-I)/2-(S.x-I),b=(M-w)/2-(S.y-w),i=i+S.x-e.x,a=a+S.y-e.y}}let E=180*e.angle/Math.PI,g=r;if(e.link){let h=r.ownerDocument.createElementNS(ne,"a");h.setAttribute("href",sn(e.link)),g.appendChild(h),g=h}let y=(h,I)=>{Ot()&&h.setAttribute("data-id",I.id),g.appendChild(h)},x=(We(e,t)?.opacity??100)*e.opacity/1e4;switch(e.type){case"selection":throw new Error("Selection rendering is not supported for SVG");case"rectangle":case"diamond":case"ellipse":{let h=he.generateElementShape(e,null),I=no(n,h,Xn);x!==1&&(I.setAttribute("stroke-opacity",`${x}`),I.setAttribute("fill-opacity",`${x}`)),I.setAttribute("stroke-linecap","round"),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);let w=ro(e,g,[I],s.frameRendering,t);y(w||I,e);break}case"iframe":case"embeddable":{let h=he.generateElementShape(e,s),I=no(n,h,Xn),w=e.opacity/100;w!==1&&(I.setAttribute("stroke-opacity",`${w}`),I.setAttribute("fill-opacity",`${w}`)),I.setAttribute("stroke-linecap","round"),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),y(I,e);let v=Li(e);Di(v,t,n,g,o,v.x+d.x-e.x,v.y+d.y-e.y,s);let M=no(n,h,Xn);for(M.setAttribute("stroke-linecap","round"),M.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);M.firstChild;)M.removeChild(M.firstChild);let S=rt(Math.min(e.width,e.height),e),F=X2(D2(e.link||""));if(s.renderEmbeddables===!1||F?.type==="document"){let $=r.ownerDocument.createElementNS(ne,"a");$.setAttribute("href",sn(e.link||"")),$.setAttribute("target","_blank"),$.setAttribute("rel","noopener noreferrer"),$.style.borderRadius=`${S}px`,M.appendChild($)}else{let $=r.ownerDocument.createElementNS(ne,"foreignObject");$.style.width=`${e.width}px`,$.style.height=`${e.height}px`,$.style.border="none";let O=$.ownerDocument.createElementNS(ne,"div");O.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),O.style.width="100%",O.style.height="100%";let A=O.ownerDocument.createElement("iframe");A.src=F?.link??"",A.style.width="100%",A.style.height="100%",A.style.border="none",A.style.borderRadius=`${S}px`,A.style.top="0",A.style.left="0",A.allowFullscreen=!0,O.appendChild(A),$.appendChild(O),M.appendChild($)}y(M,e);break}case"line":case"arrow":{let h=re(e,t),I=r.ownerDocument.createElementNS(ne,"mask");if(h){I.setAttribute("id",`mask-${e.id}`);let S=r.ownerDocument.createElementNS(ne,"rect");i=i||0,a=a||0,S.setAttribute("x","0"),S.setAttribute("y","0"),S.setAttribute("fill","#fff"),S.setAttribute("width",`${e.width+100+i}`),S.setAttribute("height",`${e.height+100+a}`),I.appendChild(S);let F=r.ownerDocument.createElementNS(ne,"rect"),$=W.getBoundTextElementPosition(e,h,t),O=i+$.x-e.x,A=a+$.y-e.y;F.setAttribute("x",O.toString()),F.setAttribute("y",A.toString()),F.setAttribute("fill","#000"),F.setAttribute("width",`${h.width}`),F.setAttribute("height",`${h.height}`),F.setAttribute("opacity","1"),I.appendChild(F)}let w=r.ownerDocument.createElementNS(ne,"g");h&&w.setAttribute("mask",`url(#mask-${e.id})`),w.setAttribute("stroke-linecap","round"),he.generateElementShape(e,s).forEach(S=>{let F=no(n,S,Xn);x!==1&&(F.setAttribute("stroke-opacity",`${x}`),F.setAttribute("fill-opacity",`${x}`)),F.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),e.type==="line"&&Bt(e.points)&&e.backgroundColor!=="transparent"&&F.setAttribute("fill-rule","evenodd"),w.appendChild(F)});let M=ro(e,g,[w,I],s.frameRendering,t);M?(y(M,e),g.appendChild(M)):(y(w,e),g.append(I));break}case"freedraw":{let h=he.generateElementShape(e,s),I=h?no(n,h,Xn):r.ownerDocument.createElementNS(ne,"g");x!==1&&(I.setAttribute("stroke-opacity",`${x}`),I.setAttribute("fill-opacity",`${x}`)),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),I.setAttribute("stroke","none");let w=r.ownerDocument.createElementNS(ne,"path");w.setAttribute("fill",e.strokeColor),w.setAttribute("d",_a(e)),I.appendChild(w);let v=ro(e,g,[I],s.frameRendering,t);y(v||I,e);break}case"image":{let h=Math.round(e.width),I=Math.round(e.height),w=_t(e)&&o[e.fileId];if(w){let{reuseImages:v=!0}=s,M=`image-${w.id}`,S=e.width,F=e.height;e.crop&&({width:S,height:F}=nr(e),M=`image-crop-${w.id}-${Z2(`${S}x${F}`)}`),v||(M=`image-${e.id}`);let $=r.querySelector(`#${M}`);if(!$){$=r.ownerDocument.createElementNS(ne,"symbol"),$.id=M;let Q=r.ownerDocument.createElementNS(ne,"image");Q.setAttribute("href",w.dataURL),Q.setAttribute("preserveAspectRatio","none"),e.crop||!v?(Q.setAttribute("width",`${S}`),Q.setAttribute("height",`${F}`)):(Q.setAttribute("width","100%"),Q.setAttribute("height","100%")),$.appendChild(Q),(g.querySelector("defs")||g).prepend($)}let O=r.ownerDocument.createElementNS(ne,"use");O.setAttribute("href",`#${M}`),s.exportWithDarkMode&&w.mimeType!==K.svg&&O.setAttribute("filter",Fa);let A=0,Z=0;if(e.crop){let{width:Q,height:fe}=nr(e);A=e.crop.x/(e.crop.naturalWidth/Q),Z=e.crop.y/(e.crop.naturalHeight/fe)}let we=m+A,X=b+Z;O.setAttribute("width",`${h+A}`),O.setAttribute("height",`${I+Z}`),O.setAttribute("opacity",`${x}`),(e.scale[0]!==1||e.scale[1]!==1)&&O.setAttribute("transform",`translate(${we} ${X}) scale(${e.scale[0]} ${e.scale[1]}) translate(${-we} ${-X})`);let ce=r.ownerDocument.createElementNS(ne,"g");if(e.crop){let Q=r.ownerDocument.createElementNS(ne,"mask");Q.setAttribute("id",`mask-image-crop-${e.id}`),Q.setAttribute("fill","#fff");let fe=r.ownerDocument.createElementNS(ne,"rect");fe.setAttribute("x",`${A}`),fe.setAttribute("y",`${Z}`),fe.setAttribute("width",`${h}`),fe.setAttribute("height",`${I}`),Q.appendChild(fe),g.appendChild(Q),ce.setAttribute("mask",`url(#${Q.id})`)}if(ce.appendChild(O),ce.setAttribute("transform",`translate(${i-A} ${a-Z}) rotate(${E} ${we} ${X})`),e.roundness){let Q=r.ownerDocument.createElementNS(ne,"clipPath");Q.id=`image-clipPath-${e.id}`;let fe=r.ownerDocument.createElementNS(ne,"rect"),St=rt(Math.min(e.width,e.height),e);fe.setAttribute("width",`${e.width}`),fe.setAttribute("height",`${e.height}`),fe.setAttribute("rx",`${St}`),fe.setAttribute("ry",`${St}`),Q.appendChild(fe),y(Q,e),ce.setAttributeNS(ne,"clip-path",`url(#${Q.id})`)}let J=ro(e,g,[ce],s.frameRendering,t);y(J||ce,e)}break}case"frame":case"magicframe":{if(s.frameRendering.enabled&&s.frameRendering.outline){let h=document.createElementNS(ne,"rect");h.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),h.setAttribute("width",`${e.width}px`),h.setAttribute("height",`${e.height}px`),h.setAttribute("rx",Ne.radius.toString()),h.setAttribute("ry",Ne.radius.toString()),h.setAttribute("fill","none"),h.setAttribute("stroke",Ne.strokeColor),h.setAttribute("stroke-width",Ne.strokeWidth.toString()),y(h,e)}break}default:if(G(e)){let h=r.ownerDocument.createElementNS(ne,"g");x!==1&&(h.setAttribute("stroke-opacity",`${x}`),h.setAttribute("fill-opacity",`${x}`)),h.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);let I=e.text.replace(/\r\n?/g,`
40
+ `),intrinsicSize:{w:550,h:720},sandbox:{allowSameOrigin:n}};return Vt.set(e,p),p}return Vt.set(e,{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}),{link:e,intrinsicSize:o,type:r,sandbox:{allowSameOrigin:n}}},Li=e=>{let t;Bo(e)?t="IFrame element":t=!e.link||e?.link===""?"Empty Web-Embed":e.link;let n=Math.max(Math.min(e.width/2,e.width/t.length),e.width/30),r=ye.Helvetica,o=Ee({fontSize:n,fontFamily:r});return Yt({x:e.x+e.width/2,y:e.y+e.height/2,strokeColor:e.strokeColor!=="transparent"?e.strokeColor:"black",backgroundColor:"transparent",fontFamily:r,fontSize:n,text:jt(t,o,e.width-20),textAlign:"center",verticalAlign:Gt.MIDDLE,angle:e.angle??0})},J_=v2({name:"setEmbeddableAsActiveTool",trackEvent:{category:"toolbar"},target:"Tool",label:"toolBar.embeddable",perform:(e,t,n,r)=>{let o=Fr(t,{type:"embeddable"});return F2(r.canvas,{...t,activeTool:o}),{elements:e,appState:{...t,activeTool:Fr(t,{type:"embeddable"})},captureUpdate:Ur.EVENTUALLY}}}),fs=(e,t)=>{try{let{hostname:n}=new URL(e),r=n.replace(/^www\./,"");if(t instanceof Set){if(Us.has(r))return r;let i=r.replace(/^([^.]+)/,"*");return Us.has(i)?i:null}let o=t.replace(/^www\./,"");if(r===o)return o}catch{}return null},C_=e=>{let t=e.match(ug);if(t&&t.length===2)return t[1];let n=e.match(Eg);if(n&&n.length===2)return n[1];let r=e.match(pg);if(r&&r.length===2)return r[1];if(V2.test(e))return`https://giphy.com/embed/${V2.exec(e)[1]}`;let o=e.match(bg);return o&&o.length===2?o[1]:e},Y_=(e,t)=>{if(!e)return!1;if(t!=null)if(typeof t=="function"){let n=t(e);if(typeof n=="boolean")return n}else{if(typeof t=="boolean")return t;if(t instanceof RegExp)return t.test(e);if(Array.isArray(t)){for(let n of t)if(n instanceof RegExp){if(e.match(n))return!0}else if(fs(e,n))return!0;return!1}}return!!fs(e,Us)};var no=(e,t,n)=>{if(typeof n>"u")return e.draw(t);let r={sets:t.sets,shape:t.shape,options:{...t.options,fixedDecimalPlaceDigits:n}};return e.draw(r)},ro=(e,t,n,r,o)=>{if(!r.enabled||!r.clip)return null;let i=We(e,o);if(i){let a=t.ownerDocument.createElementNS(ne,"g");return a.setAttributeNS(ne,"clip-path",`url(#${i.id})`),n.forEach(s=>a.appendChild(s)),a}return null},Di=(e,t,n,r,o,i,a,s)=>{let d={x:i,y:a},[c,l,U,p]=Y(e,t),m=(U-c)/2-(e.x-c),b=(p-l)/2-(e.y-l);if(G(e)){let h=Ye(e,t);if(j(h)){let[I,w,v,M]=Y(h,t),S=W.getBoundTextElementPosition(h,e,t);m=(v-I)/2-(S.x-I),b=(M-w)/2-(S.y-w),i=i+S.x-e.x,a=a+S.y-e.y}}let E=180*e.angle/Math.PI,g=r;if(e.link){let h=r.ownerDocument.createElementNS(ne,"a");h.setAttribute("href",sn(e.link)),g.appendChild(h),g=h}let y=(h,I)=>{Ot()&&h.setAttribute("data-id",I.id),g.appendChild(h)},x=(We(e,t)?.opacity??100)*e.opacity/1e4;switch(e.type){case"selection":throw new Error("Selection rendering is not supported for SVG");case"rectangle":case"diamond":case"ellipse":{let h=he.generateElementShape(e,null),I=no(n,h,Xn);x!==1&&(I.setAttribute("stroke-opacity",`${x}`),I.setAttribute("fill-opacity",`${x}`)),I.setAttribute("stroke-linecap","round"),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);let w=ro(e,g,[I],s.frameRendering,t);y(w||I,e);break}case"iframe":case"embeddable":{let h=he.generateElementShape(e,s),I=no(n,h,Xn),w=e.opacity/100;w!==1&&(I.setAttribute("stroke-opacity",`${w}`),I.setAttribute("fill-opacity",`${w}`)),I.setAttribute("stroke-linecap","round"),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),y(I,e);let v=Li(e);Di(v,t,n,g,o,v.x+d.x-e.x,v.y+d.y-e.y,s);let M=no(n,h,Xn);for(M.setAttribute("stroke-linecap","round"),M.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);M.firstChild;)M.removeChild(M.firstChild);let S=rt(Math.min(e.width,e.height),e),F=X2(D2(e.link||""));if(s.renderEmbeddables===!1||F?.type==="document"){let $=r.ownerDocument.createElementNS(ne,"a");$.setAttribute("href",sn(e.link||"")),$.setAttribute("target","_blank"),$.setAttribute("rel","noopener noreferrer"),$.style.borderRadius=`${S}px`,M.appendChild($)}else{let $=r.ownerDocument.createElementNS(ne,"foreignObject");$.style.width=`${e.width}px`,$.style.height=`${e.height}px`,$.style.border="none";let O=$.ownerDocument.createElementNS(ne,"div");O.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),O.style.width="100%",O.style.height="100%";let A=O.ownerDocument.createElement("iframe");A.src=F?.link??"",A.style.width="100%",A.style.height="100%",A.style.border="none",A.style.borderRadius=`${S}px`,A.style.top="0",A.style.left="0",A.allowFullscreen=!0,O.appendChild(A),$.appendChild(O),M.appendChild($)}y(M,e);break}case"line":case"arrow":{let h=re(e,t),I=r.ownerDocument.createElementNS(ne,"mask");if(h){I.setAttribute("id",`mask-${e.id}`);let S=r.ownerDocument.createElementNS(ne,"rect");i=i||0,a=a||0,S.setAttribute("x","0"),S.setAttribute("y","0"),S.setAttribute("fill","#fff"),S.setAttribute("width",`${e.width+100+i}`),S.setAttribute("height",`${e.height+100+a}`),I.appendChild(S);let F=r.ownerDocument.createElementNS(ne,"rect"),$=W.getBoundTextElementPosition(e,h,t),O=i+$.x-e.x,A=a+$.y-e.y;F.setAttribute("x",O.toString()),F.setAttribute("y",A.toString()),F.setAttribute("fill","#000"),F.setAttribute("width",`${h.width}`),F.setAttribute("height",`${h.height}`),F.setAttribute("opacity","1"),I.appendChild(F)}let w=r.ownerDocument.createElementNS(ne,"g");h&&w.setAttribute("mask",`url(#mask-${e.id})`),w.setAttribute("stroke-linecap","round"),he.generateElementShape(e,s).forEach(S=>{let F=no(n,S,Xn);x!==1&&(F.setAttribute("stroke-opacity",`${x}`),F.setAttribute("fill-opacity",`${x}`)),F.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),e.type==="line"&&Bt(e.points)&&e.backgroundColor!=="transparent"&&F.setAttribute("fill-rule","evenodd"),w.appendChild(F)});let M=ro(e,g,[w,I],s.frameRendering,t);M?(y(M,e),g.appendChild(M)):(y(w,e),g.append(I));break}case"freedraw":{let h=he.generateElementShape(e,s),I=h?no(n,h,Xn):r.ownerDocument.createElementNS(ne,"g");x!==1&&(I.setAttribute("stroke-opacity",`${x}`),I.setAttribute("fill-opacity",`${x}`)),I.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),I.setAttribute("stroke","none");let w=r.ownerDocument.createElementNS(ne,"path");w.setAttribute("fill",e.strokeColor),w.setAttribute("d",_a(e)),I.appendChild(w);let v=ro(e,g,[I],s.frameRendering,t);y(v||I,e);break}case"image":{let h=Math.round(e.width),I=Math.round(e.height),w=_t(e)&&o[e.fileId];if(w){let{reuseImages:v=!0}=s,M=`image-${w.id}`,S=e.width,F=e.height;e.crop&&({width:S,height:F}=nr(e),M=`image-crop-${w.id}-${Z2(`${S}x${F}`)}`),v||(M=`image-${e.id}`);let $=r.querySelector(`#${M}`);if(!$){$=r.ownerDocument.createElementNS(ne,"symbol"),$.id=M;let Q=r.ownerDocument.createElementNS(ne,"image");Q.setAttribute("href",w.dataURL),Q.setAttribute("preserveAspectRatio","none"),e.crop||!v?(Q.setAttribute("width",`${S}`),Q.setAttribute("height",`${F}`)):(Q.setAttribute("width","100%"),Q.setAttribute("height","100%")),$.appendChild(Q),(g.querySelector("defs")||g).prepend($)}let O=r.ownerDocument.createElementNS(ne,"use");O.setAttribute("href",`#${M}`),s.exportWithDarkMode&&w.mimeType!==K.svg&&O.setAttribute("filter",Fa);let A=0,Z=0;if(e.crop){let{width:Q,height:fe}=nr(e);A=e.crop.x/(e.crop.naturalWidth/Q),Z=e.crop.y/(e.crop.naturalHeight/fe)}let we=m+A,X=b+Z;O.setAttribute("width",`${h+A}`),O.setAttribute("height",`${I+Z}`),O.setAttribute("opacity",`${x}`),(e.scale[0]!==1||e.scale[1]!==1)&&O.setAttribute("transform",`translate(${we} ${X}) scale(${e.scale[0]} ${e.scale[1]}) translate(${-we} ${-X})`);let ce=r.ownerDocument.createElementNS(ne,"g");if(e.crop){let Q=r.ownerDocument.createElementNS(ne,"mask");Q.setAttribute("id",`mask-image-crop-${e.id}`),Q.setAttribute("fill","#fff");let fe=r.ownerDocument.createElementNS(ne,"rect");fe.setAttribute("x",`${A}`),fe.setAttribute("y",`${Z}`),fe.setAttribute("width",`${h}`),fe.setAttribute("height",`${I}`),Q.appendChild(fe),g.appendChild(Q),ce.setAttribute("mask",`url(#${Q.id})`)}if(ce.appendChild(O),ce.setAttribute("transform",`translate(${i-A} ${a-Z}) rotate(${E} ${we} ${X})`),e.roundness){let Q=r.ownerDocument.createElementNS(ne,"clipPath");Q.id=`image-clipPath-${e.id}`;let fe=r.ownerDocument.createElementNS(ne,"rect"),St=rt(Math.min(e.width,e.height),e);fe.setAttribute("width",`${e.width}`),fe.setAttribute("height",`${e.height}`),fe.setAttribute("rx",`${St}`),fe.setAttribute("ry",`${St}`),Q.appendChild(fe),y(Q,e),ce.setAttributeNS(ne,"clip-path",`url(#${Q.id})`)}let J=ro(e,g,[ce],s.frameRendering,t);y(J||ce,e)}break}case"frame":case"magicframe":{if(s.frameRendering.enabled&&s.frameRendering.outline){let h=document.createElementNS(ne,"rect");h.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`),h.setAttribute("width",`${e.width}px`),h.setAttribute("height",`${e.height}px`),h.setAttribute("rx",Ne.radius.toString()),h.setAttribute("ry",Ne.radius.toString()),h.setAttribute("fill","none"),h.setAttribute("stroke",Ne.strokeColor),h.setAttribute("stroke-width",Ne.strokeWidth.toString()),y(h,e)}break}default:if(G(e)){let h=r.ownerDocument.createElementNS(ne,"g");x!==1&&(h.setAttribute("stroke-opacity",`${x}`),h.setAttribute("fill-opacity",`${x}`)),h.setAttribute("transform",`translate(${i||0} ${a||0}) rotate(${E} ${m} ${b})`);let I=e.text.replace(/\r\n?/g,`
41
41
  `).split(`
42
42
  `),w=Wn(e.fontSize,e.lineHeight),v=e.textAlign==="center"?e.width/2:e.textAlign==="right"?e.width:0,M=zo(e.fontFamily,e.fontSize,w),S=No(e.text)?"rtl":"ltr",F=e.textAlign==="center"?"middle":e.textAlign==="right"||S==="rtl"?"end":"start";for(let O=0;O<I.length;O++){let A=r.ownerDocument.createElementNS(ne,"text");A.textContent=I[O],A.setAttribute("x",`${v}`),A.setAttribute("y",`${O*w+M}`),A.setAttribute("font-family",oa(e)),A.setAttribute("font-size",`${e.fontSize}px`),A.setAttribute("fill",e.strokeColor),A.setAttribute("text-anchor",F),A.setAttribute("style","white-space: pre;"),A.setAttribute("direction",S),A.setAttribute("dominant-baseline","alphabetic"),h.appendChild(A)}let $=ro(e,g,[h],s.frameRendering,t);y($||h,e)}else throw new Error(`Unimplemented type ${e.type}`)}},k2=(e,t,n,r,o,i)=>{r&&(e.filter(a=>!mt(a)).forEach(a=>{if(!a.isDeleted){if(G(a)&&a.containerId&&t.has(a.containerId))return;try{Di(a,t,n,r,o,a.x+i.offsetX,a.y+i.offsetY,i);let s=re(a,t);s&&Di(s,t,n,r,o,s.x+i.offsetX,s.y+i.offsetY,i)}catch(s){console.error(s)}}}),e.filter(a=>mt(a)).forEach(a=>{if(!a.isDeleted)try{Di(a,t,n,r,o,a.x+i.offsetX,a.y+i.offsetY,i)}catch(s){console.error(s)}}))};import{fileOpen as gg,fileSave as xg,supported as z2}from"browser-fs-access";var W2=500,Q2=e=>{let t=e.extensions?.reduce((r,o)=>(r.push(K[o]),r),[]),n=e.extensions?.reduce((r,o)=>o==="jpg"?r.concat(".jpg",".jpeg"):r.concat(`.${o}`),[]);return gg({description:e.description,extensions:n,mimeTypes:t,multiple:e.multiple??!1,legacySetup:(r,o,i)=>{let a=Po(o,W2),s=()=>{d(),document.addEventListener("keyup",a),document.addEventListener("pointerup",a),a()},d=()=>{if(i.files?.length){let l=e.multiple?[...i.files]:i.files[0];r(l)}};requestAnimationFrame(()=>{window.addEventListener("focus",s)});let c=window.setInterval(()=>{d()},W2);return l=>{clearInterval(c),a.cancel(),window.removeEventListener("focus",s),document.removeEventListener("keyup",a),document.removeEventListener("pointerup",a),l&&(console.warn("Opening the file was canceled (legacy-fs)."),l(new Xo))}}})},ps=(e,t)=>xg(e,{fileName:`${t.name}.${t.extension}`,description:t.description,extensions:[`.${t.extension}`],mimeTypes:t.mimeTypes},t.fileHandle);var hg=(e,t)=>{let n={};for(let r of e)!r.isDeleted&&"fileId"in r&&r.fileId&&t[r.fileId]&&(n[r.fileId]=t[r.fileId]);return n},oo=(e,t,n,r)=>{let o={type:ke.excalidraw,version:ki.excalidraw,source:Xi,elements:r==="local"?Si(e):np(e),appState:r==="local"?Mo(t):ld(t),files:r==="local"?hg(e,n):void 0};return JSON.stringify(o,null,2)},yB=async(e,t,n,r=t.name||ad)=>{let o=oo(e,t,n,"local"),i=new Blob([o],{type:K.excalidraw});return{fileHandle:await ps(i,{name:r,extension:"excalidraw",description:"Excalidraw file",fileHandle:j2(t.fileHandle)?null:t.fileHandle})}},IB=async(e,t)=>{let n=await Q2({description:"Excalidraw files"});return ep(await us(n),e,t,n.handle)},tp=e=>e?.type===ke.excalidraw&&(!e.elements||Array.isArray(e.elements)&&(!e.appState||typeof e.appState=="object")),ms=e=>typeof e=="object"&&e&&e.type===ke.excalidrawLibrary&&(e.version===1||e.version===2),yg=e=>{let t={type:ke.excalidrawLibrary,version:ki.excalidrawLibrary,source:Xi,libraryItems:e};return JSON.stringify(t,null,2)},wB=async e=>{let t=yg(e);await ps(new Blob([t],{type:K.excalidrawlib}),{name:"library",extension:"excalidrawlib",description:"Excalidraw library file"})};var Ig=e=>new Promise((t,n)=>{let r=new Image;r.onload=()=>{t(r)},r.onerror=o=>{n(o)},r.src=e}),rp=async({fileIds:e,files:t,imageCache:n})=>{let r=new Map,o=new Map;return await Promise.all(e.reduce((i,a)=>{let s=t[a];return s&&!r.has(a)?(r.set(a,!0),i.concat((async()=>{try{if(s.mimeType===K.binary)throw new Error("Only images can be added to ImageCache");let d=Ig(s.dataURL),c={image:d,mimeType:s.mimeType};n.set(a,c);let l=await d;n.set(a,{...c,image:l})}catch{o.set(a,!0)}})())):i},[])),{imageCache:n,updatedFiles:r,erroredFiles:o}},op=e=>e.filter(t=>_t(t)),wg=e=>e?.nodeName.toLowerCase()==="svg",DB=e=>{let t=new DOMParser().parseFromString(e,K.svg),n=t.querySelector("svg");if(t.querySelector("parsererror")||!wg(n))throw new Error("Invalid SVG");{n.hasAttribute("xmlns")||n.setAttribute("xmlns",ne);let o=n.getAttribute("width"),i=n.getAttribute("height");(o?.includes("%")||o==="auto")&&(o=null),(i?.includes("%")||i==="auto")&&(i=null);let a=n.getAttribute("viewBox");if(!o||!i){if(o=o||"50",i=i||"50",a){let s=a.match(/\d+ +\d+ +(\d+(?:\.\d+)?) +(\d+(?:\.\d+)?)/);s&&([,o,i]=s)}n.setAttribute("width",o),n.setAttribute("height",i)}return a||n.setAttribute("viewBox",`0 0 ${o} ${i}`),n.outerHTML}};var Rg={selection:!0,text:!0,rectangle:!0,diamond:!0,ellipse:!0,line:!0,image:!0,arrow:!0,freedraw:!0,eraser:!1,custom:!0,frame:!0,embeddable:!0,hand:!0,laser:!1,magicframe:!1},Tg=e=>Object.keys(ye).includes(e)?ye[e]:Pt,fr=(e,t)=>{if(!t)return null;let n=t.focus||0;return k(e)?Pn(t)?{...t,focus:n,fixedPoint:qr(t.fixedPoint??[0,0])}:null:{...t,focus:n}},In=(e,t)=>{let n={type:t.type||e.type,version:e.version||1,versionNonce:e.versionNonce??0,index:e.index??null,isDeleted:e.isDeleted??!1,id:e.id||Tt(),fillStyle:e.fillStyle||Ie.fillStyle,strokeWidth:e.strokeWidth||Ie.strokeWidth,strokeStyle:e.strokeStyle??Ie.strokeStyle,roughness:e.roughness??Ie.roughness,opacity:e.opacity==null?Ie.opacity:e.opacity,angle:e.angle||0,x:t.x??e.x??0,y:t.y??e.y??0,strokeColor:e.strokeColor||Ie.strokeColor,backgroundColor:e.backgroundColor||Ie.backgroundColor,width:e.width||0,height:e.height||0,seed:e.seed??1,groupIds:e.groupIds??[],frameId:e.frameId??null,roundness:e.roundness?e.roundness:e.strokeSharpness==="round"?{type:Ao(e.type)?nt.LEGACY:nt.PROPORTIONAL_RADIUS}:null,boundElements:e.boundElementIds?e.boundElementIds.map(r=>({type:"arrow",id:r})):e.boundElements??[],updated:e.updated??Wt(),link:e.link?sn(e.link):null,locked:e.locked??!1};return("customData"in e||"customData"in t)&&(n.customData="customData"in t?t.customData:e.customData),(e.x<-1e6||e.x>1e6||e.y<-1e6||e.y>1e6||e.width<-1e6||e.width>1e6||e.height<-1e6||e.height>1e6)&&console.error("Restore element with properties size or position is too large",{element:e}),{...e,...n,...Es(n),...t}},Mg=e=>{switch((e.x<-1e6||e.x>1e6||e.y<-1e6||e.y>1e6||e.width<-1e6||e.width>1e6||e.height<-1e6||e.height>1e6)&&console.error("Restore element size or position is too large",{element:e}),e.type){case"text":let t=e.fontSize,n=e.fontFamily;if("font"in e){let[l,U]=e.font.split(" ");t=parseFloat(l),n=Tg(U)}let r=typeof e.text=="string"&&e.text||"",o=e.lineHeight||(e.height?Ad(e):Qo(e.fontFamily));return e=In(e,{fontSize:t,fontFamily:n,text:r,textAlign:e.textAlign||qn,verticalAlign:e.verticalAlign||xo,containerId:e.containerId??null,originalText:e.originalText||r,autoResize:e.autoResize??!0,lineHeight:o}),!r&&!e.isDeleted&&(e={...e,originalText:r,isDeleted:!0},e=zr(e)),e;case"freedraw":return In(e,{points:e.points,lastCommittedPoint:null,simulatePressure:e.simulatePressure,pressures:e.pressures});case"image":return In(e,{status:e.status||"pending",fileId:e.fileId,scale:e.scale||[1,1],crop:e.crop??null});case"line":case"draw":let{startArrowhead:i=null,endArrowhead:a=null}=e,s=e.x,d=e.y,c=!Array.isArray(e.points)||e.points.length<2?[u(0,0),u(e.width,e.height)]:e.points;return(c[0][0]!==0||c[0][1]!==0)&&({points:c,x:s,y:d}=W.getNormalizedPoints(e)),In(e,{type:e.type==="draw"?"line":e.type,startBinding:fr(e,e.startBinding),endBinding:fr(e,e.endBinding),lastCommittedPoint:null,startArrowhead:i,endArrowhead:a,points:c,x:s,y:d,...hn(c)});case"arrow":{let{startArrowhead:l=null,endArrowhead:U="arrow"}=e,p=e.x,m=e.y,b=!Array.isArray(e.points)||e.points.length<2?[u(0,0),u(e.width,e.height)]:e.points;(b[0][0]!==0||b[0][1]!==0)&&({points:b,x:p,y:m}=W.getNormalizedPoints(e));let E={type:e.type,startBinding:fr(e,e.startBinding),endBinding:fr(e,e.endBinding),lastCommittedPoint:null,startArrowhead:l,endArrowhead:U,points:b,x:p,y:m,elbowed:e.elbowed,...hn(b)};return k(e)?In(e,{...E,elbowed:!0,startBinding:fr(e,e.startBinding),endBinding:fr(e,e.endBinding),fixedSegments:e.fixedSegments,startIsSpecial:e.startIsSpecial,endIsSpecial:e.endIsSpecial}):In(e,E)}case"ellipse":case"rectangle":case"diamond":case"iframe":case"embeddable":return In(e,{});case"magicframe":case"frame":return In(e,{name:e.name??null})}return null},Lg=(e,t)=>{if(e.boundElements){let n=e.boundElements.slice(),r=new Set;e.boundElements=n.reduce((o,i)=>{let a=t.get(i.id);if(a&&!r.has(i.id)){if(r.add(i.id),a.isDeleted)return o;o.push(i),G(a)&&!a.containerId&&(a.containerId=e.id)}return o},[])}},Dg=(e,t)=>{let n=e.containerId?t.get(e.containerId):null;if(!n){e.containerId=null;return}if(!e.isDeleted&&n.boundElements&&!n.boundElements.find(r=>r.id===e.id)){let r=(n.boundElements||(n.boundElements=[])).slice();r.push({type:"text",id:e.id}),n.boundElements=r}},Sg=(e,t)=>{e.frameId&&(t.get(e.frameId)||(e.frameId=null))},sp=(e,t,n)=>{let r=new Set,o=t?ee(t):null,i=Hn((e||[]).reduce((s,d)=>{if(d.type!=="selection"&&!io(d)){let c=Mg(d);if(c){let l=o?.get(d.id);l&&l.version>c.version&&(c=zr(c,l.version)),r.has(c.id)&&(c={...c,id:Tt()}),r.add(c.id),s.push(c)}}return s},[]));if(!n?.repairBindings)return i;let a=ee(i);for(let s of i)s.frameId&&Sg(s,a),G(s)&&s.containerId?Dg(s,a):s.boundElements&&Lg(s,a),n.refreshDimensions&&G(s)&&Object.assign(s,as(s,Ye(s,a),a)),ie(s)&&(s.startBinding&&(!a.has(s.startBinding.elementId)||!j(s))&&(s.startBinding=null),s.endBinding&&(!a.has(s.endBinding.elementId)||!j(s))&&(s.endBinding=null));return i},vg=(e,t,n)=>{let r=t[e];return r!==void 0?r:n[e]},ip={isSidebarDocked:(e,t)=>["defaultSidebarDockedPreference",e.isSidebarDocked??vg("defaultSidebarDockedPreference",e,t)]},bs=(e,t)=>{e=e||{};let n=pn(),r={};for(let o of Object.keys(ip))if(o in e){let[i,a]=ip[o](e,n);r[i]=a}for(let[o,i]of Object.entries(n)){let a=e[o],s=t?t[o]:void 0;r[o]=a!==void 0?a:s!==void 0?s:i}return{...r,cursorButton:t?.cursorButton||"up",penDetected:t?.penDetected??(e.penMode?e.penDetected??!1:!1),activeTool:{...Fr(n,r.activeTool.type&&Rg[r.activeTool.type]?r.activeTool:{type:"selection"}),lastActiveTool:null,locked:r.activeTool.locked??!1},zoom:{value:Wa(Lo(e.zoom)?e.zoom:e.zoom?.value??n.zoom.value)},openSidebar:typeof e.openSidebar=="string"?{name:id.name}:r.openSidebar,gridSize:za(Lo(e.gridSize)?e.gridSize:yo),gridStep:Qa(Lo(e.gridStep)?e.gridStep:Io),editingFrame:null}},vi=(e,t,n,r)=>({elements:sp(e?.elements,n,r),appState:bs(e?.appState,t||null),files:e?.files||{}}),ap=e=>{let t=sp(ao(e.elements),null);return t.length?{...e,elements:t}:null},dp=(e=[],t)=>{let n=[];for(let r of e)if(Array.isArray(r)){let o=ap({status:t,elements:r,id:Tt(),created:Date.now()});o&&n.push(o)}else{let o=r,i=ap({...o,id:o.id||Tt(),status:o.status||t,created:o.created||Date.now()});i&&n.push(i)}return n};var gs=document.createElement("img");gs.src=`data:${K.svg}, ${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#1971c2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>')}`;var xs=document.createElement("img");xs.src=`data:${K.svg}, ${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#1971c2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-arrow-big-right-line"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 9v-3.586a1 1 0 0 1 1.707 -.707l6.586 6.586a1 1 0 0 1 0 1.414l-6.586 6.586a1 1 0 0 1 -1.707 -.707v-3.586h-6v-6h6z" /><path d="M3 9v6" /></svg>')}`;var hs=([e,t,n,r],o,i)=>{let a=q1,s=a/i.zoom.value,d=a/i.zoom.value,c=a/i.zoom.value,l=(e+n)/2,U=(t+r)/2,p=(a-8)/(2*i.zoom.value),m=4/i.zoom.value,b=n+m-p,E=t-m-c+p,[g,y]=T(u(b+s/2,E+d/2),u(l,U),o);return[g-s/2,y-d/2,s,d]},$g=(e,t,n,[r,o])=>{let i=4/n.zoom.value,[a,s,d,c]=Y(e,t),[l,U,p,m]=hs([a,s,d,c],e.angle,n);return r>l-i&&r<l+i+p&&o>U-i&&o<U+m+i},nA=(e,t,n,[r,o],i)=>!e.link||n.selectedElementIds[e.id]?!1:!i&&n.viewModeEnabled&&Da(r,o,e,t)?!0:$g(e,t,n,u(r,o));var aA=(e,t,n,r,o=!0)=>{e.beginPath(),e.arc(t,n,r,0,Math.PI*2),e.fill(),o&&e.stroke()},cp=(e,t)=>[e.width/t,e.height/t],lp=({canvas:e,scale:t,normalizedWidth:n,normalizedHeight:r,theme:o,isExporting:i,canvasBackgroundColor:a})=>{let s=e.getContext("2d");return s.setTransform(1,0,0,1,0,0),s.scale(t,t),i&&o===Xe.DARK&&(s.filter=Ro),typeof a=="string"?((a==="transparent"||a.length===5||a.length===9||/(hsla|rgba)\(/.test(a))&&s.clearRect(0,0,n,r),s.save(),s.fillStyle=a,s.fillRect(0,0,n,r),s.restore()):s.clearRect(0,0,n,r),s};var fA=(e,t)=>{let n=window.location.href;try{let r=new URL(n);return r.searchParams.set(yr,e),sn(r.toString())}catch(r){console.error(r)}return sn(n)},pA=(e,t)=>{if(e.length>0&&Pg(e)){if(e.length===1)return{id:e[0].id,type:"element"};if(e.length>1){let n=Object.keys(t.selectedGroupIds)[0];return n?{id:n,type:"group"}:{id:e[0].groupIds[0],type:"group"}}}return null},Pg=e=>!!(e.length===1||e.length>1&&x2(e)),Up=e=>{try{let t=new URL(e);return t.searchParams.has(yr)&&t.host===window.location.host}catch{return!1}},uA=e=>{try{let{searchParams:t}=new URL(e);if(t.has(yr))return t.get(yr)}catch{}return null};var $i={Bold:"#dddddd",Regular:"#e5e5e5"},Ng=(e,t,n,r,o,i,a,s)=>{let d=r%t-t,c=o%t-t,l=t*i.value,U=1/i.value;e.save(),i.value===1&&e.translate(d%1?0:.5,c%1?0:.5);for(let p=d;p<d+a+t*2;p+=t){let m=n>1&&Math.round(p-r)%(n*t)===0;if(!m&&l<10)continue;let b=Math.min(1/i.value,m?4:1);e.lineWidth=b;let E=[b*3,U+(b+U)];e.beginPath(),e.setLineDash(m?[]:E),e.strokeStyle=m?$i.Bold:$i.Regular,e.moveTo(p,c-t),e.lineTo(p,Math.ceil(c+s+t*2)),e.stroke()}for(let p=c;p<c+s+t*2;p+=t){let m=n>1&&Math.round(p-o)%(n*t)===0;if(!m&&l<10)continue;let b=Math.min(1/i.value,m?4:1);e.lineWidth=b;let E=[b*3,U+(b+U)];e.beginPath(),e.setLineDash(m?[]:E),e.strokeStyle=m?$i.Bold:$i.Regular,e.moveTo(d-t,p),e.lineTo(Math.ceil(d+a+t*2),p),e.stroke()}e.restore()},fp=(e,t,n,r)=>{t.translate(e.x+r.scrollX,e.y+r.scrollY),t.beginPath(),t.roundRect?t.roundRect(0,0,e.width,e.height,Ne.radius/r.zoom.value):t.rect(0,0,e.width,e.height),t.clip(),t.translate(-(e.x+r.scrollX),-(e.y+r.scrollY))},pp={regularLink:null,elementLink:null},up=(e,t,n,r)=>{if(e.link&&!n.selectedElementIds[e.id]){let[o,i,a,s]=Y(e,r),[d,c,l,U]=hs([o,i,a,s],e.angle,n),p=d+l/2,m=c+U/2;t.save(),t.translate(n.scrollX+p,n.scrollY+m),t.rotate(e.angle);let b=Up(e.link)?"elementLink":"regularLink",E=pp[b];if(!E||E.zoom!==n.zoom.value){E=Object.assign(document.createElement("canvas"),{zoom:n.zoom.value}),E.width=l*window.devicePixelRatio*n.zoom.value,E.height=U*window.devicePixelRatio*n.zoom.value,pp[b]=E;let g=E.getContext("2d");g.scale(window.devicePixelRatio*n.zoom.value,window.devicePixelRatio*n.zoom.value),g.fillStyle="#fff",g.fillRect(0,0,l,U),b==="elementLink"?g.drawImage(xs,0,0,l,U):g.drawImage(gs,0,0,l,U),g.restore()}t.drawImage(E,d-p,c-m,l,U),t.restore()}},mp=({canvas:e,rc:t,elementsMap:n,allElementsMap:r,visibleElements:o,scale:i,appState:a,renderConfig:s})=>{if(e===null)return;let{renderGrid:d=!0,isExporting:c}=s,[l,U]=cp(e,i),p=lp({canvas:e,scale:i,normalizedWidth:l,normalizedHeight:U,theme:a.theme,isExporting:c,canvasBackgroundColor:s.canvasBackgroundColor});p.scale(a.zoom.value,a.zoom.value),d&&Ng(p,a.gridSize,a.gridStep,a.scrollX,a.scrollY,a.zoom,l/a.zoom.value,U/a.zoom.value);let m=new Set;o.forEach(E=>{E.groupIds.length>0&&a.frameToHighlight&&a.selectedElementIds[E.id]&&(wn(E,a.frameToHighlight,n)||E.groupIds.find(g=>m.has(g)))&&E.groupIds.forEach(g=>m.add(g))});let b=new Map;o.filter(E=>!mt(E)).forEach(E=>{try{let g=E.frameId||a.frameToHighlight?.id;if(G(E)&&E.containerId&&n.has(E.containerId))return;if(p.save(),g&&a.frameRendering.enabled&&a.frameRendering.clip){let x=Pi(E,n,a);x&&ys(E,x,a,n,b)&&fp(x,p,s,a),_n(E,n,r,t,p,s,a)}else _n(E,n,r,t,p,s,a);let y=re(E,n);y&&_n(y,n,r,t,p,s,a),p.restore(),c||up(E,p,a,n)}catch(g){console.error(g)}}),o.filter(E=>mt(E)).forEach(E=>{try{let g=()=>{if(_n(E,n,r,t,p,s,a),mt(E)&&(c||_o(E)&&s.embedsValidationStatus.get(E.id)!==!0)&&E.width&&E.height){let x=Li(E);_n(x,n,r,t,p,s,a)}c||up(E,p,a,n)};if((E.frameId||a.frameToHighlight?.id)&&a.frameRendering.enabled&&a.frameRendering.clip){p.save();let x=Pi(E,n,a);x&&ys(E,x,a,n,b)&&fp(x,p,s,a),g(),p.restore()}else g()}catch(g){console.error(g)}}),s.pendingFlowchartNodes?.forEach(E=>{try{_n(E,n,r,t,p,s,a)}catch(g){console.error(g)}})},Fg=Rd(e=>{mp(e)},{trailing:!0}),bp=(e,t)=>{if(t){Fg(e);return}mp(e)};var Og=(e,t)=>{if(e.width<=t)return e;let r=document.createElement("canvas").getContext("2d");r.font=Ee({fontFamily:e.fontFamily,fontSize:e.fontSize});let o=e.text;if(r.measureText(o).width>t)for(let a=o.length;a>0;a--){let s=`${o.slice(0,a)}...`;if(r.measureText(s).width<=t){o=s;break}}return Lt(e,{text:o,width:t})},_g=(e,t)=>{let n=[];for(let r of e){if(de(r)){let o=Yt({x:r.x,y:r.y-Ne.nameOffsetY,fontFamily:ye.Helvetica,fontSize:Ne.nameFontSize,lineHeight:Ne.nameLineHeight,strokeColor:t.exportWithDarkMode?Ne.nameColorDarkTheme:Ne.nameColorLightTheme,text:wp(r)});o.y-=o.height,o=Og(o,r.width),n.push(o)}n.push(r)}return n},gp=(e,t)=>(t=t||pn().frameRendering,{enabled:e?!0:t.enabled,outline:e?!1:t.outline,name:e?!1:t.name,clip:e?!0:t.clip}),xp=({elements:e,exportingFrame:t,frameRendering:n,exportWithDarkMode:r})=>{let o;return t?o=Rp(e,t):n.enabled&&n.name?o=_g(e,{exportWithDarkMode:r}):o=e,o},Is=async({data:e,config:t})=>{let n=Object.assign({},t),{files:r}=e,{exportingFrame:o}=n,i=e.elements,a=bs(e.appState,null),s=gp(o??null,a.frameRendering??null);o&&(s.clip=!1);let d=xp({elements:i,exportingFrame:o,exportWithDarkMode:a.exportWithDarkMode,frameRendering:s});o&&(n.padding=0),n.fit=n.fit??(n.width!=null||n.height!=null||n.maxWidthOrHeight!=null||n.widthOrHeight!=null?"contain":"none");let c=n.fit==="contain";(n.x!=null||n.x!=null)&&(n.fit="none"),n.fit==="cover"&&(n.padding&&!L.PROD&&console.warn("`padding` is ignored when `fit` is set to `cover`"),n.padding=0),n.padding=n.padding??0,n.scale=n.scale??1,n.origin=n.origin??"canvas",n.position=n.position??"center",n.maxWidthOrHeight!=null&&n.widthOrHeight!=null&&(L.PROD||console.warn("`maxWidthOrHeight` is ignored when `widthOrHeight` is set"),n.maxWidthOrHeight=void 0),(n.maxWidthOrHeight!=null||n.width!=null||n.height!=null)&&n.getDimensions&&(L.PROD||console.warn("`getDimensions` is ignored when `width`, `height`, or `maxWidthOrHeight` is set"),n.getDimensions=void 0),n.loadFonts?await n.loadFonts():await On.loadElementsFonts(i);let l=1,U=Ip(o?[o]:Rs(d)),[p,m,b,E]=U,[g,y,x,h]=U;if(n.width!=null?(x=n.width,n.padding&&c&&(x-=n.padding*2),n.height?(h=n.height,n.padding&&c&&(h-=n.padding*2)):h*=x/b):n.height!=null&&(h=n.height,n.padding&&c&&(h-=n.padding*2),x*=h/E),n.maxWidthOrHeight!=null||n.widthOrHeight!=null){c&&n.padding&&(n.maxWidthOrHeight!=null?n.maxWidthOrHeight-=n.padding*2:n.widthOrHeight!=null&&(n.widthOrHeight-=n.padding*2));let M=Math.max(x,h);n.widthOrHeight!=null?l=n.widthOrHeight/M:n.maxWidthOrHeight!=null&&(l=n.maxWidthOrHeight<M?n.maxWidthOrHeight/M:1),x*=l,h*=l}else if(n.getDimensions){let M=n.getDimensions(x,h);x=M.width,h=M.height,n.scale=M.scale??n.scale}else if(c&&n.padding&&n.width==null&&n.height==null){let M=x/h;x-=n.padding*2,h-=n.padding*2/M}if(n.fit==="contain"&&!n.maxWidthOrHeight||c&&n.padding)if(n.fit==="contain"){let M=x/b,S=h/E;l=Math.min(M,S)}else{let M=(x-n.padding*2)/x,S=(h-n.padding*2)/h;l=Math.min(M,S)}else if(n.fit==="cover"){let M=x/b,S=h/E;l=Math.max(M,S)}g=n.x??p,y=n.y??m,n.origin==="content"&&(n.x!=null&&(g+=p),n.y!=null&&(y+=m)),n.position==="center"&&(g-=x/l/2-(n.x==null?b:x+n.padding*2)/2,y-=h/l/2-(n.y==null?E:h+n.padding*2)/2);let I=n.createCanvas?n.createCanvas():document.createElement("canvas"),w=n.padding/l;l*=n.scale,x*=n.scale,h*=n.scale,I.width=x+n.padding*2*n.scale,I.height=h+n.padding*2*n.scale;let{imageCache:v}=await rp({imageCache:new Map,fileIds:op(d).map(M=>M.fileId),files:r||{}});return bp({canvas:I,rc:Ep.canvas(I),elementsMap:Ve(ee(d)),allElementsMap:Ve(ee(Hn(i))),visibleElements:d,appState:{...a,frameRendering:s,width:x,height:h,offsetLeft:0,offsetTop:0,scrollX:-g+w,scrollY:-y+w,zoom:{value:ho},shouldCacheIgnoreZoom:!1,theme:n.theme||Xe.LIGHT},scale:l,renderConfig:{canvasBackgroundColor:n.canvasBackgroundColor===!1?null:n.canvasBackgroundColor||a.viewBackgroundColor||Un,imageCache:v,renderGrid:!1,isExporting:!0,embedsValidationStatus:new Map,elementsPendingErasure:new Set,pendingFlowchartNodes:null}}),I},so=e=>document.createComment(` ${e} `),hp=async({data:e,config:t})=>{let n=Object.assign({},t);n.exportingFrame=n.exportingFrame??null;let r=e.elements,o=gp(n?.exportingFrame??null,e.appState.frameRendering??null),{exportPadding:i=ed,exportWithDarkMode:a=!1,viewBackgroundColor:s,exportScale:d=1,exportEmbedScene:c}=e.appState,l=xp({elements:r,exportingFrame:n.exportingFrame,exportWithDarkMode:a,frameRendering:o});n.exportingFrame&&(i=0);let[U,p,m,b]=Ip(n.exportingFrame?[n.exportingFrame]:Rs(l)),E=-U+i,g=-p+i;m+=i*2,b+=i*2;let y=document.createElementNS(ne,"svg");y.setAttribute("version","1.1"),y.setAttribute("xmlns",ne),y.setAttribute("viewBox",`0 0 ${m} ${b}`),y.setAttribute("width",`${m*d}`),y.setAttribute("height",`${b*d}`),a&&y.setAttribute("filter",Ro);let x=y.ownerDocument.createElementNS(ne,"defs"),h=y.ownerDocument.createElementNS(ne,"metadata");if(y.appendChild(so("svg-source:excalidraw")),y.appendChild(h),y.appendChild(x),c)try{Bg({metadataElement:h,payload:oo(r,e.appState,e.files||{},"local")})}catch($){console.error($)}let I=ws(r);if(I.length){let $=ee(r);for(let O of I){let A=y.ownerDocument.createElementNS(ne,"clipPath");A.setAttribute("id",O.id);let[Z,we,X,ce]=Y(O,$),J=(X-Z)/2-(O.x-Z),Q=(ce-we)/2-(O.y-we),fe=y.ownerDocument.createElementNS(ne,"rect");fe.setAttribute("transform",`translate(${O.x+E} ${O.y+g}) rotate(${O.angle} ${J} ${Q})`),fe.setAttribute("width",`${O.width}`),fe.setAttribute("height",`${O.height}`),n.exportingFrame||(fe.setAttribute("rx",`${Ne.radius}`),fe.setAttribute("ry",`${Ne.radius}`)),A.appendChild(fe),x.appendChild(A)}}let w=n?.skipInliningFonts?[]:await On.generateFontFaceDeclarations(r),v=`
43
43
  `,M=y.ownerDocument.createElementNS(ne,"style");if(M.classList.add("style-fonts"),M.appendChild(document.createTextNode(`${v}${w.join(v)}`)),x.appendChild(M),e.appState.exportBackground&&s){let $=y.ownerDocument.createElementNS(ne,"rect");$.setAttribute("x","0"),$.setAttribute("y","0"),$.setAttribute("width",`${m}`),$.setAttribute("height",`${b}`),$.setAttribute("fill",s),y.appendChild($)}let S=Ep.svg(y),F=n.renderEmbeddables??!1;return k2(l,Ve(ee(l)),S,y,e.files||{},{offsetX:E,offsetY:g,isExporting:!0,exportWithDarkMode:a,renderEmbeddables:F,frameRendering:o,canvasBackgroundColor:s,embedsValidationStatus:F?new Map(l.filter($=>de($)).map($=>[$.id,!0])):new Map,reuseImages:n?.reuseImages??!0}),y},Bg=({payload:e,metadataElement:t})=>{let n=Ni(JSON.stringify(Oi({text:e})),!0);t.appendChild(so(`payload-type:${K.excalidraw}`)),t.appendChild(so("payload-version:2")),t.appendChild(so("payload-start")),t.appendChild(document.createTextNode(n)),t.appendChild(so("payload-end"))},yp=({svg:e})=>{if(e.includes(`payload-type:${K.excalidraw}`)){let t=e.match(/<!-- payload-start -->\s*(.+?)\s*<!-- payload-end -->/);if(!t)throw new Error("INVALID");let o=(e.match(/<!-- payload-version:(\d+) -->/)?.[1]||"1")!=="1";try{let i=Fi(t[1],o),a=JSON.parse(i);if(!("encoded"in a)){if("type"in a&&a.type===ke.excalidraw)return i;throw new Error("FAILED")}return _i(a)}catch(i){throw console.error(i),new Error("FAILED")}}throw new Error("INVALID")},Ip=e=>{let[t,n,r,o]=Pe(e),i=at(t,r),a=at(n,o);return[t,n,i,a]};var Dt=32,ge=12,Rn=256,Mp=50,Kn="NOT_SPREADSHEET",pr="VALID_SPREADSHEET",co=e=>{let t=/^([-+]?)[$€£¥₩]?([-+]?)([\d.,]+)[%]?$/.exec(e);return t?parseFloat(`${(t[1]||t[2])+t[3]}`.replace(/,/g,"")):null},Ts=(e,t)=>e.slice(1).every(n=>co(n[t])!==null),Tp=e=>{let t=e[0].length;if(t>2)return{type:Kn,reason:"More than 2 columns"};if(t===1){if(!Ts(e,0))return{type:Kn,reason:"Value is not numeric"};let d=co(e[0][0])===null,c=(d?e.slice(1):e).map(l=>co(l[0]));return c.length<2?{type:Kn,reason:"Less than two rows"}:{type:pr,spreadsheet:{title:d?e[0][0]:null,labels:null,values:c}}}let n=Ts(e,0),r=Ts(e,1);if(!n&&!r)return{type:Kn,reason:"Value is not numeric"};let[o,i]=r?[0,1]:[1,0],a=co(e[0][i])===null,s=a?e.slice(1):e;return s.length<2?{type:Kn,reason:"Less than 2 rows"}:{type:pr,spreadsheet:{title:a?e[0][i]:null,labels:s.map(d=>d[o]),values:s.map(d=>co(d[i]))}}},Ag=e=>{let t=[];for(let n=0;n<e[0].length;n++){let r=[];for(let o=0;o<e.length;o++)r.push(e[o][n]);t.push(r)}return t},Lp=e=>{let t=e.trim().split(`
44
44
  `).map(i=>i.trim().split(" "));if(t.length&&t[0].length!==2&&(t=e.trim().split(`
45
45
  `).map(i=>i.trim().split(","))),t.length===0)return{type:Kn,reason:"No values"};let n=t[0].length;if(!t.every(i=>i.length===n))return{type:Kn,reason:"All rows don't have same number of columns"};let o=Tp(t);if(o.type!==pr){let i=Tp(Ag(t));if(i.type===pr)return i}return o},Bi=Vd(Cd),ct={fillStyle:"hachure",fontFamily:Pt,fontSize:Ut,opacity:100,roughness:1,strokeColor:Gn,roundness:null,strokeStyle:"solid",strokeWidth:1,verticalAlign:Gt.MIDDLE,locked:!1},Dp=e=>{let t=(Dt+ge)*e.values.length+ge,n=Rn+ge*2;return{chartWidth:t,chartHeight:n}},Hg=(e,t,n,r,o)=>e.labels?.map((i,a)=>Yt({groupIds:[r],backgroundColor:o,...ct,text:i.length>8?`${i.slice(0,5)}...`:i,x:t+a*(Dt+ge)+ge*2,y:n+ge/2,width:Dt,angle:5.87,fontSize:16,textAlign:"center",verticalAlign:"top"}))||[],Kg=(e,t,n,r,o)=>{let i=Yt({groupIds:[r],backgroundColor:o,...ct,x:t-ge,y:n-ge,text:"0",textAlign:"right"}),a=Yt({groupIds:[r],backgroundColor:o,...ct,x:t-ge,y:n-Rn-i.height/2,text:Math.max(...e.values).toLocaleString(),textAlign:"right"});return[i,a]},Jg=(e,t,n,r,o)=>{let{chartWidth:i,chartHeight:a}=Dp(e),s=An({backgroundColor:o,groupIds:[r],...ct,type:"line",x:t,y:n,width:i,points:[u(0,0),u(i,0)]}),d=An({backgroundColor:o,groupIds:[r],...ct,type:"line",x:t,y:n,height:a,points:[u(0,0),u(0,-a)]}),c=An({backgroundColor:o,groupIds:[r],...ct,type:"line",x:t,y:n-Rn-ge,strokeStyle:"dotted",width:i,opacity:Mp,points:[u(0,0),u(i,0)]});return[s,d,c]},Sp=(e,t,n,r,o,i)=>{let{chartWidth:a,chartHeight:s}=Dp(e),d=e.title?Yt({backgroundColor:o,groupIds:[r],...ct,text:e.title,x:t+a/2,y:n-Rn-ge*2-Ut,roundness:null,textAlign:"center"}):null,c=i?Zr({backgroundColor:o,groupIds:[r],...ct,type:"rectangle",x:t,y:n-s,width:a,height:s,strokeColor:Gn,fillStyle:"solid",opacity:6}):null;return[...c?[c]:[],...d?[d]:[],...Hg(e,t,n,r,o),...Kg(e,t,n,r,o),...Jg(e,t,n,r,o)]},Cg=(e,t,n)=>{let r=Math.max(...e.values),o=Tt(),i=Bi[Math.floor(Math.random()*Bi.length)];return[...e.values.map((s,d)=>{let c=s/r*Rn;return Zr({backgroundColor:i,groupIds:[o],...ct,type:"rectangle",x:t+d*(Dt+ge)+ge,y:n-c-ge,width:Dt,height:c})}),...Sp(e,t,n,o,i,L.DEV)]},Yg=(e,t,n)=>{let r=Math.max(...e.values),o=Tt(),i=Bi[Math.floor(Math.random()*Bi.length)],a=0,s=[];for(let E of e.values){let g=a*(Dt+ge),y=-(E/r)*Rn;s.push([g,y]),a++}let d=Math.max(...s.map(E=>E[0])),c=Math.max(...s.map(E=>E[1])),l=Math.min(...s.map(E=>E[0])),U=Math.min(...s.map(E=>E[1])),p=An({backgroundColor:i,groupIds:[o],...ct,type:"line",x:t+ge+Dt/2,y:n-ge,height:c-U,width:d-l,strokeWidth:2,points:s}),m=e.values.map((E,g)=>{let y=g*(Dt+ge)+ge/2,x=-(E/r)*Rn+ge/2;return Zr({backgroundColor:i,groupIds:[o],...ct,fillStyle:"solid",strokeWidth:2,type:"ellipse",x:t+y+Dt/2,y:n+x-ge*2,width:ge,height:ge})}),b=e.values.map((E,g)=>{let y=g*(Dt+ge)+ge/2,x=E/r*Rn+ge/2+ge;return An({backgroundColor:i,groupIds:[o],...ct,type:"line",x:t+y+Dt/2+ge/2,y:n-x,height:x,strokeStyle:"dotted",opacity:Mp,points:[u(0,0),u(0,x)]})});return[...Sp(e,t,n,o,i,L.DEV),p,...b,...m]},eH=(e,t,n,r)=>e==="line"?Yg(t,n,r):Cg(t,n,r);var fH="clipboard"in navigator&&"readText"in navigator.clipboard,Vg="clipboard"in navigator&&"writeText"in navigator.clipboard,pH="clipboard"in navigator&&"write"in navigator.clipboard&&"ClipboardItem"in window&&"toBlob"in HTMLCanvasElement.prototype,qg=e=>!!([ke.excalidraw,ke.excalidrawClipboard,ke.excalidrawClipboardWithAPI].includes(e?.type)&&Array.isArray(e.elements)),uH=({types:e,files:t})=>{!e&&!t&&console.warn("createPasteEvent: no types or files provided");let n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});if(e)for(let[r,o]of Object.entries(e)){if(typeof o!="string"){t=t||[],t.push(o);continue}try{if(n.clipboardData?.setData(r,o),n.clipboardData?.getData(r)!==o)throw new Error(`Failed to set "${r}" as clipboardData item`)}catch(i){throw new Error(i.message)}}if(t){let r=-1;for(let o of t){r++;try{if(n.clipboardData?.items.add(o),n.clipboardData?.files[r]!==o)throw new Error(`Failed to set file "${o.name}" as clipboardData item`)}catch(i){throw new Error(i.message)}}}return n},Gg=({elements:e,files:t})=>{let n=ee(e),r=new Set(e.filter(s=>de(s))),o=!1,i=e.reduce((s,d)=>(_t(d)&&(o=!0,t&&t[d.fileId]&&(s[d.fileId]=t[d.fileId])),s),{});o&&!t&&console.warn("copyToClipboard: attempting to file element(s) without providing associated `files` object.");let a={type:ke.excalidrawClipboard,elements:e.map(s=>{if(We(s,n)&&!r.has(We(s,n))){let d=Wr(s);return C(d,{frameId:null}),d}return s}),files:t?i:void 0};return JSON.stringify(a)},vp=async(e,t,n)=>{await Ls(Gg({elements:e,files:t}),n)},Xg=e=>{let t=Lp(e);return t.type===pr?{spreadsheet:t.spreadsheet}:null};function $p(e){let t=[];for(let n of e.childNodes)if(n.nodeType===3){let r=n.textContent?.trim();r&&t.push({type:"text",value:r})}else if(n instanceof HTMLImageElement){let r=n.getAttribute("src");r&&r.startsWith("http")&&t.push({type:"imageUrl",value:r})}else t=t.concat($p(n));return t}var kg=e=>{let t=e.clipboardData?.getData(K.html);if(!t)return null;try{let n=new DOMParser().parseFromString(t,K.html),r=$p(n.body);if(r.length)return{type:"mixedContent",value:r}}catch(n){console.error(`error in parseHTMLFromPaste: ${n.message}`)}return null},mH=async()=>{let e={},t;try{t=await navigator.clipboard?.read()}catch(n){try{if(navigator.clipboard?.readText){console.warn(`navigator.clipboard.readText() failed (${n.message}). Failling back to navigator.clipboard.read()`);let r=await navigator.clipboard?.readText();if(r)return{[K.text]:r}}}catch(r){if(navigator.clipboard?.read)console.warn(`navigator.clipboard.readText() failed (${r.message}). Failling back to navigator.clipboard.read()`);else{if(r.name==="DataError")return console.warn(`navigator.clipboard.read() error, clipboard is probably empty: ${r.message}`),e;throw r}}throw n}for(let n of t)for(let r of n.types)if(Dd(Ws,r))try{if(r===K.text||r===K.html)e[r]=await(await n.getType(r)).text();else if(Ms(r)){let o=await n.getType(r),i=ur(o,r,void 0);e[r]=i}else throw new Ar(`Unsupported clipboard type: ${r}`)}catch(o){console.warn(o instanceof Ar?o.message:`Cannot retrieve ${r} from clipboardItem: ${o.message}`)}return Object.keys(e).length===0&&console.warn("No clipboard data found from clipboard.read()."),e},Zg=async(e,t=!1)=>{try{let n=!t&&e&&kg(e);return n?n.value.every(o=>o.type==="text")?{type:"text",value:e.clipboardData?.getData(K.text)||n.value.map(o=>o.value).join(`
46
- `).trim()}:n:{type:"text",value:(e.clipboardData?.getData(K.text)||"").trim()}}catch{return{type:"text",value:""}}},bH=async(e,t=!1)=>{let n=await Zg(e,t);if(n.type==="mixedContent")return{mixedContent:n.value};try{let r=!t&&Xg(n.value);if(r)return r}catch(r){console.error(r)}try{let r=JSON.parse(n.value),o=r.type===ke.excalidrawClipboardWithAPI;if(qg(r))return{elements:r.elements,files:r.files,text:t?JSON.stringify(r.elements,null,2):void 0,programmaticAPI:o}}catch{}return{text:n.value}},Pp=async e=>{try{await navigator.clipboard.write([new window.ClipboardItem({[K.png]:e})])}catch(t){if(Oo(e))await navigator.clipboard.write([new window.ClipboardItem({[K.png]:await e})]);else throw t}},Ls=async(e,t)=>{if(Vg)try{await navigator.clipboard.writeText(e||"");return}catch(n){console.error(n)}try{if(t){if(t.clipboardData?.setData(K.text,e||""),t.clipboardData?.getData(K.text)!==e)throw new Error("Failed to setData on clipboardEvent");return}}catch(n){console.error(n)}if(!Wg(e))throw new Error("Error copying to clipboard.")},Wg=e=>{e||(e=" ");let t=document.documentElement.getAttribute("dir")==="rtl",n=document.createElement("textarea");n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";let r=window.pageYOffset||document.documentElement.scrollTop;n.style.top=`${r}px`,n.style.fontSize="12pt",n.setAttribute("readonly",""),n.value=e,document.body.appendChild(n);let o=!1;try{n.select(),n.setSelectionRange(0,n.value.length),o=document.execCommand("copy")}catch(i){console.error(i)}return n.remove(),o};var MH=async({data:e,config:t})=>Is({data:e,config:t}),zg=async({data:e,config:t})=>{let{mimeType:n=K.png,quality:r}=t||{};n===K.png&&typeof r=="number"&&console.warn(`"quality" will be ignored for "${K.png}" mimeType`),n==="image/jpg"&&(n=K.jpg),n===K.jpg&&t?.canvasBackgroundColor&&(console.warn(`Defaulting "exportBackground" to "true" for "${K.jpg}" mimeType`),t={...t,canvasBackgroundColor:e.appState?.viewBackgroundColor||Un});let o=await Is({data:e,config:t});return r=r||(/image\/jpe?g/.test(n)?.92:.8),new Promise((i,a)=>{o.toBlob(async s=>{if(!s)return a(new Error("couldn't export to blob"));s&&n===K.png&&e.appState?.exportEmbedScene&&(s=await Np({blob:s,metadata:oo(e.elements,e.appState,e.files||{},"local")})),i(s)},n,r)})},Qg=async({data:e,config:t})=>{let{elements:n,appState:r}=vi({...e,files:e.files||{}},null,null),o={...r,exportPadding:t?.padding},i=ao(n),a=e.files||{};return hp({data:{elements:i,appState:o,files:a},config:{exportingFrame:t?.exportingFrame,renderEmbeddables:t?.renderEmbeddables,skipInliningFonts:t?.skipInliningFonts,reuseImages:t?.reuseImages}})},LH=async({type:e,data:t,config:n})=>{if(e==="svg"){let r=await Qg({data:t,config:n});await Ls(r.outerHTML)}else if(e==="png")await Pp(zg({data:t,config:n}));else if(e==="json")await vp(t.elements,t.files);else throw new Error("Invalid export type")};var jg=e=>e.type==="diamond"?[u(e.width/2,0),u(e.width,e.height/2),u(e.width/2,e.height),u(0,e.height/2)]:[u(0,0),u(0+e.width,0),u(0+e.width,e.height),u(0,e.height)],e3=e=>ie(e)||Je(e)?e.points:jg(e),Fp=e=>{let t=e.reduce((n,[r,o])=>(n.minY=Math.min(n.minY,o),n.minX=Math.min(n.minX,r),n.maxX=Math.max(n.maxX,r),n.maxY=Math.max(n.maxY,o),n),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,cx:0,cy:0});return t.cx=(t.maxX+t.minX)/2,t.cy=(t.maxY+t.minY)/2,t},_p=e=>{let t=e3(e),{cx:n,cy:r}=Fp(t),o=u(n,r),i=t.map(l=>T(l,o,e.angle)),{minX:a,minY:s,maxX:d,maxY:c}=Fp(i);return[a+e.x,s+e.y,d+e.x,c+e.y]},Op=(e,t,n=!1)=>{let r=_p(e),o=t[0]<=r[0]&&t[2]>=r[2]&&t[1]<=r[1]&&t[3]>=r[3];return n?o?!0:r[0]<=t[0]&&r[2]>=t[2]&&r[1]<=t[1]&&r[3]>=t[3]:o},t3=(e,t)=>{let n=_p(e);return(Pr(n[0],_e(t[0],t[2]))||Pr(t[0],_e(n[0],n[2])))&&(Pr(n[1],_e(t[1],t[3]))||Pr(t[1],_e(n[1],n[3])))},Bp=({elements:e,bounds:t,type:n,errorMargin:r=0})=>{sa(t)&&(t=Ze(t,ee(e)));let o=[t[0]-r,t[1]-r,t[2]+r,t[3]+r],i=new Set;for(let a of e){if(i.has(a.id))continue;if(n==="overlap"?t3(a,o):n==="inside"?Op(a,o):Op(a,o,!0)){if(i.add(a.id),a.boundElements)for(let d of a.boundElements)i.add(d.id);G(a)&&a.containerId&&i.add(a.containerId),j(a)&&(a.startBinding&&i.add(a.startBinding.elementId),a.endBinding&&i.add(a.endBinding?.elementId))}}return e.filter(a=>i.has(a.id))};function Ap(e){return[Math.min(e[0][0],e[1][0]),Math.min(e[0][1],e[1][1]),Math.max(e[0][0],e[1][0]),Math.max(e[0][1],e[1][1])]}function n3(e,t){return e[0]<=t[2]&&e[2]>=t[0]&&e[1]<=t[3]&&e[3]>=t[1]}var r3=1e-6;function Hp(e,t){let n=_(e[1],e[0]),r=_(t,e[0]),o=Me(n,r);return Math.abs(o)<r3}function Ds(e,t){let n=_(e[1],e[0]),r=_(t,e[0]);return Me(n,r)<0}function Kp(e,t){return Hp(e,t[0])||Hp(e,t[1])||(Ds(e,t[0])?!Ds(e,t[1]):Ds(e,t[1]))}function Jp(e,t){return n3(Ap(e),Ap(t))&&Kp(e,t)&&Kp(t,e)}var tK=(e,t,n)=>{let r=ee(e);for(let o of t)if(o.frameId){let i=n.get(o.id),a=n.get(o.frameId);if(i){let s=r.get(i);s&&C(s,{frameId:a??o.frameId},!1)}}};function Ss(e,t,n){let r=Ca(t,n),o=Ca(e,n);return r.some(a=>o.some(s=>Jp(a,s)))}var Cp=(e,t,n)=>Hi(xi(e,t,n,!1)).filter(r=>!de(r)&&!r.frameId||r.frameId===t.id),vs=(e,t,n)=>xi([t],e,n).some(r=>r.id===t.id);var Ai=(e,t,n)=>{let[r,o,i,a]=Y(t,n),[s,d,c,l]=Pe(e);return r<=s&&o<=d&&i>=c&&a>=l},wn=(e,t,n)=>Ai([e],t,n)||Ss(e,t,n)||vs(e,t,n),nK=(e,t,n)=>{let[r,o,i,a]=Y(t,n);return vo(u(r,o),u(e.x,e.y),u(i,a))};var rK=e=>{let t=new Map;for(let n of e){let r=de(n)?n.id:n.frameId;r&&!t.has(r)&&t.set(r,lo(e,r))}return t},lo=(e,t)=>{let n=[];for(let r of e.values())r.frameId===t&&n.push(r);return n},ws=e=>e.filter(t=>de(t)),Rs=e=>{let t=ee(ws(e));return e.filter(n=>t.has(n.id)||!n.frameId||!t.has(n.frameId))},oK=(e,t,n,r)=>{let o=lo(e,t.id),i=new Set(o),a=new Set([...Cp(e,t,r),...o.filter(p=>vs(p,t,r))]),s=o.filter(p=>!a.has(p)),d=new Set(Array.from(a).flatMap(p=>p.groupIds));for(let p of s)if(!Ss(p,t,r))p.groupIds.length===0&&i.delete(p);else if(p.groupIds.length>0)for(let m of p.groupIds)d.add(m);for(let p of s)if(p.groupIds.length>0){let m=!0;for(let b of p.groupIds)d.has(b)&&(m=!1);m&&i.delete(p)}let c=Array.from(a).filter(p=>p.groupIds.length===0);for(let p of c)i.add(p);let l=Array.from(a).filter(p=>p.groupIds.length>0),U=b2(l,n);for(let[p,m]of Object.entries(U))if(m){let b=on(e,p);if(Ai(b,t,r))for(let E of b)i.add(E)}return[...i].filter(p=>!(G(p)&&p.containerId))},iK=(e,t,n)=>o3(Hi(e,Cp(e,t,n)),t,n),o3=(e,t,n)=>{let r=[],o=new Map;for(let i of e){let a=!1;if(i.groupIds.length>0){if(i.groupIds.some(s=>o.get(s)))a=!0;else{let s=new Set(i.groupIds.flatMap(d=>on(n,d)));a=!Ai(Array.from(s),t,n)}i.groupIds.forEach(s=>{o.set(s,a)})}a||r.push(i)}return r},We=(e,t)=>e.frameId&&t.get(e.frameId)||null,aK=(e,t)=>{let n=new Set,r=ee(e);e=Hi(e);for(let a of e)de(a)&&a.id!==t.id&&n.add(a.id);let o=new Set,i=[];for(let a of e)if(!(de(a)||a.frameId&&n.has(a.frameId)))if(a.groupIds.length){let s=a.groupIds.at(-1);if(!o.has(s)){o.add(s);let d=on(e,s);if(d.some(c=>wn(c,t,r)))for(let c of d)i.push(c)}}else wn(a,t,r)&&i.push(a);return i},i3=(e,t,n,r)=>{let o=ee(e),i=new Map;for(let c of e.values())c.frameId===n.id&&i.set(c.id,!0);let a=new Set(t.map(c=>c.id)),s=[],d=new Set;for(let c of t)de(c)&&c.id!==n.id&&d.add(c.id);for(let c of Hi(e,t)){if(de(c)||c.frameId&&d.has(c.frameId)||c.frameId&&r.selectedElementIds[c.id]&&r.selectedElementIds[c.frameId])continue;i.has(c.id)||s.push(c);let l=re(c,o);l&&!a.has(l.id)&&!i.has(l.id)&&s.push(l)}for(let c of s)C(c,{frameId:n.id},!1);return e},Yp=(e,t)=>{let n=new Map,r=new Map;for(let o of e)if(o.frameId){n.set(o.id,o);let i=r.get(o.frameId)||[];i.push(o);let a=re(o,t);a&&(n.set(a.id,a),i.push(a)),r.set(o.frameId,i)}for(let[,o]of n)C(o,{frameId:null},!1)},a3=(e,t)=>{let n=lo(e,t.id);return Yp(n,ee(e)),e},sK=(e,t,n,r)=>i3(a3(e,n),t,n,r.state).slice(),dK=(e,t,n)=>{let r=n.scene.getSelectedElements({selectedElementIds:t.selectedElementIds,elements:e}),o=new Set(r);if(t.editingGroupId)for(let s of r)s.groupIds.length===0?o.add(s):s.groupIds.flatMap(d=>on(e,d)).forEach(d=>o.add(d));let i=new Set,a=ee(e);return o.forEach(s=>{s.frameId&&!de(s)&&!Vp(s,a,t)&&i.add(s)}),i.size>0&&Yp(i,a),e},Hi=(e,t)=>{let n=new Set,r=t||e;for(let a of r.values()){let s=a.groupIds[a.groupIds.length-1];s&&n.add(s)}let o=new Set;for(let a of n)on(e,a).some(s=>de(s))&&o.add(a);let i=[];for(let a of r.values())o.has(a.groupIds[a.groupIds.length-1])||i.push(a);return i},Pi=(e,t,n)=>{let r=G(e)&&Ye(e,t)||e;return r.frameId&&n.selectedElementIds[r.id]&&n.selectedElementIds[r.frameId]?We(r,t):n.selectedElementIds[r.id]&&n.selectedElementsAreBeingDragged?n.frameToHighlight:We(r,t)},Vp=(e,t,n,r)=>{let o=r?.targetFrame??Pi(e,t,n);if(!o)return!1;let i=G(e)&&Ye(e,t)||e,a=d=>{r?.checkedGroups&&i.groupIds.forEach(c=>{r.checkedGroups?.set(c,d)})};if(!n.selectedElementIds[i.id]||!n.selectedElementsAreBeingDragged||n.selectedElementIds[i.id]&&n.selectedElementIds[o.id])return!0;if(i.groupIds.length===0)return wn(i,o,t);for(let d of i.groupIds)if(r?.checkedGroups?.has(d))return r.checkedGroups.get(d);let s=new Set(i.groupIds.filter(d=>r?.checkedGroups?!r.checkedGroups.has(d):!0).flatMap(d=>on(t,d)));if(n.editingGroupId&&n.selectedElementsAreBeingDragged){let d=new Set(ot(t,n));if(n.frameToHighlight!==null)return!0;d.forEach(l=>{s.delete(l)})}for(let d of s)if(de(d))return a(!1),!1;for(let d of s)if(wn(d,o,t))return a(!0),!0;return!1},ys=(e,t,n,r,o)=>{if(!n.frameRendering||!n.frameRendering.clip)return!1;let i=Ss(e,t,r)||vs(e,t,r);if(i){for(let a of e.groupIds)o?.set(a,!0);return!0}if(!i&&e.groupIds.length>0&&!Ai([e],t,r)){let a=!1;if(n.selectedElementsAreBeingDragged)a=Vp(e,r,n,{targetFrame:t,checkedGroups:o});else{a=e.frameId===t.id;for(let s of e.groupIds)o?.set(s,a)}for(let s of e.groupIds)o?.set(s,a);return a}return!1},wp=e=>e.name===null?Pd(e)?"Frame":"AI Frame":e.name,Rp=(e,t)=>Bp({elements:e,bounds:t,type:"overlap"}).filter(n=>!n.frameId||n.frameId===t.id),cK=e=>{let t=ee(e);return e.length>1&&e.some(n=>n.frameId&&t.has(n.frameId))};var s3=e=>{let t=new Set;return e.forEach(n=>{de(n)&&t.add(n.id)}),e.filter(n=>!(n.frameId&&t.has(n.frameId)))},xi=(e,t,n,r=!0)=>{let[o,i,a,s]=Y(t,n),d=e.filter(c=>{let[l,U,p,m]=Ze(c,n),b=We(c,n);if(b){let[E,g,y,x]=Ze(b,n);l=Math.max(E,l),U=Math.max(g,U),p=Math.min(y,p),m=Math.min(x,m)}return c.locked===!1&&c.type!=="selection"&&!Fe(c)&&o<=l&&i<=U&&a>=p&&s>=m});return d=r?s3(d):d,d=d.filter(c=>{let l=We(c,n);return l?wn(c,l,n):!0}),d},ns=(e,t,n,r)=>{let o=new Set(t.map(i=>i.id));return e.filter(i=>{let a=qp(i,n.width,n.height,n,r);return!o.has(i.id)&&a})},vE=function(){let e=null,t=null,n=null,r=(o,i)=>(n!=null&&o===e&&i.selectedElementIds===t||(n=o.some(a=>i.selectedElementIds[a.id]),e=o,t=i.selectedElementIds),n);return r.clearCache=()=>{e=null,t=null,n=null},r}(),$E=(e,t,n)=>{let r=Array.from(new Set(ot(e,t).map(o=>n(o))));return r.length===1?r[0]:null},ot=(e,t,n)=>{let r=new Set,o=[];for(let i of e.values()){if(t.selectedElementIds[i.id]){o.push(i),r.add(i.id);continue}if(n?.includeBoundTextElement&&Fe(i)&&t.selectedElementIds[i?.containerId]){o.push(i),r.add(i.id);continue}}if(n?.includeElementsInFrames){let i=[];return o.forEach(a=>{de(a)&&lo(e,a.id).forEach(s=>!r.has(s.id)&&i.push(s)),i.push(a)}),i}return o},PE=(e,t)=>t.editingTextElement?[t.editingTextElement]:t.newElement?[t.newElement]:ot(e,t,{includeBoundTextElement:!0}),ja=(e,t)=>zt(t.selectedElementIds,e)?t.selectedElementIds:e;var Gp=e=>{let t=new Map,n=[];for(let r of e)r.isDeleted||(n.push(r),t.set(r.id,r));return{elementsMap:t,elements:n}},c3=d3(e=>{(L.DEV||L.MODE===je.TEST||window?.DEBUG_FRACTIONAL_INDICES)&&ds(e,{shouldThrow:L.DEV||L.MODE===je.TEST,includeBoundTextValidation:!0})},1e3*60,{leading:!0,trailing:!1}),l3=e=>{let t=["includeBoundTextElement","includeElementsInFrames"],n="";for(let r of t)n+=`${r}:${e[r]?"1":"0"}`;return n},Xp=e=>typeof e=="string",Jn=class Jn{constructor(){P(this,"callbacks",new Set);P(this,"nonDeletedElements",[]);P(this,"nonDeletedElementsMap",Ve(new Map));P(this,"elements",[]);P(this,"nonDeletedFramesLikes",[]);P(this,"frames",[]);P(this,"elementsMap",Ve(new Map));P(this,"selectedElementsCache",{selectedElementIds:null,elements:null,cache:new Map});P(this,"sceneNonce");P(this,"insertElement",t=>{let n=t.frameId?this.getElementIndex(t.frameId):this.elements.length;this.insertElementAtIndex(t,n)});P(this,"insertElements",t=>{if(!t.length)return;let n=t[0]?.frameId?this.getElementIndex(t[0].frameId):this.elements.length;this.insertElementsAtIndex(t,n)});P(this,"getContainerElement",t=>t&&t.containerId&&this.getElement(t.containerId)||null);P(this,"getElementsFromId",t=>{let n=this.getNonDeletedElementsMap(),r=n.get(t);return r?[r]:on(n,t)})}static mapElementToScene(t,n){Xp(t)?this.sceneMapById.set(t,n):(this.sceneMapByElement.set(t,n),this.sceneMapById.set(t.id,n))}static getScene(t){return Xp(t)?this.sceneMapById.get(t)||null:this.sceneMapByElement.get(t)||null}getSceneNonce(){return this.sceneNonce}getNonDeletedElementsMap(){return this.nonDeletedElementsMap}getElementsIncludingDeleted(){return this.elements}getElementsMapIncludingDeleted(){return this.elementsMap}getNonDeletedElements(){return this.nonDeletedElements}getFramesIncludingDeleted(){return this.frames}getSelectedElements(t){let n=l3(t),r=t?.elements||this.nonDeletedElements;if(this.selectedElementsCache.elements===r&&this.selectedElementsCache.selectedElementIds===t.selectedElementIds){let i=this.selectedElementsCache.cache.get(n);if(i)return i}else t?.elements==null&&this.selectedElementsCache.cache.clear();let o=ot(r,{selectedElementIds:t.selectedElementIds},t);return t?.elements==null&&(this.selectedElementsCache.selectedElementIds=t.selectedElementIds,this.selectedElementsCache.elements=this.nonDeletedElements,this.selectedElementsCache.cache.set(n,o)),o}getNonDeletedFramesLikes(){return this.nonDeletedFramesLikes}getElement(t){return this.elementsMap.get(t)||null}getNonDeletedElement(t){let n=this.getElement(t);return n&&kp(n)?n:null}mapElements(t){let n=!1,r=this.elements.map(o=>{let i=t(o);return i!==o&&(n=!0),i});return n&&this.replaceAllElements(r),n}replaceAllElements(t){let n=t instanceof Array?t:Array.from(t.values()),r=[];c3(n),this.elements=Hn(n),this.elementsMap.clear(),this.elements.forEach(i=>{de(i)&&r.push(i),this.elementsMap.set(i.id,i),Jn.mapElementToScene(i,this)});let o=Gp(this.elements);this.nonDeletedElements=o.elements,this.nonDeletedElementsMap=o.elementsMap,this.frames=r,this.nonDeletedFramesLikes=Gp(this.frames).elements,this.triggerUpdate()}triggerUpdate(){this.sceneNonce=Ct();for(let t of Array.from(this.callbacks))t()}onUpdate(t){if(this.callbacks.has(t))throw new Error;return this.callbacks.add(t),()=>{if(!this.callbacks.has(t))throw new Error;this.callbacks.delete(t)}}destroy(){this.elements=[],this.nonDeletedElements=[],this.nonDeletedFramesLikes=[],this.frames=[],this.elementsMap.clear(),this.selectedElementsCache.selectedElementIds=null,this.selectedElementsCache.elements=null,this.selectedElementsCache.cache.clear(),Jn.sceneMapById.forEach((t,n)=>{t===this&&Jn.sceneMapById.delete(n)}),this.callbacks.clear()}insertElementAtIndex(t,n){if(!Number.isFinite(n)||n<0)throw new Error("insertElementAtIndex can only be called with index >= 0");let r=[...this.elements.slice(0,n),t,...this.elements.slice(n)];Qr(r,ee([t])),this.replaceAllElements(r)}insertElementsAtIndex(t,n){if(!t.length)return;if(!Number.isFinite(n)||n<0)throw new Error("insertElementAtIndex can only be called with index >= 0");let r=[...this.elements.slice(0,n),...t,...this.elements.slice(n)];Qr(r,ee(t)),this.replaceAllElements(r)}getElementIndex(t){return this.elements.findIndex(n=>n.id===t)}};P(Jn,"sceneMapByElement",new WeakMap),P(Jn,"sceneMapById",new Map);var $s=Jn,Ps=$s;var Uo=class{constructor(t){this.scoreFunction=t;P(this,"content",[])}sinkDown(t){let n=this.content[t];for(;t>0;){let r=(t+1>>1)-1,o=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(o))this.content[r]=n,this.content[t]=o,t=r;else break}}bubbleUp(t){let n=this.content.length,r=this.content[t],o=this.scoreFunction(r);for(;;){let i=t+1<<1,a=i-1,s=null,d=0;if(a<n){let c=this.content[a];d=this.scoreFunction(c),d<o&&(s=a)}if(i<n){let c=this.content[i];this.scoreFunction(c)<(s===null?o:d)&&(s=i)}if(s!==null)this.content[t]=this.content[s],this.content[s]=r,t=s;else break}}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};var Fs=1,ue=40,U3=(e,t)=>{let n=e.fixedSegments?e.fixedSegments.slice():null;if(n){let r=[];e.points.map(a=>u(e.x+a[0],e.y+a[1])).forEach((a,s,d)=>{if(s<2)return r.push(a);let c=rr(a,d[s-1]),l=rr(d[s-1],d[s-2]);if($e(c,l)){let U=n?.findIndex(m=>m.index===s-1)??-1,p=n?.findIndex(m=>m.index===s)??-1;p!==-1&&(n[p].start=u(d[s-2][0]-e.x,d[s-2][1]-e.y)),U!==-1&&n.splice(U,1),r.splice(-1,1),n.forEach(m=>{m.index>s-1&&(m.index-=1)})}return r.push(a)});let o=[];r.forEach((a,s,d)=>{if(s<3)return o.push(a);if(oe(d[s-2],d[s-1])<Fs){let c=n?.findIndex(p=>p.index===s-2)??-1,l=n?.findIndex(p=>p.index===s-1)??-1;l!==-1&&n.splice(l,1),c!==-1&&n.splice(c,1),o.splice(-2,2),n.forEach(p=>{p.index>s-2&&(p.index-=2)});let U=wt(a,d[s-1]);return o.push(u(U?a[0]:d[s-2][0],U?d[s-2][1]:a[1]))}o.push(a)});let i=n.filter(a=>a.index!==1&&a.index!==o.length-1);return i.length===0?Mn(Bs(As(_s(e,Os(e,t,o.map(a=>u(a[0]-e.x,a[1]-e.y))))??[])),i,null,null):(L.DEV&&Be(n6(o),"Invalid elbow points with fixed segments"),Mn(o,i,e.startIsSpecial,e.endIsSpecial))}return{x:e.x,y:e.y,points:e.points,fixedSegments:e.fixedSegments,startIsSpecial:e.startIsSpecial,endIsSpecial:e.endIsSpecial}},f3=(e,t,n)=>{let r=t.map(M=>M.index),i=(e.fixedSegments?.map(M=>M.index)??[]).findIndex(M=>!r.includes(M));if(i===-1||!e.fixedSegments?.[i])return{points:e.points};let a=e.fixedSegments[i].index,s=e.fixedSegments[i-1],d=e.fixedSegments[i+1],c=e.x+(s?s.end[0]:0),l=e.y+(s?s.end[1]:0),{startHeading:U,endHeading:p,startGlobalPoint:m,endGlobalPoint:b,hoveredStartElement:E,hoveredEndElement:g,...y}=Os({x:c,y:l,startBinding:s?null:e.startBinding,endBinding:d?null:e.endBinding,startArrowhead:null,endArrowhead:null},n,[u(0,0),u(e.x+(d?.start[0]??e.points[e.points.length-1][0])-c,e.y+(d?.start[1]??e.points[e.points.length-1][1])-l)],{isDragging:!1}),{points:x}=Mn(Bs(As(_s(e,{startHeading:U,endHeading:p,startGlobalPoint:m,endGlobalPoint:b,hoveredStartElement:E,hoveredEndElement:g,...y})??[])),t,null,null),h=[];if(s)for(let M=0;M<s.index;M++)h.push(u(e.x+e.points[M][0],e.y+e.points[M][1]));if(x.forEach(M=>{h.push(u(e.x+(s?s.end[0]:0)+M[0],e.y+(s?s.end[1]:0)+M[1]))}),d)for(let M=d.index;M<e.points.length;M++)h.push(u(e.x+e.points[M][0],e.y+e.points[M][1]));let I=(d?.index??e.points.length)-(s?.index??0)-1,w=t.map(M=>M.index>a?{...M,index:M.index-I+(x.length-1)}:M),v=h.flatMap((M,S)=>{let F=h[S-1],$=h[S+1];if(F&&$){let O=rr(M,F),A=rr($,M);if($e(O,A))return w.forEach(Z=>{Z.index>S&&(Z.index-=1)}),[];if($e(O,Ha(A)))return w.forEach(Z=>{Z.index>S&&(Z.index+=1)}),[M,M]}return[M]});return Mn(v,w,!1,!1)},p3=(e,t,n,r,o,i)=>{let a=t.map((w,v)=>e.fixedSegments==null||e.fixedSegments[v]===void 0||e.fixedSegments[v].index!==w.index||(w.start[0]!==e.fixedSegments[v].start[0]&&w.end[0]!==e.fixedSegments[v].end[0])!=(w.start[1]!==e.fixedSegments[v].start[1]&&w.end[1]!==e.fixedSegments[v].end[1])?v:null).filter(w=>w!==null).shift();if(a==null)return{points:e.points};let s=e.fixedSegments?.findIndex(w=>w.index===1)??-1,d=e.fixedSegments?.findIndex(w=>w.index===e.points.length-1)??-1,c=oe(t[a].start,t[a].end),l=c<ue+5;if(s===-1&&t[a].index===1&&o){let w=Rt(n),M=(w?$e(n,Re):$e(n,Oe))?l?c/2:ue:l?-c/2:-ue;t[a].start=u(t[a].start[0]+(w?M:0),t[a].start[1]+(w?0:M))}if(d===-1&&t[a].index===e.points.length-1&&i){let w=Rt(r),M=(w?$e(r,Re):$e(r,Oe))?l?c/2:ue:l?-c/2:-ue;t[a].end=u(t[a].end[0]+(w?M:0),t[a].end[1]+(w?0:M))}let U=t.map(w=>({...w,start:u(e.x+w.start[0],e.y+w.start[1]),end:u(e.x+w.end[0],e.y+w.end[1])})),p=e.points.map((w,v)=>u(e.x+w[0],e.y+w[1])),m=U[a].index-1,b=U[a].index,E=U[a].start,g=U[a].end,y=p[m-1]&&!He(p[m],p[m-1])?wt(p[m-1],p[m]):void 0,x=p[b+1]&&!He(p[b],p[b+1])?wt(p[b+1],p[b]):void 0;if(y!==void 0){let w=y?1:0;p[m-1][w]=E[w]}if(p[m]=E,p[b]=g,x!==void 0){let w=x?1:0;p[b+1][w]=g[w]}let h=U.findIndex(w=>w.index===m);if(h!==-1){let w=wt(U[h].end,U[h].start)?1:0;U[h].start[w]=E[w],U[h].end=E}let I=U.findIndex(w=>w.index===b+1);if(I!==-1){let w=wt(U[I].end,U[I].start)?1:0;U[I].end[w]=g[w],U[I].start=g}if(s===-1&&m===0){let w=o?Rt(n):wt(p[1],p[0]);p.unshift(u(w?E[0]:e.x+e.points[0][0],w?e.y+e.points[0][1]:E[1])),o&&p.unshift(u(e.x+e.points[0][0],e.y+e.points[0][1]));for(let v of U)v.index+=o?2:1}if(d===-1&&b===e.points.length-1){let w=Rt(r);p.push(u(w?g[0]:e.x+e.points[e.points.length-1][0],w?e.y+e.points[e.points.length-1][1]:g[1])),i&&p.push(u(e.x+e.points[e.points.length-1][0],e.y+e.points[e.points.length-1][1]))}return Mn(p,U.map(w=>({...w,start:u(w.start[0]-e.x,w.start[1]-e.y),end:u(w.end[0]-e.x,w.end[1]-e.y)})),!1,!1)},u3=(e,t,n,r,o,i,a,s,d)=>{let c=e.startIsSpecial??null,l=e.endIsSpecial??null,U=t.map((g,y)=>y===0?u(e.x+g[0],e.y+g[1]):y===t.length-1?u(e.x+g[0],e.y+g[1]):u(e.x+e.points[y][0],e.y+e.points[y][1])),p=n.map(g=>({...g,start:u(e.x+(g.start[0]-t[0][0]),e.y+(g.start[1]-t[0][1])),end:u(e.x+(g.end[0]-t[0][0]),e.y+(g.end[1]-t[0][1]))})),m=[],b=2+(c?1:0),E=2+(l?1:0);for(;m.length+b<U.length-E;)m.push(U[m.length+b]);{let g=U[c?2:1],y=U[c?3:2],x=Rt(r),h=Rt(At(_(g,y)));if(s&&x===h){let I=x?$e(r,Re):$e(r,Oe);if(m.unshift(u(h?i[0]+(I?ue:-ue):y[0],h?y[1]:i[1]+(I?ue:-ue))),m.unshift(u(x?i[0]+(I?ue:-ue):i[0],x?i[1]:i[1]+(I?ue:-ue))),!c){c=!0;for(let w of p)w.index>1&&(w.index+=1)}}else if(m.unshift(u(h?i[0]:g[0],h?g[1]:i[1])),c){c=!1;for(let I of p)I.index>1&&(I.index-=1)}m.unshift(i)}{let g=U[U.length-(l?3:2)],y=U[U.length-(l?4:3)],x=Rt(o),h=wt(y,g);if(d&&x===h){let I=x?$e(o,Re):$e(o,Oe);m.push(u(h?a[0]+(I?ue:-ue):y[0],h?y[1]:a[1]+(I?ue:-ue))),m.push(u(x?a[0]+(I?ue:-ue):a[0],x?a[1]:a[1]+(I?ue:-ue))),l||(l=!0)}else m.push(u(h?a[0]:g[0],h?g[1]:a[1])),l&&(l=!1)}return m.push(a),Mn(m,p.map(({index:g})=>({index:g,start:m[g-1],end:m[g]})).map(g=>({...g,start:u(g.start[0]-i[0],g.start[1]-i[1]),end:u(g.end[0]-i[0],g.end[1]-i[1])})),c,l)},xe=1e6,e6=(e,t,n,r)=>{if(e.points.length<2)return{points:n.points??e.points};if((e.x<-xe||e.x>xe||e.y<-xe||e.y>xe||e.x+(n?.points?.[n?.points?.length-1]?.[0]??0)<-xe||e.x+(n?.points?.[n?.points?.length-1]?.[0]??0)>xe||e.y+(n?.points?.[n?.points?.length-1]?.[1]??0)<-xe||e.y+(n?.points?.[n?.points?.length-1]?.[1]??0)>xe||e.x+(e?.points?.[e?.points?.length-1]?.[0]??0)<-xe||e.x+(e?.points?.[e?.points?.length-1]?.[0]??0)>xe||e.y+(e?.points?.[e?.points?.length-1]?.[1]??0)<-xe||e.y+(e?.points?.[e?.points?.length-1]?.[1]??0)>xe)&&console.error("Elbow arrow (or update) is outside reasonable bounds (> 1e6)",{arrow:e,updates:n}),e.x=se(e.x,-xe,xe),e.y=se(e.y,-xe,xe),n.points&&(n.points=n.points.map(([m,b])=>u(se(m,-xe,xe),se(b,-xe,xe)))),L.PROD||(Be(!n.points||n.points.length>=2,"Updated point array length must match the arrow point length, contain exactly the new start and end points or not be specified at all (i.e. you can't add new points between start and end manually to elbow arrows)"),Be(!e.fixedSegments||e.fixedSegments.map(m=>m.start[0]===m.end[0]||m.start[1]===m.end[1]).every(Boolean),"Fixed segments must be either horizontal or vertical"),Be(!n.fixedSegments||n.fixedSegments.map(m=>m.start[0]===m.end[0]||m.start[1]===m.end[1]).every(Boolean),"Updates to fixed segments must be either horizontal or vertical"),Be(e.points.slice(1).map((m,b)=>m[0]===e.points[b][0]||m[1]===e.points[b][1]),"Elbow arrow segments must be either horizontal or vertical")),t.size===0&&n.points&&n6(n.points))return Mn(n.points.map(m=>u(e.x+m[0],e.y+m[1])),e.fixedSegments,e.startIsSpecial,e.endIsSpecial);let o=n.points?n.points&&n.points.length===2?e.points.map((m,b)=>b===0?n.points[0]:b===e.points.length-1?n.points[1]:m):n.points.slice():e.points.slice(),{startHeading:i,endHeading:a,startGlobalPoint:s,endGlobalPoint:d,hoveredStartElement:c,hoveredEndElement:l,...U}=Os({x:e.x,y:e.y,startBinding:typeof n.startBinding<"u"?n.startBinding:e.startBinding,endBinding:typeof n.endBinding<"u"?n.endBinding:e.endBinding,startArrowhead:e.startArrowhead,endArrowhead:e.endArrowhead},t,o,r),p=n.fixedSegments??e.fixedSegments??[];return!n.points&&!n.fixedSegments&&!n.startBinding&&!n.endBinding?U3(e,t):n.startBinding===e.startBinding&&n.endBinding===e.endBinding?{}:p.length===0?Mn(Bs(As(_s(e,{startHeading:i,endHeading:a,startGlobalPoint:s,endGlobalPoint:d,hoveredStartElement:c,hoveredEndElement:l,...U})??[])),p,null,null):(e.fixedSegments?.length??0)>p.length?f3(e,p,t):n.points?n.points&&n.fixedSegments?n:u3(e,o,p,i,a,s,d,c,l):p3(e,p,i,a,c,l)},Os=(e,t,n,r)=>{let o=un(n[0],ve(e.x,e.y)),i=un(n[n.length-1],ve(e.x,e.y)),a=e.startBinding&&Wp(e.startBinding.elementId,t),s=e.endBinding&&Wp(e.endBinding.elementId,t),[d,c]=r?.isDragging?I3(o,i,t,r?.zoom):[a,s],l=zp({...e,elbowed:!0,points:n},"start",e.startBinding?.fixedPoint,o,a,d,r?.isDragging),U=zp({...e,elbowed:!0,points:n},"end",e.endBinding?.fixedPoint,i,s,c,r?.isDragging),p=Qp(l,U,t,d,o),m=Qp(U,l,t,c,i),b=[l[0]-2,l[1]-2,l[0]+2,l[1]+2],E=[U[0]-2,U[1]-2,U[0]+2,U[1]+2],g=d?ht(d,Tn(p,e.startArrowhead?be*6:be*2,1)):b,y=c?ht(c,Tn(m,e.endArrowhead?be*6:be*2,1)):E,x=xn(l,c?ht(c,Tn(m,ue,ue)):E)||xn(U,d?ht(d,Tn(p,ue,ue)):b),h=t6(x?[b,E]:[g,y]),I=E3(x?b:g,x?E:y,h,x?Tn(p,!d&&!c?0:ue,0):Tn(p,!d&&!c?0:ue-(e.startArrowhead?be*6:be*2),ue),x?Tn(m,!d&&!c?0:ue,0):Tn(m,!d&&!c?0:ue-(e.endArrowhead?be*6:be*2),ue),x,d&&ht(d),c&&ht(c)),w=Zp(I[0],p,l),v=Zp(I[1],m,U);return{dynamicAABBs:I,startDonglePosition:w,startGlobalPoint:l,startHeading:p,endDonglePosition:v,endGlobalPoint:U,endHeading:m,commonBounds:h,hoveredStartElement:d,hoveredEndElement:c,boundsOverlap:x,startElementBounds:g,endElementBounds:y}},_s=(e,t)=>{let{dynamicAABBs:n,startDonglePosition:r,startGlobalPoint:o,startHeading:i,endDonglePosition:a,endGlobalPoint:s,endHeading:d,commonBounds:c,hoveredEndElement:l}=t,U=g3(n,r||o,i,a||s,d,c),p=r&&Ki(r,U),m=a&&Ki(a,U),b=Ki(s,U);b&&l&&(b.closed=!0);let E=Ki(o,U);E&&e.startBinding&&(E.closed=!0);let g=p&&m&&(xn(p.pos,n[1])||xn(m.pos,n[0])),y=m3(p||E,m||b,U,i||Re,d||Re,g?[]:n);if(y){let x=y.map(h=>[h.pos[0],h.pos[1]]);return p&&x.unshift(o),m&&x.push(s),x}return null},Tn=(e,t,n)=>{switch(e){case ze:return[t,n,n,n];case Re:return[n,t,n,n];case Oe:return[n,n,t,n]}return[n,n,n,t]},m3=(e,t,n,r,o,i)=>{let a=Ns(e.pos,t.pos),s=new Uo(d=>d.f);for(s.push(e);s.size()>0;){let d=s.pop();if(!d||d.closed)continue;if(d===t)return b3(e,d);d.closed=!0;let c=h3(d.addr,n);for(let l=0;l<4;l++){let U=c[l];if(!U||U.closed)continue;let p=pt(U.pos,d.pos,.5);if(vd(...i.map(I=>xn(p,I))))continue;let m=y3(l),b=d.parent?At(_(d.pos,d.parent.pos)):r,E=Ha(b);if($e(E,m)||jp(e.addr,U.addr)&&$e(m,r)||jp(t.addr,U.addr)&&$e(m,o))continue;let y=b!==m,x=d.g+Ns(U.pos,d.pos)+(y?Math.pow(a,3):0),h=U.visited;if(!h||x<U.g){let I=x3(U,t,m,o);U.visited=!0,U.parent=d,U.h=Ns(t.pos,U.pos)+I*Math.pow(a,2),U.g=x,U.f=U.g+U.h,h?s.rescoreElement(U):s.push(U)}}}return null},b3=(e,t)=>{let n=t,r=[];for(;n.parent;)r.unshift(n),n=n.parent;return r.unshift(e),r},Ns=(e,t)=>Math.abs(e[0]-t[0])+Math.abs(e[1]-t[1]),E3=(e,t,n,r,o,i,a,s)=>{let d=a??e,c=s??t,[l,U,p,m]=r??[0,0,0,0],[b,E,g,y]=o??[0,0,0,0],x=[e[0]>t[2]?e[1]>t[3]||e[3]<t[1]?Math.min((d[0]+c[2])/2,e[0]-m):(d[0]+c[2])/2:e[0]>t[0]?e[0]-m:n[0]-m,e[1]>t[3]?e[0]>t[2]||e[2]<t[0]?Math.min((d[1]+c[3])/2,e[1]-l):(d[1]+c[3])/2:e[1]>t[1]?e[1]-l:n[1]-l,e[2]<t[0]?e[1]>t[3]||e[3]<t[1]?Math.max((d[2]+c[0])/2,e[2]+U):(d[2]+c[0])/2:e[2]<t[2]?e[2]+U:n[2]+U,e[3]<t[1]?e[0]>t[2]||e[2]<t[0]?Math.max((d[3]+c[1])/2,e[3]+p):(d[3]+c[1])/2:e[3]<t[3]?e[3]+p:n[3]+p],h=[t[0]>e[2]?t[1]>e[3]||t[3]<e[1]?Math.min((c[0]+d[2])/2,t[0]-y):(c[0]+d[2])/2:t[0]>e[0]?t[0]-y:n[0]-y,t[1]>e[3]?t[0]>e[2]||t[2]<e[0]?Math.min((c[1]+d[3])/2,t[1]-b):(c[1]+d[3])/2:t[1]>e[1]?t[1]-b:n[1]-b,t[2]<e[0]?t[1]>e[3]||t[3]<e[1]?Math.max((c[2]+d[0])/2,t[2]+E):(c[2]+d[0])/2:t[2]<e[2]?t[2]+E:n[2]+E,t[3]<e[1]?t[0]>e[2]||t[2]<e[0]?Math.max((c[3]+d[1])/2,t[3]+g):(c[3]+d[1])/2:t[3]<e[3]?t[3]+g:n[3]+g],I=t6([x,h]);if(!i&&x[2]-x[0]+h[2]-h[0]>I[2]-I[0]+1e-11&&x[3]-x[1]+h[3]-h[1]>I[3]-I[1]+1e-11){let[w,v]=[(h[0]+h[2])/2,(h[1]+h[3])/2];if(t[0]>e[2]&&e[1]>t[3]){let M=x[2]+(h[0]-x[2])/2,S=h[3]+(x[1]-h[3])/2;return Me(ve(e[2]-w,e[1]-v),ve(e[0]-w,e[3]-v))>0?[[x[0],x[1],M,x[3]],[M,h[1],h[2],h[3]]]:[[x[0],S,x[2],x[3]],[h[0],h[1],h[2],S]]}else if(e[2]<t[0]&&e[3]<t[1]){let M=x[2]+(h[0]-x[2])/2,S=x[3]+(h[1]-x[3])/2;return Me(ve(e[0]-w,e[1]-v),ve(e[2]-w,e[3]-v))>0?[[x[0],x[1],x[2],S],[h[0],S,h[2],h[3]]]:[[x[0],x[1],M,x[3]],[M,h[1],h[2],h[3]]]}else if(e[0]>t[2]&&e[3]<t[1]){let M=h[2]+(x[0]-h[2])/2,S=x[3]+(h[1]-x[3])/2;return Me(ve(e[2]-w,e[1]-v),ve(e[0]-w,e[3]-v))>0?[[M,x[1],x[2],x[3]],[h[0],h[1],M,h[3]]]:[[x[0],x[1],x[2],S],[h[0],S,h[2],h[3]]]}else if(e[0]>t[2]&&e[1]>t[3]){let M=h[2]+(x[0]-h[2])/2,S=h[3]+(x[1]-h[3])/2;return Me(ve(e[0]-w,e[1]-v),ve(e[2]-w,e[3]-v))>0?[[M,x[1],x[2],x[3]],[h[0],h[1],M,h[3]]]:[[x[0],S,x[2],x[3]],[h[0],h[1],h[2],S]]}}return[x,h]},g3=(e,t,n,r,o,i)=>{let a=new Set,s=new Set;n===et||n===Re?s.add(t[1]):a.add(t[0]),o===et||o===Re?s.add(r[1]):a.add(r[0]),e.forEach(l=>{a.add(l[0]),a.add(l[2]),s.add(l[1]),s.add(l[3])}),a.add(i[0]),a.add(i[2]),s.add(i[1]),s.add(i[3]);let d=Array.from(s).sort((l,U)=>l-U),c=Array.from(a).sort((l,U)=>l-U);return{row:d.length,col:c.length,data:d.flatMap((l,U)=>c.map((p,m)=>({f:0,g:0,h:0,closed:!1,visited:!1,parent:null,addr:[m,U],pos:[p,l]})))}},Zp=(e,t,n)=>{switch(t){case ze:return u(n[0],e[1]);case Re:return u(e[2],n[1]);case Oe:return u(n[0],e[3])}return u(e[0],n[1])},x3=(e,t,n,r)=>{if(r===Re)switch(n){case Re:return e.pos[0]>=t.pos[0]?4:e.pos[1]===t.pos[1]?0:2;case ze:return e.pos[1]>t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case Oe:return e.pos[1]<t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case et:return e.pos[1]===t.pos[1]?4:2}else if(r===et)switch(n){case Re:return e.pos[1]===t.pos[1]?4:2;case ze:return e.pos[1]>t.pos[1]&&e.pos[0]>t.pos[0]?1:3;case Oe:return e.pos[1]<t.pos[1]&&e.pos[0]>t.pos[0]?1:3;case et:return e.pos[0]<=t.pos[0]?4:e.pos[1]===t.pos[1]?0:2}else if(r===ze)switch(n){case Re:return e.pos[1]>t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case ze:return e.pos[1]>=t.pos[1]?4:e.pos[0]===t.pos[0]?0:2;case Oe:return e.pos[0]===t.pos[0]?4:2;case et:return e.pos[1]>t.pos[1]&&e.pos[0]>t.pos[0]?1:3}else if(r===Oe)switch(n){case Re:return e.pos[1]<t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case ze:return e.pos[0]===t.pos[0]?4:2;case Oe:return e.pos[1]<=t.pos[1]?4:e.pos[0]===t.pos[0]?0:2;case et:return e.pos[1]<t.pos[1]&&e.pos[0]>t.pos[0]?1:3}return 0},h3=([e,t],n)=>[fo([e,t-1],n),fo([e+1,t],n),fo([e,t+1],n),fo([e-1,t],n)],fo=([e,t],n)=>e<0||e>=n.col||t<0||t>=n.row?null:n.data[t*n.col+e]??null,Ki=(e,t)=>{for(let n=0;n<t.col;n++)for(let r=0;r<t.row;r++){let o=fo([n,r],t);if(o&&e[0]===o.pos[0]&&e[1]===o.pos[1])return o}return null},t6=e=>[Math.min(...e.map(t=>t[0])),Math.min(...e.map(t=>t[1])),Math.max(...e.map(t=>t[2])),Math.max(...e.map(t=>t[3]))],Wp=(e,t)=>{let n=t.get(e);return n&&bt(n)?n:null},Mn=(e,t,n,r)=>{let o=e[0][0],i=e[0][1],a=e.map(s=>un(s,me(_(e[0]),-1)));return(o<-xe||o>xe||i<-xe||i>xe||o+a[a.length-1][0]<-xe||i+a[a.length-1][0]>xe||o+a[a.length-1][1]<-xe||i+a[a.length-1][1]>xe)&&console.error("Elbow arrow normalization is outside reasonable bounds (> 1e6)",{x:o,y:i,points:a,...hn(a)}),a=a.map(([s,d])=>u(se(s,-1e6,1e6),se(d,-1e6,1e6))),{points:a,x:se(o,-1e6,1e6),y:se(i,-1e6,1e6),fixedSegments:(t?.length??0)>0?t:null,...hn(a),startIsSpecial:n,endIsSpecial:r}},Bs=e=>{if(e.length>1){let t=Math.abs(e[0][1]-e[1][1])<Math.abs(e[0][0]-e[1][0]);return e.filter((n,r)=>{if(r===0||r===e.length-1)return!0;let o=e[r+1],i=Math.abs(n[1]-o[1])<Math.abs(n[0]-o[0]);return t===i?(t=i,!1):(t=i,!0)})}return e},As=e=>e.length>=4?e.filter((t,n)=>{if(n===0||n===e.length-1)return!0;let r=e[n-1];return oe(r,t)>Fs}):e,y3=e=>{switch(e){case 0:return ze;case 1:return Re;case 2:return Oe}return et},zp=(e,t,n,r,o,i,a)=>{if(a){if(i){let s=Ei(e,i,t);return l2(i,s)}return r}if(o){let s=bi(n||[0,0],o);return Math.abs(sr(o,s)-be)>.01?Ei(e,o,t):s}return r},Qp=(e,t,n,r,o)=>c2(e,t,r,r&&ht(r,Array(4).fill(sr(r,e))),n,o),I3=(e,t,n,r)=>{let o=Ve(new Map([...n].filter(a=>!a[1].isDeleted))),i=Array.from(n.values());return[yn(kt(e),i,o,r,!0,!0),yn(kt(t),i,o,r,!0,!0)]},jp=(e,t)=>e[0]===t[0]&&e[1]===t[1],n6=(e,t=Fs)=>e.slice(1).map((n,r)=>Math.abs(n[0]-e[r][0])<t||Math.abs(n[1]-e[r][1])<t).every(Boolean);var C=(e,t,n=!0,r)=>{let o=!1,{points:i,fixedSegments:a,fileId:s,startBinding:d,endBinding:c}=t;if(k(e)&&(Object.keys(t).length===0||typeof i<"u"||typeof a<"u"||typeof d<"u"||typeof c<"u")){let l=Ve(Ps.getScene(e)?.getNonDeletedElementsMap()??new Map);t={...t,angle:0,...e6({...e,x:t.x||e.x,y:t.y||e.y},l,{fixedSegments:a,points:i,startBinding:d,endBinding:c},{isDragging:r?.isDragging})}}else typeof i<"u"&&(t={...hn(i),...t});for(let l in t){let U=t[l];if(typeof U<"u"){if(e[l]===U&&(typeof U!="object"||U===null||l==="groupIds"||l==="scale"))continue;if(l==="scale"){let p=e[l],m=U;if(p[0]===m[0]&&p[1]===m[1])continue}else if(l==="points"){let p=e[l],m=U;if(p.length===m.length){let b=!1,E=p.length;for(;--E;){let g=p[E],y=m[E];if(g[0]!==y[0]||g[1]!==y[1]){b=!0;break}}if(!b)continue}}e[l]=U,o=!0}}return o&&((typeof t.height<"u"||typeof t.width<"u"||typeof s<"u"||typeof i<"u")&&he.delete(e),e.version++,e.versionNonce=Ct(),e.updated=Wt(),n&&Ps.getScene(e)?.triggerUpdate()),e},Lt=(e,t,n=!1)=>{let r=!1;for(let o in t){let i=t[o];if(typeof i<"u"){if(e[o]===i&&(typeof i!="object"||i===null))continue;r=!0}}return!r&&!n?e:{...e,...t,updated:Wt(),version:e.version+1,versionNonce:Ct()}},zr=(e,t)=>(e.version=(t??e.version)+1,e.versionNonce=Ct(),e.updated=Wt(),e);var io=e=>ie(e)||Je(e)?e.points.length<2:e.width===0&&e.height===0,qp=(e,t,n,r,o)=>{let[i,a,s,d]=Ze(e,o),c=vn({clientX:r.offsetLeft,clientY:r.offsetTop},r),l=vn({clientX:r.offsetLeft+t,clientY:r.offsetTop+n},r);return c.x<=s&&c.y<=d&&l.x>=i&&l.y>=a},aJ=(e,t,n,r,o,i)=>{let[a,s,d,c]=Pe(e,o),l=vn({clientX:r.offsetLeft+(i?.left||0),clientY:r.offsetTop+(i?.top||0)},r),U=vn({clientX:r.offsetLeft+t-(i?.right||0),clientY:r.offsetTop+n-(i?.bottom||0)},r);return a>=l.x&&s>=l.y&&d<=U.x&&c<=U.y},Ji=(e,t,n)=>{let r=Math.abs(t),o=Math.abs(n);if(e==="line"||e==="arrow"||e==="freedraw"){let i=Math.round(Math.atan(o/r)/$t)*$t;i===0?n=0:i===Math.PI/2?t=0:n=r*Math.tan(i)*Math.sign(n)||n}else e!=="selection"&&(n=r*Math.sign(n));return{width:t,height:n}},rs=(e,t,n,r)=>{let o=n-e,i=r-t,a=Math.round(Math.atan(i/o)/$t)*$t;if(a===0)i=0;else if(a===Math.PI/2)o=0;else{let s=Math.tan(a),d=-1,c=t-s*e,l=-1/s,U=-1,p=r-l*n,m=(d*p-U*c)/(s*U-l*d),b=(c*l-p*s)/(s*U-l*d);o=m-e,i=b-t}return{width:o,height:i}};var Es=e=>{let t={width:e.width,height:e.height,x:e.x,y:e.y};if(e.width<0){let n=Math.abs(e.width);t.width=n,t.x=e.x-n}if(e.height<0){let n=Math.abs(e.height);t.height=n,t.y=e.y-n}return t};var r6={mouse:8,pen:16,touch:28},w3=16,i6={e:!0,s:!0,n:!0,w:!0};var o6={e:!0,s:!0,n:!0,w:!0,nw:!0,se:!0},Hs={e:!0,s:!0,n:!0,w:!0},dn=(e,t,n,r,o,i,a)=>{let[s,d]=T(u(e+n/2,t+r/2),u(o,i),a);return[s-n/2,d-r/2,n,r]},Ci=e=>!(e.viewport.isMobile||e.isTouchScreen&&(qs||Gs)),Ks=e=>Ci(e)?i6:{},Yi=([e,t,n,r,o,i],a,s,d,c={},l=4,U=gr)=>{let p=r6[d],m=p/s.value,b=p/s.value,E=p/s.value,g=p/s.value,y=n-e,x=r-t,h=l/s.value,I=(p-U*2)/(2*s.value),w={nw:c.nw?void 0:dn(e-h-E+I,t-h-g+I,m,b,o,i,a),ne:c.ne?void 0:dn(n+h-I,t-h-g+I,m,b,o,i,a),sw:c.sw?void 0:dn(e-h-E+I,r+h-I,m,b,o,i,a),se:c.se?void 0:dn(n+h-I,r+h-I,m,b,o,i,a),rotation:c.rotation?void 0:dn(e+y/2-m/2,t-h-g+I-w3/s.value,m,b,o,i,a)},v=5*r6.mouse/s.value;return Math.abs(y)>v&&(c.n||(w.n=dn(e+y/2-m/2,t-h-g+I,m,b,o,i,a)),c.s||(w.s=dn(e+y/2-m/2,r+h-I,m,b,o,i,a))),Math.abs(x)>v&&(c.w||(w.w=dn(e-h-E+I,t+x/2-b/2,m,b,o,i,a)),c.e||(w.e=dn(n+h-I,t+x/2-b/2,m,b,o,i,a))),w},Js=(e,t,n,r="mouse",o=i6)=>{if(e.locked||k(e))return{};if(e.type==="freedraw"||ie(e)){if(e.points.length===2){let[,a]=e.points;a[0]===0||a[1]===0?o=Hs:a[0]>0&&a[1]<0?o=o6:a[0]>0&&a[1]>0?o=Hs:a[0]<0&&a[1]>0?o=o6:a[0]<0&&a[1]<0&&(o=Hs)}}else de(e)&&(o={...o,rotation:!0});let i=ie(e)?gr+8:Ke(e)?0:gr;return Yi(Y(e,n,!0),e.angle,t,r,o,i,Ke(e)?0:void 0)},pJ=(e,t)=>{if(t.editingLinearElement)return!1;if(e.length>1)return!0;let n=e[0];return k(n)?!1:ie(n)?n.points.length>2:!0};var Ys=(e,t,n)=>t>=e[0]&&t<=e[0]+e[2]&&n>=e[1]&&n<=e[1]+e[3],a6=(e,t,n,r,o,i,a,s)=>{if(!n.selectedElementIds[e.id])return!1;let{rotation:d,...c}=Js(e,i,t,a,Ks(s));if(d&&Ys(d,r,o))return"rotation";let l=Object.keys(c).filter(U=>{let p=c[U];return p?Ys(p,r,o):!1});if(l.length>0)return l[0];if(Ci(s)){let[U,p,m,b,E,g]=Y(e,t);if(!(ie(e)&&e.points.length<=2)){let y=Ke(e)?0:hr/i.value,x=hr/i.value,h=s6(u(U-y,p-y),u(m+y,b+y),u(E,g),e.angle);for(let[I,w]of Object.entries(h))if(Nt(u(r,o),w,x))return I}}return!1},R3=(e,t,n,r,o,i,a,s)=>e.reduce((d,c)=>{if(d)return d;let l=a6(c,a,t,n,r,o,i,s);return l?{element:c,transformHandleType:l}:null},null),T3=([e,t,n,r],o,i,a,s,d)=>{let c=Yi([e,t,n,r,(e+n)/2,(t+r)/2],0,a,s,Ks(d)),l=Object.keys(c).find(U=>{let p=c[U];return p&&Ys(p,o,i)});if(l)return l;if(Ci(d)){let U=(e+n)/2,p=(t+r)/2,m=hr/a.value,b=s6(u(e-m,t-m),u(n+m,r+m),u(U,p),0);for(let[E,g]of Object.entries(b))if(Nt(u(o,i),g,m))return E}return!1},Cs=["ns","nesw","ew","nwse"],M3=(e,t)=>{let n=Cs.indexOf(e);if(n>=0){let r=Math.round(t/(Math.PI/4));e=Cs[(n+r)%Cs.length]}return e},L3=e=>{let{element:t,transformHandleType:n}=e,r=t&&Math.sign(t.height)*Math.sign(t.width)===-1,o=null;switch(n){case"n":case"s":o="ns";break;case"w":case"e":o="ew";break;case"nw":case"se":r?o="nesw":o="nwse";break;case"ne":case"sw":r?o="nwse":o="nesw";break;case"rotation":return"grab"}return o&&t&&(o=M3(o,t.angle)),o?`${o}-resize`:""},s6=([e,t],[n,r],o,i)=>{let a=T(u(e,t),o,i),s=T(u(n,t),o,i),d=T(u(e,r),o,i),c=T(u(n,r),o,i);return{n:[a,s],e:[s,c],s:[c,d],w:[d,a]}};var D3=(e,t,n,r,o,i,a,s,d,c,l,U)=>{if(n.length===1){let[p]=n;if(t==="rotation")k(p)||(S3(p,r,o,d,c,i),Ht(p,r));else{if(G(p)&&t)return v3(e,p,r,t,a,d,c),Ht(p,r),!0;if(t){let m=n[0].id,b=r.get(m),E=e.get(m);if(b&&E){let{nextWidth:g,nextHeight:y}=B3(b,E,r,e,t,d,c,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a});_3(g,y,b,E,r,e,t,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a})}}}return!0}else if(n.length>1){if(t==="rotation")return $3(e,n,r,o,d,c,i,l,U),!0;if(t){let{nextWidth:p,nextHeight:m,flipByX:b,flipByY:E,originalBoundingBox:g}=A3(n,e,r,t,d,c,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a});return H3(n,r,t,o,e,{shouldResizeFromCenter:a,shouldMaintainAspectRatio:s,flipByX:b,flipByY:E,nextWidth:p,nextHeight:m,originalBoundingBox:g}),!0}}return!1},S3=(e,t,n,r,o,i)=>{let[a,s,d,c]=Y(e,t),l=(a+d)/2,U=(s+c)/2,p;de(e)?p=0:(p=5*Math.PI/2+Math.atan2(o-U,r-l),i&&(p=p+$t/2,p=p-p%$t),p=wr(p));let m=Kt(e);if(C(e,{angle:p}),m){let b=n.getElement(m);b&&!j(e)&&C(b,{angle:p})}},d6=(e,t,n,r)=>ie(e)||Je(e)?{points:or(0,t,or(1,n,e.points,r),r)}:{},Vs=(e,t,n)=>{let r=e.width;if(Fe(e)){let a=Ye(e,t);a&&(r=It(a,e))}let i=e.fontSize*(n/r);return i<go?null:{size:i}},v3=(e,t,n,r,o,i,a)=>{let[s,d,c,l,U,p]=Y(t,n),[m,b]=T(u(i,a),u(U,p),-t.angle),E=0,g=0;r!=="e"&&r!=="w"&&(r.includes("e")&&(E=(m-s)/(c-s)),r.includes("w")&&(E=(c-m)/(c-s)),r.includes("n")&&(g=(l-b)/(l-d)),r.includes("s")&&(g=(b-d)/(l-d)));let y=Math.max(E,g);if(y>0){let x=t.width*y,h=t.height*y,I=Vs(t,n,x);if(I===null)return;let w=[s,d],v=[c,l],M=[U,p],S=u(s,d);if(["n","w","nw"].includes(r)&&(S=u(v[0]-Math.abs(x),v[1]-Math.abs(h))),r==="ne"){let X=[w[0],v[1]];S=u(X[0],X[1]-Math.abs(h))}if(r==="sw"){let X=[v[0],w[1]];S=u(X[0]-Math.abs(x),X[1])}["s","n"].includes(r)&&(S[0]=M[0]-x/2),["e","w"].includes(r)&&(S[1]=M[1]-h/2),o&&(S[0]=M[0]-Math.abs(x)/2,S[1]=M[1]-Math.abs(h)/2);let F=t.angle,$=T(S,u(U,p),F),O=u(S[0]+Math.abs(x)/2,S[1]+Math.abs(h)/2),A=T(O,u(U,p),F);S=T($,A,-F);let[Z,we]=S;C(t,{fontSize:I.size,width:x,height:h,x:Z,y:we})}if(r==="e"||r==="w"){let x=e.get(t.id),[h,I,w,v]=yt(x,x.width,x.height,!0),M=u(h,I),S=u(w,v),F=Xt(M,S),$=T(u(i,a),F,-x.angle),[O,,A]=yt(t,t.width,t.height,!0),Z=A-O,we=S[0]-M[0],X=Ko(Ee({fontSize:t.fontSize,fontFamily:t.fontFamily}),t.lineHeight),ce=we/Z;r.includes("e")&&(ce=($[0]-M[0])/Z),r.includes("w")&&(ce=(S[0]-$[0])/Z);let J=t.width*ce<X?X:t.width*ce,Q=jt(t.originalText,Ee(t),Math.abs(J)),fe=Et(Q,Ee(t),t.lineHeight),St=fe.height,[mr,Cn,Yn,qi]=yt(x,J,St,!0),uo=Yn-mr,Gi=qi-Cn,qt=[...M];["n","w","nw"].includes(r)&&(qt=[S[0]-Math.abs(uo),M[1]]);let br=x.angle,Vn=T(qt,F,br),vt=u(qt[0]+Math.abs(uo)/2,qt[1]+Math.abs(Gi)/2),Er=T(vt,F,br);qt=T(Vn,Er,-br);let lt={width:Math.abs(J),height:Math.abs(fe.height),x:qt[0],y:qt[1],text:Q,autoResize:!1};C(t,lt)}},$3=(e,t,n,r,o,i,a,s,d)=>{let c=5*Math.PI/2+Math.atan2(i-d,o-s);a&&(c+=$t/2,c-=c%$t);for(let l of t)if(!de(l)){let[U,p,m,b]=Y(l,n),E=(U+m)/2,g=(p+b)/2,y=e.get(l.id)?.angle??l.angle,[x,h]=T(u(E,g),u(s,d),c+y-l.angle);k(l)?C(l,{points:u2(l,n)}):C(l,{x:l.x+(x-E),y:l.y+(h-g),angle:wr(c+y)},!1),Ht(l,n,{simultaneouslyUpdated:t});let I=re(l,n);I&&!j(l)&&C(I,{x:I.x+(x-E),y:I.y+(h-g),angle:wr(c+y)},!1)}r.triggerUpdate()},P3=(e,t,n,r,o)=>{let[i,a,s,d]=t.length===1?Y(t[0],n):Pe(t),c=(i+s)/2,l=(a+d)/2,U=t.length===1?t[0].angle:0;switch([r,o]=T(u(r,o),u(c,l),-U),e){case"n":return T(u(r-(i+s)/2,o-a),u(0,0),U);case"s":return T(u(r-(i+s)/2,o-d),u(0,0),U);case"w":return T(u(r-i,o-(a+d)/2),u(0,0),U);case"e":return T(u(r-s,o-(a+d)/2),u(0,0),U);case"nw":return T(u(r-i,o-a),u(0,0),U);case"ne":return T(u(r-s,o-a),u(0,0),U);case"sw":return T(u(r-i,o-d),u(0,0),U);case"se":return T(u(r-s,o-d),u(0,0),U);default:return[0,0]}},N3=(e,t)=>{let[,[n,r]]=t.points;return e==="nw"&&(n<0||r<0)||e==="ne"&&n>=0||e==="sw"&&n<=0||e==="se"&&(n>0||r>0)?"end":"origin"},F3=(e,t,n)=>{if(n)return"center";if(t)switch(e){case"n":return"south-side";case"e":return"west-side";case"s":return"north-side";case"w":return"east-side";case"ne":return"bottom-left";case"nw":return"bottom-right";case"se":return"top-left";case"sw":return"top-right"}return["e","se","s"].includes(e)?"top-left":["n","nw","w"].includes(e)?"bottom-right":e==="ne"?"bottom-left":"top-right"},O3=(e,t,n,r,o,i,a,s,d)=>{let c=F3(a,s,d),[l,U]=e;switch(c){case"top-left":return{x:l+(t-r)/2+(r-t)/2*Math.cos(i)+(n-o)/2*Math.sin(i),y:U+(n-o)/2+(r-t)/2*Math.sin(i)+(o-n)/2*Math.cos(i)};case"top-right":return{x:l+(t-r)/2*(Math.cos(i)+1)+(n-o)/2*Math.sin(i),y:U+(n-o)/2+(t-r)/2*Math.sin(i)+(o-n)/2*Math.cos(i)};case"bottom-left":return{x:l+(t-r)/2*(1-Math.cos(i))+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)+(r-t)/2*Math.sin(i)};case"bottom-right":return{x:l+(t-r)/2*(Math.cos(i)+1)+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)+(t-r)/2*Math.sin(i)};case"center":return{x:l-(r-t)/2,y:U-(o-n)/2};case"east-side":return Math.abs(U+(t-r)/2*Math.sin(i)+(n-o)/2)>1e6&&console.error("getResizedOrigin() new calculation creates extremely large (> 1e6) y value where the old calculation resulted in",{result:U+(o-n)/2+(t-r)/2*Math.sin(i)}),{x:l+(t-r)/2*(Math.cos(i)+1),y:U+(o-n)/2+(t-r)/2*Math.sin(i)};case"west-side":return{x:l+(t-r)/2*(1-Math.cos(i)),y:U+(r-t)/2*Math.sin(i)+(n-o)/2};case"north-side":return{x:l+(t-r)/2+(n-o)/2*Math.sin(i),y:U+(o-n)/2*(Math.cos(i)-1)};case"south-side":return{x:l+(t-r)/2+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)}}},_3=(e,t,n,r,o,i,a,{shouldInformMutation:s=!0,shouldMaintainAspectRatio:d=!1,shouldResizeFromCenter:c=!1}={})=>{let l={},U=re(n,o);if(U){let E=i.get(U.id);if(E&&(l={fontSize:E.fontSize}),d){let g={...n,width:e,height:t},y=Vs(U,o,It(g,U));if(y===null)return;l={fontSize:y.size}}else{let g=Bd(Ee(U),U.lineHeight),y=Hd(U.fontSize,U.lineHeight);e=Math.max(e,g),t=Math.max(t,y)}}let p=d6(r,e,t,!0),m=u(r.x,r.y);if(ie(r)){let[E,g]=Ze(r,i);m=u(E,g)}let b=O3(m,r.width,r.height,e,t,r.angle,a,d,c);if(ie(r)&&p.points){let E=r.x-m[0],g=r.y-m[1];b.x+=E,b.y+=g;let y=p.points[0][0],x=p.points[0][1];b.x+=y,b.y+=x,p.points=p.points.map(h=>u(h[0]-y,h[1]-x))}if(e<0&&(b.x=b.x+e),t<0&&(b.y=b.y+t),"scale"in n&&"scale"in r&&C(n,{scale:[(Math.sign(e)||r.scale[0])*r.scale[0],(Math.sign(t)||r.scale[1])*r.scale[1]]}),j(n)&&U&&d){let E=e/n.width*U.fontSize;if(E<go)return;l.fontSize=E}if(e!==0&&t!==0&&Number.isFinite(b.x)&&Number.isFinite(b.y)){let E={...b,width:Math.abs(e),height:Math.abs(t),...p};C(n,E,s),Ht(n,o,{newSize:{width:e,height:t}}),U&&l!=null&&C(U,{fontSize:l.fontSize}),Bn(n,o,a,d)}},B3=(e,t,n,r,o,i,a,{shouldMaintainAspectRatio:s=!1,shouldResizeFromCenter:d=!1}={})=>{let[c,l,U,p]=yt(t,t.width,t.height,!0),m=u(c,l),b=u(U,p),E=Xt(m,b),g=T(u(i,a),E,-t.angle),[y,x,h,I]=yt(e,e.width,e.height,!0),w=h-y,v=I-x,M=b[0]-m[0],S=b[1]-m[1],F=M/w,$=S/v;o.includes("e")&&(F=(g[0]-m[0])/w),o.includes("s")&&($=(g[1]-m[1])/v),o.includes("w")&&(F=(b[0]-g[0])/w),o.includes("n")&&($=(b[1]-g[1])/v);let O=e.width*F,A=e.height*$;if(d&&(O=2*O-t.width,A=2*A-t.height),s){let Z=Math.abs(O)/t.width,we=Math.abs(A)/t.height;if(o.length===1&&(A*=Z,O*=we),o.length===2){let X=Math.max(Z,we);O=t.width*X*Math.sign(O),A=t.height*X*Math.sign(A)}}return{nextWidth:O,nextHeight:A}},A3=(e,t,n,r,o,i,{shouldMaintainAspectRatio:a=!1,shouldResizeFromCenter:s=!1}={})=>{let d=e.map(Z=>t.get(Z.id)),c=d.reduce((Z,we)=>{if(!ie(we))return Z;let X=Kt(we);if(!X)return Z;let ce=t.get(X)??null;return Fe(ce)?[...Z,{...ce,...W.getBoundTextElementPosition(we,ce,n)}]:Z},[]),l=Ga(d.map(Z=>Z).concat(c)),{minX:U,minY:p,maxX:m,maxY:b,midX:E,midY:g}=l,y=m-U,x=b-p,h={ne:[U,b],se:[U,p],sw:[m,p],nw:[m,b],e:[U,p+x/2],w:[m,p+x/2],n:[U+y/2,b],s:[U+y/2,p]},[I,w]=s?[E,g]:h[r],v=s?2:1,M=Math.max(Math.abs(o-I)/y||0,Math.abs(i-w)/x||0)*v,S=r.includes("e")||r.includes("w")?Math.abs(o-I)*v:y,F=r.includes("n")||r.includes("s")?Math.abs(i-w)*v:x;a&&(S=y*M*Math.sign(o-I),F=x*M*Math.sign(i-w));let $={ne:[o<I,i>w],se:[o<I,i<w],sw:[o>I,i<w],nw:[o>I,i>w],e:[o<I,!1],w:[o>I,!1],n:[!1,i>w],s:[!1,i<w]},[O,A]=$[r].map(Z=>Z);return{originalBoundingBox:l,nextWidth:S,nextHeight:F,flipByX:O,flipByY:A}},H3=(e,t,n,r,o,{shouldMaintainAspectRatio:i=!1,shouldResizeFromCenter:a=!1,flipByX:s=!1,flipByY:d=!1,nextHeight:c,nextWidth:l,originalBoundingBox:U}={})=>{if(l===void 0&&c===void 0&&s===void 0&&d===void 0||c===0||l===0)return;o||(o=t);let p=e.reduce((v,M)=>{let S=o.get(M.id);return S&&v.push({orig:S,latest:M}),v},[]),m;if(U)m=U;else{let v=p.reduce((M,{orig:S})=>{if(!ie(S))return M;let F=Kt(S);if(!F)return M;let $=o.get(F)??null;return Fe($)?[...M,{...$,...W.getBoundTextElementPosition(S,$,t)}]:M},[]);m=Ga(p.map(({orig:M})=>M).concat(v))}let{minX:b,minY:E,maxX:g,maxY:y,midX:x,midY:h}=m,I=g-b,w=y-E;if(l===void 0&&c===void 0&&(l=I,c=w),i&&(l===void 0?l=c*(I/w):c===void 0?c=l*(w/I):Math.abs(l/c-I/w)>.001&&(l=c*(I/w))),l&&c){let v=n.includes("e")||n.includes("w")?Math.abs(l)/I:1,M=n.includes("n")||n.includes("s")?Math.abs(c)/w:1,S;n.length===1?S=n.includes("e")||n.includes("w")?v:M:S=Math.max(Math.abs(l)/I||0,Math.abs(c)/w||0);let F={ne:[b,y],se:[b,E],sw:[g,E],nw:[g,y],e:[b,E+w/2],w:[g,E+w/2],n:[b+I/2,y],s:[b+I/2,E]},[$,O]=a?[x,h]:F[n],A=i||p.some(J=>J.latest.angle!==0||G(J.latest)||h2(J.latest));A&&(v=S,M=S);let[Z,we]=[s?-1:1,d?-1:1],X=[];for(let{orig:J,latest:Q}of p){if(G(J)&&Fe(J))continue;let fe=J.width*v,St=J.height*M,mr=wr(J.angle*Z*we),Cn=ie(J)||Je(J),Yn=J.x-$,qi=J.y-O,uo=s&&!Cn?fe:0,Gi=d&&!Cn?St:0,qt=$+Z*(Yn*v+uo),br=O+we*(qi*M+Gi),Vn=d6(J,fe*Z,St*we,!1),vt={x:qt,y:br,width:fe,height:St,angle:mr,...Vn};if(k(J)&&(J.startBinding&&(vt.startBinding={...J.startBinding,fixedPoint:[s?-J.startBinding.fixedPoint[0]+1:J.startBinding.fixedPoint[0],d?-J.startBinding.fixedPoint[1]+1:J.startBinding.fixedPoint[1]]}),J.endBinding&&(vt.endBinding={...J.endBinding,fixedPoint:[s?-J.endBinding.fixedPoint[0]+1:J.endBinding.fixedPoint[0],d?-J.endBinding.fixedPoint[1]+1:J.endBinding.fixedPoint[1]]}),J.fixedSegments&&Vn.points&&(vt.fixedSegments=J.fixedSegments.map(lt=>({...lt,start:Vn.points[lt.index-1],end:Vn.points[lt.index]})))),Ke(J)&&(vt.scale=[J.scale[0]*Z,J.scale[1]*we]),G(J)){let lt=Vs(J,t,fe);if(!lt)return;vt.fontSize=lt.size}let Er=o.get(Kt(J)??"");if(Er)if(A){let lt=Er.fontSize*S;if(lt<go)return;vt.boundTextFontSize=lt}else vt.boundTextFontSize=Er.fontSize;X.push({element:Q,update:vt})}let ce=X.map(({element:J})=>J);for(let{element:J,update:{boundTextFontSize:Q,...fe}}of X){let{width:St,height:mr,angle:Cn}=fe;C(J,fe,!1,{isDragging:!0}),Ht(J,t,{simultaneouslyUpdated:ce,newSize:{width:St,height:mr}});let Yn=re(J,t);Yn&&Q&&(C(Yn,{fontSize:Q,angle:ie(J)?void 0:Cn},!1),Bn(J,t,n,!0))}r.triggerUpdate()}};var K3=(e,t,n,r,o,i)=>{if(t.length===1&&k(t[0])&&(t[0].startBinding||t[0].endBinding))return;let a=t.filter(U=>{if(k(U)&&U.startBinding&&U.endBinding){let p=t.find(b=>b.id===U.startBinding?.elementId),m=t.find(b=>b.id===U.endBinding?.elementId);return p&&m}return!0}),s=new Set(a),d=a.filter(U=>de(U)).map(U=>U.id);if(d.length>0)for(let U of r.getNonDeletedElements())U.frameId!==null&&d.includes(U.frameId)&&s.add(U);let c=Pe(Array.from(s).map(U=>e.originalElements.get(U.id)??U)),l=J3(c,n,o,i);s.forEach(U=>{if(c6(e,U,l),!j(U)){let p=re(U,r.getNonDeletedElementsMap());p&&c6(e,p,l),Ht(U,r.getElementsMapIncludingDeleted(),{simultaneouslyUpdated:Array.from(s)})}})},J3=(e,t,n,r)=>{let[o,i]=e,a=o+t.x+n.x,s=i+t.y+n.y;if(n.x===0||n.y===0){let[d,c]=Xr(o+t.x,i+t.y,r);n.x===0&&(a=d),n.y===0&&(s=c)}return{x:a-o,y:s-i}},c6=(e,t,n)=>{let r=e.originalElements.get(t.id)??t,o=r.x+n.x,i=r.y+n.y;C(t,{x:o,y:i})},C3=(e,t,n)=>{let[r,o]=Pe(e);return[t-r,n-o]},Y3=({newElement:e,elementType:t,originX:n,originY:r,x:o,y:i,width:a,height:s,shouldMaintainAspectRatio:d,shouldResizeFromCenter:c,zoom:l,widthAspectRatio:U=null,originOffset:p=null,informMutation:m=!0})=>{d&&e.type!=="selection"&&(U?s=a/U:(Math.abs(i-r)>Math.abs(o-n)?{width:a,height:s}=Ji(t,s,o<n?-a:a):{width:a,height:s}=Ji(t,a,i<r?-s:s),s<0&&(s=-s)));let b=o<n?n-a:n,E=i<r?r-s:r;c&&(a+=a,s+=s,b=n-a/2,E=r-s/2);let g=null;if(G(e)){s=e.height;let y=Ko(Ee({fontSize:e.fontSize,fontFamily:e.fontFamily}),e.lineHeight);a=Math.max(a,y),Math.abs(o-n)>Xs/l&&(g={autoResize:!1}),E=r,c&&(b=n-a/2)}if(a!==0&&s!==0){let y=null;Ke(e)&&(y={initialWidth:a,initialHeight:s}),C(e,{x:b+(p?.x??0),y:E+(p?.y??0),width:a,height:s,...g,...y},m)}};var V3=(e,t)=>!!(!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(e.activeTool.type!=="custom"&&(e.editingTextElement||e.activeTool.type!=="selection"&&e.activeTool.type!=="eraser"&&e.activeTool.type!=="hand"&&e.activeTool.type!=="laser")||ot(t,e).length));var rC=e=>e.reduce((t,n)=>t+n.version,0),oC=e=>{let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e[n].versionNonce;return t>>>0},Z2=e=>{let t=5381;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)+t+r}return t>>>0},m2=e=>e.filter(t=>!t.isDeleted&&!io(t)),ao=e=>e.filter(t=>!t.isDeleted),kp=e=>!e.isDeleted,l6=e=>ao(e).map(t=>aa(t.type)?{...t,lastCommittedPoint:null}:t),np=e=>l6(e),Si=e=>l6(e);var f6=async e=>{let t;if(e.type===K.png)try{return await(await import("./data/image-DXJVNPGL.js")).decodePngMetadata(e)}catch(n){throw n.message==="INVALID"?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):new tn("Error: cannot restore image")}else if("text"in Blob?t=await e.text():t=await new Promise(n=>{let r=new FileReader;r.readAsText(e,"utf8"),r.onloadend=()=>{r.readyState===FileReader.DONE&&n(r.result)}}),e.type===K.svg)try{return yp({svg:t})}catch(n){throw n.message==="INVALID"?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):new tn("Error: cannot restore image")}return t};var G3=e=>e&&e.name.match(/\.(json|excalidraw|png|svg)$/)?.[1]||null,SC=e=>e==="png"||e==="svg",j2=e=>{let t=G3(e);return t==="png"||t==="svg"},Ms=e=>!!e&&Object.values(wo).includes(e),Vi=e=>{let{type:t}=e||{};return Ms(t)},X3=async(e,t,n,r)=>{let o=await f6(e),i;try{try{i=JSON.parse(o)}catch(a){throw Vi(e)?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):a}if(tp(i))return{type:K.excalidraw,data:vi({elements:Si(i.elements||[]),appState:{theme:t?.theme,fileHandle:r||e.handle||null,...Mo(i.appState||{}),...t?Za(i.elements||[],t):{}},files:i.files},t,n,{repairBindings:!0,refreshDimensions:!1})};if(ms(i))return{type:K.excalidrawlib,data:i};throw new Error("Error: invalid file")}catch(a){throw a instanceof tn?a:new Error("Error: invalid file")}},ep=async(e,t,n,r)=>{let o=await X3(e,t,n,r);if(o.type!==K.excalidraw)throw new Error("Error: invalid file");return o.data},k3=(e,t="unpublished")=>{let n=JSON.parse(e);if(!ms(n))throw new Error("Invalid library");let r=n.libraryItems||n.library;return dp(r,t)},vC=async(e,t="unpublished")=>k3(await f6(e),t),$C=async e=>new Promise(async(t,n)=>{try{Oo(e)&&(e=await e),e.toBlob(r=>{if(!r)return n(new Go("Error: Canvas too big","CANVAS_POSSIBLY_TOO_BIG"));t(r)})}catch(r){n(r)}}),PC=async e=>{try{let t=await window.crypto.subtle.digest("SHA-1",await cn(e));return Md(new Uint8Array(t))}catch(t){return console.error(t),q3(40)}},NC=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let o=r.result;t(o)},r.onerror=o=>n(o),r.readAsDataURL(e)}),FC=(e,t)=>`data:${t};base64,${Ni(po(e),!0)}`,OC=(e,t="")=>{let n=e.indexOf(","),r=atob(e.slice(n+1)),o=e.slice(0,n).split(":")[1].split(";")[0],i=new ArrayBuffer(r.length),a=new Uint8Array(i);for(let s=0;s<r.length;s++)a[s]=r.charCodeAt(s);return new File([i],t,{type:o})},_C=e=>Fi(e.slice(e.indexOf(",")+1)),BC=async(e,t)=>{if(e.type===K.svg)return e;let[n,r]=await Promise.all([import("pica").then(i=>i.default),import("image-blob-reduce").then(i=>i.default)]),o=r({pica:n({features:["js","wasm"]})});if(t.outputType){let{outputType:i}=t;o._create_blob=function(a){return this.pica.toBlob(a.out_canvas,i,.8).then(s=>(a.out_blob=s,a))}}if(!Vi(e))throw new Error("Error: unsupported file type",{cause:"UNSUPPORTED"});return new File([await o.toBlob(e,{max:t.maxWidthOrHeight,alpha:!0})],e.name,{type:t.outputType||e.type})},AC=(e,t="")=>new File([new TextEncoder().encode(e)],t,{type:K.svg}),HC=async(e,t="")=>{let n;try{n=await fetch(e)}catch{throw new Error("Error: failed to fetch image",{cause:"FETCH_ERROR"})}if(!n.ok)throw new Error("Error: failed to fetch image",{cause:"FETCH_ERROR"});let r=await n.blob();if(r.type&&Vi(r)){let o=t||r.name||"";return new File([r],o,{type:r.type})}throw new Error("Error: unsupported file type",{cause:"UNSUPPORTED"})},KC=async e=>{let t=e.dataTransfer.files.item(0),n=await Z3(e);return{file:t?await us(t):null,fileHandle:n}},Z3=async e=>{if(z2)try{return await e.dataTransfer.items[0].getAsFileSystemHandle()||null}catch(t){return console.warn(t.name,t.message),null}return null},U6=e=>{let t=null,n=`${[...new Uint8Array(e).slice(0,8)].join(" ")} `,r={png:"137 80 78 71 13 10 26 10 ",jpg:"255 216 255 ",gif:"71 73 70 56 57 97 "};return n===r.png?t=K.png:n.startsWith(r.jpg)?t=K.jpg:n.startsWith(r.gif)&&(t=K.gif),t},ur=(e,t,n)=>new File([e],n||"",{type:t}),us=async e=>{if(e.type){if(Vi(e)){let t=await cn(e),n=U6(t);n&&n!==e.type&&(e=ur(t,n,e.name))}}else if(e?.name?.endsWith(".excalidrawlib"))e=ur(await cn(e),K.excalidrawlib,e.name);else if(e?.name?.endsWith(".excalidraw"))e=ur(await cn(e),K.excalidraw,e.name);else{let t=await cn(e),n=U6(t);n&&(e=ur(t,n,e.name))}return e},cn=e=>"arrayBuffer"in e?e.arrayBuffer():new Promise((t,n)=>{let r=new FileReader;r.onload=o=>{if(!o.target?.result)return n(new Error("Couldn't convert blob to ArrayBuffer"));t(o.target.result)},r.readAsArrayBuffer(e)});var po=e=>{let t=typeof e=="string"?new TextEncoder().encode(e):e instanceof Uint8Array?e:new Uint8Array(e),n="";for(let r of t)n+=String.fromCharCode(r);return n},p6=e=>{let t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0,o=e.length;r<o;r++)n[r]=e.charCodeAt(r);return t},u6=e=>new TextDecoder("utf-8").decode(p6(e)),Ni=(e,t=!1)=>t?window.btoa(e):window.btoa(po(e)),Fi=(e,t=!1)=>t?window.atob(e):u6(window.atob(e));var Oi=({text:e,compress:t})=>{let n;if(t!==!1)try{n=po(W3(e))}catch(r){console.error("encode: cannot deflate",r)}return{version:"1",encoding:"bstring",compressed:!!n,encoded:n||po(e)}},_i=e=>{let t;switch(e.encoding){case"bstring":t=e.compressed?e.encoded:u6(e.encoded);break;default:throw new Error(`decode: unknown encoding "${e.encoding}"`)}return e.compressed?z3(new Uint8Array(p6(t)),{to:"string"}):t};var j3=async e=>{let n=m6(new Uint8Array(await cn(e))).find(r=>r.name==="tEXt");return n?b6.decode(n.data):null},Np=async({blob:e,metadata:t})=>{let n=m6(new Uint8Array(await cn(e))),r=b6.encode(K.excalidraw,JSON.stringify(Oi({text:t,compress:!0})));return n.splice(-1,0,r),new Blob([Q3(n)],{type:K.png})},aY=async e=>{let t=await j3(e);if(t?.keyword===K.excalidraw)try{let n=JSON.parse(t.text);if(!("encoded"in n)){if("type"in n&&n.type===ke.excalidraw)return t.text;throw new Error("FAILED")}return _i(n)}catch(n){throw console.error(n),new Error("FAILED")}throw new Error("INVALID")};export{mo as a,ex as b,tx as c,nx as d,Gs as e,rx as f,ox as g,ix as h,ks as i,Zs as j,ax as k,sx as l,dx as m,cx as n,bo as o,lx as p,Ux as q,fx as r,je as s,px as t,ye as u,Xe as v,Ne as w,Ut as x,Pt as y,qn as z,xo as A,gr as B,Un as C,Gn as D,ux as E,mx as F,yo as G,wo as H,K as I,bx as J,ke as K,Xi as L,Ex as M,gx as N,xx as O,hx as P,yx as Q,zs as R,Qs as S,Ix as T,Ro as U,wx as V,Rx as W,Tx as X,Mx as Y,Lx as Z,Dx as _,Sx as $,js as aa,ed as ba,vx as ca,$x as da,ne as ea,ki as fa,Se as ga,Gt as ha,Zi as ia,nt as ja,Px as ka,h6 as la,Nx as ma,id as na,Fx as oa,fn as pa,Ox as qa,ad as ra,zi as sa,_x as ta,sd as ua,dd as va,y6 as wa,se as xa,pd as ya,Yx as za,Lo as Aa,Rr as Ba,ud as Ca,ve as Da,_ as Ea,R6 as Fa,Do as Ga,me as Ha,Ae as Ia,u as Ja,T as Ka,oe as La,kh as Ma,Zh as Na,Wh as Oa,P6 as Pa,zh as Qa,Qh as Ra,oa as Sa,Ee as Ta,Po as Ua,Rd as Va,Td as Wa,jh as Xa,e4 as Ya,at as Za,Fr as _a,t4 as $a,vn as ab,ia as bb,n4 as cb,kt as db,r4 as eb,o4 as fb,i4 as gb,Zt as hb,a4 as ib,s4 as jb,d4 as kb,c4 as lb,ee as mb,l4 as nb,U4 as ob,Ot as pb,f4 as qb,p4 as rb,u4 as sb,m4 as tb,Oo as ub,b4 as vb,zt as wb,E4 as xb,$n as yb,Be as zb,g4 as Ab,Dd as Bb,x4 as Cb,h4 as Db,y4 as Eb,I4 as Fb,Sd as Gb,Ve as Hb,bn as Ib,w4 as Jb,_t as Kb,Ke as Lb,_o as Mb,Bo as Nb,mt as Ob,G as Pb,Pd as Qb,Nd as Rb,de as Sb,ie as Tb,j as Ub,k as Vb,aa as Wb,Or as Xb,B6 as Yb,bt as Zb,A6 as _b,sa as $b,S4 as ac,En as bc,Fe as cc,Ao as dc,v4 as ec,$4 as fc,Ct as gc,Tt as hc,Xo as ic,tn as jc,Et as kc,Bd as lc,Ko as mc,_4 as nc,ca as oc,Wn as pc,Hd as qc,B4 as rc,Kd as sc,jt as tc,pn as uc,Kx as vc,Mo as wc,Ud as xc,fd as yc,NE as zc,dF as Ac,cF as Bc,FE as Cc,lF as Dc,b2 as Ec,UF as Fc,OE as Gc,on as Hc,fF as Ic,pF as Jc,uF as Kc,es as Lc,x2 as Mc,h2 as Nc,sn as Oc,xO as Pc,D2 as Qc,S2 as Rc,v2 as Sc,kE as Tc,ZE as Uc,WE as Vc,F2 as Wc,k4 as Xc,Z4 as Yc,Co as Zc,Yo as _c,ae as $c,W4 as ad,z4 as bd,Q4 as cd,j4 as dd,ey as ed,ty as fd,he as gd,t8 as hd,n8 as id,r8 as jd,o8 as kd,i8 as ld,a8 as md,s8 as nd,d8 as od,c8 as pd,l8 as qd,f8 as rd,zn as sd,ha as td,p8 as ud,u8 as vd,m8 as wd,b8 as xd,E8 as yd,g8 as zd,x8 as Ad,h8 as Bd,y8 as Cd,I8 as Dd,w8 as Ed,R8 as Fd,T8 as Gd,M8 as Hd,L8 as Id,D8 as Jd,S8 as Kd,v8 as Ld,$8 as Md,P8 as Nd,N8 as Od,O8 as Pd,_8 as Qd,B8 as Rd,A8 as Sd,J8 as Td,Y8 as Ud,V8 as Vd,q8 as Wd,G8 as Xd,Q8 as Yd,j8 as Zd,e0 as _d,t0 as $d,n0 as ae,r0 as be,o0 as ce,i0 as de,a0 as ee,s0 as fe,d0 as ge,c0 as he,l0 as ie,p0 as je,E0 as ke,g0 as le,x0 as me,h0 as ne,y0 as oe,I0 as pe,w0 as qe,R0 as re,T0 as se,L0 as te,D0 as ue,S0 as ve,v0 as we,$0 as xe,P0 as ye,N0 as ze,F0 as Ae,O0 as Be,_0 as Ce,B0 as De,A0 as Ee,H0 as Fe,K0 as Ge,J0 as He,C0 as Ie,Y0 as Je,V0 as Ke,q0 as Le,G0 as Me,X0 as Ne,k0 as Oe,Z0 as Pe,W0 as Qe,Vo as Re,qo as Se,z0 as Te,Q0 as Ue,j0 as Ve,eu as We,tu as Xe,nu as Ye,ru as Ze,ou as _e,au as $e,su as af,du as bf,cu as cf,lu as df,pu as ef,uu as ff,mu as gf,bu as hf,Eu as if,gu as jf,xu as kf,hu as lf,yu as mf,Ru as nf,Tu as of,Mu as pf,Lu as qf,Du as rf,Su as sf,vu as tf,$u as uf,Pu as vf,Nu as wf,Fu as xf,Ou as yf,_u as zf,Bu as Af,Au as Bf,Hu as Cf,Ku as Df,Ju as Ef,Cu as Ff,Yu as Gf,Vu as Hf,Gu as If,Xu as Jf,ku as Kf,Zu as Lf,Wu as Mf,zu as Nf,Qu as Of,ju as Pf,e5 as Qf,t5 as Rf,n5 as Sf,r5 as Tf,On as Uf,Qo as Vf,Zr as Wf,qO as Xf,GO as Yf,XO as Zf,kO as _f,Yt as $f,as as ag,ZO as bg,An as cg,rg as dg,og as eg,Wr as fg,ig as gg,WO as hg,u$ as ig,ti as jg,N1 as kg,z as lg,V$ as mg,q$ as ng,G$ as og,X$ as pg,va as qg,L9 as rg,Da as sg,K$ as tg,D9 as ug,F9 as vg,sP as wg,ai as xg,P1 as yg,ht as zg,rt as Ag,Bt as Bg,Re as Cg,Oe as Dg,et as Eg,ze as Fg,$e as Gg,Z1 as Hg,_N as Ig,Xa as Jg,o2 as Kg,i2 as Lg,ka as Mg,BN as Ng,AN as Og,HN as Pg,pi as Qg,uE as Rg,yn as Sg,Ht as Tg,Ei as Ug,U2 as Vg,KN as Wg,JN as Xg,gi as Yg,Ti as Zg,Ur as _g,K2 as $g,ls as ah,X2 as bh,C_ as ch,Y_ as dh,Ge as eh,fP as fh,nr as gh,pP as hh,z2 as ih,Q2 as jh,ps as kh,hn as lh,sp as mh,bs as nh,vi as oh,dp as ph,j3 as qh,Np as rh,aY as sh,G3 as th,SC as uh,j2 as vh,Vi as wh,X3 as xh,ep as yh,k3 as zh,vC as Ah,$C as Bh,PC as Ch,NC as Dh,FC as Eh,OC as Fh,_C as Gh,BC as Hh,AC as Ih,HC as Jh,KC as Kh,us as Lh,oo as Mh,yB as Nh,IB as Oh,yg as Ph,wB as Qh,Ig as Rh,rp as Sh,op as Th,DB as Uh,hs as Vh,$g as Wh,nA as Xh,aA as Yh,cp as Zh,lp as _h,fA as $h,pA as ai,Pg as bi,Up as ci,uA as di,Fg as ei,bp as fi,Is as gi,hp as hi,Ip as ii,eH as ji,Vg as ki,pH as li,uH as mi,vp as ni,mH as oi,bH as pi,Pp as qi,Ls as ri,MH as si,zg as ti,Qg as ui,LH as vi,Op as wi,t3 as xi,Bp as yi,tK as zi,Ai,wn as Bi,nK as Ci,rK as Di,lo as Ei,ws as Fi,Rs as Gi,oK as Hi,iK as Ii,We as Ji,aK as Ki,i3 as Li,Yp as Mi,a3 as Ni,sK as Oi,dK as Pi,Vp as Qi,wp as Ri,Rp as Si,cK as Ti,K9 as Ui,PP as Vi,NP as Wi,_n as Xi,_a as Yi,G9 as Zi,_P as _i,X9 as $i,k9 as aj,Aa as bj,BP as cj,Z9 as dj,Y as ej,Pe as fj,Ga as gj,uN as hj,hi as ij,BE as jj,lr as kj,RF as lj,TF as mj,MF as nj,LF as oj,DF as pj,SF as qj,vF as rj,Xr as sj,W as tj,kr as uj,T2 as vj,M2 as wj,zF as xj,is as yj,cO as zj,Bn as Aj,L2 as Bj,Kt as Cj,re as Dj,Ye as Ej,lO as Fj,UO as Gj,fO as Hj,pO as Ij,uO as Jj,os as Kj,It as Lj,Jr as Mj,YE as Nj,ds as Oj,A2 as Pj,Qr as Qj,Hn as Rj,Ps as Sj,e6 as Tj,C as Uj,Lt as Vj,zr as Wj,io as Xj,qp as Yj,aJ as Zj,rs as _j,Es as $j,Ks as ak,Yi as bk,Js as ck,pJ as dk,R3 as ek,T3 as fk,L3 as gk,D3 as hk,d6 as ik,P3 as jk,N3 as kk,_3 as lk,H3 as mk,K3 as nk,C3 as ok,Y3 as pk,V3 as qk,rC as rk,oC as sk,Z2 as tk,ao as uk,kp as vk,s3 as wk,xi as xk,vE as yk,$E as zk,ot as Ak,PE as Bk,ja as Ck,SE as Dk,Za as Ek,Wa as Fk,Qa as Gk};
46
+ `).trim()}:n:{type:"text",value:(e.clipboardData?.getData(K.text)||"").trim()}}catch{return{type:"text",value:""}}},bH=async(e,t=!1)=>{let n=await Zg(e,t);if(n.type==="mixedContent")return{mixedContent:n.value};try{let r=!t&&Xg(n.value);if(r)return r}catch(r){console.error(r)}try{let r=JSON.parse(n.value),o=r.type===ke.excalidrawClipboardWithAPI;if(qg(r))return{elements:r.elements,files:r.files,text:t?JSON.stringify(r.elements,null,2):void 0,programmaticAPI:o}}catch{}return{text:n.value}},Pp=async e=>{try{await navigator.clipboard.write([new window.ClipboardItem({[K.png]:e})])}catch(t){if(Oo(e))await navigator.clipboard.write([new window.ClipboardItem({[K.png]:await e})]);else throw t}},Ls=async(e,t)=>{if(Vg)try{await navigator.clipboard.writeText(e||"");return}catch(n){console.error(n)}try{if(t){if(t.clipboardData?.setData(K.text,e||""),t.clipboardData?.getData(K.text)!==e)throw new Error("Failed to setData on clipboardEvent");return}}catch(n){console.error(n)}if(!Wg(e))throw new Error("Error copying to clipboard.")},Wg=e=>{e||(e=" ");let t=document.documentElement.getAttribute("dir")==="rtl",n=document.createElement("textarea");n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";let r=window.pageYOffset||document.documentElement.scrollTop;n.style.top=`${r}px`,n.style.fontSize="12pt",n.setAttribute("readonly",""),n.value=e,document.body.appendChild(n);let o=!1;try{n.select(),n.setSelectionRange(0,n.value.length),o=document.execCommand("copy")}catch(i){console.error(i)}return n.remove(),o};var MH=async({data:e,config:t})=>Is({data:e,config:t}),zg=async({data:e,config:t})=>{let{mimeType:n=K.png,quality:r}=t||{};n===K.png&&typeof r=="number"&&console.warn(`"quality" will be ignored for "${K.png}" mimeType`),n==="image/jpg"&&(n=K.jpg),n===K.jpg&&t?.canvasBackgroundColor&&(console.warn(`Defaulting "exportBackground" to "true" for "${K.jpg}" mimeType`),t={...t,canvasBackgroundColor:e.appState?.viewBackgroundColor||Un});let o=await Is({data:e,config:t});return r=r||(/image\/jpe?g/.test(n)?.92:.8),new Promise((i,a)=>{o.toBlob(async s=>{if(!s)return a(new Error("couldn't export to blob"));s&&n===K.png&&e.appState?.exportEmbedScene&&(s=await Np({blob:s,metadata:oo(e.elements,e.appState,e.files||{},"local")})),i(s)},n,r)})},Qg=async({data:e,config:t})=>{let{elements:n,appState:r}=vi({...e,files:e.files||{}},null,null),o={...r,exportPadding:t?.padding},i=ao(n),a=e.files||{};return hp({data:{elements:i,appState:o,files:a},config:{exportingFrame:t?.exportingFrame,renderEmbeddables:t?.renderEmbeddables,skipInliningFonts:t?.skipInliningFonts,reuseImages:t?.reuseImages}})},LH=async({type:e,data:t,config:n})=>{if(e==="svg"){let r=await Qg({data:t,config:n});await Ls(r.outerHTML)}else if(e==="png")await Pp(zg({data:t,config:n}));else if(e==="json")await vp(t.elements,t.files);else throw new Error("Invalid export type")};var jg=e=>e.type==="diamond"?[u(e.width/2,0),u(e.width,e.height/2),u(e.width/2,e.height),u(0,e.height/2)]:[u(0,0),u(0+e.width,0),u(0+e.width,e.height),u(0,e.height)],e3=e=>ie(e)||Je(e)?e.points:jg(e),Fp=e=>{let t=e.reduce((n,[r,o])=>(n.minY=Math.min(n.minY,o),n.minX=Math.min(n.minX,r),n.maxX=Math.max(n.maxX,r),n.maxY=Math.max(n.maxY,o),n),{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,cx:0,cy:0});return t.cx=(t.maxX+t.minX)/2,t.cy=(t.maxY+t.minY)/2,t},_p=e=>{let t=e3(e),{cx:n,cy:r}=Fp(t),o=u(n,r),i=t.map(l=>T(l,o,e.angle)),{minX:a,minY:s,maxX:d,maxY:c}=Fp(i);return[a+e.x,s+e.y,d+e.x,c+e.y]},Op=(e,t,n=!1)=>{let r=_p(e),o=t[0]<=r[0]&&t[2]>=r[2]&&t[1]<=r[1]&&t[3]>=r[3];return n?o?!0:r[0]<=t[0]&&r[2]>=t[2]&&r[1]<=t[1]&&r[3]>=t[3]:o},t3=(e,t)=>{let n=_p(e);return(Pr(n[0],_e(t[0],t[2]))||Pr(t[0],_e(n[0],n[2])))&&(Pr(n[1],_e(t[1],t[3]))||Pr(t[1],_e(n[1],n[3])))},Bp=({elements:e,bounds:t,type:n,errorMargin:r=0})=>{sa(t)&&(t=Ze(t,ee(e)));let o=[t[0]-r,t[1]-r,t[2]+r,t[3]+r],i=new Set;for(let a of e){if(i.has(a.id))continue;if(n==="overlap"?t3(a,o):n==="inside"?Op(a,o):Op(a,o,!0)){if(i.add(a.id),a.boundElements)for(let d of a.boundElements)i.add(d.id);G(a)&&a.containerId&&i.add(a.containerId),j(a)&&(a.startBinding&&i.add(a.startBinding.elementId),a.endBinding&&i.add(a.endBinding?.elementId))}}return e.filter(a=>i.has(a.id))};function Ap(e){return[Math.min(e[0][0],e[1][0]),Math.min(e[0][1],e[1][1]),Math.max(e[0][0],e[1][0]),Math.max(e[0][1],e[1][1])]}function n3(e,t){return e[0]<=t[2]&&e[2]>=t[0]&&e[1]<=t[3]&&e[3]>=t[1]}var r3=1e-6;function Hp(e,t){let n=_(e[1],e[0]),r=_(t,e[0]),o=Me(n,r);return Math.abs(o)<r3}function Ds(e,t){let n=_(e[1],e[0]),r=_(t,e[0]);return Me(n,r)<0}function Kp(e,t){return Hp(e,t[0])||Hp(e,t[1])||(Ds(e,t[0])?!Ds(e,t[1]):Ds(e,t[1]))}function Jp(e,t){return n3(Ap(e),Ap(t))&&Kp(e,t)&&Kp(t,e)}var tK=(e,t,n)=>{let r=ee(e);for(let o of t)if(o.frameId){let i=n.get(o.id),a=n.get(o.frameId);if(i){let s=r.get(i);s&&C(s,{frameId:a??o.frameId},!1)}}};function Ss(e,t,n){let r=Ca(t,n),o=Ca(e,n);return r.some(a=>o.some(s=>Jp(a,s)))}var Cp=(e,t,n)=>Hi(xi(e,t,n,!1)).filter(r=>!de(r)&&!r.frameId||r.frameId===t.id),vs=(e,t,n)=>xi([t],e,n).some(r=>r.id===t.id);var Ai=(e,t,n)=>{let[r,o,i,a]=Y(t,n),[s,d,c,l]=Pe(e);return r<=s&&o<=d&&i>=c&&a>=l},wn=(e,t,n)=>Ai([e],t,n)||Ss(e,t,n)||vs(e,t,n),nK=(e,t,n)=>{let[r,o,i,a]=Y(t,n);return vo(u(r,o),u(e.x,e.y),u(i,a))};var rK=e=>{let t=new Map;for(let n of e){let r=de(n)?n.id:n.frameId;r&&!t.has(r)&&t.set(r,lo(e,r))}return t},lo=(e,t)=>{let n=[];for(let r of e.values())r.frameId===t&&n.push(r);return n},ws=e=>e.filter(t=>de(t)),Rs=e=>{let t=ee(ws(e));return e.filter(n=>t.has(n.id)||!n.frameId||!t.has(n.frameId))},oK=(e,t,n,r)=>{let o=lo(e,t.id),i=new Set(o),a=new Set([...Cp(e,t,r),...o.filter(p=>vs(p,t,r))]),s=o.filter(p=>!a.has(p)),d=new Set(Array.from(a).flatMap(p=>p.groupIds));for(let p of s)if(!Ss(p,t,r))p.groupIds.length===0&&i.delete(p);else if(p.groupIds.length>0)for(let m of p.groupIds)d.add(m);for(let p of s)if(p.groupIds.length>0){let m=!0;for(let b of p.groupIds)d.has(b)&&(m=!1);m&&i.delete(p)}let c=Array.from(a).filter(p=>p.groupIds.length===0);for(let p of c)i.add(p);let l=Array.from(a).filter(p=>p.groupIds.length>0),U=b2(l,n);for(let[p,m]of Object.entries(U))if(m){let b=on(e,p);if(Ai(b,t,r))for(let E of b)i.add(E)}return[...i].filter(p=>!(G(p)&&p.containerId))},iK=(e,t,n)=>o3(Hi(e,Cp(e,t,n)),t,n),o3=(e,t,n)=>{let r=[],o=new Map;for(let i of e){let a=!1;if(i.groupIds.length>0){if(i.groupIds.some(s=>o.get(s)))a=!0;else{let s=new Set(i.groupIds.flatMap(d=>on(n,d)));a=!Ai(Array.from(s),t,n)}i.groupIds.forEach(s=>{o.set(s,a)})}a||r.push(i)}return r},We=(e,t)=>e.frameId&&t.get(e.frameId)||null,aK=(e,t)=>{let n=new Set,r=ee(e);e=Hi(e);for(let a of e)de(a)&&a.id!==t.id&&n.add(a.id);let o=new Set,i=[];for(let a of e)if(!(de(a)||a.frameId&&n.has(a.frameId)))if(a.groupIds.length){let s=a.groupIds.at(-1);if(!o.has(s)){o.add(s);let d=on(e,s);if(d.some(c=>wn(c,t,r)))for(let c of d)i.push(c)}}else wn(a,t,r)&&i.push(a);return i},i3=(e,t,n,r)=>{let o=ee(e),i=new Map;for(let c of e.values())c.frameId===n.id&&i.set(c.id,!0);let a=new Set(t.map(c=>c.id)),s=[],d=new Set;for(let c of t)de(c)&&c.id!==n.id&&d.add(c.id);for(let c of Hi(e,t)){if(de(c)||c.frameId&&d.has(c.frameId)||c.frameId&&r.selectedElementIds[c.id]&&r.selectedElementIds[c.frameId])continue;i.has(c.id)||s.push(c);let l=re(c,o);l&&!a.has(l.id)&&!i.has(l.id)&&s.push(l)}for(let c of s)C(c,{frameId:n.id},!1);return e},Yp=(e,t)=>{let n=new Map,r=new Map;for(let o of e)if(o.frameId){n.set(o.id,o);let i=r.get(o.frameId)||[];i.push(o);let a=re(o,t);a&&(n.set(a.id,a),i.push(a)),r.set(o.frameId,i)}for(let[,o]of n)C(o,{frameId:null},!1)},a3=(e,t)=>{let n=lo(e,t.id);return Yp(n,ee(e)),e},sK=(e,t,n,r)=>i3(a3(e,n),t,n,r.state).slice(),dK=(e,t,n)=>{let r=n.scene.getSelectedElements({selectedElementIds:t.selectedElementIds,elements:e}),o=new Set(r);if(t.editingGroupId)for(let s of r)s.groupIds.length===0?o.add(s):s.groupIds.flatMap(d=>on(e,d)).forEach(d=>o.add(d));let i=new Set,a=ee(e);return o.forEach(s=>{s.frameId&&!de(s)&&!Vp(s,a,t)&&i.add(s)}),i.size>0&&Yp(i,a),e},Hi=(e,t)=>{let n=new Set,r=t||e;for(let a of r.values()){let s=a.groupIds[a.groupIds.length-1];s&&n.add(s)}let o=new Set;for(let a of n)on(e,a).some(s=>de(s))&&o.add(a);let i=[];for(let a of r.values())o.has(a.groupIds[a.groupIds.length-1])||i.push(a);return i},Pi=(e,t,n)=>{let r=G(e)&&Ye(e,t)||e;return r.frameId&&n.selectedElementIds[r.id]&&n.selectedElementIds[r.frameId]?We(r,t):n.selectedElementIds[r.id]&&n.selectedElementsAreBeingDragged?n.frameToHighlight:We(r,t)},Vp=(e,t,n,r)=>{let o=r?.targetFrame??Pi(e,t,n);if(!o)return!1;let i=G(e)&&Ye(e,t)||e,a=d=>{r?.checkedGroups&&i.groupIds.forEach(c=>{r.checkedGroups?.set(c,d)})};if(!n.selectedElementIds[i.id]||!n.selectedElementsAreBeingDragged||n.selectedElementIds[i.id]&&n.selectedElementIds[o.id])return!0;if(i.groupIds.length===0)return wn(i,o,t);for(let d of i.groupIds)if(r?.checkedGroups?.has(d))return r.checkedGroups.get(d);let s=new Set(i.groupIds.filter(d=>r?.checkedGroups?!r.checkedGroups.has(d):!0).flatMap(d=>on(t,d)));if(n.editingGroupId&&n.selectedElementsAreBeingDragged){let d=new Set(ot(t,n));if(n.frameToHighlight!==null)return!0;d.forEach(l=>{s.delete(l)})}for(let d of s)if(de(d))return a(!1),!1;for(let d of s)if(wn(d,o,t))return a(!0),!0;return!1},ys=(e,t,n,r,o)=>{if(!n.frameRendering||!n.frameRendering.clip)return!1;let i=Ss(e,t,r)||vs(e,t,r);if(i){for(let a of e.groupIds)o?.set(a,!0);return!0}if(!i&&e.groupIds.length>0&&!Ai([e],t,r)){let a=!1;if(n.selectedElementsAreBeingDragged)a=Vp(e,r,n,{targetFrame:t,checkedGroups:o});else{a=e.frameId===t.id;for(let s of e.groupIds)o?.set(s,a)}for(let s of e.groupIds)o?.set(s,a);return a}return!1},wp=e=>e.name===null?Pd(e)?"Frame":"AI Frame":e.name,Rp=(e,t)=>Bp({elements:e,bounds:t,type:"overlap"}).filter(n=>!n.frameId||n.frameId===t.id),cK=e=>{let t=ee(e);return e.length>1&&e.some(n=>n.frameId&&t.has(n.frameId))};var s3=e=>{let t=new Set;return e.forEach(n=>{de(n)&&t.add(n.id)}),e.filter(n=>!(n.frameId&&t.has(n.frameId)))},xi=(e,t,n,r=!0)=>{let[o,i,a,s]=Y(t,n),d=e.filter(c=>{let[l,U,p,m]=Ze(c,n),b=We(c,n);if(b){let[E,g,y,x]=Ze(b,n);l=Math.max(E,l),U=Math.max(g,U),p=Math.min(y,p),m=Math.min(x,m)}return c.locked===!1&&c.type!=="selection"&&!Fe(c)&&o<=l&&i<=U&&a>=p&&s>=m});return d=r?s3(d):d,d=d.filter(c=>{let l=We(c,n);return l?wn(c,l,n):!0}),d},ns=(e,t,n,r)=>{let o=new Set(t.map(i=>i.id));return e.filter(i=>{let a=qp(i,n.width,n.height,n,r);return!o.has(i.id)&&a})},vE=function(){let e=null,t=null,n=null,r=(o,i)=>(n!=null&&o===e&&i.selectedElementIds===t||(n=o.some(a=>i.selectedElementIds[a.id]),e=o,t=i.selectedElementIds),n);return r.clearCache=()=>{e=null,t=null,n=null},r}(),$E=(e,t,n)=>{let r=Array.from(new Set(ot(e,t).map(o=>n(o))));return r.length===1?r[0]:null},ot=(e,t,n)=>{let r=new Set,o=[];for(let i of e.values()){if(t.selectedElementIds[i.id]){o.push(i),r.add(i.id);continue}if(n?.includeBoundTextElement&&Fe(i)&&t.selectedElementIds[i?.containerId]){o.push(i),r.add(i.id);continue}}if(n?.includeElementsInFrames){let i=[];return o.forEach(a=>{de(a)&&lo(e,a.id).forEach(s=>!r.has(s.id)&&i.push(s)),i.push(a)}),i}return o},PE=(e,t)=>t.editingTextElement?[t.editingTextElement]:t.newElement?[t.newElement]:ot(e,t,{includeBoundTextElement:!0}),ja=(e,t)=>zt(t.selectedElementIds,e)?t.selectedElementIds:e;var Gp=e=>{let t=new Map,n=[];for(let r of e)r.isDeleted||(n.push(r),t.set(r.id,r));return{elementsMap:t,elements:n}},c3=d3(e=>{(L.DEV||L.MODE===je.TEST||window?.DEBUG_FRACTIONAL_INDICES)&&ds(e,{shouldThrow:L.DEV||L.MODE===je.TEST,includeBoundTextValidation:!0})},1e3*60,{leading:!0,trailing:!1}),l3=e=>{let t=["includeBoundTextElement","includeElementsInFrames"],n="";for(let r of t)n+=`${r}:${e[r]?"1":"0"}`;return n},Xp=e=>typeof e=="string",Jn=class Jn{constructor(){P(this,"callbacks",new Set);P(this,"nonDeletedElements",[]);P(this,"nonDeletedElementsMap",Ve(new Map));P(this,"elements",[]);P(this,"nonDeletedFramesLikes",[]);P(this,"frames",[]);P(this,"elementsMap",Ve(new Map));P(this,"selectedElementsCache",{selectedElementIds:null,elements:null,cache:new Map});P(this,"sceneNonce");P(this,"insertElement",t=>{let n=t.frameId?this.getElementIndex(t.frameId):this.elements.length;this.insertElementAtIndex(t,n)});P(this,"insertElements",t=>{if(!t.length)return;let n=t[0]?.frameId?this.getElementIndex(t[0].frameId):this.elements.length;this.insertElementsAtIndex(t,n)});P(this,"getContainerElement",t=>t&&t.containerId&&this.getElement(t.containerId)||null);P(this,"getElementsFromId",t=>{let n=this.getNonDeletedElementsMap(),r=n.get(t);return r?[r]:on(n,t)})}static mapElementToScene(t,n){Xp(t)?this.sceneMapById.set(t,n):(this.sceneMapByElement.set(t,n),this.sceneMapById.set(t.id,n))}static getScene(t){return Xp(t)?this.sceneMapById.get(t)||null:this.sceneMapByElement.get(t)||null}getSceneNonce(){return this.sceneNonce}getNonDeletedElementsMap(){return this.nonDeletedElementsMap}getElementsIncludingDeleted(){return this.elements}getElementsMapIncludingDeleted(){return this.elementsMap}getNonDeletedElements(){return this.nonDeletedElements}getFramesIncludingDeleted(){return this.frames}getSelectedElements(t){let n=l3(t),r=t?.elements||this.nonDeletedElements;if(this.selectedElementsCache.elements===r&&this.selectedElementsCache.selectedElementIds===t.selectedElementIds){let i=this.selectedElementsCache.cache.get(n);if(i)return i}else t?.elements==null&&this.selectedElementsCache.cache.clear();let o=ot(r,{selectedElementIds:t.selectedElementIds},t);return t?.elements==null&&(this.selectedElementsCache.selectedElementIds=t.selectedElementIds,this.selectedElementsCache.elements=this.nonDeletedElements,this.selectedElementsCache.cache.set(n,o)),o}getNonDeletedFramesLikes(){return this.nonDeletedFramesLikes}getElement(t){return this.elementsMap.get(t)||null}getNonDeletedElement(t){let n=this.getElement(t);return n&&kp(n)?n:null}mapElements(t){let n=!1,r=this.elements.map(o=>{let i=t(o);return i!==o&&(n=!0),i});return n&&this.replaceAllElements(r),n}replaceAllElements(t){let n=t instanceof Array?t:Array.from(t.values()),r=[];c3(n),this.elements=Hn(n),this.elementsMap.clear(),this.elements.forEach(i=>{de(i)&&r.push(i),this.elementsMap.set(i.id,i),Jn.mapElementToScene(i,this)});let o=Gp(this.elements);this.nonDeletedElements=o.elements,this.nonDeletedElementsMap=o.elementsMap,this.frames=r,this.nonDeletedFramesLikes=Gp(this.frames).elements,this.triggerUpdate()}triggerUpdate(){this.sceneNonce=Ct();for(let t of Array.from(this.callbacks))t()}onUpdate(t){if(this.callbacks.has(t))throw new Error;return this.callbacks.add(t),()=>{if(!this.callbacks.has(t))throw new Error;this.callbacks.delete(t)}}destroy(){this.elements=[],this.nonDeletedElements=[],this.nonDeletedFramesLikes=[],this.frames=[],this.elementsMap.clear(),this.selectedElementsCache.selectedElementIds=null,this.selectedElementsCache.elements=null,this.selectedElementsCache.cache.clear(),Jn.sceneMapById.forEach((t,n)=>{t===this&&Jn.sceneMapById.delete(n)}),this.callbacks.clear()}insertElementAtIndex(t,n){if(!Number.isFinite(n)||n<0)throw new Error("insertElementAtIndex can only be called with index >= 0");let r=[...this.elements.slice(0,n),t,...this.elements.slice(n)];Qr(r,ee([t])),this.replaceAllElements(r)}insertElementsAtIndex(t,n){if(!t.length)return;if(!Number.isFinite(n)||n<0)throw new Error("insertElementAtIndex can only be called with index >= 0");let r=[...this.elements.slice(0,n),...t,...this.elements.slice(n)];Qr(r,ee(t)),this.replaceAllElements(r)}getElementIndex(t){return this.elements.findIndex(n=>n.id===t)}};P(Jn,"sceneMapByElement",new WeakMap),P(Jn,"sceneMapById",new Map);var $s=Jn,Ps=$s;var Uo=class{constructor(t){this.scoreFunction=t;P(this,"content",[])}sinkDown(t){let n=this.content[t];for(;t>0;){let r=(t+1>>1)-1,o=this.content[r];if(this.scoreFunction(n)<this.scoreFunction(o))this.content[r]=n,this.content[t]=o,t=r;else break}}bubbleUp(t){let n=this.content.length,r=this.content[t],o=this.scoreFunction(r);for(;;){let i=t+1<<1,a=i-1,s=null,d=0;if(a<n){let c=this.content[a];d=this.scoreFunction(c),d<o&&(s=a)}if(i<n){let c=this.content[i];this.scoreFunction(c)<(s===null?o:d)&&(s=i)}if(s!==null)this.content[t]=this.content[s],this.content[s]=r,t=s;else break}}push(t){this.content.push(t),this.sinkDown(this.content.length-1)}pop(){if(this.content.length===0)return null;let t=this.content[0],n=this.content.pop();return this.content.length>0&&(this.content[0]=n,this.bubbleUp(0)),t}remove(t){if(this.content.length===0)return;let n=this.content.indexOf(t),r=this.content.pop();n<this.content.length&&(this.content[n]=r,this.scoreFunction(r)<this.scoreFunction(t)?this.sinkDown(n):this.bubbleUp(n))}size(){return this.content.length}rescoreElement(t){this.sinkDown(this.content.indexOf(t))}};var Fs=1,ue=40,U3=(e,t)=>{let n=e.fixedSegments?e.fixedSegments.slice():null;if(n){let r=[];e.points.map(a=>u(e.x+a[0],e.y+a[1])).forEach((a,s,d)=>{if(s<2)return r.push(a);let c=rr(a,d[s-1]),l=rr(d[s-1],d[s-2]);if($e(c,l)){let U=n?.findIndex(m=>m.index===s-1)??-1,p=n?.findIndex(m=>m.index===s)??-1;p!==-1&&(n[p].start=u(d[s-2][0]-e.x,d[s-2][1]-e.y)),U!==-1&&n.splice(U,1),r.splice(-1,1),n.forEach(m=>{m.index>s-1&&(m.index-=1)})}return r.push(a)});let o=[];r.forEach((a,s,d)=>{if(s<3)return o.push(a);if(oe(d[s-2],d[s-1])<Fs){let c=n?.findIndex(p=>p.index===s-2)??-1,l=n?.findIndex(p=>p.index===s-1)??-1;l!==-1&&n.splice(l,1),c!==-1&&n.splice(c,1),o.splice(-2,2),n.forEach(p=>{p.index>s-2&&(p.index-=2)});let U=wt(a,d[s-1]);return o.push(u(U?a[0]:d[s-2][0],U?d[s-2][1]:a[1]))}o.push(a)});let i=n.filter(a=>a.index!==1&&a.index!==o.length-1);return i.length===0?Mn(Bs(As(_s(e,Os(e,t,o.map(a=>u(a[0]-e.x,a[1]-e.y))))??[])),i,null,null):(L.DEV&&Be(n6(o),"Invalid elbow points with fixed segments"),Mn(o,i,e.startIsSpecial,e.endIsSpecial))}return{x:e.x,y:e.y,points:e.points,fixedSegments:e.fixedSegments,startIsSpecial:e.startIsSpecial,endIsSpecial:e.endIsSpecial}},f3=(e,t,n)=>{let r=t.map(M=>M.index),i=(e.fixedSegments?.map(M=>M.index)??[]).findIndex(M=>!r.includes(M));if(i===-1||!e.fixedSegments?.[i])return{points:e.points};let a=e.fixedSegments[i].index,s=e.fixedSegments[i-1],d=e.fixedSegments[i+1],c=e.x+(s?s.end[0]:0),l=e.y+(s?s.end[1]:0),{startHeading:U,endHeading:p,startGlobalPoint:m,endGlobalPoint:b,hoveredStartElement:E,hoveredEndElement:g,...y}=Os({x:c,y:l,startBinding:s?null:e.startBinding,endBinding:d?null:e.endBinding,startArrowhead:null,endArrowhead:null},n,[u(0,0),u(e.x+(d?.start[0]??e.points[e.points.length-1][0])-c,e.y+(d?.start[1]??e.points[e.points.length-1][1])-l)],{isDragging:!1}),{points:x}=Mn(Bs(As(_s(e,{startHeading:U,endHeading:p,startGlobalPoint:m,endGlobalPoint:b,hoveredStartElement:E,hoveredEndElement:g,...y})??[])),t,null,null),h=[];if(s)for(let M=0;M<s.index;M++)h.push(u(e.x+e.points[M][0],e.y+e.points[M][1]));if(x.forEach(M=>{h.push(u(e.x+(s?s.end[0]:0)+M[0],e.y+(s?s.end[1]:0)+M[1]))}),d)for(let M=d.index;M<e.points.length;M++)h.push(u(e.x+e.points[M][0],e.y+e.points[M][1]));let I=(d?.index??e.points.length)-(s?.index??0)-1,w=t.map(M=>M.index>a?{...M,index:M.index-I+(x.length-1)}:M),v=h.flatMap((M,S)=>{let F=h[S-1],$=h[S+1];if(F&&$){let O=rr(M,F),A=rr($,M);if($e(O,A))return w.forEach(Z=>{Z.index>S&&(Z.index-=1)}),[];if($e(O,Ha(A)))return w.forEach(Z=>{Z.index>S&&(Z.index+=1)}),[M,M]}return[M]});return Mn(v,w,!1,!1)},p3=(e,t,n,r,o,i)=>{let a=t.map((w,v)=>e.fixedSegments==null||e.fixedSegments[v]===void 0||e.fixedSegments[v].index!==w.index||(w.start[0]!==e.fixedSegments[v].start[0]&&w.end[0]!==e.fixedSegments[v].end[0])!=(w.start[1]!==e.fixedSegments[v].start[1]&&w.end[1]!==e.fixedSegments[v].end[1])?v:null).filter(w=>w!==null).shift();if(a==null)return{points:e.points};let s=e.fixedSegments?.findIndex(w=>w.index===1)??-1,d=e.fixedSegments?.findIndex(w=>w.index===e.points.length-1)??-1,c=oe(t[a].start,t[a].end),l=c<ue+5;if(s===-1&&t[a].index===1&&o){let w=Rt(n),M=(w?$e(n,Re):$e(n,Oe))?l?c/2:ue:l?-c/2:-ue;t[a].start=u(t[a].start[0]+(w?M:0),t[a].start[1]+(w?0:M))}if(d===-1&&t[a].index===e.points.length-1&&i){let w=Rt(r),M=(w?$e(r,Re):$e(r,Oe))?l?c/2:ue:l?-c/2:-ue;t[a].end=u(t[a].end[0]+(w?M:0),t[a].end[1]+(w?0:M))}let U=t.map(w=>({...w,start:u(e.x+w.start[0],e.y+w.start[1]),end:u(e.x+w.end[0],e.y+w.end[1])})),p=e.points.map((w,v)=>u(e.x+w[0],e.y+w[1])),m=U[a].index-1,b=U[a].index,E=U[a].start,g=U[a].end,y=p[m-1]&&!He(p[m],p[m-1])?wt(p[m-1],p[m]):void 0,x=p[b+1]&&!He(p[b],p[b+1])?wt(p[b+1],p[b]):void 0;if(y!==void 0){let w=y?1:0;p[m-1][w]=E[w]}if(p[m]=E,p[b]=g,x!==void 0){let w=x?1:0;p[b+1][w]=g[w]}let h=U.findIndex(w=>w.index===m);if(h!==-1){let w=wt(U[h].end,U[h].start)?1:0;U[h].start[w]=E[w],U[h].end=E}let I=U.findIndex(w=>w.index===b+1);if(I!==-1){let w=wt(U[I].end,U[I].start)?1:0;U[I].end[w]=g[w],U[I].start=g}if(s===-1&&m===0){let w=o?Rt(n):wt(p[1],p[0]);p.unshift(u(w?E[0]:e.x+e.points[0][0],w?e.y+e.points[0][1]:E[1])),o&&p.unshift(u(e.x+e.points[0][0],e.y+e.points[0][1]));for(let v of U)v.index+=o?2:1}if(d===-1&&b===e.points.length-1){let w=Rt(r);p.push(u(w?g[0]:e.x+e.points[e.points.length-1][0],w?e.y+e.points[e.points.length-1][1]:g[1])),i&&p.push(u(e.x+e.points[e.points.length-1][0],e.y+e.points[e.points.length-1][1]))}return Mn(p,U.map(w=>({...w,start:u(w.start[0]-e.x,w.start[1]-e.y),end:u(w.end[0]-e.x,w.end[1]-e.y)})),!1,!1)},u3=(e,t,n,r,o,i,a,s,d)=>{let c=e.startIsSpecial??null,l=e.endIsSpecial??null,U=t.map((g,y)=>y===0?u(e.x+g[0],e.y+g[1]):y===t.length-1?u(e.x+g[0],e.y+g[1]):u(e.x+e.points[y][0],e.y+e.points[y][1])),p=n.map(g=>({...g,start:u(e.x+(g.start[0]-t[0][0]),e.y+(g.start[1]-t[0][1])),end:u(e.x+(g.end[0]-t[0][0]),e.y+(g.end[1]-t[0][1]))})),m=[],b=2+(c?1:0),E=2+(l?1:0);for(;m.length+b<U.length-E;)m.push(U[m.length+b]);{let g=U[c?2:1],y=U[c?3:2],x=Rt(r),h=Rt(At(_(g,y)));if(s&&x===h){let I=x?$e(r,Re):$e(r,Oe);if(m.unshift(u(h?i[0]+(I?ue:-ue):y[0],h?y[1]:i[1]+(I?ue:-ue))),m.unshift(u(x?i[0]+(I?ue:-ue):i[0],x?i[1]:i[1]+(I?ue:-ue))),!c){c=!0;for(let w of p)w.index>1&&(w.index+=1)}}else if(m.unshift(u(h?i[0]:g[0],h?g[1]:i[1])),c){c=!1;for(let I of p)I.index>1&&(I.index-=1)}m.unshift(i)}{let g=U[U.length-(l?3:2)],y=U[U.length-(l?4:3)],x=Rt(o),h=wt(y,g);if(d&&x===h){let I=x?$e(o,Re):$e(o,Oe);m.push(u(h?a[0]+(I?ue:-ue):y[0],h?y[1]:a[1]+(I?ue:-ue))),m.push(u(x?a[0]+(I?ue:-ue):a[0],x?a[1]:a[1]+(I?ue:-ue))),l||(l=!0)}else m.push(u(h?a[0]:g[0],h?g[1]:a[1])),l&&(l=!1)}return m.push(a),Mn(m,p.map(({index:g})=>({index:g,start:m[g-1],end:m[g]})).map(g=>({...g,start:u(g.start[0]-i[0],g.start[1]-i[1]),end:u(g.end[0]-i[0],g.end[1]-i[1])})),c,l)},xe=1e6,e6=(e,t,n,r)=>{if(e.points.length<2)return{points:n.points??e.points};if((e.x<-xe||e.x>xe||e.y<-xe||e.y>xe||e.x+(n?.points?.[n?.points?.length-1]?.[0]??0)<-xe||e.x+(n?.points?.[n?.points?.length-1]?.[0]??0)>xe||e.y+(n?.points?.[n?.points?.length-1]?.[1]??0)<-xe||e.y+(n?.points?.[n?.points?.length-1]?.[1]??0)>xe||e.x+(e?.points?.[e?.points?.length-1]?.[0]??0)<-xe||e.x+(e?.points?.[e?.points?.length-1]?.[0]??0)>xe||e.y+(e?.points?.[e?.points?.length-1]?.[1]??0)<-xe||e.y+(e?.points?.[e?.points?.length-1]?.[1]??0)>xe)&&console.error("Elbow arrow (or update) is outside reasonable bounds (> 1e6)",{arrow:e,updates:n}),e.x=se(e.x,-xe,xe),e.y=se(e.y,-xe,xe),n.points&&(n.points=n.points.map(([m,b])=>u(se(m,-xe,xe),se(b,-xe,xe)))),L.PROD||(Be(!n.points||n.points.length>=2,"Updated point array length must match the arrow point length, contain exactly the new start and end points or not be specified at all (i.e. you can't add new points between start and end manually to elbow arrows)"),Be(!e.fixedSegments||e.fixedSegments.map(m=>m.start[0]===m.end[0]||m.start[1]===m.end[1]).every(Boolean),"Fixed segments must be either horizontal or vertical"),Be(!n.fixedSegments||n.fixedSegments.map(m=>m.start[0]===m.end[0]||m.start[1]===m.end[1]).every(Boolean),"Updates to fixed segments must be either horizontal or vertical"),Be(e.points.slice(1).map((m,b)=>m[0]===e.points[b][0]||m[1]===e.points[b][1]),"Elbow arrow segments must be either horizontal or vertical")),t.size===0&&n.points&&n6(n.points))return Mn(n.points.map(m=>u(e.x+m[0],e.y+m[1])),e.fixedSegments,e.startIsSpecial,e.endIsSpecial);let o=n.points?n.points&&n.points.length===2?e.points.map((m,b)=>b===0?n.points[0]:b===e.points.length-1?n.points[1]:m):n.points.slice():e.points.slice(),{startHeading:i,endHeading:a,startGlobalPoint:s,endGlobalPoint:d,hoveredStartElement:c,hoveredEndElement:l,...U}=Os({x:e.x,y:e.y,startBinding:typeof n.startBinding<"u"?n.startBinding:e.startBinding,endBinding:typeof n.endBinding<"u"?n.endBinding:e.endBinding,startArrowhead:e.startArrowhead,endArrowhead:e.endArrowhead},t,o,r),p=n.fixedSegments??e.fixedSegments??[];return!n.points&&!n.fixedSegments&&!n.startBinding&&!n.endBinding?U3(e,t):n.startBinding===e.startBinding&&n.endBinding===e.endBinding?{}:p.length===0?Mn(Bs(As(_s(e,{startHeading:i,endHeading:a,startGlobalPoint:s,endGlobalPoint:d,hoveredStartElement:c,hoveredEndElement:l,...U})??[])),p,null,null):(e.fixedSegments?.length??0)>p.length?f3(e,p,t):n.points?n.points&&n.fixedSegments?n:u3(e,o,p,i,a,s,d,c,l):p3(e,p,i,a,c,l)},Os=(e,t,n,r)=>{let o=un(n[0],ve(e.x,e.y)),i=un(n[n.length-1],ve(e.x,e.y)),a=e.startBinding&&Wp(e.startBinding.elementId,t),s=e.endBinding&&Wp(e.endBinding.elementId,t),[d,c]=r?.isDragging?I3(o,i,t,r?.zoom):[a,s],l=zp({...e,elbowed:!0,points:n},"start",e.startBinding?.fixedPoint,o,a,d,r?.isDragging),U=zp({...e,elbowed:!0,points:n},"end",e.endBinding?.fixedPoint,i,s,c,r?.isDragging),p=Qp(l,U,t,d,o),m=Qp(U,l,t,c,i),b=[l[0]-2,l[1]-2,l[0]+2,l[1]+2],E=[U[0]-2,U[1]-2,U[0]+2,U[1]+2],g=d?ht(d,Tn(p,e.startArrowhead?be*6:be*2,1)):b,y=c?ht(c,Tn(m,e.endArrowhead?be*6:be*2,1)):E,x=xn(l,c?ht(c,Tn(m,ue,ue)):E)||xn(U,d?ht(d,Tn(p,ue,ue)):b),h=t6(x?[b,E]:[g,y]),I=E3(x?b:g,x?E:y,h,x?Tn(p,!d&&!c?0:ue,0):Tn(p,!d&&!c?0:ue-(e.startArrowhead?be*6:be*2),ue),x?Tn(m,!d&&!c?0:ue,0):Tn(m,!d&&!c?0:ue-(e.endArrowhead?be*6:be*2),ue),x,d&&ht(d),c&&ht(c)),w=Zp(I[0],p,l),v=Zp(I[1],m,U);return{dynamicAABBs:I,startDonglePosition:w,startGlobalPoint:l,startHeading:p,endDonglePosition:v,endGlobalPoint:U,endHeading:m,commonBounds:h,hoveredStartElement:d,hoveredEndElement:c,boundsOverlap:x,startElementBounds:g,endElementBounds:y}},_s=(e,t)=>{let{dynamicAABBs:n,startDonglePosition:r,startGlobalPoint:o,startHeading:i,endDonglePosition:a,endGlobalPoint:s,endHeading:d,commonBounds:c,hoveredEndElement:l}=t,U=g3(n,r||o,i,a||s,d,c),p=r&&Ki(r,U),m=a&&Ki(a,U),b=Ki(s,U);b&&l&&(b.closed=!0);let E=Ki(o,U);E&&e.startBinding&&(E.closed=!0);let g=p&&m&&(xn(p.pos,n[1])||xn(m.pos,n[0])),y=m3(p||E,m||b,U,i||Re,d||Re,g?[]:n);if(y){let x=y.map(h=>[h.pos[0],h.pos[1]]);return p&&x.unshift(o),m&&x.push(s),x}return null},Tn=(e,t,n)=>{switch(e){case ze:return[t,n,n,n];case Re:return[n,t,n,n];case Oe:return[n,n,t,n]}return[n,n,n,t]},m3=(e,t,n,r,o,i)=>{let a=Ns(e.pos,t.pos),s=new Uo(d=>d.f);for(s.push(e);s.size()>0;){let d=s.pop();if(!d||d.closed)continue;if(d===t)return b3(e,d);d.closed=!0;let c=h3(d.addr,n);for(let l=0;l<4;l++){let U=c[l];if(!U||U.closed)continue;let p=pt(U.pos,d.pos,.5);if(vd(...i.map(I=>xn(p,I))))continue;let m=y3(l),b=d.parent?At(_(d.pos,d.parent.pos)):r,E=Ha(b);if($e(E,m)||jp(e.addr,U.addr)&&$e(m,r)||jp(t.addr,U.addr)&&$e(m,o))continue;let y=b!==m,x=d.g+Ns(U.pos,d.pos)+(y?Math.pow(a,3):0),h=U.visited;if(!h||x<U.g){let I=x3(U,t,m,o);U.visited=!0,U.parent=d,U.h=Ns(t.pos,U.pos)+I*Math.pow(a,2),U.g=x,U.f=U.g+U.h,h?s.rescoreElement(U):s.push(U)}}}return null},b3=(e,t)=>{let n=t,r=[];for(;n.parent;)r.unshift(n),n=n.parent;return r.unshift(e),r},Ns=(e,t)=>Math.abs(e[0]-t[0])+Math.abs(e[1]-t[1]),E3=(e,t,n,r,o,i,a,s)=>{let d=a??e,c=s??t,[l,U,p,m]=r??[0,0,0,0],[b,E,g,y]=o??[0,0,0,0],x=[e[0]>t[2]?e[1]>t[3]||e[3]<t[1]?Math.min((d[0]+c[2])/2,e[0]-m):(d[0]+c[2])/2:e[0]>t[0]?e[0]-m:n[0]-m,e[1]>t[3]?e[0]>t[2]||e[2]<t[0]?Math.min((d[1]+c[3])/2,e[1]-l):(d[1]+c[3])/2:e[1]>t[1]?e[1]-l:n[1]-l,e[2]<t[0]?e[1]>t[3]||e[3]<t[1]?Math.max((d[2]+c[0])/2,e[2]+U):(d[2]+c[0])/2:e[2]<t[2]?e[2]+U:n[2]+U,e[3]<t[1]?e[0]>t[2]||e[2]<t[0]?Math.max((d[3]+c[1])/2,e[3]+p):(d[3]+c[1])/2:e[3]<t[3]?e[3]+p:n[3]+p],h=[t[0]>e[2]?t[1]>e[3]||t[3]<e[1]?Math.min((c[0]+d[2])/2,t[0]-y):(c[0]+d[2])/2:t[0]>e[0]?t[0]-y:n[0]-y,t[1]>e[3]?t[0]>e[2]||t[2]<e[0]?Math.min((c[1]+d[3])/2,t[1]-b):(c[1]+d[3])/2:t[1]>e[1]?t[1]-b:n[1]-b,t[2]<e[0]?t[1]>e[3]||t[3]<e[1]?Math.max((c[2]+d[0])/2,t[2]+E):(c[2]+d[0])/2:t[2]<e[2]?t[2]+E:n[2]+E,t[3]<e[1]?t[0]>e[2]||t[2]<e[0]?Math.max((c[3]+d[1])/2,t[3]+g):(c[3]+d[1])/2:t[3]<e[3]?t[3]+g:n[3]+g],I=t6([x,h]);if(!i&&x[2]-x[0]+h[2]-h[0]>I[2]-I[0]+1e-11&&x[3]-x[1]+h[3]-h[1]>I[3]-I[1]+1e-11){let[w,v]=[(h[0]+h[2])/2,(h[1]+h[3])/2];if(t[0]>e[2]&&e[1]>t[3]){let M=x[2]+(h[0]-x[2])/2,S=h[3]+(x[1]-h[3])/2;return Me(ve(e[2]-w,e[1]-v),ve(e[0]-w,e[3]-v))>0?[[x[0],x[1],M,x[3]],[M,h[1],h[2],h[3]]]:[[x[0],S,x[2],x[3]],[h[0],h[1],h[2],S]]}else if(e[2]<t[0]&&e[3]<t[1]){let M=x[2]+(h[0]-x[2])/2,S=x[3]+(h[1]-x[3])/2;return Me(ve(e[0]-w,e[1]-v),ve(e[2]-w,e[3]-v))>0?[[x[0],x[1],x[2],S],[h[0],S,h[2],h[3]]]:[[x[0],x[1],M,x[3]],[M,h[1],h[2],h[3]]]}else if(e[0]>t[2]&&e[3]<t[1]){let M=h[2]+(x[0]-h[2])/2,S=x[3]+(h[1]-x[3])/2;return Me(ve(e[2]-w,e[1]-v),ve(e[0]-w,e[3]-v))>0?[[M,x[1],x[2],x[3]],[h[0],h[1],M,h[3]]]:[[x[0],x[1],x[2],S],[h[0],S,h[2],h[3]]]}else if(e[0]>t[2]&&e[1]>t[3]){let M=h[2]+(x[0]-h[2])/2,S=h[3]+(x[1]-h[3])/2;return Me(ve(e[0]-w,e[1]-v),ve(e[2]-w,e[3]-v))>0?[[M,x[1],x[2],x[3]],[h[0],h[1],M,h[3]]]:[[x[0],S,x[2],x[3]],[h[0],h[1],h[2],S]]}}return[x,h]},g3=(e,t,n,r,o,i)=>{let a=new Set,s=new Set;n===et||n===Re?s.add(t[1]):a.add(t[0]),o===et||o===Re?s.add(r[1]):a.add(r[0]),e.forEach(l=>{a.add(l[0]),a.add(l[2]),s.add(l[1]),s.add(l[3])}),a.add(i[0]),a.add(i[2]),s.add(i[1]),s.add(i[3]);let d=Array.from(s).sort((l,U)=>l-U),c=Array.from(a).sort((l,U)=>l-U);return{row:d.length,col:c.length,data:d.flatMap((l,U)=>c.map((p,m)=>({f:0,g:0,h:0,closed:!1,visited:!1,parent:null,addr:[m,U],pos:[p,l]})))}},Zp=(e,t,n)=>{switch(t){case ze:return u(n[0],e[1]);case Re:return u(e[2],n[1]);case Oe:return u(n[0],e[3])}return u(e[0],n[1])},x3=(e,t,n,r)=>{if(r===Re)switch(n){case Re:return e.pos[0]>=t.pos[0]?4:e.pos[1]===t.pos[1]?0:2;case ze:return e.pos[1]>t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case Oe:return e.pos[1]<t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case et:return e.pos[1]===t.pos[1]?4:2}else if(r===et)switch(n){case Re:return e.pos[1]===t.pos[1]?4:2;case ze:return e.pos[1]>t.pos[1]&&e.pos[0]>t.pos[0]?1:3;case Oe:return e.pos[1]<t.pos[1]&&e.pos[0]>t.pos[0]?1:3;case et:return e.pos[0]<=t.pos[0]?4:e.pos[1]===t.pos[1]?0:2}else if(r===ze)switch(n){case Re:return e.pos[1]>t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case ze:return e.pos[1]>=t.pos[1]?4:e.pos[0]===t.pos[0]?0:2;case Oe:return e.pos[0]===t.pos[0]?4:2;case et:return e.pos[1]>t.pos[1]&&e.pos[0]>t.pos[0]?1:3}else if(r===Oe)switch(n){case Re:return e.pos[1]<t.pos[1]&&e.pos[0]<t.pos[0]?1:3;case ze:return e.pos[0]===t.pos[0]?4:2;case Oe:return e.pos[1]<=t.pos[1]?4:e.pos[0]===t.pos[0]?0:2;case et:return e.pos[1]<t.pos[1]&&e.pos[0]>t.pos[0]?1:3}return 0},h3=([e,t],n)=>[fo([e,t-1],n),fo([e+1,t],n),fo([e,t+1],n),fo([e-1,t],n)],fo=([e,t],n)=>e<0||e>=n.col||t<0||t>=n.row?null:n.data[t*n.col+e]??null,Ki=(e,t)=>{for(let n=0;n<t.col;n++)for(let r=0;r<t.row;r++){let o=fo([n,r],t);if(o&&e[0]===o.pos[0]&&e[1]===o.pos[1])return o}return null},t6=e=>[Math.min(...e.map(t=>t[0])),Math.min(...e.map(t=>t[1])),Math.max(...e.map(t=>t[2])),Math.max(...e.map(t=>t[3]))],Wp=(e,t)=>{let n=t.get(e);return n&&bt(n)?n:null},Mn=(e,t,n,r)=>{let o=e[0][0],i=e[0][1],a=e.map(s=>un(s,me(_(e[0]),-1)));return(o<-xe||o>xe||i<-xe||i>xe||o+a[a.length-1][0]<-xe||i+a[a.length-1][0]>xe||o+a[a.length-1][1]<-xe||i+a[a.length-1][1]>xe)&&console.error("Elbow arrow normalization is outside reasonable bounds (> 1e6)",{x:o,y:i,points:a,...hn(a)}),a=a.map(([s,d])=>u(se(s,-1e6,1e6),se(d,-1e6,1e6))),{points:a,x:se(o,-1e6,1e6),y:se(i,-1e6,1e6),fixedSegments:(t?.length??0)>0?t:null,...hn(a),startIsSpecial:n,endIsSpecial:r}},Bs=e=>{if(e.length>1){let t=Math.abs(e[0][1]-e[1][1])<Math.abs(e[0][0]-e[1][0]);return e.filter((n,r)=>{if(r===0||r===e.length-1)return!0;let o=e[r+1],i=Math.abs(n[1]-o[1])<Math.abs(n[0]-o[0]);return t===i?(t=i,!1):(t=i,!0)})}return e},As=e=>e.length>=4?e.filter((t,n)=>{if(n===0||n===e.length-1)return!0;let r=e[n-1];return oe(r,t)>Fs}):e,y3=e=>{switch(e){case 0:return ze;case 1:return Re;case 2:return Oe}return et},zp=(e,t,n,r,o,i,a)=>{if(a){if(i){let s=Ei(e,i,t);return l2(i,s)}return r}if(o){let s=bi(n||[0,0],o);return Math.abs(sr(o,s)-be)>.01?Ei(e,o,t):s}return r},Qp=(e,t,n,r,o)=>c2(e,t,r,r&&ht(r,Array(4).fill(sr(r,e))),n,o),I3=(e,t,n,r)=>{let o=Ve(new Map([...n].filter(a=>!a[1].isDeleted))),i=Array.from(n.values());return[yn(kt(e),i,o,r,!0,!0),yn(kt(t),i,o,r,!0,!0)]},jp=(e,t)=>e[0]===t[0]&&e[1]===t[1],n6=(e,t=Fs)=>e.slice(1).map((n,r)=>Math.abs(n[0]-e[r][0])<t||Math.abs(n[1]-e[r][1])<t).every(Boolean);var C=(e,t,n=!0,r)=>{let o=!1,{points:i,fixedSegments:a,fileId:s,startBinding:d,endBinding:c}=t;if(k(e)&&(Object.keys(t).length===0||typeof i<"u"||typeof a<"u"||typeof d<"u"||typeof c<"u")){let l=Ve(Ps.getScene(e)?.getNonDeletedElementsMap()??new Map);t={...t,angle:0,...e6({...e,x:t.x||e.x,y:t.y||e.y},l,{fixedSegments:a,points:i,startBinding:d,endBinding:c},{isDragging:r?.isDragging})}}else typeof i<"u"&&(t={...hn(i),...t});for(let l in t){let U=t[l];if(typeof U<"u"){if(e[l]===U&&(typeof U!="object"||U===null||l==="groupIds"||l==="scale"))continue;if(l==="scale"){let p=e[l],m=U;if(p[0]===m[0]&&p[1]===m[1])continue}else if(l==="points"){let p=e[l],m=U;if(p.length===m.length){let b=!1,E=p.length;for(;--E;){let g=p[E],y=m[E];if(g[0]!==y[0]||g[1]!==y[1]){b=!0;break}}if(!b)continue}}e[l]=U,o=!0}}return o&&((typeof t.height<"u"||typeof t.width<"u"||typeof s<"u"||typeof i<"u")&&he.delete(e),e.version++,e.versionNonce=Ct(),e.updated=Wt(),n&&Ps.getScene(e)?.triggerUpdate()),e},Lt=(e,t,n=!1)=>{let r=!1;for(let o in t){let i=t[o];if(typeof i<"u"){if(e[o]===i&&(typeof i!="object"||i===null))continue;r=!0}}return!r&&!n?e:{...e,...t,updated:Wt(),version:e.version+1,versionNonce:Ct()}},zr=(e,t)=>(e.version=(t??e.version)+1,e.versionNonce=Ct(),e.updated=Wt(),e);var io=e=>ie(e)||Je(e)?e.points.length<2:e.width===0&&e.height===0,qp=(e,t,n,r,o)=>{let[i,a,s,d]=Ze(e,o),c=vn({clientX:r.offsetLeft,clientY:r.offsetTop},r),l=vn({clientX:r.offsetLeft+t,clientY:r.offsetTop+n},r);return c.x<=s&&c.y<=d&&l.x>=i&&l.y>=a},aJ=(e,t,n,r,o,i)=>{let[a,s,d,c]=Pe(e,o),l=vn({clientX:r.offsetLeft+(i?.left||0),clientY:r.offsetTop+(i?.top||0)},r),U=vn({clientX:r.offsetLeft+t-(i?.right||0),clientY:r.offsetTop+n-(i?.bottom||0)},r);return a>=l.x&&s>=l.y&&d<=U.x&&c<=U.y},Ji=(e,t,n)=>{let r=Math.abs(t),o=Math.abs(n);if(e==="line"||e==="arrow"||e==="freedraw"){let i=Math.round(Math.atan(o/r)/$t)*$t;i===0?n=0:i===Math.PI/2?t=0:n=r*Math.tan(i)*Math.sign(n)||n}else e!=="selection"&&(n=r*Math.sign(n));return{width:t,height:n}},rs=(e,t,n,r)=>{let o=n-e,i=r-t,a=Math.round(Math.atan(i/o)/$t)*$t;if(a===0)i=0;else if(a===Math.PI/2)o=0;else{let s=Math.tan(a),d=-1,c=t-s*e,l=-1/s,U=-1,p=r-l*n,m=(d*p-U*c)/(s*U-l*d),b=(c*l-p*s)/(s*U-l*d);o=m-e,i=b-t}return{width:o,height:i}};var Es=e=>{let t={width:e.width,height:e.height,x:e.x,y:e.y};if(e.width<0){let n=Math.abs(e.width);t.width=n,t.x=e.x-n}if(e.height<0){let n=Math.abs(e.height);t.height=n,t.y=e.y-n}return t};var r6={mouse:8,pen:16,touch:28},w3=16,i6={e:!0,s:!0,n:!0,w:!0};var o6={e:!0,s:!0,n:!0,w:!0,nw:!0,se:!0},Hs={e:!0,s:!0,n:!0,w:!0},dn=(e,t,n,r,o,i,a)=>{let[s,d]=T(u(e+n/2,t+r/2),u(o,i),a);return[s-n/2,d-r/2,n,r]},Ci=e=>!(e.viewport.isMobile||e.isTouchScreen&&(qs||Gs)),Ks=e=>Ci(e)?i6:{},Yi=([e,t,n,r,o,i],a,s,d,c={},l=4,U=gr)=>{let p=r6[d],m=p/s.value,b=p/s.value,E=p/s.value,g=p/s.value,y=n-e,x=r-t,h=l/s.value,I=(p-U*2)/(2*s.value),w={nw:c.nw?void 0:dn(e-h-E+I,t-h-g+I,m,b,o,i,a),ne:c.ne?void 0:dn(n+h-I,t-h-g+I,m,b,o,i,a),sw:c.sw?void 0:dn(e-h-E+I,r+h-I,m,b,o,i,a),se:c.se?void 0:dn(n+h-I,r+h-I,m,b,o,i,a),rotation:c.rotation?void 0:dn(e+y/2-m/2,t-h-g+I-w3/s.value,m,b,o,i,a)},v=5*r6.mouse/s.value;return Math.abs(y)>v&&(c.n||(w.n=dn(e+y/2-m/2,t-h-g+I,m,b,o,i,a)),c.s||(w.s=dn(e+y/2-m/2,r+h-I,m,b,o,i,a))),Math.abs(x)>v&&(c.w||(w.w=dn(e-h-E+I,t+x/2-b/2,m,b,o,i,a)),c.e||(w.e=dn(n+h-I,t+x/2-b/2,m,b,o,i,a))),w},Js=(e,t,n,r="mouse",o=i6)=>{if(e.locked||k(e))return{};if(e.type==="freedraw"||ie(e)){if(e.points.length===2){let[,a]=e.points;a[0]===0||a[1]===0?o=Hs:a[0]>0&&a[1]<0?o=o6:a[0]>0&&a[1]>0?o=Hs:a[0]<0&&a[1]>0?o=o6:a[0]<0&&a[1]<0&&(o=Hs)}}else de(e)&&(o={...o,rotation:!0});let i=ie(e)?gr+8:Ke(e)?0:gr;return Yi(Y(e,n,!0),e.angle,t,r,o,i,Ke(e)?0:void 0)},pJ=(e,t)=>{if(t.editingLinearElement)return!1;if(e.length>1)return!0;let n=e[0];return k(n)?!1:ie(n)?n.points.length>2:!0};var Ys=(e,t,n)=>t>=e[0]&&t<=e[0]+e[2]&&n>=e[1]&&n<=e[1]+e[3],a6=(e,t,n,r,o,i,a,s)=>{if(!n.selectedElementIds[e.id])return!1;let{rotation:d,...c}=Js(e,i,t,a,Ks(s));if(d&&Ys(d,r,o))return"rotation";let l=Object.keys(c).filter(U=>{let p=c[U];return p?Ys(p,r,o):!1});if(l.length>0)return l[0];if(Ci(s)){let[U,p,m,b,E,g]=Y(e,t);if(!(ie(e)&&e.points.length<=2)){let y=Ke(e)?0:hr/i.value,x=hr/i.value,h=s6(u(U-y,p-y),u(m+y,b+y),u(E,g),e.angle);for(let[I,w]of Object.entries(h))if(Nt(u(r,o),w,x))return I}}return!1},R3=(e,t,n,r,o,i,a,s)=>e.reduce((d,c)=>{if(d)return d;let l=a6(c,a,t,n,r,o,i,s);return l?{element:c,transformHandleType:l}:null},null),T3=([e,t,n,r],o,i,a,s,d)=>{let c=Yi([e,t,n,r,(e+n)/2,(t+r)/2],0,a,s,Ks(d)),l=Object.keys(c).find(U=>{let p=c[U];return p&&Ys(p,o,i)});if(l)return l;if(Ci(d)){let U=(e+n)/2,p=(t+r)/2,m=hr/a.value,b=s6(u(e-m,t-m),u(n+m,r+m),u(U,p),0);for(let[E,g]of Object.entries(b))if(Nt(u(o,i),g,m))return E}return!1},Cs=["ns","nesw","ew","nwse"],M3=(e,t)=>{let n=Cs.indexOf(e);if(n>=0){let r=Math.round(t/(Math.PI/4));e=Cs[(n+r)%Cs.length]}return e},L3=e=>{let{element:t,transformHandleType:n}=e,r=t&&Math.sign(t.height)*Math.sign(t.width)===-1,o=null;switch(n){case"n":case"s":o="ns";break;case"w":case"e":o="ew";break;case"nw":case"se":r?o="nesw":o="nwse";break;case"ne":case"sw":r?o="nwse":o="nesw";break;case"rotation":return"grab"}return o&&t&&(o=M3(o,t.angle)),o?`${o}-resize`:""},s6=([e,t],[n,r],o,i)=>{let a=T(u(e,t),o,i),s=T(u(n,t),o,i),d=T(u(e,r),o,i),c=T(u(n,r),o,i);return{n:[a,s],e:[s,c],s:[c,d],w:[d,a]}};var D3=(e,t,n,r,o,i,a,s,d,c,l,U)=>{if(n.length===1){let[p]=n;if(t==="rotation")k(p)||(S3(p,r,o,d,c,i),Ht(p,r));else{if(G(p)&&t)return v3(e,p,r,t,a,d,c),Ht(p,r),!0;if(t){let m=n[0].id,b=r.get(m),E=e.get(m);if(b&&E){let{nextWidth:g,nextHeight:y}=B3(b,E,r,e,t,d,c,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a});_3(g,y,b,E,r,e,t,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a})}}}return!0}else if(n.length>1){if(t==="rotation")return $3(e,n,r,o,d,c,i,l,U),!0;if(t){let{nextWidth:p,nextHeight:m,flipByX:b,flipByY:E,originalBoundingBox:g}=A3(n,e,r,t,d,c,{shouldMaintainAspectRatio:s,shouldResizeFromCenter:a});return H3(n,r,t,o,e,{shouldResizeFromCenter:a,shouldMaintainAspectRatio:s,flipByX:b,flipByY:E,nextWidth:p,nextHeight:m,originalBoundingBox:g}),!0}}return!1},S3=(e,t,n,r,o,i)=>{let[a,s,d,c]=Y(e,t),l=(a+d)/2,U=(s+c)/2,p;de(e)?p=0:(p=5*Math.PI/2+Math.atan2(o-U,r-l),i&&(p=p+$t/2,p=p-p%$t),p=wr(p));let m=Kt(e);if(C(e,{angle:p}),m){let b=n.getElement(m);b&&!j(e)&&C(b,{angle:p})}},d6=(e,t,n,r)=>ie(e)||Je(e)?{points:or(0,t,or(1,n,e.points,r),r)}:{},Vs=(e,t,n)=>{let r=e.width;if(Fe(e)){let a=Ye(e,t);a&&(r=It(a,e))}let i=e.fontSize*(n/r);return i<go?null:{size:i}},v3=(e,t,n,r,o,i,a)=>{let[s,d,c,l,U,p]=Y(t,n),[m,b]=T(u(i,a),u(U,p),-t.angle),E=0,g=0;r!=="e"&&r!=="w"&&(r.includes("e")&&(E=(m-s)/(c-s)),r.includes("w")&&(E=(c-m)/(c-s)),r.includes("n")&&(g=(l-b)/(l-d)),r.includes("s")&&(g=(b-d)/(l-d)));let y=Math.max(E,g);if(y>0){let x=t.width*y,h=t.height*y,I=Vs(t,n,x);if(I===null)return;let w=[s,d],v=[c,l],M=[U,p],S=u(s,d);if(["n","w","nw"].includes(r)&&(S=u(v[0]-Math.abs(x),v[1]-Math.abs(h))),r==="ne"){let X=[w[0],v[1]];S=u(X[0],X[1]-Math.abs(h))}if(r==="sw"){let X=[v[0],w[1]];S=u(X[0]-Math.abs(x),X[1])}["s","n"].includes(r)&&(S[0]=M[0]-x/2),["e","w"].includes(r)&&(S[1]=M[1]-h/2),o&&(S[0]=M[0]-Math.abs(x)/2,S[1]=M[1]-Math.abs(h)/2);let F=t.angle,$=T(S,u(U,p),F),O=u(S[0]+Math.abs(x)/2,S[1]+Math.abs(h)/2),A=T(O,u(U,p),F);S=T($,A,-F);let[Z,we]=S;C(t,{fontSize:I.size,width:x,height:h,x:Z,y:we})}if(r==="e"||r==="w"){let x=e.get(t.id),[h,I,w,v]=yt(x,x.width,x.height,!0),M=u(h,I),S=u(w,v),F=Xt(M,S),$=T(u(i,a),F,-x.angle),[O,,A]=yt(t,t.width,t.height,!0),Z=A-O,we=S[0]-M[0],X=Ko(Ee({fontSize:t.fontSize,fontFamily:t.fontFamily}),t.lineHeight),ce=we/Z;r.includes("e")&&(ce=($[0]-M[0])/Z),r.includes("w")&&(ce=(S[0]-$[0])/Z);let J=t.width*ce<X?X:t.width*ce,Q=jt(t.originalText,Ee(t),Math.abs(J)),fe=Et(Q,Ee(t),t.lineHeight),St=fe.height,[mr,Cn,Yn,qi]=yt(x,J,St,!0),uo=Yn-mr,Gi=qi-Cn,qt=[...M];["n","w","nw"].includes(r)&&(qt=[S[0]-Math.abs(uo),M[1]]);let br=x.angle,Vn=T(qt,F,br),vt=u(qt[0]+Math.abs(uo)/2,qt[1]+Math.abs(Gi)/2),Er=T(vt,F,br);qt=T(Vn,Er,-br);let lt={width:Math.abs(J),height:Math.abs(fe.height),x:qt[0],y:qt[1],text:Q,autoResize:!1};C(t,lt)}},$3=(e,t,n,r,o,i,a,s,d)=>{let c=5*Math.PI/2+Math.atan2(i-d,o-s);a&&(c+=$t/2,c-=c%$t);for(let l of t)if(!de(l)){let[U,p,m,b]=Y(l,n),E=(U+m)/2,g=(p+b)/2,y=e.get(l.id)?.angle??l.angle,[x,h]=T(u(E,g),u(s,d),c+y-l.angle);k(l)?C(l,{points:u2(l,n)}):C(l,{x:l.x+(x-E),y:l.y+(h-g),angle:wr(c+y)},!1),Ht(l,n,{simultaneouslyUpdated:t});let I=re(l,n);I&&!j(l)&&C(I,{x:I.x+(x-E),y:I.y+(h-g),angle:wr(c+y)},!1)}r.triggerUpdate()},P3=(e,t,n,r,o)=>{let[i,a,s,d]=t.length===1?Y(t[0],n):Pe(t),c=(i+s)/2,l=(a+d)/2,U=t.length===1?t[0].angle:0;switch([r,o]=T(u(r,o),u(c,l),-U),e){case"n":return T(u(r-(i+s)/2,o-a),u(0,0),U);case"s":return T(u(r-(i+s)/2,o-d),u(0,0),U);case"w":return T(u(r-i,o-(a+d)/2),u(0,0),U);case"e":return T(u(r-s,o-(a+d)/2),u(0,0),U);case"nw":return T(u(r-i,o-a),u(0,0),U);case"ne":return T(u(r-s,o-a),u(0,0),U);case"sw":return T(u(r-i,o-d),u(0,0),U);case"se":return T(u(r-s,o-d),u(0,0),U);default:return[0,0]}},N3=(e,t)=>{let[,[n,r]]=t.points;return e==="nw"&&(n<0||r<0)||e==="ne"&&n>=0||e==="sw"&&n<=0||e==="se"&&(n>0||r>0)?"end":"origin"},F3=(e,t,n)=>{if(n)return"center";if(t)switch(e){case"n":return"south-side";case"e":return"west-side";case"s":return"north-side";case"w":return"east-side";case"ne":return"bottom-left";case"nw":return"bottom-right";case"se":return"top-left";case"sw":return"top-right"}return["e","se","s"].includes(e)?"top-left":["n","nw","w"].includes(e)?"bottom-right":e==="ne"?"bottom-left":"top-right"},O3=(e,t,n,r,o,i,a,s,d)=>{let c=F3(a,s,d),[l,U]=e;switch(c){case"top-left":return{x:l+(t-r)/2+(r-t)/2*Math.cos(i)+(n-o)/2*Math.sin(i),y:U+(n-o)/2+(r-t)/2*Math.sin(i)+(o-n)/2*Math.cos(i)};case"top-right":return{x:l+(t-r)/2*(Math.cos(i)+1)+(n-o)/2*Math.sin(i),y:U+(n-o)/2+(t-r)/2*Math.sin(i)+(o-n)/2*Math.cos(i)};case"bottom-left":return{x:l+(t-r)/2*(1-Math.cos(i))+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)+(r-t)/2*Math.sin(i)};case"bottom-right":return{x:l+(t-r)/2*(Math.cos(i)+1)+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)+(t-r)/2*Math.sin(i)};case"center":return{x:l-(r-t)/2,y:U-(o-n)/2};case"east-side":return Math.abs(U+(t-r)/2*Math.sin(i)+(n-o)/2)>1e6&&console.error("getResizedOrigin() new calculation creates extremely large (> 1e6) y value where the old calculation resulted in",{result:U+(o-n)/2+(t-r)/2*Math.sin(i)}),{x:l+(t-r)/2*(Math.cos(i)+1),y:U+(o-n)/2+(t-r)/2*Math.sin(i)};case"west-side":return{x:l+(t-r)/2*(1-Math.cos(i)),y:U+(r-t)/2*Math.sin(i)+(n-o)/2};case"north-side":return{x:l+(t-r)/2+(n-o)/2*Math.sin(i),y:U+(o-n)/2*(Math.cos(i)-1)};case"south-side":return{x:l+(t-r)/2+(o-n)/2*Math.sin(i),y:U+(n-o)/2*(Math.cos(i)+1)}}},_3=(e,t,n,r,o,i,a,{shouldInformMutation:s=!0,shouldMaintainAspectRatio:d=!1,shouldResizeFromCenter:c=!1}={})=>{let l={},U=re(n,o);if(U){let E=i.get(U.id);if(E&&(l={fontSize:E.fontSize}),d){let g={...n,width:e,height:t},y=Vs(U,o,It(g,U));if(y===null)return;l={fontSize:y.size}}else{let g=Bd(Ee(U),U.lineHeight),y=Hd(U.fontSize,U.lineHeight);e=Math.max(e,g),t=Math.max(t,y)}}let p=d6(r,e,t,!0),m=u(r.x,r.y);if(ie(r)){let[E,g]=Ze(r,i);m=u(E,g)}let b=O3(m,r.width,r.height,e,t,r.angle,a,d,c);if(ie(r)&&p.points){let E=r.x-m[0],g=r.y-m[1];b.x+=E,b.y+=g;let y=p.points[0][0],x=p.points[0][1];b.x+=y,b.y+=x,p.points=p.points.map(h=>u(h[0]-y,h[1]-x))}if(e<0&&(b.x=b.x+e),t<0&&(b.y=b.y+t),"scale"in n&&"scale"in r&&C(n,{scale:[(Math.sign(e)||r.scale[0])*r.scale[0],(Math.sign(t)||r.scale[1])*r.scale[1]]}),j(n)&&U&&d){let E=e/n.width*U.fontSize;if(E<go)return;l.fontSize=E}if(e!==0&&t!==0&&Number.isFinite(b.x)&&Number.isFinite(b.y)){let E={...b,width:Math.abs(e),height:Math.abs(t),...p};C(n,E,s),Ht(n,o,{newSize:{width:e,height:t}}),U&&l!=null&&C(U,{fontSize:l.fontSize}),Bn(n,o,a,d)}},B3=(e,t,n,r,o,i,a,{shouldMaintainAspectRatio:s=!1,shouldResizeFromCenter:d=!1}={})=>{let[c,l,U,p]=yt(t,t.width,t.height,!0),m=u(c,l),b=u(U,p),E=Xt(m,b),g=T(u(i,a),E,-t.angle),[y,x,h,I]=yt(e,e.width,e.height,!0),w=h-y,v=I-x,M=b[0]-m[0],S=b[1]-m[1],F=M/w,$=S/v;o.includes("e")&&(F=(g[0]-m[0])/w),o.includes("s")&&($=(g[1]-m[1])/v),o.includes("w")&&(F=(b[0]-g[0])/w),o.includes("n")&&($=(b[1]-g[1])/v);let O=e.width*F,A=e.height*$;if(d&&(O=2*O-t.width,A=2*A-t.height),s){let Z=Math.abs(O)/t.width,we=Math.abs(A)/t.height;if(o.length===1&&(A*=Z,O*=we),o.length===2){let X=Math.max(Z,we);O=t.width*X*Math.sign(O),A=t.height*X*Math.sign(A)}}return{nextWidth:O,nextHeight:A}},A3=(e,t,n,r,o,i,{shouldMaintainAspectRatio:a=!1,shouldResizeFromCenter:s=!1}={})=>{let d=e.map(Z=>t.get(Z.id)),c=d.reduce((Z,we)=>{if(!ie(we))return Z;let X=Kt(we);if(!X)return Z;let ce=t.get(X)??null;return Fe(ce)?[...Z,{...ce,...W.getBoundTextElementPosition(we,ce,n)}]:Z},[]),l=Ga(d.map(Z=>Z).concat(c)),{minX:U,minY:p,maxX:m,maxY:b,midX:E,midY:g}=l,y=m-U,x=b-p,h={ne:[U,b],se:[U,p],sw:[m,p],nw:[m,b],e:[U,p+x/2],w:[m,p+x/2],n:[U+y/2,b],s:[U+y/2,p]},[I,w]=s?[E,g]:h[r],v=s?2:1,M=Math.max(Math.abs(o-I)/y||0,Math.abs(i-w)/x||0)*v,S=r.includes("e")||r.includes("w")?Math.abs(o-I)*v:y,F=r.includes("n")||r.includes("s")?Math.abs(i-w)*v:x;a&&(S=y*M*Math.sign(o-I),F=x*M*Math.sign(i-w));let $={ne:[o<I,i>w],se:[o<I,i<w],sw:[o>I,i<w],nw:[o>I,i>w],e:[o<I,!1],w:[o>I,!1],n:[!1,i>w],s:[!1,i<w]},[O,A]=$[r].map(Z=>Z);return{originalBoundingBox:l,nextWidth:S,nextHeight:F,flipByX:O,flipByY:A}},H3=(e,t,n,r,o,{shouldMaintainAspectRatio:i=!1,shouldResizeFromCenter:a=!1,flipByX:s=!1,flipByY:d=!1,nextHeight:c,nextWidth:l,originalBoundingBox:U}={})=>{if(l===void 0&&c===void 0&&s===void 0&&d===void 0||c===0||l===0)return;o||(o=t);let p=e.reduce((v,M)=>{let S=o.get(M.id);return S&&v.push({orig:S,latest:M}),v},[]),m;if(U)m=U;else{let v=p.reduce((M,{orig:S})=>{if(!ie(S))return M;let F=Kt(S);if(!F)return M;let $=o.get(F)??null;return Fe($)?[...M,{...$,...W.getBoundTextElementPosition(S,$,t)}]:M},[]);m=Ga(p.map(({orig:M})=>M).concat(v))}let{minX:b,minY:E,maxX:g,maxY:y,midX:x,midY:h}=m,I=g-b,w=y-E;if(l===void 0&&c===void 0&&(l=I,c=w),i&&(l===void 0?l=c*(I/w):c===void 0?c=l*(w/I):Math.abs(l/c-I/w)>.001&&(l=c*(I/w))),l&&c){let v=n.includes("e")||n.includes("w")?Math.abs(l)/I:1,M=n.includes("n")||n.includes("s")?Math.abs(c)/w:1,S;n.length===1?S=n.includes("e")||n.includes("w")?v:M:S=Math.max(Math.abs(l)/I||0,Math.abs(c)/w||0);let F={ne:[b,y],se:[b,E],sw:[g,E],nw:[g,y],e:[b,E+w/2],w:[g,E+w/2],n:[b+I/2,y],s:[b+I/2,E]},[$,O]=a?[x,h]:F[n],A=i||p.some(J=>J.latest.angle!==0||G(J.latest)||h2(J.latest));A&&(v=S,M=S);let[Z,we]=[s?-1:1,d?-1:1],X=[];for(let{orig:J,latest:Q}of p){if(G(J)&&Fe(J))continue;let fe=J.width*v,St=J.height*M,mr=wr(J.angle*Z*we),Cn=ie(J)||Je(J),Yn=J.x-$,qi=J.y-O,uo=s&&!Cn?fe:0,Gi=d&&!Cn?St:0,qt=$+Z*(Yn*v+uo),br=O+we*(qi*M+Gi),Vn=d6(J,fe*Z,St*we,!1),vt={x:qt,y:br,width:fe,height:St,angle:mr,...Vn};if(k(J)&&(J.startBinding&&(vt.startBinding={...J.startBinding,fixedPoint:[s?-J.startBinding.fixedPoint[0]+1:J.startBinding.fixedPoint[0],d?-J.startBinding.fixedPoint[1]+1:J.startBinding.fixedPoint[1]]}),J.endBinding&&(vt.endBinding={...J.endBinding,fixedPoint:[s?-J.endBinding.fixedPoint[0]+1:J.endBinding.fixedPoint[0],d?-J.endBinding.fixedPoint[1]+1:J.endBinding.fixedPoint[1]]}),J.fixedSegments&&Vn.points&&(vt.fixedSegments=J.fixedSegments.map(lt=>({...lt,start:Vn.points[lt.index-1],end:Vn.points[lt.index]})))),Ke(J)&&(vt.scale=[J.scale[0]*Z,J.scale[1]*we]),G(J)){let lt=Vs(J,t,fe);if(!lt)return;vt.fontSize=lt.size}let Er=o.get(Kt(J)??"");if(Er)if(A){let lt=Er.fontSize*S;if(lt<go)return;vt.boundTextFontSize=lt}else vt.boundTextFontSize=Er.fontSize;X.push({element:Q,update:vt})}let ce=X.map(({element:J})=>J);for(let{element:J,update:{boundTextFontSize:Q,...fe}}of X){let{width:St,height:mr,angle:Cn}=fe;C(J,fe,!1,{isDragging:!0}),Ht(J,t,{simultaneouslyUpdated:ce,newSize:{width:St,height:mr}});let Yn=re(J,t);Yn&&Q&&(C(Yn,{fontSize:Q,angle:ie(J)?void 0:Cn},!1),Bn(J,t,n,!0))}r.triggerUpdate()}};var K3=(e,t,n,r,o,i)=>{if(t.length===1&&k(t[0])&&(t[0].startBinding||t[0].endBinding))return;let a=t.filter(U=>{if(k(U)&&U.startBinding&&U.endBinding){let p=t.find(b=>b.id===U.startBinding?.elementId),m=t.find(b=>b.id===U.endBinding?.elementId);return p&&m}return!0}),s=new Set(a),d=a.filter(U=>de(U)).map(U=>U.id);if(d.length>0)for(let U of r.getNonDeletedElements())U.frameId!==null&&d.includes(U.frameId)&&s.add(U);let c=Pe(Array.from(s).map(U=>e.originalElements.get(U.id)??U)),l=J3(c,n,o,i);s.forEach(U=>{if(c6(e,U,l),!j(U)){let p=re(U,r.getNonDeletedElementsMap());p&&c6(e,p,l),Ht(U,r.getElementsMapIncludingDeleted(),{simultaneouslyUpdated:Array.from(s)})}})},J3=(e,t,n,r)=>{let[o,i]=e,a=o+t.x+n.x,s=i+t.y+n.y;if(n.x===0||n.y===0){let[d,c]=Xr(o+t.x,i+t.y,r);n.x===0&&(a=d),n.y===0&&(s=c)}return{x:a-o,y:s-i}},c6=(e,t,n)=>{let r=e.originalElements.get(t.id)??t,o=r.x+n.x,i=r.y+n.y;C(t,{x:o,y:i})},C3=(e,t,n)=>{let[r,o]=Pe(e);return[t-r,n-o]},Y3=({newElement:e,elementType:t,originX:n,originY:r,x:o,y:i,width:a,height:s,shouldMaintainAspectRatio:d,shouldResizeFromCenter:c,zoom:l,widthAspectRatio:U=null,originOffset:p=null,informMutation:m=!0})=>{d&&e.type!=="selection"&&(U?s=a/U:(Math.abs(i-r)>Math.abs(o-n)?{width:a,height:s}=Ji(t,s,o<n?-a:a):{width:a,height:s}=Ji(t,a,i<r?-s:s),s<0&&(s=-s)));let b=o<n?n-a:n,E=i<r?r-s:r;c&&(a+=a,s+=s,b=n-a/2,E=r-s/2);let g=null;if(G(e)){s=e.height;let y=Ko(Ee({fontSize:e.fontSize,fontFamily:e.fontFamily}),e.lineHeight);a=Math.max(a,y),Math.abs(o-n)>Xs/l&&(g={autoResize:!1}),E=r,c&&(b=n-a/2)}if(a!==0&&s!==0){let y=null;Ke(e)&&(y={initialWidth:a,initialHeight:s}),C(e,{x:b+(p?.x??0),y:E+(p?.y??0),width:a,height:s,...g,...y},m)}};var V3=(e,t)=>!!(!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(e.activeTool.type!=="custom"&&(e.editingTextElement||e.activeTool.type!=="selection"&&e.activeTool.type!=="eraser"&&e.activeTool.type!=="hand"&&e.activeTool.type!=="laser")||ot(t,e).length));var rC=e=>e.reduce((t,n)=>t+n.version,0),oC=e=>{let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e[n].versionNonce;return t>>>0},Z2=e=>{let t=5381;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)+t+r}return t>>>0},m2=e=>e.filter(t=>!t.isDeleted&&!io(t)),ao=e=>e.filter(t=>!t.isDeleted),kp=e=>!e.isDeleted,l6=e=>ao(e).map(t=>aa(t.type)?{...t,lastCommittedPoint:null}:t),np=e=>l6(e),Si=e=>l6(e);var f6=async e=>{let t;if(e.type===K.png)try{return await(await import("./data/image-SCXWNX5A.js")).decodePngMetadata(e)}catch(n){throw n.message==="INVALID"?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):new tn("Error: cannot restore image")}else if("text"in Blob?t=await e.text():t=await new Promise(n=>{let r=new FileReader;r.readAsText(e,"utf8"),r.onloadend=()=>{r.readyState===FileReader.DONE&&n(r.result)}}),e.type===K.svg)try{return yp({svg:t})}catch(n){throw n.message==="INVALID"?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):new tn("Error: cannot restore image")}return t};var G3=e=>e&&e.name.match(/\.(json|excalidraw|png|svg)$/)?.[1]||null,SC=e=>e==="png"||e==="svg",j2=e=>{let t=G3(e);return t==="png"||t==="svg"},Ms=e=>!!e&&Object.values(wo).includes(e),Vi=e=>{let{type:t}=e||{};return Ms(t)},X3=async(e,t,n,r)=>{let o=await f6(e),i;try{try{i=JSON.parse(o)}catch(a){throw Vi(e)?new tn("Image doesn't contain scene","IMAGE_NOT_CONTAINS_SCENE_DATA"):a}if(tp(i))return{type:K.excalidraw,data:vi({elements:Si(i.elements||[]),appState:{theme:t?.theme,fileHandle:r||e.handle||null,...Mo(i.appState||{}),...t?Za(i.elements||[],t):{}},files:i.files},t,n,{repairBindings:!0,refreshDimensions:!1})};if(ms(i))return{type:K.excalidrawlib,data:i};throw new Error("Error: invalid file")}catch(a){throw a instanceof tn?a:new Error("Error: invalid file")}},ep=async(e,t,n,r)=>{let o=await X3(e,t,n,r);if(o.type!==K.excalidraw)throw new Error("Error: invalid file");return o.data},k3=(e,t="unpublished")=>{let n=JSON.parse(e);if(!ms(n))throw new Error("Invalid library");let r=n.libraryItems||n.library;return dp(r,t)},vC=async(e,t="unpublished")=>k3(await f6(e),t),$C=async e=>new Promise(async(t,n)=>{try{Oo(e)&&(e=await e),e.toBlob(r=>{if(!r)return n(new Go("Error: Canvas too big","CANVAS_POSSIBLY_TOO_BIG"));t(r)})}catch(r){n(r)}}),PC=async e=>{try{let t=await window.crypto.subtle.digest("SHA-1",await cn(e));return Md(new Uint8Array(t))}catch(t){return console.error(t),q3(40)}},NC=async e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let o=r.result;t(o)},r.onerror=o=>n(o),r.readAsDataURL(e)}),FC=(e,t)=>`data:${t};base64,${Ni(po(e),!0)}`,OC=(e,t="")=>{let n=e.indexOf(","),r=atob(e.slice(n+1)),o=e.slice(0,n).split(":")[1].split(";")[0],i=new ArrayBuffer(r.length),a=new Uint8Array(i);for(let s=0;s<r.length;s++)a[s]=r.charCodeAt(s);return new File([i],t,{type:o})},_C=e=>Fi(e.slice(e.indexOf(",")+1)),BC=async(e,t)=>{if(e.type===K.svg)return e;let[n,r]=await Promise.all([import("pica").then(i=>i.default),import("image-blob-reduce").then(i=>i.default)]),o=r({pica:n({features:["js","wasm"]})});if(t.outputType){let{outputType:i}=t;o._create_blob=function(a){return this.pica.toBlob(a.out_canvas,i,.8).then(s=>(a.out_blob=s,a))}}if(!Vi(e))throw new Error("Error: unsupported file type",{cause:"UNSUPPORTED"});return new File([await o.toBlob(e,{max:t.maxWidthOrHeight,alpha:!0})],e.name,{type:t.outputType||e.type})},AC=(e,t="")=>new File([new TextEncoder().encode(e)],t,{type:K.svg}),HC=async(e,t="")=>{let n;try{n=await fetch(e)}catch{throw new Error("Error: failed to fetch image",{cause:"FETCH_ERROR"})}if(!n.ok)throw new Error("Error: failed to fetch image",{cause:"FETCH_ERROR"});let r=await n.blob();if(r.type&&Vi(r)){let o=t||r.name||"";return new File([r],o,{type:r.type})}throw new Error("Error: unsupported file type",{cause:"UNSUPPORTED"})},KC=async e=>{let t=e.dataTransfer.files.item(0),n=await Z3(e);return{file:t?await us(t):null,fileHandle:n}},Z3=async e=>{if(z2)try{return await e.dataTransfer.items[0].getAsFileSystemHandle()||null}catch(t){return console.warn(t.name,t.message),null}return null},U6=e=>{let t=null,n=`${[...new Uint8Array(e).slice(0,8)].join(" ")} `,r={png:"137 80 78 71 13 10 26 10 ",jpg:"255 216 255 ",gif:"71 73 70 56 57 97 "};return n===r.png?t=K.png:n.startsWith(r.jpg)?t=K.jpg:n.startsWith(r.gif)&&(t=K.gif),t},ur=(e,t,n)=>new File([e],n||"",{type:t}),us=async e=>{if(e.type){if(Vi(e)){let t=await cn(e),n=U6(t);n&&n!==e.type&&(e=ur(t,n,e.name))}}else if(e?.name?.endsWith(".excalidrawlib"))e=ur(await cn(e),K.excalidrawlib,e.name);else if(e?.name?.endsWith(".excalidraw"))e=ur(await cn(e),K.excalidraw,e.name);else{let t=await cn(e),n=U6(t);n&&(e=ur(t,n,e.name))}return e},cn=e=>"arrayBuffer"in e?e.arrayBuffer():new Promise((t,n)=>{let r=new FileReader;r.onload=o=>{if(!o.target?.result)return n(new Error("Couldn't convert blob to ArrayBuffer"));t(o.target.result)},r.readAsArrayBuffer(e)});var po=e=>{let t=typeof e=="string"?new TextEncoder().encode(e):e instanceof Uint8Array?e:new Uint8Array(e),n="";for(let r of t)n+=String.fromCharCode(r);return n},p6=e=>{let t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let r=0,o=e.length;r<o;r++)n[r]=e.charCodeAt(r);return t},u6=e=>new TextDecoder("utf-8").decode(p6(e)),Ni=(e,t=!1)=>t?window.btoa(e):window.btoa(po(e)),Fi=(e,t=!1)=>t?window.atob(e):u6(window.atob(e));var Oi=({text:e,compress:t})=>{let n;if(t!==!1)try{n=po(W3(e))}catch(r){console.error("encode: cannot deflate",r)}return{version:"1",encoding:"bstring",compressed:!!n,encoded:n||po(e)}},_i=e=>{let t;switch(e.encoding){case"bstring":t=e.compressed?e.encoded:u6(e.encoded);break;default:throw new Error(`decode: unknown encoding "${e.encoding}"`)}return e.compressed?z3(new Uint8Array(p6(t)),{to:"string"}):t};var j3=async e=>{let n=m6(new Uint8Array(await cn(e))).find(r=>r.name==="tEXt");return n?b6.decode(n.data):null},Np=async({blob:e,metadata:t})=>{let n=m6(new Uint8Array(await cn(e))),r=b6.encode(K.excalidraw,JSON.stringify(Oi({text:t,compress:!0})));return n.splice(-1,0,r),new Blob([Q3(n)],{type:K.png})},aY=async e=>{let t=await j3(e);if(t?.keyword===K.excalidraw)try{let n=JSON.parse(t.text);if(!("encoded"in n)){if("type"in n&&n.type===ke.excalidraw)return t.text;throw new Error("FAILED")}return _i(n)}catch(n){throw console.error(n),new Error("FAILED")}throw new Error("INVALID")};export{mo as a,ex as b,tx as c,nx as d,Gs as e,rx as f,ox as g,ix as h,ks as i,Zs as j,ax as k,sx as l,dx as m,cx as n,bo as o,lx as p,Ux as q,fx as r,je as s,px as t,ye as u,Xe as v,Ne as w,Ut as x,Pt as y,qn as z,xo as A,gr as B,Un as C,Gn as D,ux as E,mx as F,yo as G,wo as H,K as I,bx as J,ke as K,Xi as L,Ex as M,gx as N,xx as O,hx as P,yx as Q,zs as R,Qs as S,Ix as T,Ro as U,wx as V,Rx as W,Tx as X,Mx as Y,Lx as Z,Dx as _,Sx as $,js as aa,ed as ba,vx as ca,$x as da,ne as ea,ki as fa,Se as ga,Gt as ha,Zi as ia,nt as ja,Px as ka,h6 as la,Nx as ma,id as na,Fx as oa,fn as pa,Ox as qa,ad as ra,zi as sa,_x as ta,sd as ua,dd as va,y6 as wa,se as xa,pd as ya,Yx as za,Lo as Aa,Rr as Ba,ud as Ca,ve as Da,_ as Ea,R6 as Fa,Do as Ga,me as Ha,Ae as Ia,u as Ja,T as Ka,oe as La,kh as Ma,Zh as Na,Wh as Oa,P6 as Pa,zh as Qa,Qh as Ra,oa as Sa,Ee as Ta,Po as Ua,Rd as Va,Td as Wa,jh as Xa,e4 as Ya,at as Za,Fr as _a,t4 as $a,vn as ab,ia as bb,n4 as cb,kt as db,r4 as eb,o4 as fb,i4 as gb,Zt as hb,a4 as ib,s4 as jb,d4 as kb,c4 as lb,ee as mb,l4 as nb,U4 as ob,Ot as pb,f4 as qb,p4 as rb,u4 as sb,m4 as tb,Oo as ub,b4 as vb,zt as wb,E4 as xb,$n as yb,Be as zb,g4 as Ab,Dd as Bb,x4 as Cb,h4 as Db,y4 as Eb,I4 as Fb,Sd as Gb,Ve as Hb,bn as Ib,w4 as Jb,_t as Kb,Ke as Lb,_o as Mb,Bo as Nb,mt as Ob,G as Pb,Pd as Qb,Nd as Rb,de as Sb,ie as Tb,j as Ub,k as Vb,aa as Wb,Or as Xb,B6 as Yb,bt as Zb,A6 as _b,sa as $b,S4 as ac,En as bc,Fe as cc,Ao as dc,v4 as ec,$4 as fc,Ct as gc,Tt as hc,Xo as ic,tn as jc,Et as kc,Bd as lc,Ko as mc,_4 as nc,ca as oc,Wn as pc,Hd as qc,B4 as rc,Kd as sc,jt as tc,pn as uc,Kx as vc,Mo as wc,Ud as xc,fd as yc,NE as zc,dF as Ac,cF as Bc,FE as Cc,lF as Dc,b2 as Ec,UF as Fc,OE as Gc,on as Hc,fF as Ic,pF as Jc,uF as Kc,es as Lc,x2 as Mc,h2 as Nc,sn as Oc,xO as Pc,D2 as Qc,S2 as Rc,v2 as Sc,kE as Tc,ZE as Uc,WE as Vc,F2 as Wc,k4 as Xc,Z4 as Yc,Co as Zc,Yo as _c,ae as $c,W4 as ad,z4 as bd,Q4 as cd,j4 as dd,ey as ed,ty as fd,he as gd,t8 as hd,n8 as id,r8 as jd,o8 as kd,i8 as ld,a8 as md,s8 as nd,d8 as od,c8 as pd,l8 as qd,f8 as rd,zn as sd,ha as td,p8 as ud,u8 as vd,m8 as wd,b8 as xd,E8 as yd,g8 as zd,x8 as Ad,h8 as Bd,y8 as Cd,I8 as Dd,w8 as Ed,R8 as Fd,T8 as Gd,M8 as Hd,L8 as Id,D8 as Jd,S8 as Kd,v8 as Ld,$8 as Md,P8 as Nd,N8 as Od,O8 as Pd,_8 as Qd,B8 as Rd,A8 as Sd,J8 as Td,Y8 as Ud,V8 as Vd,q8 as Wd,G8 as Xd,Q8 as Yd,j8 as Zd,e0 as _d,t0 as $d,n0 as ae,r0 as be,o0 as ce,i0 as de,a0 as ee,s0 as fe,d0 as ge,c0 as he,l0 as ie,p0 as je,E0 as ke,g0 as le,x0 as me,h0 as ne,y0 as oe,I0 as pe,w0 as qe,R0 as re,T0 as se,L0 as te,D0 as ue,S0 as ve,v0 as we,$0 as xe,P0 as ye,N0 as ze,F0 as Ae,O0 as Be,_0 as Ce,B0 as De,A0 as Ee,H0 as Fe,K0 as Ge,J0 as He,C0 as Ie,Y0 as Je,V0 as Ke,q0 as Le,G0 as Me,X0 as Ne,k0 as Oe,Z0 as Pe,W0 as Qe,Vo as Re,qo as Se,z0 as Te,Q0 as Ue,j0 as Ve,eu as We,tu as Xe,nu as Ye,ru as Ze,ou as _e,au as $e,su as af,du as bf,cu as cf,lu as df,pu as ef,uu as ff,mu as gf,bu as hf,Eu as if,gu as jf,xu as kf,hu as lf,yu as mf,Ru as nf,Tu as of,Mu as pf,Lu as qf,Du as rf,Su as sf,vu as tf,$u as uf,Pu as vf,Nu as wf,Fu as xf,Ou as yf,_u as zf,Bu as Af,Au as Bf,Hu as Cf,Ku as Df,Ju as Ef,Cu as Ff,Yu as Gf,Vu as Hf,Gu as If,Xu as Jf,ku as Kf,Zu as Lf,Wu as Mf,zu as Nf,Qu as Of,ju as Pf,e5 as Qf,t5 as Rf,n5 as Sf,r5 as Tf,On as Uf,Qo as Vf,Zr as Wf,qO as Xf,GO as Yf,XO as Zf,kO as _f,Yt as $f,as as ag,ZO as bg,An as cg,rg as dg,og as eg,Wr as fg,ig as gg,WO as hg,u$ as ig,ti as jg,N1 as kg,z as lg,V$ as mg,q$ as ng,G$ as og,X$ as pg,va as qg,L9 as rg,Da as sg,K$ as tg,D9 as ug,F9 as vg,sP as wg,ai as xg,P1 as yg,ht as zg,rt as Ag,Bt as Bg,Re as Cg,Oe as Dg,et as Eg,ze as Fg,$e as Gg,Z1 as Hg,_N as Ig,Xa as Jg,o2 as Kg,i2 as Lg,ka as Mg,BN as Ng,AN as Og,HN as Pg,pi as Qg,uE as Rg,yn as Sg,Ht as Tg,Ei as Ug,U2 as Vg,KN as Wg,JN as Xg,gi as Yg,Ti as Zg,Ur as _g,K2 as $g,ls as ah,X2 as bh,C_ as ch,Y_ as dh,Ge as eh,fP as fh,nr as gh,pP as hh,z2 as ih,Q2 as jh,ps as kh,hn as lh,sp as mh,bs as nh,vi as oh,dp as ph,j3 as qh,Np as rh,aY as sh,G3 as th,SC as uh,j2 as vh,Vi as wh,X3 as xh,ep as yh,k3 as zh,vC as Ah,$C as Bh,PC as Ch,NC as Dh,FC as Eh,OC as Fh,_C as Gh,BC as Hh,AC as Ih,HC as Jh,KC as Kh,us as Lh,oo as Mh,yB as Nh,IB as Oh,yg as Ph,wB as Qh,Ig as Rh,rp as Sh,op as Th,DB as Uh,hs as Vh,$g as Wh,nA as Xh,aA as Yh,cp as Zh,lp as _h,fA as $h,pA as ai,Pg as bi,Up as ci,uA as di,Fg as ei,bp as fi,Is as gi,hp as hi,Ip as ii,eH as ji,Vg as ki,pH as li,uH as mi,vp as ni,mH as oi,bH as pi,Pp as qi,Ls as ri,MH as si,zg as ti,Qg as ui,LH as vi,Op as wi,t3 as xi,Bp as yi,tK as zi,Ai,wn as Bi,nK as Ci,rK as Di,lo as Ei,ws as Fi,Rs as Gi,oK as Hi,iK as Ii,We as Ji,aK as Ki,i3 as Li,Yp as Mi,a3 as Ni,sK as Oi,dK as Pi,Vp as Qi,wp as Ri,Rp as Si,cK as Ti,K9 as Ui,PP as Vi,NP as Wi,_n as Xi,_a as Yi,G9 as Zi,_P as _i,X9 as $i,k9 as aj,Aa as bj,BP as cj,Z9 as dj,Y as ej,Pe as fj,Ga as gj,uN as hj,hi as ij,BE as jj,lr as kj,RF as lj,TF as mj,MF as nj,LF as oj,DF as pj,SF as qj,vF as rj,Xr as sj,W as tj,kr as uj,T2 as vj,M2 as wj,zF as xj,is as yj,cO as zj,Bn as Aj,L2 as Bj,Kt as Cj,re as Dj,Ye as Ej,lO as Fj,UO as Gj,fO as Hj,pO as Ij,uO as Jj,os as Kj,It as Lj,Jr as Mj,YE as Nj,ds as Oj,A2 as Pj,Qr as Qj,Hn as Rj,Ps as Sj,e6 as Tj,C as Uj,Lt as Vj,zr as Wj,io as Xj,qp as Yj,aJ as Zj,rs as _j,Es as $j,Ks as ak,Yi as bk,Js as ck,pJ as dk,R3 as ek,T3 as fk,L3 as gk,D3 as hk,d6 as ik,P3 as jk,N3 as kk,_3 as lk,H3 as mk,K3 as nk,C3 as ok,Y3 as pk,V3 as qk,rC as rk,oC as sk,Z2 as tk,ao as uk,kp as vk,s3 as wk,xi as xk,vE as yk,$E as zk,ot as Ak,PE as Bk,ja as Ck,SE as Dk,Za as Ek,Wa as Fk,Qa as Gk};