@kitschpatrol/tldraw-cli 4.6.7 → 4.6.8
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.
|
@@ -282,7 +282,7 @@ For more information, see https://radix-ui.com/primitives/docs/components/${n.do
|
|
|
282
282
|
<div class="${a}__item__footer ${a}__item__footer__${v?"":"hide"}">
|
|
283
283
|
${v??""}
|
|
284
284
|
</div>
|
|
285
|
-
</div>`}catch(E){console.error(E)}}function h(){e.environment.isChromeForIos?(l(),window.print()):e.environment.isSafari?(l(),document.execCommand("print",!1)):window.print()}const p=e.getSelectedShapeIds(),f=e.getCurrentPageId(),y=e.getPages(),x={scale:1,background:!1,darkMode:!1,preserveAspectRatio:"xMidYMid meet"};if(e.getSelectedShapeIds().length>0){const S=await e.getSvgString(p,x);if(S){const v=y.find(b=>b.id===f);u(`tldraw — ${v==null?void 0:v.name}`,null,S.svg),h()}}else{const S=e.getCurrentPage(),v=await e.getSvgString(e.getSortedChildIdsForParent(S.id),x);v&&(u(`tldraw — ${S.name}`,null,v.svg),h())}window.removeEventListener("beforeprint",l),window.removeEventListener("afterprint",c)},[e])}const eO=P.createContext(null);function UJ(e){return Object.fromEntries(e.map(n=>[n.id,n]))}function ba(e,n){if(e.getSelectedShapes().length===0)return e.getDocumentSettings().name||n}function HJ({overrides:e,children:n}){const t=B(),{addDialog:r,clearDialogs:o}=la(),{clearToasts:s,addToast:i}=Qr(),a=Te(),l=Hj(),c=BJ(),{cut:u,copy:h,paste:p}=MJ(),f=LJ(),y=NJ(),m=a("document.default-name"),x=Zr(),S=P.useMemo(()=>{function v(){return t.isIn("select")||(t.complete(),t.setCurrentTool("select")),!1}function b(){return t.isIn("select")&&t.getSelectedShapeIds().length>0}const k=UJ([{id:"edit-link",label:"action.edit-link",icon:"link",onSelect(C){b()&&(v()||(x("edit-link",{source:C}),t.mark("edit-link"),r({component:lJ})))}},{id:"insert-embed",label:"action.insert-embed",kbd:"$i",onSelect(C){x("insert-embed",{source:C}),r({component:Uj})}},{id:"insert-media",label:"action.insert-media",kbd:"$u",onSelect(C){x("insert-media",{source:C}),l()}},{id:"undo",label:"action.undo",icon:"undo",kbd:"$z",onSelect(C){x("undo",{source:C}),t.undo()}},{id:"redo",label:"action.redo",icon:"redo",kbd:"$!z",onSelect(C){x("redo",{source:C}),t.redo()}},{id:"export-as-svg",label:{default:"action.export-as-svg",menu:"action.export-as-svg.short","context-menu":"action.export-as-svg.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"svg",source:C}),y(I,"svg",ba(t,m)))}},{id:"export-as-png",label:{default:"action.export-as-png",menu:"action.export-as-png.short","context-menu":"action.export-as-png.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"png",source:C}),y(I,"png",ba(t,m)))}},{id:"export-as-json",label:{default:"action.export-as-json",menu:"action.export-as-json.short","context-menu":"action.export-as-json.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"json",source:C}),y(I,"json",ba(t,m)))}},{id:"export-all-as-svg",label:{default:"action.export-all-as-svg",menu:"action.export-all-as-svg.short","context-menu":"action.export-all-as-svg.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-all-as",{format:"svg",source:C}),y(Array.from(t.getCurrentPageShapeIds()),"svg",ba(t,m)))}},{id:"export-all-as-png",label:{default:"action.export-all-as-png",menu:"action.export-all-as-png.short","context-menu":"action.export-all-as-png.short"},readonlyOk:!0,onSelect(C){const I=Array.from(t.getCurrentPageShapeIds().values());I.length!==0&&(x("export-all-as",{format:"png",source:C}),y(I,"png",ba(t,m)))}},{id:"export-all-as-json",label:{default:"action.export-all-as-json",menu:"action.export-all-as-json.short","context-menu":"action.export-all-as-json.short"},readonlyOk:!0,onSelect(C){const I=Array.from(t.getCurrentPageShapeIds().values());I.length!==0&&(x("export-all-as",{format:"json",source:C}),y(I,"json",ba(t,m)))}},{id:"copy-as-svg",label:{default:"action.copy-as-svg",menu:"action.copy-as-svg.short","context-menu":"action.copy-as-svg.short"},kbd:"$!c",readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"svg",source:C}),f(I,"svg"))}},{id:"copy-as-png",label:{default:"action.copy-as-png",menu:"action.copy-as-png.short","context-menu":"action.copy-as-png.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"png",source:C}),f(I,"png"))}},{id:"copy-as-json",label:{default:"action.copy-as-json",menu:"action.copy-as-json.short","context-menu":"action.copy-as-json.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"json",source:C}),f(I,"json"))}},{id:"toggle-auto-size",label:"action.toggle-auto-size",onSelect(C){if(!b()||v())return;x("toggle-auto-size",{source:C}),t.mark("toggling auto size");const I=t.getSelectedShapes().filter(T=>t.isShapeOfType(T,"text")&&T.props.autoSize===!1);t.updateShapes(I.map(T=>({id:T.id,type:T.type,props:{...T.props,w:8,autoSize:!0}}))),Ke(t,I.map(T=>T.id))}},{id:"open-embed-link",label:"action.open-embed-link",readonlyOk:!0,onSelect(C){x("open-embed-link",{source:C});const I=t.getSelectedShapeIds(),T="No embed shapes selected";if(I.length!==1){console.error(T);return}const O=t.getShape(I[0]);if(!O||!t.isShapeOfType(O,"embed")){console.error(T);return}kV(O.props.url,"_blank")}},{id:"select-zoom-tool",readonlyOk:!0,kbd:"z",onSelect(C){var I,T;if(((I=t.root.getCurrent())==null?void 0:I.id)!=="zoom"&&(x("zoom-tool",{source:C}),!(t.inputs.shiftKey||t.inputs.ctrlKey))){const O=t.root.getCurrent();O&&((T=O.getCurrent())==null?void 0:T.id)==="idle"&&t.setCurrentTool("zoom",{onInteractionEnd:O.id,maskAs:"zoom"})}}},{id:"convert-to-bookmark",label:"action.convert-to-bookmark",onSelect(C){b()&&(v()||t.batch(()=>{x("convert-to-bookmark",{source:C});const I=t.getSelectedShapes(),T=[],O=[];for(const _ of I){if(!_||!t.isShapeOfType(_,"embed")||!_.props.url)continue;const M=new w(_.x,_.y);M.rot(-_.rotation),M.add(new w(_.props.w/2-300/2,_.props.h/2-320/2)),M.rot(_.rotation);const L={id:$e(),type:"bookmark",rotation:_.rotation,x:M.x,y:M.y,opacity:1,props:{url:_.props.url}};T.push(L),O.push(_.id)}t.mark("convert shapes to bookmark"),t.deleteShapes(O),t.createShapes(T)}))}},{id:"convert-to-embed",label:"action.convert-to-embed",onSelect(C){b()&&(v()||(x("convert-to-embed",{source:C}),t.batch(()=>{const I=t.getSelectedShapeIds(),T=me(I.map(M=>t.getShape(M))),O=[],_=[];for(const M of T){if(!t.isShapeOfType(M,"bookmark"))continue;const{url:L}=M.props,j=As(M.props.url);if(!j||!j.definition)continue;const{width:R,height:F}=j.definition,W=new w(M.x,M.y);W.rot(-M.rotation),W.add(new w(M.props.w/2-R/2,M.props.h/2-F/2)),W.rot(M.rotation);const K={id:$e(),type:"embed",x:W.x,y:W.y,rotation:M.rotation,props:{url:L,w:R,h:F}};O.push(K),_.push(M.id)}t.mark("convert shapes to embed"),t.deleteShapes(_),t.createShapes(O)})))}},{id:"duplicate",kbd:"$d",label:"action.duplicate",icon:"duplicate",onSelect(C){if(!b()||v())return;x("duplicate-shapes",{source:C});const I=t.getInstanceState();let T,O;if(I.duplicateProps)T=I.duplicateProps.shapeIds,O=I.duplicateProps.offset;else{T=t.getSelectedShapeIds();const _=Z.Common(me(T.map(M=>t.getShapePageBounds(M))));O=t.getCameraOptions().isLocked?{x:t.options.adjacentShapeMargin,y:t.options.adjacentShapeMargin}:{x:_.width+t.options.adjacentShapeMargin,y:0}}t.mark("duplicate shapes"),t.duplicateShapes(T,O),I.duplicateProps&&t.updateInstanceState({duplicateProps:{...I.duplicateProps,shapeIds:t.getSelectedShapeIds()}})}},{id:"ungroup",label:"action.ungroup",kbd:"$!g",icon:"ungroup",onSelect(C){b()&&(v()||(x("ungroup-shapes",{source:C}),t.mark("ungroup"),t.ungroupShapes(t.getSelectedShapeIds())))}},{id:"group",label:"action.group",kbd:"$g",icon:"group",onSelect(C){if(!b()||v())return;x("group-shapes",{source:C});const I=t.getOnlySelectedShape();I&&t.isShapeOfType(I,"group")?(t.mark("ungroup"),t.ungroupShapes(t.getSelectedShapeIds())):(t.mark("group"),t.groupShapes(t.getSelectedShapeIds()))}},{id:"remove-frame",label:"action.remove-frame",kbd:"$!f",onSelect(C){if(!b())return;x("remove-frame",{source:C});const I=t.getSelectedShapes();I.length>0&&I.every(T=>t.isShapeOfType(T,"frame"))&&(t.mark("remove-frame"),sJ(t,I.map(T=>T.id)))}},{id:"fit-frame-to-content",label:"action.fit-frame-to-content",onSelect(C){if(!b())return;x("fit-frame-to-content",{source:C});const I=t.getOnlySelectedShape();I&&t.isShapeOfType(I,"frame")&&(t.mark("fit-frame-to-content"),aJ(t,I.id))}},{id:"align-left",label:"action.align-left",kbd:"?A",icon:"align-left",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"left",source:C}),t.mark("align left");const I=t.getSelectedShapeIds();t.alignShapes(I,"left"),Ke(t,I)}},{id:"align-center-horizontal",label:{default:"action.align-center-horizontal","context-menu":"action.align-center-horizontal.short"},kbd:"?H",icon:"align-center-horizontal",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"center-horizontal",source:C}),t.mark("align center horizontal");const I=t.getSelectedShapeIds();t.alignShapes(I,"center-horizontal"),Ke(t,I)}},{id:"align-right",label:"action.align-right",kbd:"?D",icon:"align-right",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"right",source:C}),t.mark("align right");const I=t.getSelectedShapeIds();t.alignShapes(I,"right"),Ke(t,I)}},{id:"align-center-vertical",label:{default:"action.align-center-vertical","context-menu":"action.align-center-vertical.short"},kbd:"?V",icon:"align-center-vertical",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"center-vertical",source:C}),t.mark("align center vertical");const I=t.getSelectedShapeIds();t.alignShapes(I,"center-vertical"),Ke(t,I)}},{id:"align-top",label:"action.align-top",icon:"align-top",kbd:"?W",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"top",source:C}),t.mark("align top");const I=t.getSelectedShapeIds();t.alignShapes(I,"top"),Ke(t,I)}},{id:"align-bottom",label:"action.align-bottom",icon:"align-bottom",kbd:"?S",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"bottom",source:C}),t.mark("align bottom");const I=t.getSelectedShapeIds();t.alignShapes(I,"bottom"),Ke(t,I)}},{id:"distribute-horizontal",label:{default:"action.distribute-horizontal","context-menu":"action.distribute-horizontal.short"},icon:"distribute-horizontal",kbd:"?!h",onSelect(C){if(!b()||v())return;x("distribute-shapes",{operation:"horizontal",source:C}),t.mark("distribute horizontal");const I=t.getSelectedShapeIds();t.distributeShapes(I,"horizontal"),Ke(t,I)}},{id:"distribute-vertical",label:{default:"action.distribute-vertical","context-menu":"action.distribute-vertical.short"},icon:"distribute-vertical",kbd:"?!V",onSelect(C){if(!b()||v())return;x("distribute-shapes",{operation:"vertical",source:C}),t.mark("distribute vertical");const I=t.getSelectedShapeIds();t.distributeShapes(I,"vertical"),Ke(t,I)}},{id:"stretch-horizontal",label:{default:"action.stretch-horizontal","context-menu":"action.stretch-horizontal.short"},icon:"stretch-horizontal",onSelect(C){if(!b()||v())return;x("stretch-shapes",{operation:"horizontal",source:C}),t.mark("stretch horizontal");const I=t.getSelectedShapeIds();t.stretchShapes(I,"horizontal"),Ke(t,I)}},{id:"stretch-vertical",label:{default:"action.stretch-vertical","context-menu":"action.stretch-vertical.short"},icon:"stretch-vertical",onSelect(C){if(!b()||v())return;x("stretch-shapes",{operation:"vertical",source:C}),t.mark("stretch vertical");const I=t.getSelectedShapeIds();t.stretchShapes(I,"vertical"),Ke(t,I)}},{id:"flip-horizontal",label:{default:"action.flip-horizontal","context-menu":"action.flip-horizontal.short"},kbd:"!h",onSelect(C){if(!b()||v())return;x("flip-shapes",{operation:"horizontal",source:C}),t.mark("flip horizontal");const I=t.getSelectedShapeIds();t.flipShapes(I,"horizontal"),Ke(t,I)}},{id:"flip-vertical",label:{default:"action.flip-vertical","context-menu":"action.flip-vertical.short"},kbd:"!v",onSelect(C){if(!b()||v())return;x("flip-shapes",{operation:"vertical",source:C}),t.mark("flip vertical");const I=t.getSelectedShapeIds();t.flipShapes(I,"vertical"),Ke(t,I)}},{id:"pack",label:"action.pack",icon:"pack",onSelect(C){if(!b()||v())return;x("pack-shapes",{source:C}),t.mark("pack");const I=t.getSelectedShapeIds();t.packShapes(I,t.options.adjacentShapeMargin),Ke(t,I)}},{id:"stack-vertical",label:{default:"action.stack-vertical","context-menu":"action.stack-vertical.short"},icon:"stack-vertical",onSelect(C){if(!b()||v())return;x("stack-shapes",{operation:"vertical",source:C}),t.mark("stack-vertical");const I=t.getSelectedShapeIds();t.stackShapes(I,"vertical",16),Ke(t,I)}},{id:"stack-horizontal",label:{default:"action.stack-horizontal","context-menu":"action.stack-horizontal.short"},icon:"stack-horizontal",onSelect(C){if(!b()||v())return;x("stack-shapes",{operation:"horizontal",source:C}),t.mark("stack-horizontal");const I=t.getSelectedShapeIds();t.stackShapes(I,"horizontal",16),Ke(t,I)}},{id:"bring-to-front",label:"action.bring-to-front",kbd:"]",icon:"bring-to-front",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"toFront",source:C}),t.mark("bring to front"),t.bringToFront(t.getSelectedShapeIds())))}},{id:"bring-forward",label:"action.bring-forward",icon:"bring-forward",kbd:"?]",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"forward",source:C}),t.mark("bring forward"),t.bringForward(t.getSelectedShapeIds())))}},{id:"send-backward",label:"action.send-backward",icon:"send-backward",kbd:"?[",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"backward",source:C}),t.mark("send backward"),t.sendBackward(t.getSelectedShapeIds())))}},{id:"send-to-back",label:"action.send-to-back",icon:"send-to-back",kbd:"[",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"toBack",source:C}),t.mark("send to back"),t.sendToBack(t.getSelectedShapeIds())))}},{id:"cut",label:"action.cut",kbd:"$x",onSelect(C){b()&&(v()||(t.mark("cut"),u(C)))}},{id:"copy",label:"action.copy",kbd:"$c",readonlyOk:!0,onSelect(C){b()&&(v()||h(C))}},{id:"paste",label:"action.paste",kbd:"$v",onSelect(C){var I;(I=navigator.clipboard)==null||I.read().then(T=>{p(T,C,C==="context-menu"?t.inputs.currentPagePoint:void 0)}).catch(()=>{i({title:a("action.paste-error-title"),description:a("action.paste-error-description"),severity:"error"})})}},{id:"select-all",label:"action.select-all",kbd:"$a",readonlyOk:!0,onSelect(C){t.batch(()=>{v()||(x("select-all-shapes",{source:C}),t.mark("select all kbd"),t.selectAll())})}},{id:"select-none",label:"action.select-none",readonlyOk:!0,onSelect(C){b()&&(v()||(x("select-none-shapes",{source:C}),t.mark("select none"),t.selectNone()))}},{id:"delete",label:"action.delete",kbd:"⌫,del,backspace",icon:"trash",onSelect(C){b()&&(v()||(x("delete-shapes",{source:C}),t.mark("delete"),t.deleteShapes(t.getSelectedShapeIds())))}},{id:"rotate-cw",label:"action.rotate-cw",icon:"rotate-cw",onSelect(C){if(!b()||v())return;x("rotate-cw",{source:C}),t.mark("rotate-cw");const I=t.getSelectionRotation()%(Ge/2),T=Ds(I,0)||Ds(I,Ge/2),O=t.getSelectedShapeIds();t.rotateShapesBy(O,Ge/2-(T?0:I)),Ke(t,O)}},{id:"rotate-ccw",label:"action.rotate-ccw",icon:"rotate-ccw",onSelect(C){if(!b()||v())return;x("rotate-ccw",{source:C}),t.mark("rotate-ccw");const I=t.getSelectionRotation()%(Ge/2),T=Ds(I,0),O=t.getSelectedShapeIds();t.rotateShapesBy(O,T?-(Ge/2):-I),Ke(t,O)}},{id:"zoom-in",label:"action.zoom-in",kbd:"$=,=",readonlyOk:!0,onSelect(C){x("zoom-in",{source:C}),t.zoomIn(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-out",label:"action.zoom-out",kbd:"$-,-",readonlyOk:!0,onSelect(C){x("zoom-out",{source:C}),t.zoomOut(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-100",label:"action.zoom-to-100",icon:"reset-zoom",kbd:"!0",readonlyOk:!0,onSelect(C){x("reset-zoom",{source:C}),t.resetZoom(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-fit",label:"action.zoom-to-fit",kbd:"!1",readonlyOk:!0,onSelect(C){x("zoom-to-fit",{source:C}),t.zoomToFit({animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-selection",label:"action.zoom-to-selection",kbd:"!2",readonlyOk:!0,onSelect(C){b()&&(v()||(x("zoom-to-selection",{source:C}),t.zoomToSelection({animation:{duration:t.options.animationMediumMs}})))}},{id:"toggle-snap-mode",label:{default:"action.toggle-snap-mode",menu:"action.toggle-snap-mode.menu"},onSelect(C){x("toggle-snap-mode",{source:C}),t.user.updateUserPreferences({isSnapMode:!t.user.getIsSnapMode()})},checkbox:!0},{id:"toggle-dark-mode",label:{default:"action.toggle-dark-mode",menu:"action.toggle-dark-mode.menu"},kbd:"$/",readonlyOk:!0,onSelect(C){const I=t.user.getIsDarkMode()?"light":"dark";x("color-scheme",{source:C,value:I}),t.user.updateUserPreferences({colorScheme:I})},checkbox:!0},{id:"toggle-wrap-mode",label:{default:"action.toggle-wrap-mode",menu:"action.toggle-wrap-mode.menu"},readonlyOk:!0,onSelect(C){x("toggle-wrap-mode",{source:C}),t.user.updateUserPreferences({isWrapMode:!t.user.getIsWrapMode()})},checkbox:!0},{id:"toggle-dynamic-size-mode",label:{default:"action.toggle-dynamic-size-mode",menu:"action.toggle-dynamic-size-mode.menu"},readonlyOk:!1,onSelect(C){x("toggle-dynamic-size-mode",{source:C}),t.user.updateUserPreferences({isDynamicSizeMode:!t.user.getIsDynamicResizeMode()})},checkbox:!0},{id:"toggle-paste-at-cursor",label:{default:"action.toggle-paste-at-cursor",menu:"action.toggle-paste-at-cursor.menu"},readonlyOk:!1,onSelect(C){x("toggle-paste-at-cursor",{source:C}),t.user.updateUserPreferences({isPasteAtCursorMode:!t.user.getIsPasteAtCursorMode()})},checkbox:!0},{id:"toggle-reduce-motion",label:{default:"action.toggle-reduce-motion",menu:"action.toggle-reduce-motion.menu"},readonlyOk:!0,onSelect(C){x("toggle-reduce-motion",{source:C}),t.user.updateUserPreferences({animationSpeed:t.user.getAnimationSpeed()===0?1:0})},checkbox:!0},{id:"toggle-edge-scrolling",label:{default:"action.toggle-edge-scrolling",menu:"action.toggle-edge-scrolling.menu"},readonlyOk:!0,onSelect(C){x("toggle-edge-scrolling",{source:C}),t.user.updateUserPreferences({edgeScrollSpeed:t.user.getEdgeScrollSpeed()===0?1:0})},checkbox:!0},{id:"toggle-transparent",label:{default:"action.toggle-transparent",menu:"action.toggle-transparent.menu","context-menu":"action.toggle-transparent.context-menu"},readonlyOk:!0,onSelect(C){x("toggle-transparent",{source:C}),t.updateInstanceState({exportBackground:!t.getInstanceState().exportBackground})},checkbox:!0},{id:"toggle-tool-lock",label:{default:"action.toggle-tool-lock",menu:"action.toggle-tool-lock.menu"},kbd:"q",onSelect(C){x("toggle-tool-lock",{source:C}),t.updateInstanceState({isToolLocked:!t.getInstanceState().isToolLocked})},checkbox:!0},{id:"unlock-all",label:"action.unlock-all",onSelect(C){x("unlock-all",{source:C});const I=[];for(const T of t.getCurrentPageShapes())T.isLocked&&I.push({id:T.id,type:T.type,isLocked:!1});I.length>0&&t.updateShapes(I)}},{id:"toggle-focus-mode",label:{default:"action.toggle-focus-mode",menu:"action.toggle-focus-mode.menu"},readonlyOk:!0,kbd:"$.",checkbox:!0,onSelect(C){t.timers.requestAnimationFrame(()=>{t.batch(()=>{x("toggle-focus-mode",{source:C}),o(),s(),t.updateInstanceState({isFocusMode:!t.getInstanceState().isFocusMode})})})}},{id:"toggle-grid",label:{default:"action.toggle-grid",menu:"action.toggle-grid.menu"},readonlyOk:!0,kbd:"$'",onSelect(C){x("toggle-grid-mode",{source:C}),t.updateInstanceState({isGridMode:!t.getInstanceState().isGridMode})},checkbox:!0},{id:"toggle-debug-mode",label:{default:"action.toggle-debug-mode",menu:"action.toggle-debug-mode.menu"},readonlyOk:!0,onSelect(C){x("toggle-debug-mode",{source:C}),t.updateInstanceState({isDebugMode:!t.getInstanceState().isDebugMode})},checkbox:!0},{id:"print",label:"action.print",kbd:"$p",readonlyOk:!0,onSelect(C){x("print",{source:C}),c()}},{id:"exit-pen-mode",label:"action.exit-pen-mode",icon:"cross-2",readonlyOk:!0,onSelect(C){x("exit-pen-mode",{source:C}),t.updateInstanceState({isPenMode:!1})}},{id:"stop-following",label:"action.stop-following",icon:"cross-2",readonlyOk:!0,onSelect(C){x("stop-following",{source:C}),t.stopFollowingUser()}},{id:"back-to-content",label:"action.back-to-content",icon:"arrow-left",readonlyOk:!0,onSelect(C){x("zoom-to-content",{source:C});const I=t.getSelectionPageBounds()??t.getCurrentPageBounds();I&&t.zoomToBounds(I,{targetZoom:Math.min(1,t.getZoomLevel()),animation:{duration:220}})}},{id:"toggle-lock",label:"action.toggle-lock",kbd:"!l",onSelect(C){t.mark("locking"),x("toggle-lock",{source:C}),t.toggleLock(t.getSelectedShapeIds())}},{id:"new-page",label:"context.pages.new-page",onSelect(C){const I=Zo.createId(),T=t.getSelectedShapeIds();t.batch(()=>{t.mark("move_shapes_to_page"),t.createPage({name:a("page-menu.new-page-initial-name"),id:I}),t.moveShapesToPage(T,I)}),x("new-page",{source:C})}},{id:"select-white-color",label:"color-style.white",kbd:"?t",onSelect(C){const I=ir;t.batch(()=>{t.mark("change-color"),t.isIn("select")&&t.setStyleForSelectedShapes(I,"white"),t.setStyleForNextShapes(I,"white")}),x("set-style",{source:C,id:I.id,value:"white"})}},{id:"select-fill-fill",label:"fill-style.fill",kbd:"?f",onSelect(C){const I=zi;t.batch(()=>{t.mark("change-fill"),t.isIn("select")&&t.setStyleForSelectedShapes(I,"fill"),t.setStyleForNextShapes(I,"fill")}),x("set-style",{source:C,id:I.id,value:"fill"})}},{id:"flatten-to-image",label:"action.flatten-to-image",kbd:"!f",onSelect:async C=>{const I=t.getSelectedShapeIds();if(I.length===0)return;t.mark("flattening to image"),x("flatten-to-image",{source:C});const T=await zJ(t,I,t.options.flattenImageBoundsExpand);T!=null&&T.length&&t.setSelectedShapes(T)}}]);return e?e(t,k,void 0):k},[t,x,e,r,i,l,y,f,u,h,p,o,s,c,a,m]);return d.jsx(eO.Provider,{value:S,children:n})}function ie(){const e=P.useContext(eO);if(!e)throw new Error("useTools must be used within a ToolProvider");return e}function mu(e,n){return e?typeof e=="string"?e:n?e[n]??e.default:void 0:void 0}const KJ=["top","right","bottom","left"],ho=Math.min,Zn=Math.max,Pf=Math.round,lh=Math.floor,Zs=e=>({x:e,y:e}),WJ={left:"right",right:"left",bottom:"top",top:"bottom"},GJ={start:"end",end:"start"};function Kv(e,n,t){return Zn(e,ho(n,t))}function rs(e,n){return typeof e=="function"?e(n):e}function os(e){return e.split("-")[0]}function Fl(e){return e.split("-")[1]}function T0(e){return e==="x"?"y":"x"}function M0(e){return e==="y"?"height":"width"}function Qs(e){return["top","bottom"].includes(os(e))?"y":"x"}function A0(e){return T0(Qs(e))}function VJ(e,n,t){t===void 0&&(t=!1);const r=Fl(e),o=A0(e),s=M0(o);let i=o==="x"?r===(t?"end":"start")?"right":"left":r==="start"?"bottom":"top";return n.reference[s]>n.floating[s]&&(i=Cf(i)),[i,Cf(i)]}function YJ(e){const n=Cf(e);return[Wv(e),n,Wv(n)]}function Wv(e){return e.replace(/start|end/g,n=>GJ[n])}function XJ(e,n,t){const r=["left","right"],o=["right","left"],s=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return t?n?o:r:n?r:o;case"left":case"right":return n?s:i;default:return[]}}function qJ(e,n,t,r){const o=Fl(e);let s=XJ(os(e),t==="start",r);return o&&(s=s.map(i=>i+"-"+o),n&&(s=s.concat(s.map(Wv)))),s}function Cf(e){return e.replace(/left|right|bottom|top/g,n=>WJ[n])}function ZJ(e){return{top:0,right:0,bottom:0,left:0,...e}}function tO(e){return typeof e!="number"?ZJ(e):{top:e,right:e,bottom:e,left:e}}function If(e){const{x:n,y:t,width:r,height:o}=e;return{width:r,height:o,top:t,left:n,right:n+r,bottom:t+o,x:n,y:t}}function KI(e,n,t){let{reference:r,floating:o}=e;const s=Qs(n),i=A0(n),a=M0(i),l=os(n),c=s==="y",u=r.x+r.width/2-o.width/2,h=r.y+r.height/2-o.height/2,p=r[a]/2-o[a]/2;let f;switch(l){case"top":f={x:u,y:r.y-o.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:h};break;case"left":f={x:r.x-o.width,y:h};break;default:f={x:r.x,y:r.y}}switch(Fl(n)){case"start":f[i]-=p*(t&&c?-1:1);break;case"end":f[i]+=p*(t&&c?-1:1);break}return f}const QJ=async(e,n,t)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=t,a=s.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(n));let c=await i.getElementRects({reference:e,floating:n,strategy:o}),{x:u,y:h}=KI(c,r,l),p=r,f={},y=0;for(let m=0;m<a.length;m++){const{name:x,fn:S}=a[m],{x:v,y:b,data:E,reset:k}=await S({x:u,y:h,initialPlacement:r,placement:p,strategy:o,middlewareData:f,rects:c,platform:i,elements:{reference:e,floating:n}});u=v??u,h=b??h,f={...f,[x]:{...f[x],...E}},k&&y<=50&&(y++,typeof k=="object"&&(k.placement&&(p=k.placement),k.rects&&(c=k.rects===!0?await i.getElementRects({reference:e,floating:n,strategy:o}):k.rects),{x:u,y:h}=KI(c,p,l)),m=-1)}return{x:u,y:h,placement:p,strategy:o,middlewareData:f}};async function yu(e,n){var t;n===void 0&&(n={});const{x:r,y:o,platform:s,rects:i,elements:a,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:h="floating",altBoundary:p=!1,padding:f=0}=rs(n,e),y=tO(f),x=a[p?h==="floating"?"reference":"floating":h],S=If(await s.getClippingRect({element:(t=await(s.isElement==null?void 0:s.isElement(x)))==null||t?x:x.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:c,rootBoundary:u,strategy:l})),v=h==="floating"?{x:r,y:o,width:i.floating.width,height:i.floating.height}:i.reference,b=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),E=await(s.isElement==null?void 0:s.isElement(b))?await(s.getScale==null?void 0:s.getScale(b))||{x:1,y:1}:{x:1,y:1},k=If(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:v,offsetParent:b,strategy:l}):v);return{top:(S.top-k.top+y.top)/E.y,bottom:(k.bottom-S.bottom+y.bottom)/E.y,left:(S.left-k.left+y.left)/E.x,right:(k.right-S.right+y.right)/E.x}}const JJ=e=>({name:"arrow",options:e,async fn(n){const{x:t,y:r,placement:o,rects:s,platform:i,elements:a,middlewareData:l}=n,{element:c,padding:u=0}=rs(e,n)||{};if(c==null)return{};const h=tO(u),p={x:t,y:r},f=A0(o),y=M0(f),m=await i.getDimensions(c),x=f==="y",S=x?"top":"left",v=x?"bottom":"right",b=x?"clientHeight":"clientWidth",E=s.reference[y]+s.reference[f]-p[f]-s.floating[y],k=p[f]-s.reference[f],C=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c));let I=C?C[b]:0;(!I||!await(i.isElement==null?void 0:i.isElement(C)))&&(I=a.floating[b]||s.floating[y]);const T=E/2-k/2,O=I/2-m[y]/2-1,_=ho(h[S],O),M=ho(h[v],O),L=_,j=I-m[y]-M,R=I/2-m[y]/2+T,F=Kv(L,R,j),W=!l.arrow&&Fl(o)!=null&&R!==F&&s.reference[y]/2-(R<L?_:M)-m[y]/2<0,K=W?R<L?R-L:R-j:0;return{[f]:p[f]+K,data:{[f]:F,centerOffset:R-F-K,...W&&{alignmentOffset:K}},reset:W}}}),eee=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var t,r;const{placement:o,middlewareData:s,rects:i,initialPlacement:a,platform:l,elements:c}=n,{mainAxis:u=!0,crossAxis:h=!0,fallbackPlacements:p,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:y="none",flipAlignment:m=!0,...x}=rs(e,n);if((t=s.arrow)!=null&&t.alignmentOffset)return{};const S=os(o),v=Qs(a),b=os(a)===a,E=await(l.isRTL==null?void 0:l.isRTL(c.floating)),k=p||(b||!m?[Cf(a)]:YJ(a)),C=y!=="none";!p&&C&&k.push(...qJ(a,m,y,E));const I=[a,...k],T=await yu(n,x),O=[];let _=((r=s.flip)==null?void 0:r.overflows)||[];if(u&&O.push(T[S]),h){const R=VJ(o,i,E);O.push(T[R[0]],T[R[1]])}if(_=[..._,{placement:o,overflows:O}],!O.every(R=>R<=0)){var M,L;const R=(((M=s.flip)==null?void 0:M.index)||0)+1,F=I[R];if(F)return{data:{index:R,overflows:_},reset:{placement:F}};let W=(L=_.filter(K=>K.overflows[0]<=0).sort((K,z)=>K.overflows[1]-z.overflows[1])[0])==null?void 0:L.placement;if(!W)switch(f){case"bestFit":{var j;const K=(j=_.filter(z=>{if(C){const U=Qs(z.placement);return U===v||U==="y"}return!0}).map(z=>[z.placement,z.overflows.filter(U=>U>0).reduce((U,X)=>U+X,0)]).sort((z,U)=>z[1]-U[1])[0])==null?void 0:j[0];K&&(W=K);break}case"initialPlacement":W=a;break}if(o!==W)return{reset:{placement:W}}}return{}}}};function WI(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function GI(e){return KJ.some(n=>e[n]>=0)}const tee=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:t}=n,{strategy:r="referenceHidden",...o}=rs(e,n);switch(r){case"referenceHidden":{const s=await yu(n,{...o,elementContext:"reference"}),i=WI(s,t.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:GI(i)}}}case"escaped":{const s=await yu(n,{...o,altBoundary:!0}),i=WI(s,t.floating);return{data:{escapedOffsets:i,escaped:GI(i)}}}default:return{}}}}};async function nee(e,n){const{placement:t,platform:r,elements:o}=e,s=await(r.isRTL==null?void 0:r.isRTL(o.floating)),i=os(t),a=Fl(t),l=Qs(t)==="y",c=["left","top"].includes(i)?-1:1,u=s&&l?-1:1,h=rs(n,e);let{mainAxis:p,crossAxis:f,alignmentAxis:y}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...h};return a&&typeof y=="number"&&(f=a==="end"?y*-1:y),l?{x:f*u,y:p*c}:{x:p*c,y:f*u}}const ree=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var t,r;const{x:o,y:s,placement:i,middlewareData:a}=n,l=await nee(n,e);return i===((t=a.offset)==null?void 0:t.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:s+l.y,data:{...l,placement:i}}}}},oee=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:t,y:r,placement:o}=n,{mainAxis:s=!0,crossAxis:i=!1,limiter:a={fn:x=>{let{x:S,y:v}=x;return{x:S,y:v}}},...l}=rs(e,n),c={x:t,y:r},u=await yu(n,l),h=Qs(os(o)),p=T0(h);let f=c[p],y=c[h];if(s){const x=p==="y"?"top":"left",S=p==="y"?"bottom":"right",v=f+u[x],b=f-u[S];f=Kv(v,f,b)}if(i){const x=h==="y"?"top":"left",S=h==="y"?"bottom":"right",v=y+u[x],b=y-u[S];y=Kv(v,y,b)}const m=a.fn({...n,[p]:f,[h]:y});return{...m,data:{x:m.x-t,y:m.y-r}}}}},see=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:t,y:r,placement:o,rects:s,middlewareData:i}=n,{offset:a=0,mainAxis:l=!0,crossAxis:c=!0}=rs(e,n),u={x:t,y:r},h=Qs(o),p=T0(h);let f=u[p],y=u[h];const m=rs(a,n),x=typeof m=="number"?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){const b=p==="y"?"height":"width",E=s.reference[p]-s.floating[b]+x.mainAxis,k=s.reference[p]+s.reference[b]-x.mainAxis;f<E?f=E:f>k&&(f=k)}if(c){var S,v;const b=p==="y"?"width":"height",E=["top","left"].includes(os(o)),k=s.reference[h]-s.floating[b]+(E&&((S=i.offset)==null?void 0:S[h])||0)+(E?0:x.crossAxis),C=s.reference[h]+s.reference[b]+(E?0:((v=i.offset)==null?void 0:v[h])||0)-(E?x.crossAxis:0);y<k?y=k:y>C&&(y=C)}return{[p]:f,[h]:y}}}},iee=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){const{placement:t,rects:r,platform:o,elements:s}=n,{apply:i=()=>{},...a}=rs(e,n),l=await yu(n,a),c=os(t),u=Fl(t),h=Qs(t)==="y",{width:p,height:f}=r.floating;let y,m;c==="top"||c==="bottom"?(y=c,m=u===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(m=c,y=u==="end"?"top":"bottom");const x=f-l.top-l.bottom,S=p-l.left-l.right,v=ho(f-l[y],x),b=ho(p-l[m],S),E=!n.middlewareData.shift;let k=v,C=b;if(h?C=u||E?ho(b,S):S:k=u||E?ho(v,x):x,E&&!u){const T=Zn(l.left,0),O=Zn(l.right,0),_=Zn(l.top,0),M=Zn(l.bottom,0);h?C=p-2*(T!==0||O!==0?T+O:Zn(l.left,l.right)):k=f-2*(_!==0||M!==0?_+M:Zn(l.top,l.bottom))}await i({...n,availableWidth:C,availableHeight:k});const I=await o.getDimensions(s.floating);return p!==I.width||f!==I.height?{reset:{rects:!0}}:{}}}};function Nl(e){return nO(e)?(e.nodeName||"").toLowerCase():"#document"}function or(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function us(e){var n;return(n=(nO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function nO(e){return e instanceof Node||e instanceof or(e).Node}function bo(e){return e instanceof Element||e instanceof or(e).Element}function Po(e){return e instanceof HTMLElement||e instanceof or(e).HTMLElement}function VI(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof or(e).ShadowRoot}function Vu(e){const{overflow:n,overflowX:t,overflowY:r,display:o}=Gr(e);return/auto|scroll|overlay|hidden|clip/.test(n+r+t)&&!["inline","contents"].includes(o)}function aee(e){return["table","td","th"].includes(Nl(e))}function Mg(e){return[":popover-open",":modal"].some(n=>{try{return e.matches(n)}catch{return!1}})}function j0(e){const n=O0(),t=Gr(e);return t.transform!=="none"||t.perspective!=="none"||(t.containerType?t.containerType!=="normal":!1)||!n&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!n&&(t.filter?t.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(t.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(t.contain||"").includes(r))}function lee(e){let n=Js(e);for(;Po(n)&&!Pl(n);){if(Mg(n))return null;if(j0(n))return n;n=Js(n)}return null}function O0(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Pl(e){return["html","body","#document"].includes(Nl(e))}function Gr(e){return or(e).getComputedStyle(e)}function Ag(e){return bo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Js(e){if(Nl(e)==="html")return e;const n=e.assignedSlot||e.parentNode||VI(e)&&e.host||us(e);return VI(n)?n.host:n}function rO(e){const n=Js(e);return Pl(n)?e.ownerDocument?e.ownerDocument.body:e.body:Po(n)&&Vu(n)?n:rO(n)}function Su(e,n,t){var r;n===void 0&&(n=[]),t===void 0&&(t=!0);const o=rO(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),i=or(o);return s?n.concat(i,i.visualViewport||[],Vu(o)?o:[],i.frameElement&&t?Su(i.frameElement):[]):n.concat(o,Su(o,[],t))}function oO(e){const n=Gr(e);let t=parseFloat(n.width)||0,r=parseFloat(n.height)||0;const o=Po(e),s=o?e.offsetWidth:t,i=o?e.offsetHeight:r,a=Pf(t)!==s||Pf(r)!==i;return a&&(t=s,r=i),{width:t,height:r,$:a}}function D0(e){return bo(e)?e:e.contextElement}function sl(e){const n=D0(e);if(!Po(n))return Zs(1);const t=n.getBoundingClientRect(),{width:r,height:o,$:s}=oO(n);let i=(s?Pf(t.width):t.width)/r,a=(s?Pf(t.height):t.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!a||!Number.isFinite(a))&&(a=1),{x:i,y:a}}const cee=Zs(0);function sO(e){const n=or(e);return!O0()||!n.visualViewport?cee:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function uee(e,n,t){return n===void 0&&(n=!1),!t||n&&t!==or(e)?!1:n}function Zi(e,n,t,r){n===void 0&&(n=!1),t===void 0&&(t=!1);const o=e.getBoundingClientRect(),s=D0(e);let i=Zs(1);n&&(r?bo(r)&&(i=sl(r)):i=sl(e));const a=uee(s,t,r)?sO(s):Zs(0);let l=(o.left+a.x)/i.x,c=(o.top+a.y)/i.y,u=o.width/i.x,h=o.height/i.y;if(s){const p=or(s),f=r&&bo(r)?or(r):r;let y=p,m=y.frameElement;for(;m&&r&&f!==y;){const x=sl(m),S=m.getBoundingClientRect(),v=Gr(m),b=S.left+(m.clientLeft+parseFloat(v.paddingLeft))*x.x,E=S.top+(m.clientTop+parseFloat(v.paddingTop))*x.y;l*=x.x,c*=x.y,u*=x.x,h*=x.y,l+=b,c+=E,y=or(m),m=y.frameElement}}return If({width:u,height:h,x:l,y:c})}function dee(e){let{elements:n,rect:t,offsetParent:r,strategy:o}=e;const s=o==="fixed",i=us(r),a=n?Mg(n.floating):!1;if(r===i||a&&s)return t;let l={scrollLeft:0,scrollTop:0},c=Zs(1);const u=Zs(0),h=Po(r);if((h||!h&&!s)&&((Nl(r)!=="body"||Vu(i))&&(l=Ag(r)),Po(r))){const p=Zi(r);c=sl(r),u.x=p.x+r.clientLeft,u.y=p.y+r.clientTop}return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-l.scrollLeft*c.x+u.x,y:t.y*c.y-l.scrollTop*c.y+u.y}}function hee(e){return Array.from(e.getClientRects())}function iO(e){return Zi(us(e)).left+Ag(e).scrollLeft}function pee(e){const n=us(e),t=Ag(e),r=e.ownerDocument.body,o=Zn(n.scrollWidth,n.clientWidth,r.scrollWidth,r.clientWidth),s=Zn(n.scrollHeight,n.clientHeight,r.scrollHeight,r.clientHeight);let i=-t.scrollLeft+iO(e);const a=-t.scrollTop;return Gr(r).direction==="rtl"&&(i+=Zn(n.clientWidth,r.clientWidth)-o),{width:o,height:s,x:i,y:a}}function fee(e,n){const t=or(e),r=us(e),o=t.visualViewport;let s=r.clientWidth,i=r.clientHeight,a=0,l=0;if(o){s=o.width,i=o.height;const c=O0();(!c||c&&n==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:s,height:i,x:a,y:l}}function gee(e,n){const t=Zi(e,!0,n==="fixed"),r=t.top+e.clientTop,o=t.left+e.clientLeft,s=Po(e)?sl(e):Zs(1),i=e.clientWidth*s.x,a=e.clientHeight*s.y,l=o*s.x,c=r*s.y;return{width:i,height:a,x:l,y:c}}function YI(e,n,t){let r;if(n==="viewport")r=fee(e,t);else if(n==="document")r=pee(us(e));else if(bo(n))r=gee(n,t);else{const o=sO(e);r={...n,x:n.x-o.x,y:n.y-o.y}}return If(r)}function aO(e,n){const t=Js(e);return t===n||!bo(t)||Pl(t)?!1:Gr(t).position==="fixed"||aO(t,n)}function mee(e,n){const t=n.get(e);if(t)return t;let r=Su(e,[],!1).filter(a=>bo(a)&&Nl(a)!=="body"),o=null;const s=Gr(e).position==="fixed";let i=s?Js(e):e;for(;bo(i)&&!Pl(i);){const a=Gr(i),l=j0(i);!l&&a.position==="fixed"&&(o=null),(s?!l&&!o:!l&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Vu(i)&&!l&&aO(e,i))?r=r.filter(u=>u!==i):o=a,i=Js(i)}return n.set(e,r),r}function yee(e){let{element:n,boundary:t,rootBoundary:r,strategy:o}=e;const i=[...t==="clippingAncestors"?Mg(n)?[]:mee(n,this._c):[].concat(t),r],a=i[0],l=i.reduce((c,u)=>{const h=YI(n,u,o);return c.top=Zn(h.top,c.top),c.right=ho(h.right,c.right),c.bottom=ho(h.bottom,c.bottom),c.left=Zn(h.left,c.left),c},YI(n,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function See(e){const{width:n,height:t}=oO(e);return{width:n,height:t}}function vee(e,n,t){const r=Po(n),o=us(n),s=t==="fixed",i=Zi(e,!0,s,n);let a={scrollLeft:0,scrollTop:0};const l=Zs(0);if(r||!r&&!s)if((Nl(n)!=="body"||Vu(o))&&(a=Ag(n)),r){const h=Zi(n,!0,s,n);l.x=h.x+n.clientLeft,l.y=h.y+n.clientTop}else o&&(l.x=iO(o));const c=i.left+a.scrollLeft-l.x,u=i.top+a.scrollTop-l.y;return{x:c,y:u,width:i.width,height:i.height}}function Ey(e){return Gr(e).position==="static"}function XI(e,n){return!Po(e)||Gr(e).position==="fixed"?null:n?n(e):e.offsetParent}function lO(e,n){const t=or(e);if(Mg(e))return t;if(!Po(e)){let o=Js(e);for(;o&&!Pl(o);){if(bo(o)&&!Ey(o))return o;o=Js(o)}return t}let r=XI(e,n);for(;r&&aee(r)&&Ey(r);)r=XI(r,n);return r&&Pl(r)&&Ey(r)&&!j0(r)?t:r||lee(e)||t}const xee=async function(e){const n=this.getOffsetParent||lO,t=this.getDimensions,r=await t(e.floating);return{reference:vee(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function wee(e){return Gr(e).direction==="rtl"}const bee={convertOffsetParentRelativeRectToViewportRelativeRect:dee,getDocumentElement:us,getClippingRect:yee,getOffsetParent:lO,getElementRects:xee,getClientRects:hee,getDimensions:See,getScale:sl,isElement:bo,isRTL:wee};function Pee(e,n){let t=null,r;const o=us(e);function s(){var a;clearTimeout(r),(a=t)==null||a.disconnect(),t=null}function i(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),s();const{left:c,top:u,width:h,height:p}=e.getBoundingClientRect();if(a||n(),!h||!p)return;const f=lh(u),y=lh(o.clientWidth-(c+h)),m=lh(o.clientHeight-(u+p)),x=lh(c),v={rootMargin:-f+"px "+-y+"px "+-m+"px "+-x+"px",threshold:Zn(0,ho(1,l))||1};let b=!0;function E(k){const C=k[0].intersectionRatio;if(C!==l){if(!b)return i();C?i(!1,C):r=setTimeout(()=>{i(!1,1e-7)},1e3)}b=!1}try{t=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{t=new IntersectionObserver(E,v)}t.observe(e)}return i(!0),s}function Cee(e,n,t,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,c=D0(e),u=o||s?[...c?Su(c):[],...Su(n)]:[];u.forEach(S=>{o&&S.addEventListener("scroll",t,{passive:!0}),s&&S.addEventListener("resize",t)});const h=c&&a?Pee(c,t):null;let p=-1,f=null;i&&(f=new ResizeObserver(S=>{let[v]=S;v&&v.target===c&&f&&(f.unobserve(n),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var b;(b=f)==null||b.observe(n)})),t()}),c&&!l&&f.observe(c),f.observe(n));let y,m=l?Zi(e):null;l&&x();function x(){const S=Zi(e);m&&(S.x!==m.x||S.y!==m.y||S.width!==m.width||S.height!==m.height)&&t(),m=S,y=requestAnimationFrame(x)}return t(),()=>{var S;u.forEach(v=>{o&&v.removeEventListener("scroll",t),s&&v.removeEventListener("resize",t)}),h==null||h(),(S=f)==null||S.disconnect(),f=null,l&&cancelAnimationFrame(y)}}const Iee=ree,Eee=oee,kee=eee,_ee=iee,Tee=tee,qI=JJ,Mee=see,Aee=(e,n,t)=>{const r=new Map,o={platform:bee,...t},s={...o.platform,_c:r};return QJ(e,n,{...o,platform:s})};var fp=typeof document<"u"?P.useLayoutEffect:P.useEffect;function Ef(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let t,r,o;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(t=e.length,t!==n.length)return!1;for(r=t;r--!==0;)if(!Ef(e[r],n[r]))return!1;return!0}if(o=Object.keys(e),t=o.length,t!==Object.keys(n).length)return!1;for(r=t;r--!==0;)if(!{}.hasOwnProperty.call(n,o[r]))return!1;for(r=t;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!Ef(e[s],n[s]))return!1}return!0}return e!==e&&n!==n}function cO(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ZI(e,n){const t=cO(e);return Math.round(n*t)/t}function QI(e){const n=P.useRef(e);return fp(()=>{n.current=e}),n}function jee(e){e===void 0&&(e={});const{placement:n="bottom",strategy:t="absolute",middleware:r=[],platform:o,elements:{reference:s,floating:i}={},transform:a=!0,whileElementsMounted:l,open:c}=e,[u,h]=P.useState({x:0,y:0,strategy:t,placement:n,middlewareData:{},isPositioned:!1}),[p,f]=P.useState(r);Ef(p,r)||f(r);const[y,m]=P.useState(null),[x,S]=P.useState(null),v=P.useCallback(K=>{K!==C.current&&(C.current=K,m(K))},[]),b=P.useCallback(K=>{K!==I.current&&(I.current=K,S(K))},[]),E=s||y,k=i||x,C=P.useRef(null),I=P.useRef(null),T=P.useRef(u),O=l!=null,_=QI(l),M=QI(o),L=P.useCallback(()=>{if(!C.current||!I.current)return;const K={placement:n,strategy:t,middleware:p};M.current&&(K.platform=M.current),Aee(C.current,I.current,K).then(z=>{const U={...z,isPositioned:!0};j.current&&!Ef(T.current,U)&&(T.current=U,aa.flushSync(()=>{h(U)}))})},[p,n,t,M]);fp(()=>{c===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,h(K=>({...K,isPositioned:!1})))},[c]);const j=P.useRef(!1);fp(()=>(j.current=!0,()=>{j.current=!1}),[]),fp(()=>{if(E&&(C.current=E),k&&(I.current=k),E&&k){if(_.current)return _.current(E,k,L);L()}},[E,k,L,_,O]);const R=P.useMemo(()=>({reference:C,floating:I,setReference:v,setFloating:b}),[v,b]),F=P.useMemo(()=>({reference:E,floating:k}),[E,k]),W=P.useMemo(()=>{const K={position:t,left:0,top:0};if(!F.floating)return K;const z=ZI(F.floating,u.x),U=ZI(F.floating,u.y);return a?{...K,transform:"translate("+z+"px, "+U+"px)",...cO(F.floating)>=1.5&&{willChange:"transform"}}:{position:t,left:z,top:U}},[t,a,F.floating,u.x,u.y]);return P.useMemo(()=>({...u,update:L,refs:R,elements:F,floatingStyles:W}),[u,L,R,F,W])}const Oee=e=>{function n(t){return{}.hasOwnProperty.call(t,"current")}return{name:"arrow",options:e,fn(t){const{element:r,padding:o}=typeof e=="function"?e(t):e;return r&&n(r)?r.current!=null?qI({element:r.current,padding:o}).fn(t):{}:r?qI({element:r,padding:o}).fn(t):{}}}},Dee=(e,n)=>({...Iee(e),options:[e,n]}),Ree=(e,n)=>({...Eee(e),options:[e,n]}),Lee=(e,n)=>({...Mee(e),options:[e,n]}),$ee=(e,n)=>({...kee(e),options:[e,n]}),Fee=(e,n)=>({..._ee(e),options:[e,n]}),Nee=(e,n)=>({...Tee(e),options:[e,n]}),zee=(e,n)=>({...Oee(e),options:[e,n]});var Bee="Arrow",uO=P.forwardRef((e,n)=>{const{children:t,width:r=10,height:o=5,...s}=e;return d.jsx(Ce.svg,{...s,ref:n,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?t:d.jsx("polygon",{points:"0,0 30,0 15,10"})})});uO.displayName=Bee;var Uee=uO;function dO(e){const[n,t]=P.useState(void 0);return Xs(()=>{if(e){t({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const s=o[0];let i,a;if("borderBoxSize"in s){const l=s.borderBoxSize,c=Array.isArray(l)?l[0]:l;i=c.inlineSize,a=c.blockSize}else i=e.offsetWidth,a=e.offsetHeight;t({width:i,height:a})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else t(void 0)},[e]),n}var R0="Popper",[hO,jg]=ko(R0),[Hee,pO]=hO(R0),fO=e=>{const{__scopePopper:n,children:t}=e,[r,o]=P.useState(null);return d.jsx(Hee,{scope:n,anchor:r,onAnchorChange:o,children:t})};fO.displayName=R0;var gO="PopperAnchor",mO=P.forwardRef((e,n)=>{const{__scopePopper:t,virtualRef:r,...o}=e,s=pO(gO,t),i=P.useRef(null),a=Ye(n,i);return P.useEffect(()=>{s.onAnchorChange((r==null?void 0:r.current)||i.current)}),r?null:d.jsx(Ce.div,{...o,ref:a})});mO.displayName=gO;var L0="PopperContent",[Kee,Wee]=hO(L0),yO=P.forwardRef((e,n)=>{var je,et,Ae,at,Ne,Gn;const{__scopePopper:t,side:r="bottom",sideOffset:o=0,align:s="center",alignOffset:i=0,arrowPadding:a=0,avoidCollisions:l=!0,collisionBoundary:c=[],collisionPadding:u=0,sticky:h="partial",hideWhenDetached:p=!1,updatePositionStrategy:f="optimized",onPlaced:y,...m}=e,x=pO(L0,t),[S,v]=P.useState(null),b=Ye(n,Rt=>v(Rt)),[E,k]=P.useState(null),C=dO(E),I=(C==null?void 0:C.width)??0,T=(C==null?void 0:C.height)??0,O=r+(s!=="center"?"-"+s:""),_=typeof u=="number"?u:{top:0,right:0,bottom:0,left:0,...u},M=Array.isArray(c)?c:[c],L=M.length>0,j={padding:_,boundary:M.filter(Vee),altBoundary:L},{refs:R,floatingStyles:F,placement:W,isPositioned:K,middlewareData:z}=jee({strategy:"fixed",placement:O,whileElementsMounted:(...Rt)=>Cee(...Rt,{animationFrame:f==="always"}),elements:{reference:x.anchor},middleware:[Dee({mainAxis:o+T,alignmentAxis:i}),l&&Ree({mainAxis:!0,crossAxis:!1,limiter:h==="partial"?Lee():void 0,...j}),l&&$ee({...j}),Fee({...j,apply:({elements:Rt,rects:Cn,availableWidth:St,availableHeight:Xt})=>{const{width:_o,height:Bl}=Cn.reference,ps=Rt.floating.style;ps.setProperty("--radix-popper-available-width",`${St}px`),ps.setProperty("--radix-popper-available-height",`${Xt}px`),ps.setProperty("--radix-popper-anchor-width",`${_o}px`),ps.setProperty("--radix-popper-anchor-height",`${Bl}px`)}}),E&&zee({element:E,padding:a}),Yee({arrowWidth:I,arrowHeight:T}),p&&Nee({strategy:"referenceHidden",...j})]}),[U,X]=xO(W),J=Vt(y);Xs(()=>{K&&(J==null||J())},[K,J]);const le=(je=z.arrow)==null?void 0:je.x,ye=(et=z.arrow)==null?void 0:et.y,Me=((Ae=z.arrow)==null?void 0:Ae.centerOffset)!==0,[ae,Ue]=P.useState();return Xs(()=>{S&&Ue(window.getComputedStyle(S).zIndex)},[S]),d.jsx("div",{ref:R.setFloating,"data-radix-popper-content-wrapper":"",style:{...F,transform:K?F.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ae,"--radix-popper-transform-origin":[(at=z.transformOrigin)==null?void 0:at.x,(Ne=z.transformOrigin)==null?void 0:Ne.y].join(" "),...((Gn=z.hide)==null?void 0:Gn.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:d.jsx(Kee,{scope:t,placedSide:U,onArrowChange:k,arrowX:le,arrowY:ye,shouldHideArrow:Me,children:d.jsx(Ce.div,{"data-side":U,"data-align":X,...m,ref:b,style:{...m.style,animation:K?void 0:"none"}})})})});yO.displayName=L0;var SO="PopperArrow",Gee={top:"bottom",right:"left",bottom:"top",left:"right"},vO=P.forwardRef(function(n,t){const{__scopePopper:r,...o}=n,s=Wee(SO,r),i=Gee[s.placedSide];return d.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:d.jsx(Uee,{...o,ref:t,style:{...o.style,display:"block"}})})});vO.displayName=SO;function Vee(e){return e!==null}var Yee=e=>({name:"transformOrigin",options:e,fn(n){var x,S,v;const{placement:t,rects:r,middlewareData:o}=n,i=((x=o.arrow)==null?void 0:x.centerOffset)!==0,a=i?0:e.arrowWidth,l=i?0:e.arrowHeight,[c,u]=xO(t),h={start:"0%",center:"50%",end:"100%"}[u],p=(((S=o.arrow)==null?void 0:S.x)??0)+a/2,f=(((v=o.arrow)==null?void 0:v.y)??0)+l/2;let y="",m="";return c==="bottom"?(y=i?h:`${p}px`,m=`${-l}px`):c==="top"?(y=i?h:`${p}px`,m=`${r.floating.height+l}px`):c==="right"?(y=`${-l}px`,m=i?h:`${f}px`):c==="left"&&(y=`${r.floating.width+l}px`,m=i?h:`${f}px`),{data:{x:y,y:m}}}});function xO(e){const[n,t="center"]=e.split("-");return[n,t]}var $0=fO,F0=mO,wO=yO,bO=vO,N0="Popover",[PO,Jie]=ko(N0,[jg]),Yu=jg(),[Xee,ci]=PO(N0),CO=e=>{const{__scopePopover:n,children:t,open:r,defaultOpen:o,onOpenChange:s,modal:i=!1}=e,a=Yu(n),l=P.useRef(null),[c,u]=P.useState(!1),[h=!1,p]=li({prop:r,defaultProp:o,onChange:s});return d.jsx($0,{...a,children:d.jsx(Xee,{scope:n,contentId:Xo(),triggerRef:l,open:h,onOpenChange:p,onOpenToggle:P.useCallback(()=>p(f=>!f),[p]),hasCustomAnchor:c,onCustomAnchorAdd:P.useCallback(()=>u(!0),[]),onCustomAnchorRemove:P.useCallback(()=>u(!1),[]),modal:i,children:t})})};CO.displayName=N0;var IO="PopoverAnchor",qee=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(IO,t),s=Yu(t),{onCustomAnchorAdd:i,onCustomAnchorRemove:a}=o;return P.useEffect(()=>(i(),()=>a()),[i,a]),d.jsx(F0,{...s,...r,ref:n})});qee.displayName=IO;var EO="PopoverTrigger",kO=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(EO,t),s=Yu(t),i=Ye(n,o.triggerRef),a=d.jsx(Ce.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":jO(o.open),...r,ref:i,onClick:re(e.onClick,o.onOpenToggle)});return o.hasCustomAnchor?a:d.jsx(F0,{asChild:!0,...s,children:a})});kO.displayName=EO;var z0="PopoverPortal",[Zee,Qee]=PO(z0,{forceMount:void 0}),_O=e=>{const{__scopePopover:n,forceMount:t,children:r,container:o}=e,s=ci(z0,n);return d.jsx(Zee,{scope:n,forceMount:t,children:d.jsx(Xr,{present:t||s.open,children:d.jsx(Gu,{asChild:!0,container:o,children:r})})})};_O.displayName=z0;var Cl="PopoverContent",TO=P.forwardRef((e,n)=>{const t=Qee(Cl,e.__scopePopover),{forceMount:r=t.forceMount,...o}=e,s=ci(Cl,e.__scopePopover);return d.jsx(Xr,{present:r||s.open,children:s.modal?d.jsx(Jee,{...o,ref:n}):d.jsx(ete,{...o,ref:n})})});TO.displayName=Cl;var Jee=P.forwardRef((e,n)=>{const t=ci(Cl,e.__scopePopover),r=P.useRef(null),o=Ye(n,r),s=P.useRef(!1);return P.useEffect(()=>{const i=r.current;if(i)return y0(i)},[]),d.jsx(bg,{as:Xi,allowPinchZoom:!0,children:d.jsx(MO,{...e,ref:o,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:re(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),s.current||(a=t.triggerRef.current)==null||a.focus()}),onPointerDownOutside:re(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0,c=a.button===2||l;s.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:re(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),ete=P.forwardRef((e,n)=>{const t=ci(Cl,e.__scopePopover),r=P.useRef(!1),o=P.useRef(!1);return d.jsx(MO,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var i,a;(i=e.onCloseAutoFocus)==null||i.call(e,s),s.defaultPrevented||(r.current||(a=t.triggerRef.current)==null||a.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var l,c;(l=e.onInteractOutside)==null||l.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const i=s.target;((c=t.triggerRef.current)==null?void 0:c.contains(i))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),MO=P.forwardRef((e,n)=>{const{__scopePopover:t,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:c,onInteractOutside:u,...h}=e,p=ci(Cl,t),f=Yu(t);return m0(),d.jsx(xg,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:d.jsx(Wu,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:c,onDismiss:()=>p.onOpenChange(!1),children:d.jsx(wO,{"data-state":jO(p.open),role:"dialog",id:p.contentId,...f,...h,ref:n,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),AO="PopoverClose",tte=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(AO,t);return d.jsx(Ce.button,{type:"button",...r,ref:n,onClick:re(e.onClick,()=>o.onOpenChange(!1))})});tte.displayName=AO;var nte="PopoverArrow",rte=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=Yu(t);return d.jsx(bO,{...o,...r,ref:n})});rte.displayName=nte;function jO(e){return e?"open":"closed"}var ote=CO,ste=kO,ite=_O,ate=TO;function ui(e,n){const t=B(),r=P.useRef(!1),o=Zr(),s=P.useCallback(a=>{r.current=a,t.batch(()=>{a?(t.complete(),t.addOpenMenu(e)):t.updateInstanceState({openMenus:t.getOpenMenus().filter(l=>!l.startsWith(e))}),n==null||n(a)})},[t,e,n]),i=G("is menu open",()=>t.getOpenMenus().includes(e),[t,e]);return P.useEffect(()=>(r.current&&(o("open-menu",{source:"unknown",id:e}),t.addOpenMenu(e)),()=>{r.current&&(t.deleteOpenMenu(e),t.getOpenMenus().forEach(a=>{a.startsWith(e)&&(o("close-menu",{source:"unknown",id:e}),t.deleteOpenMenu(a))}),r.current=!1)}),[t,e,o]),[i,s]}function B0({id:e,children:n,onOpenChange:t,open:r}){const[o,s]=ui(e,t);return d.jsx(ote,{onOpenChange:s,open:r||o,children:d.jsx("div",{className:"tlui-popover",children:n})})}function U0({children:e}){return d.jsx(ste,{asChild:!0,dir:"ltr",children:e})}function H0({side:e,children:n,align:t="center",sideOffset:r=8,alignOffset:o=0}){const s=un();return d.jsx(ite,{container:s,children:d.jsx(ate,{className:"tlui-popover__content",side:e,sideOffset:r,align:t,alignOffset:o,dir:"ltr",children:n})})}const OO=P.createContext(null);function Og(){const e=P.useContext(OO);if(!e)throw new Error("useTldrawUiMenuContext must be used within a TldrawUiMenuContextProvider");return e}function _r({type:e,sourceId:n,children:t}){return d.jsx(OO.Provider,{value:{type:e,sourceId:n},children:t})}function lte(e){return e.getSelectedShapeIds().map(r=>e.getShape(r)).filter(r=>{if(!r)return!1;if(e.isShapeOfType(r,"arrow")){const o=An(e,r);if(o.start||o.end)return!1}return!0})}const DO=()=>{const e=B();return G("threeStackableItems",()=>lte(e).length>2,[e])},ds=()=>{const e=B();return G("isInSelectState",()=>e.isIn("select"),[e])},RO=()=>{const e=B();return G("allow group",()=>{const n=e.getSelectedShapes();if(n.length<2)return!1;for(const t of n)if(e.isShapeOfType(t,"arrow")){const r=An(e,t);if(r.start&&!n.some(o=>o.id===r.start.toId)||r.end&&!n.some(o=>o.id===r.end.toId))return!1}return!0},[e])},LO=()=>{const e=B();return G("allowUngroup",()=>e.getSelectedShapeIds().some(n=>{var t;return((t=e.getShape(n))==null?void 0:t.type)==="group"}),[e])},cte=typeof window<"u"&&"navigator"in window&&!!navigator.clipboard&&!!navigator.clipboard.read;function $O(e,n){const t=B();return G("selectedShapes",()=>t.getSelectedShapes().length>=e,[t,e,n])}function Pn(e,n){const t=B();return G("selectedShapes",()=>{const r=t.getSelectedShapes().filter(o=>!t.isShapeOrAncestorLocked(o)).length;return e===void 0?r:r>=e},[t])}function ute(){const e=B();return G("showAutoSizeToggle",()=>{const n=e.getSelectedShapes();return n.length===1&&e.isShapeOfType(n[0],"text")&&n[0].props.autoSize===!1},[e])}function FO(){const e=B();return G("hasLinkShapeSelected",()=>{const n=e.getOnlySelectedShape();return!!(n&&n.type!=="embed"&&"url"in n.props&&!n.isLocked)},[e])}function dte(){const e=B();return G("onlyFlippableShape",()=>{const n=e.getOnlySelectedShape();return n&&(e.isShapeOfType(n,"group")||e.isShapeOfType(n,"image")||e.isShapeOfType(n,"arrow")||e.isShapeOfType(n,"line")||e.isShapeOfType(n,"draw"))},[e])}function NO(){const e=B();return G("useCanRedo",()=>e.getCanRedo(),[e])}function zO(){const e=B();return G("useCanUndo",()=>e.getCanUndo(),[e])}var hte=P.createContext(void 0);function K0(e){const n=P.useContext(hte);return e||n||"ltr"}var ky="rovingFocusGroup.onEntryFocus",pte={bubbles:!1,cancelable:!0},Dg="RovingFocusGroup",[Gv,BO,fte]=Pg(Dg),[gte,UO]=ko(Dg,[fte]),[mte,yte]=gte(Dg),HO=P.forwardRef((e,n)=>d.jsx(Gv.Provider,{scope:e.__scopeRovingFocusGroup,children:d.jsx(Gv.Slot,{scope:e.__scopeRovingFocusGroup,children:d.jsx(Ste,{...e,ref:n})})}));HO.displayName=Dg;var Ste=P.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,orientation:r,loop:o=!1,dir:s,currentTabStopId:i,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:l,onEntryFocus:c,preventScrollOnEntryFocus:u=!1,...h}=e,p=P.useRef(null),f=Ye(n,p),y=K0(s),[m=null,x]=li({prop:i,defaultProp:a,onChange:l}),[S,v]=P.useState(!1),b=Vt(c),E=BO(t),k=P.useRef(!1),[C,I]=P.useState(0);return P.useEffect(()=>{const T=p.current;if(T)return T.addEventListener(ky,b),()=>T.removeEventListener(ky,b)},[b]),d.jsx(mte,{scope:t,orientation:r,dir:y,loop:o,currentTabStopId:m,onItemFocus:P.useCallback(T=>x(T),[x]),onItemShiftTab:P.useCallback(()=>v(!0),[]),onFocusableItemAdd:P.useCallback(()=>I(T=>T+1),[]),onFocusableItemRemove:P.useCallback(()=>I(T=>T-1),[]),children:d.jsx(Ce.div,{tabIndex:S||C===0?-1:0,"data-orientation":r,...h,ref:f,style:{outline:"none",...e.style},onMouseDown:re(e.onMouseDown,()=>{k.current=!0}),onFocus:re(e.onFocus,T=>{const O=!k.current;if(T.target===T.currentTarget&&O&&!S){const _=new CustomEvent(ky,pte);if(T.currentTarget.dispatchEvent(_),!_.defaultPrevented){const M=E().filter(W=>W.focusable),L=M.find(W=>W.active),j=M.find(W=>W.id===m),F=[L,j,...M].filter(Boolean).map(W=>W.ref.current);GO(F,u)}}k.current=!1}),onBlur:re(e.onBlur,()=>v(!1))})})}),KO="RovingFocusGroupItem",WO=P.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,focusable:r=!0,active:o=!1,tabStopId:s,...i}=e,a=Xo(),l=s||a,c=yte(KO,t),u=c.currentTabStopId===l,h=BO(t),{onFocusableItemAdd:p,onFocusableItemRemove:f}=c;return P.useEffect(()=>{if(r)return p(),()=>f()},[r,p,f]),d.jsx(Gv.ItemSlot,{scope:t,id:l,focusable:r,active:o,children:d.jsx(Ce.span,{tabIndex:u?0:-1,"data-orientation":c.orientation,...i,ref:n,onMouseDown:re(e.onMouseDown,y=>{r?c.onItemFocus(l):y.preventDefault()}),onFocus:re(e.onFocus,()=>c.onItemFocus(l)),onKeyDown:re(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const m=wte(y,c.orientation,c.dir);if(m!==void 0){if(y.metaKey||y.ctrlKey||y.altKey||y.shiftKey)return;y.preventDefault();let S=h().filter(v=>v.focusable).map(v=>v.ref.current);if(m==="last")S.reverse();else if(m==="prev"||m==="next"){m==="prev"&&S.reverse();const v=S.indexOf(y.currentTarget);S=c.loop?bte(S,v+1):S.slice(v+1)}setTimeout(()=>GO(S))}})})})});WO.displayName=KO;var vte={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function xte(e,n){return n!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function wte(e,n,t){const r=xte(e.key,t);if(!(n==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(n==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return vte[r]}function GO(e,n=!1){const t=document.activeElement;for(const r of e)if(r===t||(r.focus({preventScroll:n}),document.activeElement!==t))return}function bte(e,n){return e.map((t,r)=>e[(n+r)%e.length])}var Pte=HO,Cte=WO,Vv=["Enter"," "],Ite=["ArrowDown","PageUp","Home"],VO=["ArrowUp","PageDown","End"],Ete=[...Ite,...VO],kte={ltr:[...Vv,"ArrowRight"],rtl:[...Vv,"ArrowLeft"]},_te={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Xu="Menu",[vu,Tte,Mte]=Pg(Xu),[ca,Rg]=ko(Xu,[Mte,jg,UO]),qu=jg(),YO=UO(),[XO,di]=ca(Xu),[Ate,Zu]=ca(Xu),qO=e=>{const{__scopeMenu:n,open:t=!1,children:r,dir:o,onOpenChange:s,modal:i=!0}=e,a=qu(n),[l,c]=P.useState(null),u=P.useRef(!1),h=Vt(s),p=K0(o);return P.useEffect(()=>{const f=()=>{u.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>u.current=!1;return document.addEventListener("keydown",f,{capture:!0}),()=>{document.removeEventListener("keydown",f,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),d.jsx($0,{...a,children:d.jsx(XO,{scope:n,open:t,onOpenChange:h,content:l,onContentChange:c,children:d.jsx(Ate,{scope:n,onClose:P.useCallback(()=>h(!1),[h]),isUsingKeyboardRef:u,dir:p,modal:i,children:r})})})};qO.displayName=Xu;var jte="MenuAnchor",W0=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e,o=qu(t);return d.jsx(F0,{...o,...r,ref:n})});W0.displayName=jte;var G0="MenuPortal",[Ote,ZO]=ca(G0,{forceMount:void 0}),QO=e=>{const{__scopeMenu:n,forceMount:t,children:r,container:o}=e,s=di(G0,n);return d.jsx(Ote,{scope:n,forceMount:t,children:d.jsx(Xr,{present:t||s.open,children:d.jsx(Gu,{asChild:!0,container:o,children:r})})})};QO.displayName=G0;var Ir="MenuContent",[Dte,V0]=ca(Ir),JO=P.forwardRef((e,n)=>{const t=ZO(Ir,e.__scopeMenu),{forceMount:r=t.forceMount,...o}=e,s=di(Ir,e.__scopeMenu),i=Zu(Ir,e.__scopeMenu);return d.jsx(vu.Provider,{scope:e.__scopeMenu,children:d.jsx(Xr,{present:r||s.open,children:d.jsx(vu.Slot,{scope:e.__scopeMenu,children:i.modal?d.jsx(Rte,{...o,ref:n}):d.jsx(Lte,{...o,ref:n})})})})}),Rte=P.forwardRef((e,n)=>{const t=di(Ir,e.__scopeMenu),r=P.useRef(null),o=Ye(n,r);return P.useEffect(()=>{const s=r.current;if(s)return y0(s)},[]),d.jsx(Y0,{...e,ref:o,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:re(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),Lte=P.forwardRef((e,n)=>{const t=di(Ir,e.__scopeMenu);return d.jsx(Y0,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Y0=P.forwardRef((e,n)=>{const{__scopeMenu:t,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEntryFocus:l,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:p,onDismiss:f,disableOutsideScroll:y,...m}=e,x=di(Ir,t),S=Zu(Ir,t),v=qu(t),b=YO(t),E=Tte(t),[k,C]=P.useState(null),I=P.useRef(null),T=Ye(n,I,x.onContentChange),O=P.useRef(0),_=P.useRef(""),M=P.useRef(0),L=P.useRef(null),j=P.useRef("right"),R=P.useRef(0),F=y?bg:P.Fragment,W=y?{as:Xi,allowPinchZoom:!0}:void 0,K=U=>{var je,et;const X=_.current+U,J=E().filter(Ae=>!Ae.disabled),le=document.activeElement,ye=(je=J.find(Ae=>Ae.ref.current===le))==null?void 0:je.textValue,Me=J.map(Ae=>Ae.textValue),ae=Yte(Me,X,ye),Ue=(et=J.find(Ae=>Ae.textValue===ae))==null?void 0:et.ref.current;(function Ae(at){_.current=at,window.clearTimeout(O.current),at!==""&&(O.current=window.setTimeout(()=>Ae(""),1e3))})(X),Ue&&setTimeout(()=>Ue.focus())};P.useEffect(()=>()=>window.clearTimeout(O.current),[]),m0();const z=P.useCallback(U=>{var J,le;return j.current===((J=L.current)==null?void 0:J.side)&&qte(U,(le=L.current)==null?void 0:le.area)},[]);return d.jsx(Dte,{scope:t,searchRef:_,onItemEnter:P.useCallback(U=>{z(U)&&U.preventDefault()},[z]),onItemLeave:P.useCallback(U=>{var X;z(U)||((X=I.current)==null||X.focus(),C(null))},[z]),onTriggerLeave:P.useCallback(U=>{z(U)&&U.preventDefault()},[z]),pointerGraceTimerRef:M,onPointerGraceIntentChange:P.useCallback(U=>{L.current=U},[]),children:d.jsx(F,{...W,children:d.jsx(xg,{asChild:!0,trapped:o,onMountAutoFocus:re(s,U=>{var X;U.preventDefault(),(X=I.current)==null||X.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:d.jsx(Wu,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:p,onDismiss:f,children:d.jsx(Pte,{asChild:!0,...b,dir:S.dir,orientation:"vertical",loop:r,currentTabStopId:k,onCurrentTabStopIdChange:C,onEntryFocus:re(l,U=>{S.isUsingKeyboardRef.current||U.preventDefault()}),preventScrollOnEntryFocus:!0,children:d.jsx(wO,{role:"menu","aria-orientation":"vertical","data-state":mD(x.open),"data-radix-menu-content":"",dir:S.dir,...v,...m,ref:T,style:{outline:"none",...m.style},onKeyDown:re(m.onKeyDown,U=>{const J=U.target.closest("[data-radix-menu-content]")===U.currentTarget,le=U.ctrlKey||U.altKey||U.metaKey,ye=U.key.length===1;J&&(U.key==="Tab"&&U.preventDefault(),!le&&ye&&K(U.key));const Me=I.current;if(U.target!==Me||!Ete.includes(U.key))return;U.preventDefault();const Ue=E().filter(je=>!je.disabled).map(je=>je.ref.current);VO.includes(U.key)&&Ue.reverse(),Gte(Ue)}),onBlur:re(e.onBlur,U=>{U.currentTarget.contains(U.target)||(window.clearTimeout(O.current),_.current="")}),onPointerMove:re(e.onPointerMove,xu(U=>{const X=U.target,J=R.current!==U.clientX;if(U.currentTarget.contains(X)&&J){const le=U.clientX>R.current?"right":"left";j.current=le,R.current=U.clientX}}))})})})})})})});JO.displayName=Ir;var $te="MenuGroup",X0=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{role:"group",...r,ref:n})});X0.displayName=$te;var Fte="MenuLabel",eD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{...r,ref:n})});eD.displayName=Fte;var kf="MenuItem",JI="menu.itemSelect",Lg=P.forwardRef((e,n)=>{const{disabled:t=!1,onSelect:r,...o}=e,s=P.useRef(null),i=Zu(kf,e.__scopeMenu),a=V0(kf,e.__scopeMenu),l=Ye(n,s),c=P.useRef(!1),u=()=>{const h=s.current;if(!t&&h){const p=new CustomEvent(JI,{bubbles:!0,cancelable:!0});h.addEventListener(JI,f=>r==null?void 0:r(f),{once:!0}),g0(h,p),p.defaultPrevented?c.current=!1:i.onClose()}};return d.jsx(tD,{...o,ref:l,disabled:t,onClick:re(e.onClick,u),onPointerDown:h=>{var p;(p=e.onPointerDown)==null||p.call(e,h),c.current=!0},onPointerUp:re(e.onPointerUp,h=>{var p;c.current||(p=h.currentTarget)==null||p.click()}),onKeyDown:re(e.onKeyDown,h=>{const p=a.searchRef.current!=="";t||p&&h.key===" "||Vv.includes(h.key)&&(h.currentTarget.click(),h.preventDefault())})})});Lg.displayName=kf;var tD=P.forwardRef((e,n)=>{const{__scopeMenu:t,disabled:r=!1,textValue:o,...s}=e,i=V0(kf,t),a=YO(t),l=P.useRef(null),c=Ye(n,l),[u,h]=P.useState(!1),[p,f]=P.useState("");return P.useEffect(()=>{const y=l.current;y&&f((y.textContent??"").trim())},[s.children]),d.jsx(vu.ItemSlot,{scope:t,disabled:r,textValue:o??p,children:d.jsx(Cte,{asChild:!0,...a,focusable:!r,children:d.jsx(Ce.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:c,onPointerMove:re(e.onPointerMove,xu(y=>{r?i.onItemLeave(y):(i.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:re(e.onPointerLeave,xu(y=>i.onItemLeave(y))),onFocus:re(e.onFocus,()=>h(!0)),onBlur:re(e.onBlur,()=>h(!1))})})})}),Nte="MenuCheckboxItem",nD=P.forwardRef((e,n)=>{const{checked:t=!1,onCheckedChange:r,...o}=e;return d.jsx(aD,{scope:e.__scopeMenu,checked:t,children:d.jsx(Lg,{role:"menuitemcheckbox","aria-checked":_f(t)?"mixed":t,...o,ref:n,"data-state":Q0(t),onSelect:re(o.onSelect,()=>r==null?void 0:r(_f(t)?!0:!t),{checkForDefaultPrevented:!1})})})});nD.displayName=Nte;var rD="MenuRadioGroup",[zte,Bte]=ca(rD,{value:void 0,onValueChange:()=>{}}),oD=P.forwardRef((e,n)=>{const{value:t,onValueChange:r,...o}=e,s=Vt(r);return d.jsx(zte,{scope:e.__scopeMenu,value:t,onValueChange:s,children:d.jsx(X0,{...o,ref:n})})});oD.displayName=rD;var sD="MenuRadioItem",iD=P.forwardRef((e,n)=>{const{value:t,...r}=e,o=Bte(sD,e.__scopeMenu),s=t===o.value;return d.jsx(aD,{scope:e.__scopeMenu,checked:s,children:d.jsx(Lg,{role:"menuitemradio","aria-checked":s,...r,ref:n,"data-state":Q0(s),onSelect:re(r.onSelect,()=>{var i;return(i=o.onValueChange)==null?void 0:i.call(o,t)},{checkForDefaultPrevented:!1})})})});iD.displayName=sD;var q0="MenuItemIndicator",[aD,Ute]=ca(q0,{checked:!1}),lD=P.forwardRef((e,n)=>{const{__scopeMenu:t,forceMount:r,...o}=e,s=Ute(q0,t);return d.jsx(Xr,{present:r||_f(s.checked)||s.checked===!0,children:d.jsx(Ce.span,{...o,ref:n,"data-state":Q0(s.checked)})})});lD.displayName=q0;var Hte="MenuSeparator",cD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{role:"separator","aria-orientation":"horizontal",...r,ref:n})});cD.displayName=Hte;var Kte="MenuArrow",uD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e,o=qu(t);return d.jsx(bO,{...o,...r,ref:n})});uD.displayName=Kte;var Z0="MenuSub",[Wte,dD]=ca(Z0),hD=e=>{const{__scopeMenu:n,children:t,open:r=!1,onOpenChange:o}=e,s=di(Z0,n),i=qu(n),[a,l]=P.useState(null),[c,u]=P.useState(null),h=Vt(o);return P.useEffect(()=>(s.open===!1&&h(!1),()=>h(!1)),[s.open,h]),d.jsx($0,{...i,children:d.jsx(XO,{scope:n,open:r,onOpenChange:h,content:c,onContentChange:u,children:d.jsx(Wte,{scope:n,contentId:Xo(),triggerId:Xo(),trigger:a,onTriggerChange:l,children:t})})})};hD.displayName=Z0;var Ec="MenuSubTrigger",pD=P.forwardRef((e,n)=>{const t=di(Ec,e.__scopeMenu),r=Zu(Ec,e.__scopeMenu),o=dD(Ec,e.__scopeMenu),s=V0(Ec,e.__scopeMenu),i=P.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:l}=s,c={__scopeMenu:e.__scopeMenu},u=P.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return P.useEffect(()=>u,[u]),P.useEffect(()=>{const h=a.current;return()=>{window.clearTimeout(h),l(null)}},[a,l]),d.jsx(W0,{asChild:!0,...c,children:d.jsx(tD,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":o.contentId,"data-state":mD(t.open),...e,ref:vg(n,o.onTriggerChange),onClick:h=>{var p;(p=e.onClick)==null||p.call(e,h),!(e.disabled||h.defaultPrevented)&&(h.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:re(e.onPointerMove,xu(h=>{s.onItemEnter(h),!h.defaultPrevented&&!e.disabled&&!t.open&&!i.current&&(s.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{t.onOpenChange(!0),u()},100))})),onPointerLeave:re(e.onPointerLeave,xu(h=>{var f,y;u();const p=(f=t.content)==null?void 0:f.getBoundingClientRect();if(p){const m=(y=t.content)==null?void 0:y.dataset.side,x=m==="right",S=x?-5:5,v=p[x?"left":"right"],b=p[x?"right":"left"];s.onPointerGraceIntentChange({area:[{x:h.clientX+S,y:h.clientY},{x:v,y:p.top},{x:b,y:p.top},{x:b,y:p.bottom},{x:v,y:p.bottom}],side:m}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(h),h.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:re(e.onKeyDown,h=>{var f;const p=s.searchRef.current!=="";e.disabled||p&&h.key===" "||kte[r.dir].includes(h.key)&&(t.onOpenChange(!0),(f=t.content)==null||f.focus(),h.preventDefault())})})})});pD.displayName=Ec;var fD="MenuSubContent",gD=P.forwardRef((e,n)=>{const t=ZO(Ir,e.__scopeMenu),{forceMount:r=t.forceMount,...o}=e,s=di(Ir,e.__scopeMenu),i=Zu(Ir,e.__scopeMenu),a=dD(fD,e.__scopeMenu),l=P.useRef(null),c=Ye(n,l);return d.jsx(vu.Provider,{scope:e.__scopeMenu,children:d.jsx(Xr,{present:r||s.open,children:d.jsx(vu.Slot,{scope:e.__scopeMenu,children:d.jsx(Y0,{id:a.contentId,"aria-labelledby":a.triggerId,...o,ref:c,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var h;i.isUsingKeyboardRef.current&&((h=l.current)==null||h.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:re(e.onFocusOutside,u=>{u.target!==a.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:re(e.onEscapeKeyDown,u=>{i.onClose(),u.preventDefault()}),onKeyDown:re(e.onKeyDown,u=>{var f;const h=u.currentTarget.contains(u.target),p=_te[i.dir].includes(u.key);h&&p&&(s.onOpenChange(!1),(f=a.trigger)==null||f.focus(),u.preventDefault())})})})})})});gD.displayName=fD;function mD(e){return e?"open":"closed"}function _f(e){return e==="indeterminate"}function Q0(e){return _f(e)?"indeterminate":e?"checked":"unchecked"}function Gte(e){const n=document.activeElement;for(const t of e)if(t===n||(t.focus(),document.activeElement!==n))return}function Vte(e,n){return e.map((t,r)=>e[(n+r)%e.length])}function Yte(e,n,t){const o=n.length>1&&Array.from(n).every(c=>c===n[0])?n[0]:n,s=t?e.indexOf(t):-1;let i=Vte(e,Math.max(s,0));o.length===1&&(i=i.filter(c=>c!==t));const l=i.find(c=>c.toLowerCase().startsWith(o.toLowerCase()));return l!==t?l:void 0}function Xte(e,n){const{x:t,y:r}=e;let o=!1;for(let s=0,i=n.length-1;s<n.length;i=s++){const a=n[s].x,l=n[s].y,c=n[i].x,u=n[i].y;l>r!=u>r&&t<(c-a)*(r-l)/(u-l)+a&&(o=!o)}return o}function qte(e,n){if(!n)return!1;const t={x:e.clientX,y:e.clientY};return Xte(t,n)}function xu(e){return n=>n.pointerType==="mouse"?e(n):void 0}var yD=qO,SD=W0,vD=QO,xD=JO,wD=X0,bD=eD,PD=Lg,CD=nD,ID=oD,ED=iD,kD=lD,_D=cD,TD=uD,MD=hD,AD=pD,jD=gD,J0="ContextMenu",[Zte,eae]=ko(J0,[Rg]),dn=Rg(),[Qte,OD]=Zte(J0),DD=e=>{const{__scopeContextMenu:n,children:t,onOpenChange:r,dir:o,modal:s=!0}=e,[i,a]=P.useState(!1),l=dn(n),c=Vt(r),u=P.useCallback(h=>{a(h),c(h)},[c]);return d.jsx(Qte,{scope:n,open:i,onOpenChange:u,modal:s,children:d.jsx(yD,{...l,dir:o,open:i,onOpenChange:u,modal:s,children:t})})};DD.displayName=J0;var RD="ContextMenuTrigger",LD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,disabled:r=!1,...o}=e,s=OD(RD,t),i=dn(t),a=P.useRef({x:0,y:0}),l=P.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),c=P.useRef(0),u=P.useCallback(()=>window.clearTimeout(c.current),[]),h=p=>{a.current={x:p.clientX,y:p.clientY},s.onOpenChange(!0)};return P.useEffect(()=>u,[u]),P.useEffect(()=>void(r&&u()),[r,u]),d.jsxs(d.Fragment,{children:[d.jsx(SD,{...i,virtualRef:l}),d.jsx(Ce.span,{"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,...o,ref:n,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:r?e.onContextMenu:re(e.onContextMenu,p=>{u(),h(p),p.preventDefault()}),onPointerDown:r?e.onPointerDown:re(e.onPointerDown,ch(p=>{u(),c.current=window.setTimeout(()=>h(p),700)})),onPointerMove:r?e.onPointerMove:re(e.onPointerMove,ch(u)),onPointerCancel:r?e.onPointerCancel:re(e.onPointerCancel,ch(u)),onPointerUp:r?e.onPointerUp:re(e.onPointerUp,ch(u))})]})});LD.displayName=RD;var Jte="ContextMenuPortal",eb=e=>{const{__scopeContextMenu:n,...t}=e,r=dn(n);return d.jsx(vD,{...r,...t})};eb.displayName=Jte;var $D="ContextMenuContent",FD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=OD($D,t),s=dn(t),i=P.useRef(!1);return d.jsx(xD,{...s,...r,ref:n,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:a=>{var l;(l=e.onCloseAutoFocus)==null||l.call(e,a),!a.defaultPrevented&&i.current&&a.preventDefault(),i.current=!1},onInteractOutside:a=>{var l;(l=e.onInteractOutside)==null||l.call(e,a),!a.defaultPrevented&&!o.modal&&(i.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});FD.displayName=$D;var ene="ContextMenuGroup",ND=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(wD,{...o,...r,ref:n})});ND.displayName=ene;var tne="ContextMenuLabel",nne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(bD,{...o,...r,ref:n})});nne.displayName=tne;var rne="ContextMenuItem",zD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(PD,{...o,...r,ref:n})});zD.displayName=rne;var one="ContextMenuCheckboxItem",BD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(CD,{...o,...r,ref:n})});BD.displayName=one;var sne="ContextMenuRadioGroup",ine=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(ID,{...o,...r,ref:n})});ine.displayName=sne;var ane="ContextMenuRadioItem",lne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(ED,{...o,...r,ref:n})});lne.displayName=ane;var cne="ContextMenuItemIndicator",une=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(kD,{...o,...r,ref:n})});une.displayName=cne;var dne="ContextMenuSeparator",hne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(_D,{...o,...r,ref:n})});hne.displayName=dne;var pne="ContextMenuArrow",fne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(TD,{...o,...r,ref:n})});fne.displayName=pne;var gne="ContextMenuSub",UD=e=>{const{__scopeContextMenu:n,children:t,onOpenChange:r,open:o,defaultOpen:s}=e,i=dn(n),[a,l]=li({prop:o,defaultProp:s,onChange:r});return d.jsx(MD,{...i,open:a,onOpenChange:l,children:t})};UD.displayName=gne;var mne="ContextMenuSubTrigger",HD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(AD,{...o,...r,ref:n})});HD.displayName=mne;var yne="ContextMenuSubContent",KD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(jD,{...o,...r,ref:n,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});KD.displayName=yne;function ch(e){return n=>n.pointerType!=="mouse"?e(n):void 0}var Sne=DD,vne=LD,xne=eb,wne=FD,bne=BD;const WD=typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("mac")>-1,Pne=WD?"⌘":"Ctrl",Cne=WD?"⌥":"Alt";function GD(e){return e.split(",")[0].split("").map(n=>{const t=n.replace(/\$/g,Pne).replace(/\?/g,Cne).replace(/!/g,"⇧");return t[0].toUpperCase()+t.slice(1)})}function Yv(e){return"— "+GD(e).join(" ")}function Ine(e){return d.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",...e,children:d.jsxs("g",{strokeWidth:2,fill:"none",fillRule:"evenodd",children:[d.jsx("circle",{strokeOpacity:.25,cx:8,cy:8,r:7,stroke:"currentColor"}),d.jsx("path",{strokeLinecap:"round",d:"M15 8c0-4.5-4.5-7-7-7",stroke:"currentColor",children:d.jsx("animateTransform",{attributeName:"transform",type:"rotate",from:"0 8 8",to:"360 8 8",dur:"1s",repeatCount:"indefinite"})})]})})}var tb="DropdownMenu",[Ene,tae]=ko(tb,[Rg]),hn=Rg(),[kne,VD]=Ene(tb),YD=e=>{const{__scopeDropdownMenu:n,children:t,dir:r,open:o,defaultOpen:s,onOpenChange:i,modal:a=!0}=e,l=hn(n),c=P.useRef(null),[u=!1,h]=li({prop:o,defaultProp:s,onChange:i});return d.jsx(kne,{scope:n,triggerId:Xo(),triggerRef:c,contentId:Xo(),open:u,onOpenChange:h,onOpenToggle:P.useCallback(()=>h(p=>!p),[h]),modal:a,children:d.jsx(yD,{...l,open:u,onOpenChange:h,dir:r,modal:a,children:t})})};YD.displayName=tb;var XD="DropdownMenuTrigger",qD=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,disabled:r=!1,...o}=e,s=VD(XD,t),i=hn(t);return d.jsx(SD,{asChild:!0,...i,children:d.jsx(Ce.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:vg(n,s.triggerRef),onPointerDown:re(e.onPointerDown,a=>{!r&&a.button===0&&a.ctrlKey===!1&&(s.onOpenToggle(),s.open||a.preventDefault())}),onKeyDown:re(e.onKeyDown,a=>{r||(["Enter"," "].includes(a.key)&&s.onOpenToggle(),a.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});qD.displayName=XD;var _ne="DropdownMenuPortal",ZD=e=>{const{__scopeDropdownMenu:n,...t}=e,r=hn(n);return d.jsx(vD,{...r,...t})};ZD.displayName=_ne;var QD="DropdownMenuContent",JD=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=VD(QD,t),s=hn(t),i=P.useRef(!1);return d.jsx(xD,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:n,onCloseAutoFocus:re(e.onCloseAutoFocus,a=>{var l;i.current||(l=o.triggerRef.current)==null||l.focus(),i.current=!1,a.preventDefault()}),onInteractOutside:re(e.onInteractOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,u=l.button===2||c;(!o.modal||u)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});JD.displayName=QD;var Tne="DropdownMenuGroup",eR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(wD,{...o,...r,ref:n})});eR.displayName=Tne;var Mne="DropdownMenuLabel",Ane=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(bD,{...o,...r,ref:n})});Ane.displayName=Mne;var jne="DropdownMenuItem",tR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(PD,{...o,...r,ref:n})});tR.displayName=jne;var One="DropdownMenuCheckboxItem",nR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(CD,{...o,...r,ref:n})});nR.displayName=One;var Dne="DropdownMenuRadioGroup",Rne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(ID,{...o,...r,ref:n})});Rne.displayName=Dne;var Lne="DropdownMenuRadioItem",$ne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(ED,{...o,...r,ref:n})});$ne.displayName=Lne;var Fne="DropdownMenuItemIndicator",Nne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(kD,{...o,...r,ref:n})});Nne.displayName=Fne;var zne="DropdownMenuSeparator",Bne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(_D,{...o,...r,ref:n})});Bne.displayName=zne;var Une="DropdownMenuArrow",Hne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(TD,{...o,...r,ref:n})});Hne.displayName=Une;var Kne=e=>{const{__scopeDropdownMenu:n,children:t,open:r,onOpenChange:o,defaultOpen:s}=e,i=hn(n),[a=!1,l]=li({prop:r,defaultProp:s,onChange:o});return d.jsx(MD,{...i,open:a,onOpenChange:l,children:t})},Wne="DropdownMenuSubTrigger",rR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(AD,{...o,...r,ref:n})});rR.displayName=Wne;var Gne="DropdownMenuSubContent",oR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(jD,{...o,...r,ref:n,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});oR.displayName=Gne;var nb=YD,rb=qD,$g=ZD,ob=JD,Vne=eR,Yne=tR,Xne=nR,qne=Kne,Zne=rR,Qne=oR;function Qi({id:e,children:n,modal:t=!1,debugOpen:r=!1}){const[o,s]=ui(e);return d.jsx(nb,{open:r||o,dir:"ltr",modal:t,onOpenChange:s,children:n})}function Ji({children:e,...n}){return d.jsx(rb,{dir:"ltr",asChild:!0,onTouchEnd:t=>Ee(t),...n,children:e})}function ea({side:e="bottom",align:n="start",sideOffset:t=8,alignOffset:r=8,children:o}){const s=un();return d.jsx($g,{container:s,children:d.jsx(ob,{className:"tlui-menu",side:e,sideOffset:t,align:n,alignOffset:r,collisionPadding:4,children:o})})}function Jne({id:e,children:n}){const[t,r]=ui(e);return d.jsx(qne,{open:t,onOpenChange:r,children:n})}function ere({id:e,label:n,title:t,disabled:r}){return d.jsx(Zne,{dir:"ltr",asChild:!0,disabled:r,children:d.jsxs(he,{"data-testid":e,type:"menu",className:"tlui-menu__submenu__trigger",disabled:r,title:t,children:[d.jsx(bt,{children:n}),d.jsx(Pe,{icon:"chevron-right",small:!0})]})})}function tre({id:e,alignOffset:n=-1,sideOffset:t=-4,size:r="small",children:o}){const s=un();return d.jsx($g,{container:s,children:d.jsx(Qne,{"data-testid":e,className:"tlui-menu tlui-menu__submenu__content",alignOffset:n,sideOffset:t,collisionPadding:4,"data-size":r,children:o})})}function nre({children:e}){return d.jsx(Vne,{dir:"ltr",className:"tlui-menu__group",children:e})}function wu({noClose:e,children:n}){return d.jsx(Yne,{dir:"ltr",asChild:!0,onClick:e?Ee:void 0,children:n})}function Uc({children:e,visibleOnMobileLayout:n=!1}){const t=Hn();return!n&&t<yt.MOBILE?null:d.jsx("kbd",{className:"tlui-kbd",children:GD(e).map((r,o)=>d.jsx("span",{children:r},o))})}function H({disabled:e=!1,spinner:n=!1,readonlyOk:t=!1,id:r,kbd:o,label:s,icon:i,onSelect:a,noClose:l,isSelected:c}){const{type:u,sourceId:h}=Og(),p=Te(),[f,y]=P.useState(!1);if(cs()&&!t)return null;const x=mu(s,u),S=o?Yv(o):void 0,v=x?p(x):void 0,b=v&&S?`${v} ${S}`:v;switch(u){case"menu":return d.jsx(wu,{children:d.jsxs(he,{type:"menu","data-testid":`${h}.${r}`,disabled:e,title:b,onClick:E=>{l&&Ee(E),f?y(!1):a(h)},children:[d.jsx(bt,{children:v}),o&&d.jsx(Uc,{children:o})]})});case"context-menu":return e?null:d.jsxs(zD,{dir:"ltr",title:b,draggable:!1,className:"tlui-button tlui-button__menu","data-testid":`${h}.${r}`,onSelect:E=>{l&&Ee(E),f?y(!1):a(h)},children:[d.jsx("span",{className:"tlui-button__label",draggable:!1,children:v}),o&&d.jsx(Uc,{children:o}),n&&d.jsx(Ine,{})]});case"panel":return d.jsxs(he,{"data-testid":`${h}.${r}`,type:"menu",title:b,disabled:e,onClick:()=>a(h),children:[d.jsx(bt,{children:v}),i&&d.jsx(Pe,{icon:i})]});case"small-icons":case"icons":return d.jsx(he,{"data-testid":`${h}.${r}`,type:"icon",title:b,disabled:e,onClick:()=>a(h),children:d.jsx(Pe,{icon:i,small:u==="small-icons"})});case"keyboard-shortcuts":return o?d.jsxs("div",{className:"tlui-shortcuts-dialog__key-pair","data-testid":`${h}.${r}`,children:[d.jsx("div",{className:"tlui-shortcuts-dialog__key-pair__key",children:v}),d.jsx("div",{className:"tlui-shortcuts-dialog__key-pair__value",children:d.jsx(Uc,{visibleOnMobileLayout:!0,children:o})})]}):(console.warn(`Menu item '${s}' isn't shown in the keyboard shortcuts dialog because it doesn't have a keyboard shortcut.`),null);case"helper-buttons":return d.jsxs(he,{type:"low",onClick:()=>a(h),children:[d.jsx(Pe,{icon:i}),d.jsx(bt,{children:v})]});case"toolbar":return d.jsx(he,{type:"tool","data-testid":`tools.${r}`,"aria-label":x,"data-value":r,onClick:()=>a("toolbar"),title:b,onTouchStart:E=>{Ee(E),a("toolbar")},role:"radio","aria-checked":c?"true":"false",children:d.jsx(Pe,{icon:i})});case"toolbar-overflow":return d.jsx(wu,{"aria-label":s,children:d.jsx(he,{type:"icon",className:"tlui-button-grid__button",onClick:()=>{a("toolbar")},"data-testid":`tools.more.${r}`,title:b,role:"radio","aria-checked":c?"true":"false","data-value":r,children:d.jsx(Pe,{icon:i})})});default:throw an(u)}}function rre(){return d.jsxs(d.Fragment,{children:[d.jsx(ore,{}),d.jsx(sre,{}),d.jsx(ire,{}),d.jsx(are,{}),d.jsx(lre,{}),d.jsx(dre,{}),d.jsx(hre,{}),d.jsx(pre,{})]})}function ore(){const e=ie(),n=Pn(2),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["align-left"],disabled:!r}),d.jsx(H,{...e["align-center-horizontal"],disabled:!r}),d.jsx(H,{...e["align-right"],disabled:!r}),d.jsx(H,{...e["stretch-horizontal"],disabled:!r}),d.jsx(H,{...e["align-top"],disabled:!r}),d.jsx(H,{...e["align-center-vertical"],disabled:!r}),d.jsx(H,{...e["align-bottom"],disabled:!r}),d.jsx(H,{...e["stretch-vertical"],disabled:!r})]})}function sre(){const e=ie(),n=Pn(3),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["distribute-horizontal"],disabled:!r}),d.jsx(H,{...e["distribute-vertical"],disabled:!r})]})}function ire(){const e=ie(),n=DO(),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["stack-horizontal"],disabled:!r}),d.jsx(H,{...e["stack-vertical"],disabled:!r})]})}function are(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["send-to-back"],disabled:!r}),d.jsx(H,{...e["send-backward"],disabled:!r}),d.jsx(H,{...e["bring-forward"],disabled:!r}),d.jsx(H,{...e["bring-to-front"],disabled:!r})]})}function lre(){return Hn()<yt.TABLET_SM?d.jsx(cre,{}):d.jsx(ure,{})}function cre(){const e=ie(),n=B(),t=G("zoom is 1",()=>n.getZoomLevel()===1,[n]);return d.jsx(H,{...e["zoom-to-100"],disabled:t})}function ure(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsx(H,{...e["rotate-ccw"],disabled:!r})}function dre(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsx(H,{...e["rotate-cw"],disabled:!r})}function hre(){const e=ie(),n=FO(),t=ds(),r=n&&t;return d.jsx(H,{...e["edit-link"],disabled:!r})}function pre(){const e=RO(),n=LO();return e?d.jsx(eE,{}):n?d.jsx(fre,{}):d.jsx(eE,{})}function eE(){const e=ie(),n=Pn(2),t=ds(),r=n&&t;return d.jsx(H,{...e.group,disabled:!r})}function fre(){const e=ie();return d.jsx(H,{...e.ungroup})}const gre=P.memo(function({children:n}){const t=Te(),r=Hn(),o=cs(),s=B(),i=G("should display quick actions when in readonly",()=>s.isInAny("hand","zoom"),[s]),a=n??d.jsx(rre,{});if(!(o&&!i))return d.jsxs(B0,{id:"actions-menu",children:[d.jsx(U0,{children:d.jsx(he,{type:"icon","data-testid":"actions-menu.button",title:t("actions-menu.title"),children:d.jsx(Pe,{icon:"dots-vertical",small:!0})})}),d.jsx(H0,{side:r>=yt.TABLET?"bottom":"top",sideOffset:6,children:d.jsx("div",{className:"tlui-actions-menu tlui-buttons__grid","data-testid":"actions-menu.content",children:d.jsx(_r,{type:"icons",sourceId:"actions-menu",children:a})})})]})});function Kn({id:e,kbd:n,label:t,readonlyOk:r,onSelect:o,toggle:s=!1,disabled:i=!1,checked:a=!1}){const{type:l,sourceId:c}=Og(),u=cs(),h=Te();if(u&&!r)return null;const p=mu(t,l),f=p?h(p):void 0;switch(l){case"menu":return d.jsxs(Xne,{dir:"ltr",className:"tlui-button tlui-button__menu tlui-button__checkbox",title:f,onSelect:y=>{o==null||o(c),Ee(y)},disabled:i,checked:a,children:[d.jsx(qs,{small:!0,icon:s?a?"toggle-on":"toggle-off":a?"check":"none"}),f&&d.jsx("span",{className:"tlui-button__label",draggable:!1,children:f}),n&&d.jsx(Uc,{children:n})]});case"context-menu":return d.jsxs(bne,{className:"tlui-button tlui-button__menu tlui-button__checkbox",dir:"ltr",title:f,onSelect:y=>{o(c),Ee(y)},disabled:i,checked:a,children:[d.jsx(qs,{small:!0,icon:s?a?"toggle-on":"toggle-off":a?"check":"none"}),f&&d.jsx("span",{className:"tlui-button__label",draggable:!1,children:f}),n&&d.jsx(Uc,{children:n})]},e);default:return null}}function ge({id:e,label:n,children:t}){const{type:r,sourceId:o}=Og(),s=Te(),i=mu(n,r),a=i?s(i):void 0;switch(r){case"panel":return d.jsx("div",{className:"tlui-menu__group","data-testid":`${o}-group.${e}`,children:t});case"menu":return d.jsx(nre,{"data-testid":`${o}-group.${e}`,children:t});case"context-menu":return d.jsx(ND,{dir:"ltr",className:"tlui-menu__group","data-testid":`${o}-group.${e}`,children:t});case"keyboard-shortcuts":return d.jsxs("div",{className:"tlui-shortcuts-dialog__group","data-testid":`${o}-group.${e}`,children:[d.jsx("h2",{className:"tlui-shortcuts-dialog__group__title",children:a}),d.jsx("div",{className:"tlui-shortcuts-dialog__group__content",children:t})]});default:return t}}function Wn({id:e,disabled:n=!1,label:t,size:r="small",children:o}){const{type:s,sourceId:i}=Og(),a=un(),l=Te(),c=t?typeof t=="string"?t:t[s]??t.default:void 0,u=c?l(c):void 0;switch(s){case"menu":return d.jsxs(Jne,{id:`${i}-sub.${e}`,children:[d.jsx(ere,{id:`${i}-sub.${u?u.toLowerCase()+"-button":""}`,disabled:n,label:u,title:u}),d.jsx(tre,{id:`${i}-sub.${u?u.toLowerCase()+"-content":""}`,size:r,children:o})]});case"context-menu":return n?null:d.jsxs(mre,{id:`${i}-sub.${e}`,children:[d.jsx(HD,{dir:"ltr",disabled:n,asChild:!0,children:d.jsxs(he,{"data-testid":`${i}-sub-trigger.${e}`,type:"menu",className:"tlui-menu__submenu__trigger",children:[d.jsx(bt,{children:u}),d.jsx(Pe,{icon:"chevron-right",small:!0})]})}),d.jsx(eb,{container:a,children:d.jsx(KD,{"data-testid":`${i}-sub-content.${e}`,className:"tlui-menu tlui-menu__submenu__content",alignOffset:-1,sideOffset:-4,collisionPadding:4,"data-size":r,children:o})})]});default:return o}}function mre({id:e,children:n}){const[t,r]=ui(e);return d.jsx(UD,{open:t,onOpenChange:r,children:n})}function sR(){const e=ie();return ute()?d.jsx(H,{...e["toggle-auto-size"]}):null}function iR(){const e=ie();return FO()?d.jsx(H,{...e["edit-link"]}):null}function yre(){const e=ie();return Pn(1)?d.jsx(H,{...e.duplicate}):null}function aR(){const e=ie(),n=B();return G("should display flatten option",()=>{if(n.getSelectedShapeIds().length===0)return!1;const o=n.getOnlySelectedShape();return!(o&&n.isShapeOfType(o,"image"))},[n])?d.jsx(H,{...e["flatten-to-image"]}):null}function lR(){const e=ie();return RO()?d.jsx(H,{...e.group}):null}function cR(){const e=ie();return LO()?d.jsx(H,{...e.ungroup}):null}function uR(){const e=B(),n=ie();return G("allow unframe",()=>{const r=e.getSelectedShapes();return r.length===0?!1:r.every(o=>e.isShapeOfType(o,"frame"))},[e])?d.jsx(H,{...n["remove-frame"]}):null}function dR(){const e=B(),n=ie();return G("allow fit frame to content",()=>{const r=e.getOnlySelectedShape();return r?e.isShapeOfType(r,"frame")&&e.getSortedChildIdsForParent(r).length>0:!1},[e])?d.jsx(H,{...n["fit-frame-to-content"]}):null}function hR(){const e=B(),n=ie();return G("selected shapes",()=>e.getSelectedShapes().length>0,[e])?d.jsx(H,{...n["toggle-lock"]}):null}function sb(){const e=ie(),n=B(),t=G("isTransparentBg",()=>!n.getInstanceState().exportBackground,[n]);return d.jsx(Kn,{...e["toggle-transparent"],checked:t,toggle:!0})}function Sre(){const e=B(),n=ie(),t=G("any shapes",()=>e.getCurrentPageShapeIds().size>0,[e]);return d.jsx(H,{...n["unlock-all"],disabled:!t})}function pR(){const e=B(),n=G("zoomed to 100",()=>e.getZoomLevel()===1,[e]),t=ie();return d.jsx(H,{...t["zoom-to-100"],noClose:!0,disabled:n})}function fR(){const e=B(),n=G("has shapes",()=>e.getCurrentPageShapeIds().size>0,[e]),t=ie();return d.jsx(H,{...t["zoom-to-fit"],disabled:!n,"data-testid":"minimap.zoom-menu.zoom-to-fit",noClose:!0})}function gR(){const e=B(),n=G("has shapes",()=>e.getSelectedShapeIds().length>0,[e]),t=ie();return d.jsx(H,{...t["zoom-to-selection"],disabled:!n,"data-testid":"minimap.zoom-menu.zoom-to-selection",noClose:!0})}function mR(){return d.jsxs(ge,{id:"clipboard",children:[d.jsx(xre,{}),d.jsx(wre,{}),d.jsx(bre,{}),d.jsx(yre,{}),d.jsx(Pre,{})]})}function vre(){var r;const e=B(),n=ie(),t=G("atLeastOneShapeOnPage",()=>e.getCurrentPageShapeIds().size>0,[e]);return d.jsxs(Wn,{id:"copy-as",label:"context-menu.copy-as",size:"small",disabled:!t,children:[d.jsxs(ge,{id:"copy-as-group",children:[d.jsx(H,{...n["copy-as-svg"]}),!!((r=window.navigator.clipboard)!=null&&r.write)&&d.jsx(H,{...n["copy-as-png"]}),d.jsx(H,{...n["copy-as-json"]})]}),d.jsx(ge,{id:"copy-as-bg",children:d.jsx(sb,{})})]})}function xre(){const e=ie(),n=Pn(1);return d.jsx(H,{...e.cut,disabled:!n})}function wre(){const e=ie(),n=$O(1);return d.jsx(H,{...e.copy,disabled:!n})}function bre(){const e=ie(),n=cte;return d.jsx(H,{...e.paste,disabled:!n})}function yR(){const e=B(),n=ie();return G("atLeastOneShapeOnPage",()=>e.getCurrentPageShapeIds().size>0,[e])?d.jsxs(ge,{id:"conversions",children:[d.jsx(vre,{}),d.jsxs(Wn,{id:"export-as",label:"context-menu.export-as",size:"small",children:[d.jsxs(ge,{id:"export-as-group",children:[d.jsx(H,{...n["export-as-svg"]}),d.jsx(H,{...n["export-as-png"]}),d.jsx(H,{...n["export-as-json"]})]}),d.jsx(ge,{id:"export-as-bg",children:d.jsx(sb,{})})]})]}):null}function SR(){const e=ie(),n=B(),t=G("atLeastOneShapeOnPage",()=>n.getCurrentPageShapeIds().size>0,[n]);return d.jsx(H,{...e["select-all"],disabled:!t})}function Pre(){const e=ie(),n=Pn(1);return d.jsx(H,{...e.delete,disabled:!n})}function Cre(){return $O(1)?d.jsxs(Wn,{id:"edit",label:"context-menu.edit",size:"small",children:[d.jsx(lR,{}),d.jsx(cR,{}),d.jsx(aR,{}),d.jsx(iR,{}),d.jsx(dR,{}),d.jsx(uR,{}),d.jsx(xR,{}),d.jsx(vR,{}),d.jsx(sR,{}),d.jsx(hR,{})]}):null}function Ire(){const e=Pn(2),n=dte(),t=ie();return e||n?d.jsxs(Wn,{id:"arrange",label:"context-menu.arrange",size:"small",children:[e&&d.jsxs(ge,{id:"align",children:[d.jsx(H,{...t["align-left"]}),d.jsx(H,{...t["align-center-horizontal"]}),d.jsx(H,{...t["align-right"]}),d.jsx(H,{...t["align-top"]}),d.jsx(H,{...t["align-center-vertical"]}),d.jsx(H,{...t["align-bottom"]})]}),d.jsx(Ere,{}),e&&d.jsxs(ge,{id:"stretch",children:[d.jsx(H,{...t["stretch-horizontal"]}),d.jsx(H,{...t["stretch-vertical"]})]}),(e||n)&&d.jsxs(ge,{id:"flip",children:[d.jsx(H,{...t["flip-horizontal"]}),d.jsx(H,{...t["flip-vertical"]})]}),d.jsx(kre,{})]}):null}function Ere(){const e=ie();return Pn(3)?d.jsxs(ge,{id:"distribute",children:[d.jsx(H,{...e["distribute-horizontal"]}),d.jsx(H,{...e["distribute-vertical"]})]}):null}function kre(){const e=ie(),n=Pn(2),t=DO();return n?d.jsxs(ge,{id:"order",children:[d.jsx(H,{...e.pack}),t&&d.jsx(H,{...e["stack-horizontal"]}),t&&d.jsx(H,{...e["stack-vertical"]})]}):null}function _re(){const e=ie();return Pn(1)?d.jsx(Wn,{id:"reorder",label:"context-menu.reorder",size:"small",children:d.jsxs(ge,{id:"reorder",children:[d.jsx(H,{...e["bring-to-front"]}),d.jsx(H,{...e["bring-forward"]}),d.jsx(H,{...e["send-backward"]}),d.jsx(H,{...e["send-to-back"]})]})}):null}function Tre(){const e=B(),n=G("pages",()=>e.getPages(),[e]),t=G("current page id",()=>e.getCurrentPageId(),[e]),{addToast:r}=Qr(),o=ie(),s=Zr();return Pn(1)?d.jsxs(Wn,{id:"move-to-page",label:"context-menu.move-to-page",size:"small",children:[d.jsx(ge,{id:"pages",children:n.map(a=>d.jsx(H,{id:a.id,disabled:t===a.id,label:a.name,onSelect:()=>{e.mark("move_shapes_to_page"),e.moveShapesToPage(e.getSelectedShapeIds(),a.id);const l=e.getPage(a.id);l&&r({title:"Changed Page",description:`Moved to ${l.name}.`,actions:[{label:"Go Back",type:"primary",onClick:()=>{e.mark("change-page"),e.setCurrentPage(t)}}]}),s("move-to-page",{source:"context-menu"})}},a.id))}),d.jsx(ge,{id:"new-page",children:d.jsx(H,{...o["new-page"]})})]}):null}function vR(){const e=B(),n=ie();return G("oneEmbedSelected",()=>{const r=e.getOnlySelectedShape();return r?!!(e.isShapeOfType(r,"embed")&&r.props.url&&!e.isShapeOrAncestorLocked(r)):!1},[e])?d.jsx(H,{...n["convert-to-bookmark"]}):null}function xR(){const e=B(),n=ie();return G("oneEmbeddableBookmarkSelected",()=>{const r=e.getOnlySelectedShape();return r?!!(e.isShapeOfType(r,"bookmark")&&r.props.url&&As(r.props.url)&&!e.isShapeOrAncestorLocked(r)):!1},[e])?d.jsx(H,{...n["convert-to-embed"]}):null}function Mre(){const e=ie(),n=B(),t=G("isSnapMode",()=>n.user.getIsSnapMode(),[n]);return d.jsx(Kn,{...e["toggle-snap-mode"],checked:t})}function Are(){const e=ie(),n=B(),t=G("isToolLock",()=>n.getInstanceState().isToolLocked,[n]);return d.jsx(Kn,{...e["toggle-tool-lock"],checked:t})}function jre(){const e=ie(),n=B(),t=G("isGridMode",()=>n.getInstanceState().isGridMode,[n]);return d.jsx(Kn,{...e["toggle-grid"],checked:t})}function Ore(){const e=ie(),n=B(),t=G("isWrapMode",()=>n.user.getIsWrapMode(),[n]);return d.jsx(Kn,{...e["toggle-wrap-mode"],checked:t})}function Dre(){const e=ie(),n=B(),t=G("isFocusMode",()=>n.getInstanceState().isFocusMode,[n]);return d.jsx(Kn,{...e["toggle-focus-mode"],checked:t})}function Rre(){const e=ie(),n=B(),t=G("edgeScrollSpeed",()=>n.user.getEdgeScrollSpeed(),[n]);return d.jsx(Kn,{...e["toggle-edge-scrolling"],checked:t===1})}function Lre(){const e=ie(),n=B(),t=G("animationSpeed",()=>n.user.getAnimationSpeed(),[n]);return d.jsx(Kn,{...e["toggle-reduce-motion"],checked:t===0})}function $re(){const e=ie(),n=B(),t=G("isDebugMode",()=>n.getInstanceState().isDebugMode,[n]);return d.jsx(Kn,{...e["toggle-debug-mode"],checked:t})}function Fre(){const e=ie(),n=B(),t=G("dynamic resize",()=>n.user.getIsDynamicResizeMode(),[n]);return d.jsx(Kn,{...e["toggle-dynamic-size-mode"],checked:t})}function Nre(){const e=ie(),n=B(),t=G("paste at cursor",()=>n.user.getIsPasteAtCursorMode(),[n]);return d.jsx(Kn,{...e["toggle-paste-at-cursor"],checked:t})}function zre(){const e=B();return G("isSelectToolActive",()=>e.getCurrentToolId()==="select",[e])?d.jsxs(d.Fragment,{children:[d.jsxs(ge,{id:"modify",children:[d.jsx(Cre,{}),d.jsx(Ire,{}),d.jsx(_re,{}),d.jsx(Tre,{})]}),d.jsx(mR,{}),d.jsx(yR,{}),d.jsx(ge,{id:"select-all",children:d.jsx(SR,{})})]}):null}const Bre=P.memo(function({children:n}){const t=B(),{Canvas:r}=it(),o=P.useCallback(c=>{if(c){if(t.getInstanceState().isCoarsePointer){const u=t.getSelectedShapes(),{inputs:{currentPagePoint:h}}=t,p=t.getShapesAtPoint(h);if(!t.getSelectedShapes().length||!p.some(f=>u.includes(f))){const f=p.filter(y=>t.isShapeOrAncestorLocked(y));f.length&&t.select(...f.map(y=>y.id))}}}else{const u=t.getOnlySelectedShape();u&&t.isShapeOrAncestorLocked(u)&&t.setSelectedShapes([])}},[t]),s=un(),[i,a]=ui("context menu",o),l=n??d.jsx(zre,{});return d.jsxs(Sne,{dir:"ltr",onOpenChange:a,modal:!1,children:[d.jsx(vne,{onContextMenu:void 0,dir:"ltr",children:r?d.jsx(r,{}):null}),i&&d.jsx(xne,{container:s,children:d.jsx(wne,{className:"tlui-menu scrollable","data-testid":"context-menu",alignOffset:-4,collisionPadding:4,onContextMenu:Ee,children:d.jsx(_r,{type:"context-menu",sourceId:"context-menu",children:l})})})]})});function Xv({checked:e}){return d.jsx(qs,{icon:e?"check":"none",className:"tlui-button__icon",small:!0})}function Ure(){const e=B(),{addToast:n}=Qr(),{addDialog:t}=la(),[r,o]=we.useState(!1);return d.jsxs(d.Fragment,{children:[d.jsxs(ge,{id:"items",children:[d.jsx(H,{id:"add-toast",onSelect:()=>{n({id:ot(),title:"Something good happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"success"}),n({id:ot(),title:"Something happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"info",actions:[{label:"Primary",type:"primary",onClick:()=>{}},{label:"Normal",type:"normal",onClick:()=>{}},{label:"Danger",type:"danger",onClick:()=>{}}]}),n({id:ot(),title:"Something maybe bad happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"warning",actions:[{label:"Primary",type:"primary",onClick:()=>{}},{label:"Normal",type:"normal",onClick:()=>{}},{label:"Danger",type:"danger",onClick:()=>{}}]}),n({id:ot(),title:"Something bad happened",severity:"error",keepOpen:!0})},label:"Show toast"}),d.jsx(H,{id:"show-dialog",label:"Show dialog",onSelect:()=>{t({component:({onClose:s})=>d.jsx(Wre,{displayDontShowAgain:!0,onCancel:()=>s(),onContinue:()=>s()}),onClose:()=>{}})}}),d.jsx(H,{id:"create-shapes",label:"Create 100 shapes",onSelect:()=>Gre(e,100)}),d.jsx(H,{id:"count-nodes",label:"Count shapes / nodes",onSelect:()=>{var a;const s=e.getSelectedShapes(),i=s.length===0?e.getRenderingShapes():s;window.alert(`Shapes ${i.length}, DOM nodes:${(a=document.querySelector(".tl-shapes").querySelectorAll("*"))==null?void 0:a.length}`)}}),(()=>{if(r)throw Error("oh no!");return null})(),d.jsx(H,{id:"throw-error",onSelect:()=>o(!0),label:"Throw error"}),d.jsx(H,{id:"hard-reset",onSelect:aT,label:"Hard reset"})]}),d.jsxs(ge,{id:"flags",children:[d.jsx(Hre,{}),d.jsx(Kre,{})]})]})}function Hre(){const e=Object.values(xt);return e.length?d.jsx(Wn,{id:"debug flags",label:"Debug Flags",children:d.jsx(ge,{id:"debug flags",children:e.map(n=>d.jsx(wR,{flag:n},n.name))})}):null}function Kre(){const e=Object.values(eH);return e.length?d.jsx(Wn,{id:"feature flags",label:"Feature Flags",children:d.jsx(ge,{id:"feature flags",children:e.map(n=>d.jsx(wR,{flag:n},n.name))})}):null}function Wre({title:e="title",body:n="hello hello hello",cancel:t="Cancel",confirm:r="Continue",displayDontShowAgain:o=!1,onCancel:s,onContinue:i}){const[a,l]=we.useState(!1);return d.jsxs(d.Fragment,{children:[d.jsxs(Eg,{children:[d.jsx(kg,{children:e}),d.jsx(_g,{})]}),d.jsx(gu,{style:{maxWidth:350},children:n}),d.jsxs(E0,{className:"tlui-dialog__footer__actions",children:[o&&d.jsxs(he,{type:"normal",onClick:()=>l(!a),style:{marginRight:"auto"},children:[d.jsx(Xv,{checked:a}),d.jsx(bt,{children:"Don’t show again"})]}),d.jsx(he,{type:"normal",onClick:s,children:d.jsx(bt,{children:t})}),d.jsx(he,{type:"primary",onClick:async()=>i(),children:d.jsx(bt,{children:r})})]})]})}const wR=lr(function({flag:n,onChange:t}){const r=n.get();return d.jsx(Kn,{id:n.name,title:n.name,label:n.name.replace(/([a-z0-9])([A-Z])/g,o=>`${o[0]} ${o[1].toLowerCase()}`).replace(/^[a-z]/,o=>o.toUpperCase()),checked:r,onSelect:()=>{n.set(!r),t==null||t(!r)}})});let tE=0;function Gre(e,n){const t=Array(n),r=Math.floor(Math.sqrt(n));for(let o=0;o<n;o++)tE++,t[o]={id:$e("box"+tE),type:"geo",x:o%r*132,y:Math.floor(o/r)*132};e.batch(()=>{e.createShapes(t).setSelectedShapes(t.map(o=>o.id))})}function Vre({children:e}){const n=e??d.jsx(Ure,{});return d.jsxs(Qi,{id:"debug",children:[d.jsx(Ji,{children:d.jsx(he,{type:"icon",title:"Debug menu",children:d.jsx(Pe,{icon:"dots-horizontal"})})}),d.jsx(ea,{side:"top",align:"end",alignOffset:0,children:d.jsx(_r,{type:"menu",sourceId:"debug-panel",children:n})})]})}const Yre=P.memo(function(){const{DebugMenu:n}=pi();return d.jsxs("div",{className:"tlui-debug-panel",children:[d.jsx(qre,{}),d.jsx(Zre,{}),n&&d.jsx(n,{})]})});function Xre(e=!0){const[n,t]=P.useState(0),r=B();P.useEffect(()=>{if(!e)return;const o=()=>t(s=>s+1);return r.on("tick",o),()=>{r.off("tick",o)}},[r,e])}const qre=lr(function(){Xre();const n=B(),t=n.getPath(),r=n.getHoveredShape(),o=n.getOnlySelectedShape(),s=t==="select.idle"||!t.includes("select.")?r:o,i=s&&t.includes("select.")?` / ${s.type||""}${"geo"in s.props?" / "+s.props.geo:""} / [${w.ToInt(n.getPointInShapeSpace(s,n.inputs.currentPagePoint))}]`:"",a=t.startsWith("select.")&&!t.includes(".idle")?` / [${w.ToInt(n.inputs.originPagePoint)}] → [${w.ToInt(n.inputs.currentPagePoint)}] = ${w.Dist(n.inputs.originPagePoint,n.inputs.currentPagePoint).toFixed(0)}`:"";return d.jsx("div",{className:"tlui-debug-panel__current-state",children:`${t}${i}${a}`})});function Zre(){const e=B(),n=G("show_fps",()=>xt.showFps.get(),[xt]),t=P.useRef(null);return P.useEffect(()=>{if(!n)return;const r=250;let o=0,s=-1,i=performance.now(),a=0,l=0,c=!1;function u(){if(l++,a=performance.now()-i,a>r){const h=Math.round(l*(r/a)*(1e3/r));h>o&&(o=h);const p=o*.75;(h<p&&!c||h>=p&&c)&&(c=!c),t.current.innerHTML=`FPS ${h.toString()}`,t.current.className="tlui-debug-panel__fps"+(c?" tlui-debug-panel__fps__slow":""),a-=r,l=0,i=performance.now()}s=e.timers.requestAnimationFrame(u)}return u(),()=>{cancelAnimationFrame(s)}},[n,e]),n?d.jsx("div",{ref:t}):null}function bR(){const e=B(),n=Zr(),t=G("locale",()=>e.user.getLocale(),[e]);return d.jsx(Wn,{id:"help menu language",label:"menu.language",children:d.jsx(ge,{id:"languages",children:Xc.map(({locale:r,label:o})=>d.jsx(Kn,{id:`language-${r}`,title:r,label:o,checked:r===t,onSelect:()=>{e.user.updateUserPreferences({locale:r}),n("change-language",{source:"menu",locale:r})}},r))})})}function Qre(){return d.jsxs(d.Fragment,{children:[d.jsx(bR,{}),d.jsx(Jre,{})]})}function Jre(){const{KeyboardShortcutsDialog:e}=pi(),{addDialog:n}=la();return e?d.jsx(H,{id:"keyboard-shortcuts-button",label:"help-menu.keyboard-shortcuts",readonlyOk:!0,onSelect:()=>{n({component:e})}}):null}const eoe=P.memo(function({children:n}){const t=Te(),r=Hn(),o=n??d.jsx(Qre,{});return r<yt.MOBILE?null:d.jsx("div",{className:"tlui-help-menu",children:d.jsxs(Qi,{id:"help menu",children:[d.jsx(Ji,{children:d.jsx(he,{type:"help",title:t("help-menu.title"),"data-testid":"help-menu.button",children:d.jsx(Pe,{icon:"question-mark",small:!0})})}),d.jsx(ea,{side:"top",align:"end",alignOffset:0,sideOffset:8,children:d.jsx(_r,{type:"menu",sourceId:"help-menu",children:o})})]})})});function toe(){const e=B(),n=ie(),[t,r]=P.useState(!1),o=P.useRef(!1);return Os("toggle showback to content",()=>{const s=o.current,i=e.getCurrentPageShapeIds();let a=!1;i.size&&(a=i.size===e.getCulledShapes().size),s!==a&&(r(a),o.current=a)},[e]),t?d.jsx(H,{...n["back-to-content"],onSelect:()=>{n["back-to-content"].onSelect("helper-buttons"),r(!1)}}):null}function noe(){const e=B(),n=ie();return G("is pen mode",()=>e.getInstanceState().isPenMode,[e])?d.jsx(H,{...n["exit-pen-mode"]}):null}function roe(){const e=B(),n=ie();return G("is following user",()=>!!e.getInstanceState().followingUserId,[e])?d.jsx(H,{...n["stop-following"]}):null}function ooe(){return d.jsxs(d.Fragment,{children:[d.jsx(noe,{}),d.jsx(toe,{}),d.jsx(roe,{})]})}function soe({children:e}){const n=e??d.jsx(ooe,{});return d.jsx("div",{className:"tlui-helper-buttons",children:d.jsx(_r,{type:"helper-buttons",sourceId:"helper-buttons",children:n})})}function ioe(){const e=ie(),n=Tg();return d.jsxs(d.Fragment,{children:[d.jsxs(ge,{label:"shortcuts-dialog.tools",id:"tools",children:[d.jsx(H,{...e["toggle-tool-lock"]}),d.jsx(H,{...e["insert-media"]}),d.jsx(H,{...n.select}),d.jsx(H,{...n.draw}),d.jsx(H,{...n.eraser}),d.jsx(H,{...n.hand}),d.jsx(H,{...n.rectangle}),d.jsx(H,{...n.ellipse}),d.jsx(H,{...n.arrow}),d.jsx(H,{...n.line}),d.jsx(H,{...n.text}),d.jsx(H,{...n.frame}),d.jsx(H,{...n.note}),d.jsx(H,{...n.laser})]}),d.jsxs(ge,{label:"shortcuts-dialog.preferences",id:"preferences",children:[d.jsx(H,{...e["toggle-dark-mode"]}),d.jsx(H,{...e["toggle-focus-mode"]}),d.jsx(H,{...e["toggle-grid"]})]}),d.jsxs(ge,{label:"shortcuts-dialog.edit",id:"edit",children:[d.jsx(H,{...e.undo}),d.jsx(H,{...e.redo}),d.jsx(H,{...e.cut}),d.jsx(H,{...e.copy}),d.jsx(H,{...e.paste}),d.jsx(H,{...e["select-all"]}),d.jsx(H,{...e.delete}),d.jsx(H,{...e.duplicate})]}),d.jsxs(ge,{label:"shortcuts-dialog.view",id:"view",children:[d.jsx(H,{...e["zoom-in"]}),d.jsx(H,{...e["zoom-out"]}),d.jsx(H,{...e["zoom-to-100"]}),d.jsx(H,{...e["zoom-to-fit"]}),d.jsx(H,{...e["zoom-to-selection"]})]}),d.jsxs(ge,{label:"shortcuts-dialog.transform",id:"transform",children:[d.jsx(H,{...e["bring-to-front"]}),d.jsx(H,{...e["bring-forward"]}),d.jsx(H,{...e["send-backward"]}),d.jsx(H,{...e["send-to-back"]}),d.jsx(H,{...e.group}),d.jsx(H,{...e.ungroup}),d.jsx(H,{...e["flip-horizontal"]}),d.jsx(H,{...e["flip-vertical"]}),d.jsx(H,{...e["align-top"]}),d.jsx(H,{...e["align-center-vertical"]}),d.jsx(H,{...e["align-bottom"]}),d.jsx(H,{...e["align-left"]}),d.jsx(H,{...e["align-center-horizontal"]}),d.jsx(H,{...e["align-right"]})]})]})}const aoe=P.memo(function({children:n}){const t=Te(),r=Hn(),o=n??d.jsx(ioe,{});return d.jsxs(d.Fragment,{children:[d.jsxs(Eg,{className:"tlui-shortcuts-dialog__header",children:[d.jsx(kg,{children:t("shortcuts-dialog.title")}),d.jsx(_g,{})]}),d.jsx(gu,{className:ce("tlui-shortcuts-dialog__body",{"tlui-shortcuts-dialog__body__mobile":r<=yt.MOBILE_XS,"tlui-shortcuts-dialog__body__tablet":r<=yt.TABLET}),children:d.jsx(_r,{type:"keyboard-shortcuts",sourceId:"kbd",children:o})}),d.jsx("div",{className:"tlui-dialog__scrim"})]})}),loe=[{colorScheme:"light",label:"theme.light"},{colorScheme:"dark",label:"theme.dark"},{colorScheme:"system",label:"theme.system"}];function coe(){const e=B(),n=Zr(),t=G("colorScheme",()=>e.user.getUserPreferences().colorScheme,[e]);return d.jsx(Wn,{id:"help menu color-scheme",label:"menu.theme",children:d.jsx(ge,{id:"languages",children:loe.map(({colorScheme:r,label:o})=>d.jsx(Kn,{id:`color-scheme-${r}`,label:o,checked:r===t,onSelect:()=>{e.user.updateUserPreferences({colorScheme:r}),n("color-scheme",{source:"menu",value:r})}},r))})})}function uoe(){return d.jsxs(d.Fragment,{children:[d.jsx(hoe,{}),d.jsx(moe,{}),d.jsx(doe,{}),d.jsx(yoe,{}),d.jsx(Soe,{})]})}function doe(){const e=ie();return d.jsxs(Wn,{id:"export-all-as",label:"context-menu.export-all-as",size:"small",children:[d.jsxs(ge,{id:"export-all-as-group",children:[d.jsx(H,{...e["export-all-as-svg"]}),d.jsx(H,{...e["export-all-as-png"]}),d.jsx(H,{...e["export-all-as-json"]})]}),d.jsx(ge,{id:"export-all-as-bg",children:d.jsx(sb,{})})]})}function hoe(){const e=B(),n=G("isSelectToolActive",()=>e.getCurrentToolId()==="select",[e]);return d.jsxs(Wn,{id:"edit",label:"menu.edit",disabled:!n,children:[d.jsx(goe,{}),d.jsx(mR,{}),d.jsx(yR,{}),d.jsx(poe,{}),d.jsx(foe,{}),d.jsx(ge,{id:"select-all",children:d.jsx(SR,{})})]})}function poe(){return d.jsxs(ge,{id:"misc",children:[d.jsx(lR,{}),d.jsx(cR,{}),d.jsx(iR,{}),d.jsx(sR,{}),d.jsx(uR,{}),d.jsx(dR,{}),d.jsx(xR,{}),d.jsx(vR,{}),d.jsx(aR,{})]})}function foe(){return d.jsxs(ge,{id:"lock",children:[d.jsx(hR,{}),d.jsx(Sre,{})]})}function goe(){const e=ie(),n=zO(),t=NO();return d.jsxs(ge,{id:"undo-redo",children:[d.jsx(H,{...e.undo,disabled:!n}),d.jsx(H,{...e.redo,disabled:!t})]})}function moe(){const e=ie();return d.jsx(Wn,{id:"view",label:"menu.view",children:d.jsxs(ge,{id:"view-actions",children:[d.jsx(H,{...e["zoom-in"]}),d.jsx(H,{...e["zoom-out"]}),d.jsx(pR,{}),d.jsx(fR,{}),d.jsx(gR,{})]})})}function yoe(){const e=ie();return d.jsxs(ge,{id:"extras",children:[d.jsx(H,{...e["insert-embed"]}),d.jsx(H,{...e["insert-media"]})]})}function Soe(){return d.jsx(ge,{id:"preferences",children:d.jsxs(Wn,{id:"preferences",label:"menu.preferences",children:[d.jsxs(ge,{id:"preferences-actions",children:[d.jsx(Mre,{}),d.jsx(Are,{}),d.jsx(jre,{}),d.jsx(Ore,{}),d.jsx(Dre,{}),d.jsx(Rre,{}),d.jsx(Lre,{}),d.jsx(Fre,{}),d.jsx(Nre,{}),d.jsx($re,{})]}),d.jsx(ge,{id:"color-scheme",children:d.jsx(coe,{})}),d.jsx(ge,{id:"language",children:d.jsx(bR,{})})]})})}const voe=P.memo(function({children:n}){const t=un(),[r,o]=ui("main menu"),s=Te(),i=n??d.jsx(uoe,{});return d.jsxs(nb,{dir:"ltr",open:r,onOpenChange:o,modal:!1,children:[d.jsx(rb,{asChild:!0,dir:"ltr",children:d.jsx(he,{type:"icon","data-testid":"main-menu.button",title:s("menu.title"),children:d.jsx(Pe,{icon:"menu",small:!0})})}),d.jsx($g,{container:t,children:d.jsx(ob,{className:"tlui-menu",side:"bottom",align:"start",collisionPadding:4,alignOffset:0,sideOffset:6,children:d.jsx(_r,{type:"menu",sourceId:"main-menu",children:i})})})]})}),xoe=P.memo(function(){const n=Hn(),{MainMenu:t,QuickActions:r,ActionsMenu:o,PageMenu:s}=pi();return!t&&!s&&n<6?null:d.jsx("div",{className:"tlui-menu-zone",children:d.jsxs("div",{className:"tlui-buttons__horizontal",children:[t&&d.jsx(t,{}),s&&d.jsx(s,{}),n<6?null:d.jsxs(d.Fragment,{children:[r&&d.jsx(r,{}),o&&d.jsx(o,{})]})]})})}),_y={};function pc(e){if(_y[e])return _y[e];const t=document.createElement("canvas").getContext("2d");t.fillStyle=e,t.fillRect(0,0,1,1);const[r,o,s,i]=t.getImageData(0,0,1,1).data,a=new Float32Array([r/255,o/255,s/255,i/255]);return _y[e]=a,a}const gp=10,PR=4*6*gp+12+4*12;function Ca(e,{center:n,radius:t,numArcSegments:r=20,startAngle:o=0,endAngle:s=Re,offset:i=0}){const a=(s-o)/r;let l=i;for(let c=o;c<s;c+=a)e[l++]=n.x,e[l++]=n.y,e[l++]=n.x+Math.cos(c)*t,e[l++]=n.y+Math.sin(c)*t,e[l++]=n.x+Math.cos(c+a)*t,e[l++]=n.y+Math.sin(c+a)*t;return e}function Ia(e,n,t,r,o,s){e[n++]=t,e[n++]=r,e[n++]=t,e[n++]=r+s,e[n++]=t+o,e[n++]=r,e[n++]=t+o,e[n++]=r,e[n++]=t,e[n++]=r+s,e[n++]=t+o,e[n++]=r+s}function woe(e,n,t){const r=gp;t=Math.min(t,Math.min(n.w,n.h)/2);const o=Z.ExpandBy(n,-t);if(o.w<=0||o.h<=0)return Ca(e,{center:n.center,radius:t,numArcSegments:gp*4}),gp*4*6;let s=0;return Ia(e,s,o.minX,o.minY,o.w,o.h),s+=12,Ia(e,s,o.minX,n.minY,o.w,t),s+=12,Ia(e,s,o.maxX,o.minY,t,o.h),s+=12,Ia(e,s,o.minX,o.maxY,o.w,t),s+=12,Ia(e,s,n.minX,o.minY,t,o.h),s+=12,Ca(e,{numArcSegments:r,offset:s,center:o.point,radius:t,startAngle:ke,endAngle:ke*1.5}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,new w(o.w,0)),radius:t,startAngle:ke*1.5,endAngle:Re}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,o.size),radius:t,startAngle:0,endAngle:Ge}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,new w(0,o.h)),radius:t,startAngle:Ge,endAngle:ke}),PR}function boe(e){if(!e)throw new Error("Canvas element not found");const n=e.getContext("webgl2",{premultipliedAlpha:!1});if(!n)throw new Error("Failed to get webgl2 context");const t=`#version 300 es
|
|
285
|
+
</div>`}catch(E){console.error(E)}}function h(){e.environment.isChromeForIos?(l(),window.print()):e.environment.isSafari?(l(),document.execCommand("print",!1)):window.print()}const p=e.getSelectedShapeIds(),f=e.getCurrentPageId(),y=e.getPages(),x={scale:1,background:!1,darkMode:!1,preserveAspectRatio:"xMidYMid meet"};if(e.getSelectedShapeIds().length>0){const S=await e.getSvgString(p,x);if(S){const v=y.find(b=>b.id===f);u(`tldraw — ${v==null?void 0:v.name}`,null,S.svg),h()}}else{const S=e.getCurrentPage(),v=await e.getSvgString(e.getSortedChildIdsForParent(S.id),x);v&&(u(`tldraw — ${S.name}`,null,v.svg),h())}window.removeEventListener("beforeprint",l),window.removeEventListener("afterprint",c)},[e])}const eO=P.createContext(null);function UJ(e){return Object.fromEntries(e.map(n=>[n.id,n]))}function ba(e,n){if(e.getSelectedShapes().length===0)return e.getDocumentSettings().name||n}function HJ({overrides:e,children:n}){const t=B(),{addDialog:r,clearDialogs:o}=la(),{clearToasts:s,addToast:i}=Qr(),a=Te(),l=Hj(),c=BJ(),{cut:u,copy:h,paste:p}=MJ(),f=LJ(),y=NJ(),m=a("document.default-name"),x=Zr(),S=P.useMemo(()=>{function v(){return t.isIn("select")||(t.complete(),t.setCurrentTool("select")),!1}function b(){return t.isIn("select")&&t.getSelectedShapeIds().length>0}const k=UJ([{id:"edit-link",label:"action.edit-link",icon:"link",onSelect(C){b()&&(v()||(x("edit-link",{source:C}),t.mark("edit-link"),r({component:lJ})))}},{id:"insert-embed",label:"action.insert-embed",kbd:"$i",onSelect(C){x("insert-embed",{source:C}),r({component:Uj})}},{id:"insert-media",label:"action.insert-media",kbd:"$u",onSelect(C){x("insert-media",{source:C}),l()}},{id:"undo",label:"action.undo",icon:"undo",kbd:"$z",onSelect(C){x("undo",{source:C}),t.undo()}},{id:"redo",label:"action.redo",icon:"redo",kbd:"$!z",onSelect(C){x("redo",{source:C}),t.redo()}},{id:"export-as-svg",label:{default:"action.export-as-svg",menu:"action.export-as-svg.short","context-menu":"action.export-as-svg.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"svg",source:C}),y(I,"svg",ba(t,m)))}},{id:"export-as-png",label:{default:"action.export-as-png",menu:"action.export-as-png.short","context-menu":"action.export-as-png.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"png",source:C}),y(I,"png",ba(t,m)))}},{id:"export-as-json",label:{default:"action.export-as-json",menu:"action.export-as-json.short","context-menu":"action.export-as-json.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-as",{format:"json",source:C}),y(I,"json",ba(t,m)))}},{id:"export-all-as-svg",label:{default:"action.export-all-as-svg",menu:"action.export-all-as-svg.short","context-menu":"action.export-all-as-svg.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("export-all-as",{format:"svg",source:C}),y(Array.from(t.getCurrentPageShapeIds()),"svg",ba(t,m)))}},{id:"export-all-as-png",label:{default:"action.export-all-as-png",menu:"action.export-all-as-png.short","context-menu":"action.export-all-as-png.short"},readonlyOk:!0,onSelect(C){const I=Array.from(t.getCurrentPageShapeIds().values());I.length!==0&&(x("export-all-as",{format:"png",source:C}),y(I,"png",ba(t,m)))}},{id:"export-all-as-json",label:{default:"action.export-all-as-json",menu:"action.export-all-as-json.short","context-menu":"action.export-all-as-json.short"},readonlyOk:!0,onSelect(C){const I=Array.from(t.getCurrentPageShapeIds().values());I.length!==0&&(x("export-all-as",{format:"json",source:C}),y(I,"json",ba(t,m)))}},{id:"copy-as-svg",label:{default:"action.copy-as-svg",menu:"action.copy-as-svg.short","context-menu":"action.copy-as-svg.short"},kbd:"$!c",readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"svg",source:C}),f(I,"svg"))}},{id:"copy-as-png",label:{default:"action.copy-as-png",menu:"action.copy-as-png.short","context-menu":"action.copy-as-png.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"png",source:C}),f(I,"png"))}},{id:"copy-as-json",label:{default:"action.copy-as-json",menu:"action.copy-as-json.short","context-menu":"action.copy-as-json.short"},readonlyOk:!0,onSelect(C){let I=t.getSelectedShapeIds();I.length===0&&(I=Array.from(t.getCurrentPageShapeIds().values())),I.length!==0&&(x("copy-as",{format:"json",source:C}),f(I,"json"))}},{id:"toggle-auto-size",label:"action.toggle-auto-size",onSelect(C){if(!b()||v())return;x("toggle-auto-size",{source:C}),t.mark("toggling auto size");const I=t.getSelectedShapes().filter(T=>t.isShapeOfType(T,"text")&&T.props.autoSize===!1);t.updateShapes(I.map(T=>({id:T.id,type:T.type,props:{...T.props,w:8,autoSize:!0}}))),Ke(t,I.map(T=>T.id))}},{id:"open-embed-link",label:"action.open-embed-link",readonlyOk:!0,onSelect(C){x("open-embed-link",{source:C});const I=t.getSelectedShapeIds(),T="No embed shapes selected";if(I.length!==1){console.error(T);return}const O=t.getShape(I[0]);if(!O||!t.isShapeOfType(O,"embed")){console.error(T);return}kV(O.props.url,"_blank")}},{id:"select-zoom-tool",readonlyOk:!0,kbd:"z",onSelect(C){var I,T;if(((I=t.root.getCurrent())==null?void 0:I.id)!=="zoom"&&(x("zoom-tool",{source:C}),!(t.inputs.shiftKey||t.inputs.ctrlKey))){const O=t.root.getCurrent();O&&((T=O.getCurrent())==null?void 0:T.id)==="idle"&&t.setCurrentTool("zoom",{onInteractionEnd:O.id,maskAs:"zoom"})}}},{id:"convert-to-bookmark",label:"action.convert-to-bookmark",onSelect(C){b()&&(v()||t.batch(()=>{x("convert-to-bookmark",{source:C});const I=t.getSelectedShapes(),T=[],O=[];for(const _ of I){if(!_||!t.isShapeOfType(_,"embed")||!_.props.url)continue;const M=new w(_.x,_.y);M.rot(-_.rotation),M.add(new w(_.props.w/2-300/2,_.props.h/2-320/2)),M.rot(_.rotation);const L={id:$e(),type:"bookmark",rotation:_.rotation,x:M.x,y:M.y,opacity:1,props:{url:_.props.url}};T.push(L),O.push(_.id)}t.mark("convert shapes to bookmark"),t.deleteShapes(O),t.createShapes(T)}))}},{id:"convert-to-embed",label:"action.convert-to-embed",onSelect(C){b()&&(v()||(x("convert-to-embed",{source:C}),t.batch(()=>{const I=t.getSelectedShapeIds(),T=me(I.map(M=>t.getShape(M))),O=[],_=[];for(const M of T){if(!t.isShapeOfType(M,"bookmark"))continue;const{url:L}=M.props,j=As(M.props.url);if(!j||!j.definition)continue;const{width:R,height:F}=j.definition,W=new w(M.x,M.y);W.rot(-M.rotation),W.add(new w(M.props.w/2-R/2,M.props.h/2-F/2)),W.rot(M.rotation);const K={id:$e(),type:"embed",x:W.x,y:W.y,rotation:M.rotation,props:{url:L,w:R,h:F}};O.push(K),_.push(M.id)}t.mark("convert shapes to embed"),t.deleteShapes(_),t.createShapes(O)})))}},{id:"duplicate",kbd:"$d",label:"action.duplicate",icon:"duplicate",onSelect(C){if(!b()||v())return;x("duplicate-shapes",{source:C});const I=t.getInstanceState();let T,O;if(I.duplicateProps)T=I.duplicateProps.shapeIds,O=I.duplicateProps.offset;else{T=t.getSelectedShapeIds();const _=Z.Common(me(T.map(M=>t.getShapePageBounds(M))));O=t.getCameraOptions().isLocked?{x:t.options.adjacentShapeMargin,y:t.options.adjacentShapeMargin}:{x:_.width+t.options.adjacentShapeMargin,y:0}}t.mark("duplicate shapes"),t.duplicateShapes(T,O),I.duplicateProps&&t.updateInstanceState({duplicateProps:{...I.duplicateProps,shapeIds:t.getSelectedShapeIds()}})}},{id:"ungroup",label:"action.ungroup",kbd:"$!g",icon:"ungroup",onSelect(C){b()&&(v()||(x("ungroup-shapes",{source:C}),t.mark("ungroup"),t.ungroupShapes(t.getSelectedShapeIds())))}},{id:"group",label:"action.group",kbd:"$g",icon:"group",onSelect(C){if(!b()||v())return;x("group-shapes",{source:C});const I=t.getOnlySelectedShape();I&&t.isShapeOfType(I,"group")?(t.mark("ungroup"),t.ungroupShapes(t.getSelectedShapeIds())):(t.mark("group"),t.groupShapes(t.getSelectedShapeIds()))}},{id:"remove-frame",label:"action.remove-frame",kbd:"$!f",onSelect(C){if(!b())return;x("remove-frame",{source:C});const I=t.getSelectedShapes();I.length>0&&I.every(T=>t.isShapeOfType(T,"frame"))&&(t.mark("remove-frame"),sJ(t,I.map(T=>T.id)))}},{id:"fit-frame-to-content",label:"action.fit-frame-to-content",onSelect(C){if(!b())return;x("fit-frame-to-content",{source:C});const I=t.getOnlySelectedShape();I&&t.isShapeOfType(I,"frame")&&(t.mark("fit-frame-to-content"),aJ(t,I.id))}},{id:"align-left",label:"action.align-left",kbd:"?A",icon:"align-left",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"left",source:C}),t.mark("align left");const I=t.getSelectedShapeIds();t.alignShapes(I,"left"),Ke(t,I)}},{id:"align-center-horizontal",label:{default:"action.align-center-horizontal","context-menu":"action.align-center-horizontal.short"},kbd:"?H",icon:"align-center-horizontal",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"center-horizontal",source:C}),t.mark("align center horizontal");const I=t.getSelectedShapeIds();t.alignShapes(I,"center-horizontal"),Ke(t,I)}},{id:"align-right",label:"action.align-right",kbd:"?D",icon:"align-right",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"right",source:C}),t.mark("align right");const I=t.getSelectedShapeIds();t.alignShapes(I,"right"),Ke(t,I)}},{id:"align-center-vertical",label:{default:"action.align-center-vertical","context-menu":"action.align-center-vertical.short"},kbd:"?V",icon:"align-center-vertical",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"center-vertical",source:C}),t.mark("align center vertical");const I=t.getSelectedShapeIds();t.alignShapes(I,"center-vertical"),Ke(t,I)}},{id:"align-top",label:"action.align-top",icon:"align-top",kbd:"?W",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"top",source:C}),t.mark("align top");const I=t.getSelectedShapeIds();t.alignShapes(I,"top"),Ke(t,I)}},{id:"align-bottom",label:"action.align-bottom",icon:"align-bottom",kbd:"?S",onSelect(C){if(!b()||v())return;x("align-shapes",{operation:"bottom",source:C}),t.mark("align bottom");const I=t.getSelectedShapeIds();t.alignShapes(I,"bottom"),Ke(t,I)}},{id:"distribute-horizontal",label:{default:"action.distribute-horizontal","context-menu":"action.distribute-horizontal.short"},icon:"distribute-horizontal",kbd:"?!h",onSelect(C){if(!b()||v())return;x("distribute-shapes",{operation:"horizontal",source:C}),t.mark("distribute horizontal");const I=t.getSelectedShapeIds();t.distributeShapes(I,"horizontal"),Ke(t,I)}},{id:"distribute-vertical",label:{default:"action.distribute-vertical","context-menu":"action.distribute-vertical.short"},icon:"distribute-vertical",kbd:"?!V",onSelect(C){if(!b()||v())return;x("distribute-shapes",{operation:"vertical",source:C}),t.mark("distribute vertical");const I=t.getSelectedShapeIds();t.distributeShapes(I,"vertical"),Ke(t,I)}},{id:"stretch-horizontal",label:{default:"action.stretch-horizontal","context-menu":"action.stretch-horizontal.short"},icon:"stretch-horizontal",onSelect(C){if(!b()||v())return;x("stretch-shapes",{operation:"horizontal",source:C}),t.mark("stretch horizontal");const I=t.getSelectedShapeIds();t.stretchShapes(I,"horizontal"),Ke(t,I)}},{id:"stretch-vertical",label:{default:"action.stretch-vertical","context-menu":"action.stretch-vertical.short"},icon:"stretch-vertical",onSelect(C){if(!b()||v())return;x("stretch-shapes",{operation:"vertical",source:C}),t.mark("stretch vertical");const I=t.getSelectedShapeIds();t.stretchShapes(I,"vertical"),Ke(t,I)}},{id:"flip-horizontal",label:{default:"action.flip-horizontal","context-menu":"action.flip-horizontal.short"},kbd:"!h",onSelect(C){if(!b()||v())return;x("flip-shapes",{operation:"horizontal",source:C}),t.mark("flip horizontal");const I=t.getSelectedShapeIds();t.flipShapes(I,"horizontal"),Ke(t,I)}},{id:"flip-vertical",label:{default:"action.flip-vertical","context-menu":"action.flip-vertical.short"},kbd:"!v",onSelect(C){if(!b()||v())return;x("flip-shapes",{operation:"vertical",source:C}),t.mark("flip vertical");const I=t.getSelectedShapeIds();t.flipShapes(I,"vertical"),Ke(t,I)}},{id:"pack",label:"action.pack",icon:"pack",onSelect(C){if(!b()||v())return;x("pack-shapes",{source:C}),t.mark("pack");const I=t.getSelectedShapeIds();t.packShapes(I,t.options.adjacentShapeMargin),Ke(t,I)}},{id:"stack-vertical",label:{default:"action.stack-vertical","context-menu":"action.stack-vertical.short"},icon:"stack-vertical",onSelect(C){if(!b()||v())return;x("stack-shapes",{operation:"vertical",source:C}),t.mark("stack-vertical");const I=t.getSelectedShapeIds();t.stackShapes(I,"vertical",16),Ke(t,I)}},{id:"stack-horizontal",label:{default:"action.stack-horizontal","context-menu":"action.stack-horizontal.short"},icon:"stack-horizontal",onSelect(C){if(!b()||v())return;x("stack-shapes",{operation:"horizontal",source:C}),t.mark("stack-horizontal");const I=t.getSelectedShapeIds();t.stackShapes(I,"horizontal",16),Ke(t,I)}},{id:"bring-to-front",label:"action.bring-to-front",kbd:"]",icon:"bring-to-front",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"toFront",source:C}),t.mark("bring to front"),t.bringToFront(t.getSelectedShapeIds())))}},{id:"bring-forward",label:"action.bring-forward",icon:"bring-forward",kbd:"?]",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"forward",source:C}),t.mark("bring forward"),t.bringForward(t.getSelectedShapeIds())))}},{id:"send-backward",label:"action.send-backward",icon:"send-backward",kbd:"?[",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"backward",source:C}),t.mark("send backward"),t.sendBackward(t.getSelectedShapeIds())))}},{id:"send-to-back",label:"action.send-to-back",icon:"send-to-back",kbd:"[",onSelect(C){b()&&(v()||(x("reorder-shapes",{operation:"toBack",source:C}),t.mark("send to back"),t.sendToBack(t.getSelectedShapeIds())))}},{id:"cut",label:"action.cut",kbd:"$x",onSelect(C){b()&&(v()||(t.mark("cut"),u(C)))}},{id:"copy",label:"action.copy",kbd:"$c",readonlyOk:!0,onSelect(C){b()&&(v()||h(C))}},{id:"paste",label:"action.paste",kbd:"$v",onSelect(C){var I;(I=navigator.clipboard)==null||I.read().then(T=>{p(T,C,C==="context-menu"?t.inputs.currentPagePoint:void 0)}).catch(()=>{i({title:a("action.paste-error-title"),description:a("action.paste-error-description"),severity:"error"})})}},{id:"select-all",label:"action.select-all",kbd:"$a",readonlyOk:!0,onSelect(C){t.batch(()=>{v()||(x("select-all-shapes",{source:C}),t.mark("select all kbd"),t.selectAll())})}},{id:"select-none",label:"action.select-none",readonlyOk:!0,onSelect(C){b()&&(v()||(x("select-none-shapes",{source:C}),t.mark("select none"),t.selectNone()))}},{id:"delete",label:"action.delete",kbd:"⌫,del,backspace",icon:"trash",onSelect(C){b()&&(v()||(x("delete-shapes",{source:C}),t.mark("delete"),t.deleteShapes(t.getSelectedShapeIds())))}},{id:"rotate-cw",label:"action.rotate-cw",icon:"rotate-cw",onSelect(C){if(!b()||v())return;x("rotate-cw",{source:C}),t.mark("rotate-cw");const I=t.getSelectionRotation()%(Ge/2),T=Ds(I,0)||Ds(I,Ge/2),O=t.getSelectedShapeIds();t.rotateShapesBy(O,Ge/2-(T?0:I)),Ke(t,O)}},{id:"rotate-ccw",label:"action.rotate-ccw",icon:"rotate-ccw",onSelect(C){if(!b()||v())return;x("rotate-ccw",{source:C}),t.mark("rotate-ccw");const I=t.getSelectionRotation()%(Ge/2),T=Ds(I,0),O=t.getSelectedShapeIds();t.rotateShapesBy(O,T?-(Ge/2):-I),Ke(t,O)}},{id:"zoom-in",label:"action.zoom-in",kbd:"$=,=",readonlyOk:!0,onSelect(C){x("zoom-in",{source:C}),t.zoomIn(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-out",label:"action.zoom-out",kbd:"$-,-",readonlyOk:!0,onSelect(C){x("zoom-out",{source:C}),t.zoomOut(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-100",label:"action.zoom-to-100",icon:"reset-zoom",kbd:"!0",readonlyOk:!0,onSelect(C){x("reset-zoom",{source:C}),t.resetZoom(void 0,{animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-fit",label:"action.zoom-to-fit",kbd:"!1",readonlyOk:!0,onSelect(C){x("zoom-to-fit",{source:C}),t.zoomToFit({animation:{duration:t.options.animationMediumMs}})}},{id:"zoom-to-selection",label:"action.zoom-to-selection",kbd:"!2",readonlyOk:!0,onSelect(C){b()&&(v()||(x("zoom-to-selection",{source:C}),t.zoomToSelection({animation:{duration:t.options.animationMediumMs}})))}},{id:"toggle-snap-mode",label:{default:"action.toggle-snap-mode",menu:"action.toggle-snap-mode.menu"},onSelect(C){x("toggle-snap-mode",{source:C}),t.user.updateUserPreferences({isSnapMode:!t.user.getIsSnapMode()})},checkbox:!0},{id:"toggle-dark-mode",label:{default:"action.toggle-dark-mode",menu:"action.toggle-dark-mode.menu"},kbd:"$/",readonlyOk:!0,onSelect(C){const I=t.user.getIsDarkMode()?"light":"dark";x("color-scheme",{source:C,value:I}),t.user.updateUserPreferences({colorScheme:I})},checkbox:!0},{id:"toggle-wrap-mode",label:{default:"action.toggle-wrap-mode",menu:"action.toggle-wrap-mode.menu"},readonlyOk:!0,onSelect(C){x("toggle-wrap-mode",{source:C}),t.user.updateUserPreferences({isWrapMode:!t.user.getIsWrapMode()})},checkbox:!0},{id:"toggle-dynamic-size-mode",label:{default:"action.toggle-dynamic-size-mode",menu:"action.toggle-dynamic-size-mode.menu"},readonlyOk:!1,onSelect(C){x("toggle-dynamic-size-mode",{source:C}),t.user.updateUserPreferences({isDynamicSizeMode:!t.user.getIsDynamicResizeMode()})},checkbox:!0},{id:"toggle-paste-at-cursor",label:{default:"action.toggle-paste-at-cursor",menu:"action.toggle-paste-at-cursor.menu"},readonlyOk:!1,onSelect(C){x("toggle-paste-at-cursor",{source:C}),t.user.updateUserPreferences({isPasteAtCursorMode:!t.user.getIsPasteAtCursorMode()})},checkbox:!0},{id:"toggle-reduce-motion",label:{default:"action.toggle-reduce-motion",menu:"action.toggle-reduce-motion.menu"},readonlyOk:!0,onSelect(C){x("toggle-reduce-motion",{source:C}),t.user.updateUserPreferences({animationSpeed:t.user.getAnimationSpeed()===0?1:0})},checkbox:!0},{id:"toggle-edge-scrolling",label:{default:"action.toggle-edge-scrolling",menu:"action.toggle-edge-scrolling.menu"},readonlyOk:!0,onSelect(C){x("toggle-edge-scrolling",{source:C}),t.user.updateUserPreferences({edgeScrollSpeed:t.user.getEdgeScrollSpeed()===0?1:0})},checkbox:!0},{id:"toggle-transparent",label:{default:"action.toggle-transparent",menu:"action.toggle-transparent.menu","context-menu":"action.toggle-transparent.context-menu"},readonlyOk:!0,onSelect(C){x("toggle-transparent",{source:C}),t.updateInstanceState({exportBackground:!t.getInstanceState().exportBackground})},checkbox:!0},{id:"toggle-tool-lock",label:{default:"action.toggle-tool-lock",menu:"action.toggle-tool-lock.menu"},kbd:"q",onSelect(C){x("toggle-tool-lock",{source:C}),t.updateInstanceState({isToolLocked:!t.getInstanceState().isToolLocked})},checkbox:!0},{id:"unlock-all",label:"action.unlock-all",onSelect(C){x("unlock-all",{source:C});const I=[];for(const T of t.getCurrentPageShapes())T.isLocked&&I.push({id:T.id,type:T.type,isLocked:!1});I.length>0&&t.updateShapes(I)}},{id:"toggle-focus-mode",label:{default:"action.toggle-focus-mode",menu:"action.toggle-focus-mode.menu"},readonlyOk:!0,kbd:"$.",checkbox:!0,onSelect(C){t.timers.requestAnimationFrame(()=>{t.batch(()=>{x("toggle-focus-mode",{source:C}),o(),s(),t.updateInstanceState({isFocusMode:!t.getInstanceState().isFocusMode})})})}},{id:"toggle-grid",label:{default:"action.toggle-grid",menu:"action.toggle-grid.menu"},readonlyOk:!0,kbd:"$'",onSelect(C){x("toggle-grid-mode",{source:C}),t.updateInstanceState({isGridMode:!t.getInstanceState().isGridMode})},checkbox:!0},{id:"toggle-debug-mode",label:{default:"action.toggle-debug-mode",menu:"action.toggle-debug-mode.menu"},readonlyOk:!0,onSelect(C){x("toggle-debug-mode",{source:C}),t.updateInstanceState({isDebugMode:!t.getInstanceState().isDebugMode})},checkbox:!0},{id:"print",label:"action.print",kbd:"$p",readonlyOk:!0,onSelect(C){x("print",{source:C}),c()}},{id:"exit-pen-mode",label:"action.exit-pen-mode",icon:"cross-2",readonlyOk:!0,onSelect(C){x("exit-pen-mode",{source:C}),t.updateInstanceState({isPenMode:!1})}},{id:"stop-following",label:"action.stop-following",icon:"cross-2",readonlyOk:!0,onSelect(C){x("stop-following",{source:C}),t.stopFollowingUser()}},{id:"back-to-content",label:"action.back-to-content",icon:"arrow-left",readonlyOk:!0,onSelect(C){x("zoom-to-content",{source:C});const I=t.getSelectionPageBounds()??t.getCurrentPageBounds();I&&t.zoomToBounds(I,{targetZoom:Math.min(1,t.getZoomLevel()),animation:{duration:220}})}},{id:"toggle-lock",label:"action.toggle-lock",kbd:"!l",onSelect(C){t.mark("locking"),x("toggle-lock",{source:C}),t.toggleLock(t.getSelectedShapeIds())}},{id:"new-page",label:"context.pages.new-page",onSelect(C){const I=Zo.createId(),T=t.getSelectedShapeIds();t.batch(()=>{t.mark("move_shapes_to_page"),t.createPage({name:a("page-menu.new-page-initial-name"),id:I}),t.moveShapesToPage(T,I)}),x("new-page",{source:C})}},{id:"select-white-color",label:"color-style.white",kbd:"?t",onSelect(C){const I=ir;t.batch(()=>{t.mark("change-color"),t.isIn("select")&&t.setStyleForSelectedShapes(I,"white"),t.setStyleForNextShapes(I,"white")}),x("set-style",{source:C,id:I.id,value:"white"})}},{id:"select-fill-fill",label:"fill-style.fill",kbd:"?f",onSelect(C){const I=zi;t.batch(()=>{t.mark("change-fill"),t.isIn("select")&&t.setStyleForSelectedShapes(I,"fill"),t.setStyleForNextShapes(I,"fill")}),x("set-style",{source:C,id:I.id,value:"fill"})}},{id:"flatten-to-image",label:"action.flatten-to-image",kbd:"!f",onSelect:async C=>{const I=t.getSelectedShapeIds();if(I.length===0)return;t.mark("flattening to image"),x("flatten-to-image",{source:C});const T=await zJ(t,I,t.options.flattenImageBoundsExpand);T!=null&&T.length&&t.setSelectedShapes(T)}}]);return e?e(t,k,void 0):k},[t,x,e,r,i,l,y,f,u,h,p,o,s,c,a,m]);return d.jsx(eO.Provider,{value:S,children:n})}function ie(){const e=P.useContext(eO);if(!e)throw new Error("useTools must be used within a ToolProvider");return e}function mu(e,n){return e?typeof e=="string"?e:n?e[n]??e.default:void 0:void 0}const KJ=["top","right","bottom","left"],ho=Math.min,Zn=Math.max,Pf=Math.round,lh=Math.floor,Zs=e=>({x:e,y:e}),WJ={left:"right",right:"left",bottom:"top",top:"bottom"},GJ={start:"end",end:"start"};function Kv(e,n,t){return Zn(e,ho(n,t))}function rs(e,n){return typeof e=="function"?e(n):e}function os(e){return e.split("-")[0]}function Fl(e){return e.split("-")[1]}function T0(e){return e==="x"?"y":"x"}function M0(e){return e==="y"?"height":"width"}function Qs(e){return["top","bottom"].includes(os(e))?"y":"x"}function A0(e){return T0(Qs(e))}function VJ(e,n,t){t===void 0&&(t=!1);const r=Fl(e),o=A0(e),s=M0(o);let i=o==="x"?r===(t?"end":"start")?"right":"left":r==="start"?"bottom":"top";return n.reference[s]>n.floating[s]&&(i=Cf(i)),[i,Cf(i)]}function YJ(e){const n=Cf(e);return[Wv(e),n,Wv(n)]}function Wv(e){return e.replace(/start|end/g,n=>GJ[n])}function XJ(e,n,t){const r=["left","right"],o=["right","left"],s=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return t?n?o:r:n?r:o;case"left":case"right":return n?s:i;default:return[]}}function qJ(e,n,t,r){const o=Fl(e);let s=XJ(os(e),t==="start",r);return o&&(s=s.map(i=>i+"-"+o),n&&(s=s.concat(s.map(Wv)))),s}function Cf(e){return e.replace(/left|right|bottom|top/g,n=>WJ[n])}function ZJ(e){return{top:0,right:0,bottom:0,left:0,...e}}function tO(e){return typeof e!="number"?ZJ(e):{top:e,right:e,bottom:e,left:e}}function If(e){const{x:n,y:t,width:r,height:o}=e;return{width:r,height:o,top:t,left:n,right:n+r,bottom:t+o,x:n,y:t}}function KI(e,n,t){let{reference:r,floating:o}=e;const s=Qs(n),i=A0(n),a=M0(i),l=os(n),c=s==="y",u=r.x+r.width/2-o.width/2,h=r.y+r.height/2-o.height/2,p=r[a]/2-o[a]/2;let f;switch(l){case"top":f={x:u,y:r.y-o.height};break;case"bottom":f={x:u,y:r.y+r.height};break;case"right":f={x:r.x+r.width,y:h};break;case"left":f={x:r.x-o.width,y:h};break;default:f={x:r.x,y:r.y}}switch(Fl(n)){case"start":f[i]-=p*(t&&c?-1:1);break;case"end":f[i]+=p*(t&&c?-1:1);break}return f}const QJ=async(e,n,t)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=t,a=s.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(n));let c=await i.getElementRects({reference:e,floating:n,strategy:o}),{x:u,y:h}=KI(c,r,l),p=r,f={},y=0;for(let m=0;m<a.length;m++){const{name:x,fn:S}=a[m],{x:v,y:b,data:E,reset:k}=await S({x:u,y:h,initialPlacement:r,placement:p,strategy:o,middlewareData:f,rects:c,platform:i,elements:{reference:e,floating:n}});u=v??u,h=b??h,f={...f,[x]:{...f[x],...E}},k&&y<=50&&(y++,typeof k=="object"&&(k.placement&&(p=k.placement),k.rects&&(c=k.rects===!0?await i.getElementRects({reference:e,floating:n,strategy:o}):k.rects),{x:u,y:h}=KI(c,p,l)),m=-1)}return{x:u,y:h,placement:p,strategy:o,middlewareData:f}};async function yu(e,n){var t;n===void 0&&(n={});const{x:r,y:o,platform:s,rects:i,elements:a,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:u="viewport",elementContext:h="floating",altBoundary:p=!1,padding:f=0}=rs(n,e),y=tO(f),x=a[p?h==="floating"?"reference":"floating":h],S=If(await s.getClippingRect({element:(t=await(s.isElement==null?void 0:s.isElement(x)))==null||t?x:x.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:c,rootBoundary:u,strategy:l})),v=h==="floating"?{x:r,y:o,width:i.floating.width,height:i.floating.height}:i.reference,b=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),E=await(s.isElement==null?void 0:s.isElement(b))?await(s.getScale==null?void 0:s.getScale(b))||{x:1,y:1}:{x:1,y:1},k=If(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:v,offsetParent:b,strategy:l}):v);return{top:(S.top-k.top+y.top)/E.y,bottom:(k.bottom-S.bottom+y.bottom)/E.y,left:(S.left-k.left+y.left)/E.x,right:(k.right-S.right+y.right)/E.x}}const JJ=e=>({name:"arrow",options:e,async fn(n){const{x:t,y:r,placement:o,rects:s,platform:i,elements:a,middlewareData:l}=n,{element:c,padding:u=0}=rs(e,n)||{};if(c==null)return{};const h=tO(u),p={x:t,y:r},f=A0(o),y=M0(f),m=await i.getDimensions(c),x=f==="y",S=x?"top":"left",v=x?"bottom":"right",b=x?"clientHeight":"clientWidth",E=s.reference[y]+s.reference[f]-p[f]-s.floating[y],k=p[f]-s.reference[f],C=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c));let I=C?C[b]:0;(!I||!await(i.isElement==null?void 0:i.isElement(C)))&&(I=a.floating[b]||s.floating[y]);const T=E/2-k/2,O=I/2-m[y]/2-1,_=ho(h[S],O),M=ho(h[v],O),L=_,j=I-m[y]-M,R=I/2-m[y]/2+T,F=Kv(L,R,j),W=!l.arrow&&Fl(o)!=null&&R!==F&&s.reference[y]/2-(R<L?_:M)-m[y]/2<0,K=W?R<L?R-L:R-j:0;return{[f]:p[f]+K,data:{[f]:F,centerOffset:R-F-K,...W&&{alignmentOffset:K}},reset:W}}}),eee=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(n){var t,r;const{placement:o,middlewareData:s,rects:i,initialPlacement:a,platform:l,elements:c}=n,{mainAxis:u=!0,crossAxis:h=!0,fallbackPlacements:p,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:y="none",flipAlignment:m=!0,...x}=rs(e,n);if((t=s.arrow)!=null&&t.alignmentOffset)return{};const S=os(o),v=Qs(a),b=os(a)===a,E=await(l.isRTL==null?void 0:l.isRTL(c.floating)),k=p||(b||!m?[Cf(a)]:YJ(a)),C=y!=="none";!p&&C&&k.push(...qJ(a,m,y,E));const I=[a,...k],T=await yu(n,x),O=[];let _=((r=s.flip)==null?void 0:r.overflows)||[];if(u&&O.push(T[S]),h){const R=VJ(o,i,E);O.push(T[R[0]],T[R[1]])}if(_=[..._,{placement:o,overflows:O}],!O.every(R=>R<=0)){var M,L;const R=(((M=s.flip)==null?void 0:M.index)||0)+1,F=I[R];if(F)return{data:{index:R,overflows:_},reset:{placement:F}};let W=(L=_.filter(K=>K.overflows[0]<=0).sort((K,z)=>K.overflows[1]-z.overflows[1])[0])==null?void 0:L.placement;if(!W)switch(f){case"bestFit":{var j;const K=(j=_.filter(z=>{if(C){const U=Qs(z.placement);return U===v||U==="y"}return!0}).map(z=>[z.placement,z.overflows.filter(U=>U>0).reduce((U,X)=>U+X,0)]).sort((z,U)=>z[1]-U[1])[0])==null?void 0:j[0];K&&(W=K);break}case"initialPlacement":W=a;break}if(o!==W)return{reset:{placement:W}}}return{}}}};function WI(e,n){return{top:e.top-n.height,right:e.right-n.width,bottom:e.bottom-n.height,left:e.left-n.width}}function GI(e){return KJ.some(n=>e[n]>=0)}const tee=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(n){const{rects:t}=n,{strategy:r="referenceHidden",...o}=rs(e,n);switch(r){case"referenceHidden":{const s=await yu(n,{...o,elementContext:"reference"}),i=WI(s,t.reference);return{data:{referenceHiddenOffsets:i,referenceHidden:GI(i)}}}case"escaped":{const s=await yu(n,{...o,altBoundary:!0}),i=WI(s,t.floating);return{data:{escapedOffsets:i,escaped:GI(i)}}}default:return{}}}}};async function nee(e,n){const{placement:t,platform:r,elements:o}=e,s=await(r.isRTL==null?void 0:r.isRTL(o.floating)),i=os(t),a=Fl(t),l=Qs(t)==="y",c=["left","top"].includes(i)?-1:1,u=s&&l?-1:1,h=rs(n,e);let{mainAxis:p,crossAxis:f,alignmentAxis:y}=typeof h=="number"?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...h};return a&&typeof y=="number"&&(f=a==="end"?y*-1:y),l?{x:f*u,y:p*c}:{x:p*c,y:f*u}}const ree=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(n){var t,r;const{x:o,y:s,placement:i,middlewareData:a}=n,l=await nee(n,e);return i===((t=a.offset)==null?void 0:t.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:s+l.y,data:{...l,placement:i}}}}},oee=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(n){const{x:t,y:r,placement:o}=n,{mainAxis:s=!0,crossAxis:i=!1,limiter:a={fn:x=>{let{x:S,y:v}=x;return{x:S,y:v}}},...l}=rs(e,n),c={x:t,y:r},u=await yu(n,l),h=Qs(os(o)),p=T0(h);let f=c[p],y=c[h];if(s){const x=p==="y"?"top":"left",S=p==="y"?"bottom":"right",v=f+u[x],b=f-u[S];f=Kv(v,f,b)}if(i){const x=h==="y"?"top":"left",S=h==="y"?"bottom":"right",v=y+u[x],b=y-u[S];y=Kv(v,y,b)}const m=a.fn({...n,[p]:f,[h]:y});return{...m,data:{x:m.x-t,y:m.y-r}}}}},see=function(e){return e===void 0&&(e={}),{options:e,fn(n){const{x:t,y:r,placement:o,rects:s,middlewareData:i}=n,{offset:a=0,mainAxis:l=!0,crossAxis:c=!0}=rs(e,n),u={x:t,y:r},h=Qs(o),p=T0(h);let f=u[p],y=u[h];const m=rs(a,n),x=typeof m=="number"?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){const b=p==="y"?"height":"width",E=s.reference[p]-s.floating[b]+x.mainAxis,k=s.reference[p]+s.reference[b]-x.mainAxis;f<E?f=E:f>k&&(f=k)}if(c){var S,v;const b=p==="y"?"width":"height",E=["top","left"].includes(os(o)),k=s.reference[h]-s.floating[b]+(E&&((S=i.offset)==null?void 0:S[h])||0)+(E?0:x.crossAxis),C=s.reference[h]+s.reference[b]+(E?0:((v=i.offset)==null?void 0:v[h])||0)-(E?x.crossAxis:0);y<k?y=k:y>C&&(y=C)}return{[p]:f,[h]:y}}}},iee=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(n){const{placement:t,rects:r,platform:o,elements:s}=n,{apply:i=()=>{},...a}=rs(e,n),l=await yu(n,a),c=os(t),u=Fl(t),h=Qs(t)==="y",{width:p,height:f}=r.floating;let y,m;c==="top"||c==="bottom"?(y=c,m=u===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(m=c,y=u==="end"?"top":"bottom");const x=f-l.top-l.bottom,S=p-l.left-l.right,v=ho(f-l[y],x),b=ho(p-l[m],S),E=!n.middlewareData.shift;let k=v,C=b;if(h?C=u||E?ho(b,S):S:k=u||E?ho(v,x):x,E&&!u){const T=Zn(l.left,0),O=Zn(l.right,0),_=Zn(l.top,0),M=Zn(l.bottom,0);h?C=p-2*(T!==0||O!==0?T+O:Zn(l.left,l.right)):k=f-2*(_!==0||M!==0?_+M:Zn(l.top,l.bottom))}await i({...n,availableWidth:C,availableHeight:k});const I=await o.getDimensions(s.floating);return p!==I.width||f!==I.height?{reset:{rects:!0}}:{}}}};function Nl(e){return nO(e)?(e.nodeName||"").toLowerCase():"#document"}function or(e){var n;return(e==null||(n=e.ownerDocument)==null?void 0:n.defaultView)||window}function us(e){var n;return(n=(nO(e)?e.ownerDocument:e.document)||window.document)==null?void 0:n.documentElement}function nO(e){return e instanceof Node||e instanceof or(e).Node}function bo(e){return e instanceof Element||e instanceof or(e).Element}function Po(e){return e instanceof HTMLElement||e instanceof or(e).HTMLElement}function VI(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof or(e).ShadowRoot}function Vu(e){const{overflow:n,overflowX:t,overflowY:r,display:o}=Gr(e);return/auto|scroll|overlay|hidden|clip/.test(n+r+t)&&!["inline","contents"].includes(o)}function aee(e){return["table","td","th"].includes(Nl(e))}function Mg(e){return[":popover-open",":modal"].some(n=>{try{return e.matches(n)}catch{return!1}})}function j0(e){const n=O0(),t=Gr(e);return t.transform!=="none"||t.perspective!=="none"||(t.containerType?t.containerType!=="normal":!1)||!n&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!n&&(t.filter?t.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(t.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(t.contain||"").includes(r))}function lee(e){let n=Js(e);for(;Po(n)&&!Pl(n);){if(Mg(n))return null;if(j0(n))return n;n=Js(n)}return null}function O0(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Pl(e){return["html","body","#document"].includes(Nl(e))}function Gr(e){return or(e).getComputedStyle(e)}function Ag(e){return bo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Js(e){if(Nl(e)==="html")return e;const n=e.assignedSlot||e.parentNode||VI(e)&&e.host||us(e);return VI(n)?n.host:n}function rO(e){const n=Js(e);return Pl(n)?e.ownerDocument?e.ownerDocument.body:e.body:Po(n)&&Vu(n)?n:rO(n)}function Su(e,n,t){var r;n===void 0&&(n=[]),t===void 0&&(t=!0);const o=rO(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),i=or(o);return s?n.concat(i,i.visualViewport||[],Vu(o)?o:[],i.frameElement&&t?Su(i.frameElement):[]):n.concat(o,Su(o,[],t))}function oO(e){const n=Gr(e);let t=parseFloat(n.width)||0,r=parseFloat(n.height)||0;const o=Po(e),s=o?e.offsetWidth:t,i=o?e.offsetHeight:r,a=Pf(t)!==s||Pf(r)!==i;return a&&(t=s,r=i),{width:t,height:r,$:a}}function D0(e){return bo(e)?e:e.contextElement}function sl(e){const n=D0(e);if(!Po(n))return Zs(1);const t=n.getBoundingClientRect(),{width:r,height:o,$:s}=oO(n);let i=(s?Pf(t.width):t.width)/r,a=(s?Pf(t.height):t.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!a||!Number.isFinite(a))&&(a=1),{x:i,y:a}}const cee=Zs(0);function sO(e){const n=or(e);return!O0()||!n.visualViewport?cee:{x:n.visualViewport.offsetLeft,y:n.visualViewport.offsetTop}}function uee(e,n,t){return n===void 0&&(n=!1),!t||n&&t!==or(e)?!1:n}function Zi(e,n,t,r){n===void 0&&(n=!1),t===void 0&&(t=!1);const o=e.getBoundingClientRect(),s=D0(e);let i=Zs(1);n&&(r?bo(r)&&(i=sl(r)):i=sl(e));const a=uee(s,t,r)?sO(s):Zs(0);let l=(o.left+a.x)/i.x,c=(o.top+a.y)/i.y,u=o.width/i.x,h=o.height/i.y;if(s){const p=or(s),f=r&&bo(r)?or(r):r;let y=p,m=y.frameElement;for(;m&&r&&f!==y;){const x=sl(m),S=m.getBoundingClientRect(),v=Gr(m),b=S.left+(m.clientLeft+parseFloat(v.paddingLeft))*x.x,E=S.top+(m.clientTop+parseFloat(v.paddingTop))*x.y;l*=x.x,c*=x.y,u*=x.x,h*=x.y,l+=b,c+=E,y=or(m),m=y.frameElement}}return If({width:u,height:h,x:l,y:c})}function dee(e){let{elements:n,rect:t,offsetParent:r,strategy:o}=e;const s=o==="fixed",i=us(r),a=n?Mg(n.floating):!1;if(r===i||a&&s)return t;let l={scrollLeft:0,scrollTop:0},c=Zs(1);const u=Zs(0),h=Po(r);if((h||!h&&!s)&&((Nl(r)!=="body"||Vu(i))&&(l=Ag(r)),Po(r))){const p=Zi(r);c=sl(r),u.x=p.x+r.clientLeft,u.y=p.y+r.clientTop}return{width:t.width*c.x,height:t.height*c.y,x:t.x*c.x-l.scrollLeft*c.x+u.x,y:t.y*c.y-l.scrollTop*c.y+u.y}}function hee(e){return Array.from(e.getClientRects())}function iO(e){return Zi(us(e)).left+Ag(e).scrollLeft}function pee(e){const n=us(e),t=Ag(e),r=e.ownerDocument.body,o=Zn(n.scrollWidth,n.clientWidth,r.scrollWidth,r.clientWidth),s=Zn(n.scrollHeight,n.clientHeight,r.scrollHeight,r.clientHeight);let i=-t.scrollLeft+iO(e);const a=-t.scrollTop;return Gr(r).direction==="rtl"&&(i+=Zn(n.clientWidth,r.clientWidth)-o),{width:o,height:s,x:i,y:a}}function fee(e,n){const t=or(e),r=us(e),o=t.visualViewport;let s=r.clientWidth,i=r.clientHeight,a=0,l=0;if(o){s=o.width,i=o.height;const c=O0();(!c||c&&n==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:s,height:i,x:a,y:l}}function gee(e,n){const t=Zi(e,!0,n==="fixed"),r=t.top+e.clientTop,o=t.left+e.clientLeft,s=Po(e)?sl(e):Zs(1),i=e.clientWidth*s.x,a=e.clientHeight*s.y,l=o*s.x,c=r*s.y;return{width:i,height:a,x:l,y:c}}function YI(e,n,t){let r;if(n==="viewport")r=fee(e,t);else if(n==="document")r=pee(us(e));else if(bo(n))r=gee(n,t);else{const o=sO(e);r={...n,x:n.x-o.x,y:n.y-o.y}}return If(r)}function aO(e,n){const t=Js(e);return t===n||!bo(t)||Pl(t)?!1:Gr(t).position==="fixed"||aO(t,n)}function mee(e,n){const t=n.get(e);if(t)return t;let r=Su(e,[],!1).filter(a=>bo(a)&&Nl(a)!=="body"),o=null;const s=Gr(e).position==="fixed";let i=s?Js(e):e;for(;bo(i)&&!Pl(i);){const a=Gr(i),l=j0(i);!l&&a.position==="fixed"&&(o=null),(s?!l&&!o:!l&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Vu(i)&&!l&&aO(e,i))?r=r.filter(u=>u!==i):o=a,i=Js(i)}return n.set(e,r),r}function yee(e){let{element:n,boundary:t,rootBoundary:r,strategy:o}=e;const i=[...t==="clippingAncestors"?Mg(n)?[]:mee(n,this._c):[].concat(t),r],a=i[0],l=i.reduce((c,u)=>{const h=YI(n,u,o);return c.top=Zn(h.top,c.top),c.right=ho(h.right,c.right),c.bottom=ho(h.bottom,c.bottom),c.left=Zn(h.left,c.left),c},YI(n,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function See(e){const{width:n,height:t}=oO(e);return{width:n,height:t}}function vee(e,n,t){const r=Po(n),o=us(n),s=t==="fixed",i=Zi(e,!0,s,n);let a={scrollLeft:0,scrollTop:0};const l=Zs(0);if(r||!r&&!s)if((Nl(n)!=="body"||Vu(o))&&(a=Ag(n)),r){const h=Zi(n,!0,s,n);l.x=h.x+n.clientLeft,l.y=h.y+n.clientTop}else o&&(l.x=iO(o));const c=i.left+a.scrollLeft-l.x,u=i.top+a.scrollTop-l.y;return{x:c,y:u,width:i.width,height:i.height}}function Ey(e){return Gr(e).position==="static"}function XI(e,n){return!Po(e)||Gr(e).position==="fixed"?null:n?n(e):e.offsetParent}function lO(e,n){const t=or(e);if(Mg(e))return t;if(!Po(e)){let o=Js(e);for(;o&&!Pl(o);){if(bo(o)&&!Ey(o))return o;o=Js(o)}return t}let r=XI(e,n);for(;r&&aee(r)&&Ey(r);)r=XI(r,n);return r&&Pl(r)&&Ey(r)&&!j0(r)?t:r||lee(e)||t}const xee=async function(e){const n=this.getOffsetParent||lO,t=this.getDimensions,r=await t(e.floating);return{reference:vee(e.reference,await n(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function wee(e){return Gr(e).direction==="rtl"}const bee={convertOffsetParentRelativeRectToViewportRelativeRect:dee,getDocumentElement:us,getClippingRect:yee,getOffsetParent:lO,getElementRects:xee,getClientRects:hee,getDimensions:See,getScale:sl,isElement:bo,isRTL:wee};function Pee(e,n){let t=null,r;const o=us(e);function s(){var a;clearTimeout(r),(a=t)==null||a.disconnect(),t=null}function i(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),s();const{left:c,top:u,width:h,height:p}=e.getBoundingClientRect();if(a||n(),!h||!p)return;const f=lh(u),y=lh(o.clientWidth-(c+h)),m=lh(o.clientHeight-(u+p)),x=lh(c),v={rootMargin:-f+"px "+-y+"px "+-m+"px "+-x+"px",threshold:Zn(0,ho(1,l))||1};let b=!0;function E(k){const C=k[0].intersectionRatio;if(C!==l){if(!b)return i();C?i(!1,C):r=setTimeout(()=>{i(!1,1e-7)},1e3)}b=!1}try{t=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{t=new IntersectionObserver(E,v)}t.observe(e)}return i(!0),s}function Cee(e,n,t,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,c=D0(e),u=o||s?[...c?Su(c):[],...Su(n)]:[];u.forEach(S=>{o&&S.addEventListener("scroll",t,{passive:!0}),s&&S.addEventListener("resize",t)});const h=c&&a?Pee(c,t):null;let p=-1,f=null;i&&(f=new ResizeObserver(S=>{let[v]=S;v&&v.target===c&&f&&(f.unobserve(n),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var b;(b=f)==null||b.observe(n)})),t()}),c&&!l&&f.observe(c),f.observe(n));let y,m=l?Zi(e):null;l&&x();function x(){const S=Zi(e);m&&(S.x!==m.x||S.y!==m.y||S.width!==m.width||S.height!==m.height)&&t(),m=S,y=requestAnimationFrame(x)}return t(),()=>{var S;u.forEach(v=>{o&&v.removeEventListener("scroll",t),s&&v.removeEventListener("resize",t)}),h==null||h(),(S=f)==null||S.disconnect(),f=null,l&&cancelAnimationFrame(y)}}const Iee=ree,Eee=oee,kee=eee,_ee=iee,Tee=tee,qI=JJ,Mee=see,Aee=(e,n,t)=>{const r=new Map,o={platform:bee,...t},s={...o.platform,_c:r};return QJ(e,n,{...o,platform:s})};var fp=typeof document<"u"?P.useLayoutEffect:P.useEffect;function Ef(e,n){if(e===n)return!0;if(typeof e!=typeof n)return!1;if(typeof e=="function"&&e.toString()===n.toString())return!0;let t,r,o;if(e&&n&&typeof e=="object"){if(Array.isArray(e)){if(t=e.length,t!==n.length)return!1;for(r=t;r--!==0;)if(!Ef(e[r],n[r]))return!1;return!0}if(o=Object.keys(e),t=o.length,t!==Object.keys(n).length)return!1;for(r=t;r--!==0;)if(!{}.hasOwnProperty.call(n,o[r]))return!1;for(r=t;r--!==0;){const s=o[r];if(!(s==="_owner"&&e.$$typeof)&&!Ef(e[s],n[s]))return!1}return!0}return e!==e&&n!==n}function cO(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ZI(e,n){const t=cO(e);return Math.round(n*t)/t}function QI(e){const n=P.useRef(e);return fp(()=>{n.current=e}),n}function jee(e){e===void 0&&(e={});const{placement:n="bottom",strategy:t="absolute",middleware:r=[],platform:o,elements:{reference:s,floating:i}={},transform:a=!0,whileElementsMounted:l,open:c}=e,[u,h]=P.useState({x:0,y:0,strategy:t,placement:n,middlewareData:{},isPositioned:!1}),[p,f]=P.useState(r);Ef(p,r)||f(r);const[y,m]=P.useState(null),[x,S]=P.useState(null),v=P.useCallback(K=>{K!==C.current&&(C.current=K,m(K))},[]),b=P.useCallback(K=>{K!==I.current&&(I.current=K,S(K))},[]),E=s||y,k=i||x,C=P.useRef(null),I=P.useRef(null),T=P.useRef(u),O=l!=null,_=QI(l),M=QI(o),L=P.useCallback(()=>{if(!C.current||!I.current)return;const K={placement:n,strategy:t,middleware:p};M.current&&(K.platform=M.current),Aee(C.current,I.current,K).then(z=>{const U={...z,isPositioned:!0};j.current&&!Ef(T.current,U)&&(T.current=U,aa.flushSync(()=>{h(U)}))})},[p,n,t,M]);fp(()=>{c===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,h(K=>({...K,isPositioned:!1})))},[c]);const j=P.useRef(!1);fp(()=>(j.current=!0,()=>{j.current=!1}),[]),fp(()=>{if(E&&(C.current=E),k&&(I.current=k),E&&k){if(_.current)return _.current(E,k,L);L()}},[E,k,L,_,O]);const R=P.useMemo(()=>({reference:C,floating:I,setReference:v,setFloating:b}),[v,b]),F=P.useMemo(()=>({reference:E,floating:k}),[E,k]),W=P.useMemo(()=>{const K={position:t,left:0,top:0};if(!F.floating)return K;const z=ZI(F.floating,u.x),U=ZI(F.floating,u.y);return a?{...K,transform:"translate("+z+"px, "+U+"px)",...cO(F.floating)>=1.5&&{willChange:"transform"}}:{position:t,left:z,top:U}},[t,a,F.floating,u.x,u.y]);return P.useMemo(()=>({...u,update:L,refs:R,elements:F,floatingStyles:W}),[u,L,R,F,W])}const Oee=e=>{function n(t){return{}.hasOwnProperty.call(t,"current")}return{name:"arrow",options:e,fn(t){const{element:r,padding:o}=typeof e=="function"?e(t):e;return r&&n(r)?r.current!=null?qI({element:r.current,padding:o}).fn(t):{}:r?qI({element:r,padding:o}).fn(t):{}}}},Dee=(e,n)=>({...Iee(e),options:[e,n]}),Ree=(e,n)=>({...Eee(e),options:[e,n]}),Lee=(e,n)=>({...Mee(e),options:[e,n]}),$ee=(e,n)=>({...kee(e),options:[e,n]}),Fee=(e,n)=>({..._ee(e),options:[e,n]}),Nee=(e,n)=>({...Tee(e),options:[e,n]}),zee=(e,n)=>({...Oee(e),options:[e,n]});var Bee="Arrow",uO=P.forwardRef((e,n)=>{const{children:t,width:r=10,height:o=5,...s}=e;return d.jsx(Ce.svg,{...s,ref:n,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?t:d.jsx("polygon",{points:"0,0 30,0 15,10"})})});uO.displayName=Bee;var Uee=uO;function dO(e){const[n,t]=P.useState(void 0);return Xs(()=>{if(e){t({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const s=o[0];let i,a;if("borderBoxSize"in s){const l=s.borderBoxSize,c=Array.isArray(l)?l[0]:l;i=c.inlineSize,a=c.blockSize}else i=e.offsetWidth,a=e.offsetHeight;t({width:i,height:a})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else t(void 0)},[e]),n}var R0="Popper",[hO,jg]=ko(R0),[Hee,pO]=hO(R0),fO=e=>{const{__scopePopper:n,children:t}=e,[r,o]=P.useState(null);return d.jsx(Hee,{scope:n,anchor:r,onAnchorChange:o,children:t})};fO.displayName=R0;var gO="PopperAnchor",mO=P.forwardRef((e,n)=>{const{__scopePopper:t,virtualRef:r,...o}=e,s=pO(gO,t),i=P.useRef(null),a=Ye(n,i);return P.useEffect(()=>{s.onAnchorChange((r==null?void 0:r.current)||i.current)}),r?null:d.jsx(Ce.div,{...o,ref:a})});mO.displayName=gO;var L0="PopperContent",[Kee,Wee]=hO(L0),yO=P.forwardRef((e,n)=>{var je,et,Ae,at,Ne,Gn;const{__scopePopper:t,side:r="bottom",sideOffset:o=0,align:s="center",alignOffset:i=0,arrowPadding:a=0,avoidCollisions:l=!0,collisionBoundary:c=[],collisionPadding:u=0,sticky:h="partial",hideWhenDetached:p=!1,updatePositionStrategy:f="optimized",onPlaced:y,...m}=e,x=pO(L0,t),[S,v]=P.useState(null),b=Ye(n,Rt=>v(Rt)),[E,k]=P.useState(null),C=dO(E),I=(C==null?void 0:C.width)??0,T=(C==null?void 0:C.height)??0,O=r+(s!=="center"?"-"+s:""),_=typeof u=="number"?u:{top:0,right:0,bottom:0,left:0,...u},M=Array.isArray(c)?c:[c],L=M.length>0,j={padding:_,boundary:M.filter(Vee),altBoundary:L},{refs:R,floatingStyles:F,placement:W,isPositioned:K,middlewareData:z}=jee({strategy:"fixed",placement:O,whileElementsMounted:(...Rt)=>Cee(...Rt,{animationFrame:f==="always"}),elements:{reference:x.anchor},middleware:[Dee({mainAxis:o+T,alignmentAxis:i}),l&&Ree({mainAxis:!0,crossAxis:!1,limiter:h==="partial"?Lee():void 0,...j}),l&&$ee({...j}),Fee({...j,apply:({elements:Rt,rects:Cn,availableWidth:St,availableHeight:Xt})=>{const{width:_o,height:Bl}=Cn.reference,ps=Rt.floating.style;ps.setProperty("--radix-popper-available-width",`${St}px`),ps.setProperty("--radix-popper-available-height",`${Xt}px`),ps.setProperty("--radix-popper-anchor-width",`${_o}px`),ps.setProperty("--radix-popper-anchor-height",`${Bl}px`)}}),E&&zee({element:E,padding:a}),Yee({arrowWidth:I,arrowHeight:T}),p&&Nee({strategy:"referenceHidden",...j})]}),[U,X]=xO(W),J=Vt(y);Xs(()=>{K&&(J==null||J())},[K,J]);const le=(je=z.arrow)==null?void 0:je.x,ye=(et=z.arrow)==null?void 0:et.y,Me=((Ae=z.arrow)==null?void 0:Ae.centerOffset)!==0,[ae,Ue]=P.useState();return Xs(()=>{S&&Ue(window.getComputedStyle(S).zIndex)},[S]),d.jsx("div",{ref:R.setFloating,"data-radix-popper-content-wrapper":"",style:{...F,transform:K?F.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ae,"--radix-popper-transform-origin":[(at=z.transformOrigin)==null?void 0:at.x,(Ne=z.transformOrigin)==null?void 0:Ne.y].join(" "),...((Gn=z.hide)==null?void 0:Gn.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:d.jsx(Kee,{scope:t,placedSide:U,onArrowChange:k,arrowX:le,arrowY:ye,shouldHideArrow:Me,children:d.jsx(Ce.div,{"data-side":U,"data-align":X,...m,ref:b,style:{...m.style,animation:K?void 0:"none"}})})})});yO.displayName=L0;var SO="PopperArrow",Gee={top:"bottom",right:"left",bottom:"top",left:"right"},vO=P.forwardRef(function(n,t){const{__scopePopper:r,...o}=n,s=Wee(SO,r),i=Gee[s.placedSide];return d.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:d.jsx(Uee,{...o,ref:t,style:{...o.style,display:"block"}})})});vO.displayName=SO;function Vee(e){return e!==null}var Yee=e=>({name:"transformOrigin",options:e,fn(n){var x,S,v;const{placement:t,rects:r,middlewareData:o}=n,i=((x=o.arrow)==null?void 0:x.centerOffset)!==0,a=i?0:e.arrowWidth,l=i?0:e.arrowHeight,[c,u]=xO(t),h={start:"0%",center:"50%",end:"100%"}[u],p=(((S=o.arrow)==null?void 0:S.x)??0)+a/2,f=(((v=o.arrow)==null?void 0:v.y)??0)+l/2;let y="",m="";return c==="bottom"?(y=i?h:`${p}px`,m=`${-l}px`):c==="top"?(y=i?h:`${p}px`,m=`${r.floating.height+l}px`):c==="right"?(y=`${-l}px`,m=i?h:`${f}px`):c==="left"&&(y=`${r.floating.width+l}px`,m=i?h:`${f}px`),{data:{x:y,y:m}}}});function xO(e){const[n,t="center"]=e.split("-");return[n,t]}var $0=fO,F0=mO,wO=yO,bO=vO,N0="Popover",[PO,Jie]=ko(N0,[jg]),Yu=jg(),[Xee,ci]=PO(N0),CO=e=>{const{__scopePopover:n,children:t,open:r,defaultOpen:o,onOpenChange:s,modal:i=!1}=e,a=Yu(n),l=P.useRef(null),[c,u]=P.useState(!1),[h=!1,p]=li({prop:r,defaultProp:o,onChange:s});return d.jsx($0,{...a,children:d.jsx(Xee,{scope:n,contentId:Xo(),triggerRef:l,open:h,onOpenChange:p,onOpenToggle:P.useCallback(()=>p(f=>!f),[p]),hasCustomAnchor:c,onCustomAnchorAdd:P.useCallback(()=>u(!0),[]),onCustomAnchorRemove:P.useCallback(()=>u(!1),[]),modal:i,children:t})})};CO.displayName=N0;var IO="PopoverAnchor",qee=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(IO,t),s=Yu(t),{onCustomAnchorAdd:i,onCustomAnchorRemove:a}=o;return P.useEffect(()=>(i(),()=>a()),[i,a]),d.jsx(F0,{...s,...r,ref:n})});qee.displayName=IO;var EO="PopoverTrigger",kO=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(EO,t),s=Yu(t),i=Ye(n,o.triggerRef),a=d.jsx(Ce.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":jO(o.open),...r,ref:i,onClick:re(e.onClick,o.onOpenToggle)});return o.hasCustomAnchor?a:d.jsx(F0,{asChild:!0,...s,children:a})});kO.displayName=EO;var z0="PopoverPortal",[Zee,Qee]=PO(z0,{forceMount:void 0}),_O=e=>{const{__scopePopover:n,forceMount:t,children:r,container:o}=e,s=ci(z0,n);return d.jsx(Zee,{scope:n,forceMount:t,children:d.jsx(Xr,{present:t||s.open,children:d.jsx(Gu,{asChild:!0,container:o,children:r})})})};_O.displayName=z0;var Cl="PopoverContent",TO=P.forwardRef((e,n)=>{const t=Qee(Cl,e.__scopePopover),{forceMount:r=t.forceMount,...o}=e,s=ci(Cl,e.__scopePopover);return d.jsx(Xr,{present:r||s.open,children:s.modal?d.jsx(Jee,{...o,ref:n}):d.jsx(ete,{...o,ref:n})})});TO.displayName=Cl;var Jee=P.forwardRef((e,n)=>{const t=ci(Cl,e.__scopePopover),r=P.useRef(null),o=Ye(n,r),s=P.useRef(!1);return P.useEffect(()=>{const i=r.current;if(i)return y0(i)},[]),d.jsx(bg,{as:Xi,allowPinchZoom:!0,children:d.jsx(MO,{...e,ref:o,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:re(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),s.current||(a=t.triggerRef.current)==null||a.focus()}),onPointerDownOutside:re(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0,c=a.button===2||l;s.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:re(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),ete=P.forwardRef((e,n)=>{const t=ci(Cl,e.__scopePopover),r=P.useRef(!1),o=P.useRef(!1);return d.jsx(MO,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{var i,a;(i=e.onCloseAutoFocus)==null||i.call(e,s),s.defaultPrevented||(r.current||(a=t.triggerRef.current)==null||a.focus(),s.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:s=>{var l,c;(l=e.onInteractOutside)==null||l.call(e,s),s.defaultPrevented||(r.current=!0,s.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const i=s.target;((c=t.triggerRef.current)==null?void 0:c.contains(i))&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&o.current&&s.preventDefault()}})}),MO=P.forwardRef((e,n)=>{const{__scopePopover:t,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:c,onInteractOutside:u,...h}=e,p=ci(Cl,t),f=Yu(t);return m0(),d.jsx(xg,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:d.jsx(Wu,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:u,onEscapeKeyDown:a,onPointerDownOutside:l,onFocusOutside:c,onDismiss:()=>p.onOpenChange(!1),children:d.jsx(wO,{"data-state":jO(p.open),role:"dialog",id:p.contentId,...f,...h,ref:n,style:{...h.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),AO="PopoverClose",tte=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=ci(AO,t);return d.jsx(Ce.button,{type:"button",...r,ref:n,onClick:re(e.onClick,()=>o.onOpenChange(!1))})});tte.displayName=AO;var nte="PopoverArrow",rte=P.forwardRef((e,n)=>{const{__scopePopover:t,...r}=e,o=Yu(t);return d.jsx(bO,{...o,...r,ref:n})});rte.displayName=nte;function jO(e){return e?"open":"closed"}var ote=CO,ste=kO,ite=_O,ate=TO;function ui(e,n){const t=B(),r=P.useRef(!1),o=Zr(),s=P.useCallback(a=>{r.current=a,t.batch(()=>{a?(t.complete(),t.addOpenMenu(e)):t.updateInstanceState({openMenus:t.getOpenMenus().filter(l=>!l.startsWith(e))}),n==null||n(a)})},[t,e,n]),i=G("is menu open",()=>t.getOpenMenus().includes(e),[t,e]);return P.useEffect(()=>(r.current&&(o("open-menu",{source:"unknown",id:e}),t.addOpenMenu(e)),()=>{r.current&&(t.deleteOpenMenu(e),t.getOpenMenus().forEach(a=>{a.startsWith(e)&&(o("close-menu",{source:"unknown",id:e}),t.deleteOpenMenu(a))}),r.current=!1)}),[t,e,o]),[i,s]}function B0({id:e,children:n,onOpenChange:t,open:r}){const[o,s]=ui(e,t);return d.jsx(ote,{onOpenChange:s,open:r||o,children:d.jsx("div",{className:"tlui-popover",children:n})})}function U0({children:e}){return d.jsx(ste,{asChild:!0,dir:"ltr",children:e})}function H0({side:e,children:n,align:t="center",sideOffset:r=8,alignOffset:o=0}){const s=un();return d.jsx(ite,{container:s,children:d.jsx(ate,{className:"tlui-popover__content",side:e,sideOffset:r,align:t,alignOffset:o,dir:"ltr",children:n})})}const OO=P.createContext(null);function Og(){const e=P.useContext(OO);if(!e)throw new Error("useTldrawUiMenuContext must be used within a TldrawUiMenuContextProvider");return e}function _r({type:e,sourceId:n,children:t}){return d.jsx(OO.Provider,{value:{type:e,sourceId:n},children:t})}function lte(e){return e.getSelectedShapeIds().map(r=>e.getShape(r)).filter(r=>{if(!r)return!1;if(e.isShapeOfType(r,"arrow")){const o=An(e,r);if(o.start||o.end)return!1}return!0})}const DO=()=>{const e=B();return G("threeStackableItems",()=>lte(e).length>2,[e])},ds=()=>{const e=B();return G("isInSelectState",()=>e.isIn("select"),[e])},RO=()=>{const e=B();return G("allow group",()=>{const n=e.getSelectedShapes();if(n.length<2)return!1;for(const t of n)if(e.isShapeOfType(t,"arrow")){const r=An(e,t);if(r.start&&!n.some(o=>o.id===r.start.toId)||r.end&&!n.some(o=>o.id===r.end.toId))return!1}return!0},[e])},LO=()=>{const e=B();return G("allowUngroup",()=>e.getSelectedShapeIds().some(n=>{var t;return((t=e.getShape(n))==null?void 0:t.type)==="group"}),[e])},cte=typeof window<"u"&&"navigator"in window&&!!navigator.clipboard&&!!navigator.clipboard.read;function $O(e,n){const t=B();return G("selectedShapes",()=>t.getSelectedShapes().length>=e,[t,e,n])}function Pn(e,n){const t=B();return G("selectedShapes",()=>{const r=t.getSelectedShapes().filter(o=>!t.isShapeOrAncestorLocked(o)).length;return e===void 0?r:r>=e},[t])}function ute(){const e=B();return G("showAutoSizeToggle",()=>{const n=e.getSelectedShapes();return n.length===1&&e.isShapeOfType(n[0],"text")&&n[0].props.autoSize===!1},[e])}function FO(){const e=B();return G("hasLinkShapeSelected",()=>{const n=e.getOnlySelectedShape();return!!(n&&n.type!=="embed"&&"url"in n.props&&!n.isLocked)},[e])}function dte(){const e=B();return G("onlyFlippableShape",()=>{const n=e.getOnlySelectedShape();return n&&(e.isShapeOfType(n,"group")||e.isShapeOfType(n,"image")||e.isShapeOfType(n,"arrow")||e.isShapeOfType(n,"line")||e.isShapeOfType(n,"draw"))},[e])}function NO(){const e=B();return G("useCanRedo",()=>e.getCanRedo(),[e])}function zO(){const e=B();return G("useCanUndo",()=>e.getCanUndo(),[e])}var hte=P.createContext(void 0);function K0(e){const n=P.useContext(hte);return e||n||"ltr"}var ky="rovingFocusGroup.onEntryFocus",pte={bubbles:!1,cancelable:!0},Dg="RovingFocusGroup",[Gv,BO,fte]=Pg(Dg),[gte,UO]=ko(Dg,[fte]),[mte,yte]=gte(Dg),HO=P.forwardRef((e,n)=>d.jsx(Gv.Provider,{scope:e.__scopeRovingFocusGroup,children:d.jsx(Gv.Slot,{scope:e.__scopeRovingFocusGroup,children:d.jsx(Ste,{...e,ref:n})})}));HO.displayName=Dg;var Ste=P.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,orientation:r,loop:o=!1,dir:s,currentTabStopId:i,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:l,onEntryFocus:c,preventScrollOnEntryFocus:u=!1,...h}=e,p=P.useRef(null),f=Ye(n,p),y=K0(s),[m=null,x]=li({prop:i,defaultProp:a,onChange:l}),[S,v]=P.useState(!1),b=Vt(c),E=BO(t),k=P.useRef(!1),[C,I]=P.useState(0);return P.useEffect(()=>{const T=p.current;if(T)return T.addEventListener(ky,b),()=>T.removeEventListener(ky,b)},[b]),d.jsx(mte,{scope:t,orientation:r,dir:y,loop:o,currentTabStopId:m,onItemFocus:P.useCallback(T=>x(T),[x]),onItemShiftTab:P.useCallback(()=>v(!0),[]),onFocusableItemAdd:P.useCallback(()=>I(T=>T+1),[]),onFocusableItemRemove:P.useCallback(()=>I(T=>T-1),[]),children:d.jsx(Ce.div,{tabIndex:S||C===0?-1:0,"data-orientation":r,...h,ref:f,style:{outline:"none",...e.style},onMouseDown:re(e.onMouseDown,()=>{k.current=!0}),onFocus:re(e.onFocus,T=>{const O=!k.current;if(T.target===T.currentTarget&&O&&!S){const _=new CustomEvent(ky,pte);if(T.currentTarget.dispatchEvent(_),!_.defaultPrevented){const M=E().filter(W=>W.focusable),L=M.find(W=>W.active),j=M.find(W=>W.id===m),F=[L,j,...M].filter(Boolean).map(W=>W.ref.current);GO(F,u)}}k.current=!1}),onBlur:re(e.onBlur,()=>v(!1))})})}),KO="RovingFocusGroupItem",WO=P.forwardRef((e,n)=>{const{__scopeRovingFocusGroup:t,focusable:r=!0,active:o=!1,tabStopId:s,...i}=e,a=Xo(),l=s||a,c=yte(KO,t),u=c.currentTabStopId===l,h=BO(t),{onFocusableItemAdd:p,onFocusableItemRemove:f}=c;return P.useEffect(()=>{if(r)return p(),()=>f()},[r,p,f]),d.jsx(Gv.ItemSlot,{scope:t,id:l,focusable:r,active:o,children:d.jsx(Ce.span,{tabIndex:u?0:-1,"data-orientation":c.orientation,...i,ref:n,onMouseDown:re(e.onMouseDown,y=>{r?c.onItemFocus(l):y.preventDefault()}),onFocus:re(e.onFocus,()=>c.onItemFocus(l)),onKeyDown:re(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const m=wte(y,c.orientation,c.dir);if(m!==void 0){if(y.metaKey||y.ctrlKey||y.altKey||y.shiftKey)return;y.preventDefault();let S=h().filter(v=>v.focusable).map(v=>v.ref.current);if(m==="last")S.reverse();else if(m==="prev"||m==="next"){m==="prev"&&S.reverse();const v=S.indexOf(y.currentTarget);S=c.loop?bte(S,v+1):S.slice(v+1)}setTimeout(()=>GO(S))}})})})});WO.displayName=KO;var vte={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function xte(e,n){return n!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function wte(e,n,t){const r=xte(e.key,t);if(!(n==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(n==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return vte[r]}function GO(e,n=!1){const t=document.activeElement;for(const r of e)if(r===t||(r.focus({preventScroll:n}),document.activeElement!==t))return}function bte(e,n){return e.map((t,r)=>e[(n+r)%e.length])}var Pte=HO,Cte=WO,Vv=["Enter"," "],Ite=["ArrowDown","PageUp","Home"],VO=["ArrowUp","PageDown","End"],Ete=[...Ite,...VO],kte={ltr:[...Vv,"ArrowRight"],rtl:[...Vv,"ArrowLeft"]},_te={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Xu="Menu",[vu,Tte,Mte]=Pg(Xu),[ca,Rg]=ko(Xu,[Mte,jg,UO]),qu=jg(),YO=UO(),[XO,di]=ca(Xu),[Ate,Zu]=ca(Xu),qO=e=>{const{__scopeMenu:n,open:t=!1,children:r,dir:o,onOpenChange:s,modal:i=!0}=e,a=qu(n),[l,c]=P.useState(null),u=P.useRef(!1),h=Vt(s),p=K0(o);return P.useEffect(()=>{const f=()=>{u.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>u.current=!1;return document.addEventListener("keydown",f,{capture:!0}),()=>{document.removeEventListener("keydown",f,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),d.jsx($0,{...a,children:d.jsx(XO,{scope:n,open:t,onOpenChange:h,content:l,onContentChange:c,children:d.jsx(Ate,{scope:n,onClose:P.useCallback(()=>h(!1),[h]),isUsingKeyboardRef:u,dir:p,modal:i,children:r})})})};qO.displayName=Xu;var jte="MenuAnchor",W0=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e,o=qu(t);return d.jsx(F0,{...o,...r,ref:n})});W0.displayName=jte;var G0="MenuPortal",[Ote,ZO]=ca(G0,{forceMount:void 0}),QO=e=>{const{__scopeMenu:n,forceMount:t,children:r,container:o}=e,s=di(G0,n);return d.jsx(Ote,{scope:n,forceMount:t,children:d.jsx(Xr,{present:t||s.open,children:d.jsx(Gu,{asChild:!0,container:o,children:r})})})};QO.displayName=G0;var Ir="MenuContent",[Dte,V0]=ca(Ir),JO=P.forwardRef((e,n)=>{const t=ZO(Ir,e.__scopeMenu),{forceMount:r=t.forceMount,...o}=e,s=di(Ir,e.__scopeMenu),i=Zu(Ir,e.__scopeMenu);return d.jsx(vu.Provider,{scope:e.__scopeMenu,children:d.jsx(Xr,{present:r||s.open,children:d.jsx(vu.Slot,{scope:e.__scopeMenu,children:i.modal?d.jsx(Rte,{...o,ref:n}):d.jsx(Lte,{...o,ref:n})})})})}),Rte=P.forwardRef((e,n)=>{const t=di(Ir,e.__scopeMenu),r=P.useRef(null),o=Ye(n,r);return P.useEffect(()=>{const s=r.current;if(s)return y0(s)},[]),d.jsx(Y0,{...e,ref:o,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:re(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),Lte=P.forwardRef((e,n)=>{const t=di(Ir,e.__scopeMenu);return d.jsx(Y0,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Y0=P.forwardRef((e,n)=>{const{__scopeMenu:t,loop:r=!1,trapFocus:o,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEntryFocus:l,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:p,onDismiss:f,disableOutsideScroll:y,...m}=e,x=di(Ir,t),S=Zu(Ir,t),v=qu(t),b=YO(t),E=Tte(t),[k,C]=P.useState(null),I=P.useRef(null),T=Ye(n,I,x.onContentChange),O=P.useRef(0),_=P.useRef(""),M=P.useRef(0),L=P.useRef(null),j=P.useRef("right"),R=P.useRef(0),F=y?bg:P.Fragment,W=y?{as:Xi,allowPinchZoom:!0}:void 0,K=U=>{var je,et;const X=_.current+U,J=E().filter(Ae=>!Ae.disabled),le=document.activeElement,ye=(je=J.find(Ae=>Ae.ref.current===le))==null?void 0:je.textValue,Me=J.map(Ae=>Ae.textValue),ae=Yte(Me,X,ye),Ue=(et=J.find(Ae=>Ae.textValue===ae))==null?void 0:et.ref.current;(function Ae(at){_.current=at,window.clearTimeout(O.current),at!==""&&(O.current=window.setTimeout(()=>Ae(""),1e3))})(X),Ue&&setTimeout(()=>Ue.focus())};P.useEffect(()=>()=>window.clearTimeout(O.current),[]),m0();const z=P.useCallback(U=>{var J,le;return j.current===((J=L.current)==null?void 0:J.side)&&qte(U,(le=L.current)==null?void 0:le.area)},[]);return d.jsx(Dte,{scope:t,searchRef:_,onItemEnter:P.useCallback(U=>{z(U)&&U.preventDefault()},[z]),onItemLeave:P.useCallback(U=>{var X;z(U)||((X=I.current)==null||X.focus(),C(null))},[z]),onTriggerLeave:P.useCallback(U=>{z(U)&&U.preventDefault()},[z]),pointerGraceTimerRef:M,onPointerGraceIntentChange:P.useCallback(U=>{L.current=U},[]),children:d.jsx(F,{...W,children:d.jsx(xg,{asChild:!0,trapped:o,onMountAutoFocus:re(s,U=>{var X;U.preventDefault(),(X=I.current)==null||X.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:d.jsx(Wu,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:h,onInteractOutside:p,onDismiss:f,children:d.jsx(Pte,{asChild:!0,...b,dir:S.dir,orientation:"vertical",loop:r,currentTabStopId:k,onCurrentTabStopIdChange:C,onEntryFocus:re(l,U=>{S.isUsingKeyboardRef.current||U.preventDefault()}),preventScrollOnEntryFocus:!0,children:d.jsx(wO,{role:"menu","aria-orientation":"vertical","data-state":mD(x.open),"data-radix-menu-content":"",dir:S.dir,...v,...m,ref:T,style:{outline:"none",...m.style},onKeyDown:re(m.onKeyDown,U=>{const J=U.target.closest("[data-radix-menu-content]")===U.currentTarget,le=U.ctrlKey||U.altKey||U.metaKey,ye=U.key.length===1;J&&(U.key==="Tab"&&U.preventDefault(),!le&&ye&&K(U.key));const Me=I.current;if(U.target!==Me||!Ete.includes(U.key))return;U.preventDefault();const Ue=E().filter(je=>!je.disabled).map(je=>je.ref.current);VO.includes(U.key)&&Ue.reverse(),Gte(Ue)}),onBlur:re(e.onBlur,U=>{U.currentTarget.contains(U.target)||(window.clearTimeout(O.current),_.current="")}),onPointerMove:re(e.onPointerMove,xu(U=>{const X=U.target,J=R.current!==U.clientX;if(U.currentTarget.contains(X)&&J){const le=U.clientX>R.current?"right":"left";j.current=le,R.current=U.clientX}}))})})})})})})});JO.displayName=Ir;var $te="MenuGroup",X0=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{role:"group",...r,ref:n})});X0.displayName=$te;var Fte="MenuLabel",eD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{...r,ref:n})});eD.displayName=Fte;var kf="MenuItem",JI="menu.itemSelect",Lg=P.forwardRef((e,n)=>{const{disabled:t=!1,onSelect:r,...o}=e,s=P.useRef(null),i=Zu(kf,e.__scopeMenu),a=V0(kf,e.__scopeMenu),l=Ye(n,s),c=P.useRef(!1),u=()=>{const h=s.current;if(!t&&h){const p=new CustomEvent(JI,{bubbles:!0,cancelable:!0});h.addEventListener(JI,f=>r==null?void 0:r(f),{once:!0}),g0(h,p),p.defaultPrevented?c.current=!1:i.onClose()}};return d.jsx(tD,{...o,ref:l,disabled:t,onClick:re(e.onClick,u),onPointerDown:h=>{var p;(p=e.onPointerDown)==null||p.call(e,h),c.current=!0},onPointerUp:re(e.onPointerUp,h=>{var p;c.current||(p=h.currentTarget)==null||p.click()}),onKeyDown:re(e.onKeyDown,h=>{const p=a.searchRef.current!=="";t||p&&h.key===" "||Vv.includes(h.key)&&(h.currentTarget.click(),h.preventDefault())})})});Lg.displayName=kf;var tD=P.forwardRef((e,n)=>{const{__scopeMenu:t,disabled:r=!1,textValue:o,...s}=e,i=V0(kf,t),a=YO(t),l=P.useRef(null),c=Ye(n,l),[u,h]=P.useState(!1),[p,f]=P.useState("");return P.useEffect(()=>{const y=l.current;y&&f((y.textContent??"").trim())},[s.children]),d.jsx(vu.ItemSlot,{scope:t,disabled:r,textValue:o??p,children:d.jsx(Cte,{asChild:!0,...a,focusable:!r,children:d.jsx(Ce.div,{role:"menuitem","data-highlighted":u?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...s,ref:c,onPointerMove:re(e.onPointerMove,xu(y=>{r?i.onItemLeave(y):(i.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:re(e.onPointerLeave,xu(y=>i.onItemLeave(y))),onFocus:re(e.onFocus,()=>h(!0)),onBlur:re(e.onBlur,()=>h(!1))})})})}),Nte="MenuCheckboxItem",nD=P.forwardRef((e,n)=>{const{checked:t=!1,onCheckedChange:r,...o}=e;return d.jsx(aD,{scope:e.__scopeMenu,checked:t,children:d.jsx(Lg,{role:"menuitemcheckbox","aria-checked":_f(t)?"mixed":t,...o,ref:n,"data-state":Q0(t),onSelect:re(o.onSelect,()=>r==null?void 0:r(_f(t)?!0:!t),{checkForDefaultPrevented:!1})})})});nD.displayName=Nte;var rD="MenuRadioGroup",[zte,Bte]=ca(rD,{value:void 0,onValueChange:()=>{}}),oD=P.forwardRef((e,n)=>{const{value:t,onValueChange:r,...o}=e,s=Vt(r);return d.jsx(zte,{scope:e.__scopeMenu,value:t,onValueChange:s,children:d.jsx(X0,{...o,ref:n})})});oD.displayName=rD;var sD="MenuRadioItem",iD=P.forwardRef((e,n)=>{const{value:t,...r}=e,o=Bte(sD,e.__scopeMenu),s=t===o.value;return d.jsx(aD,{scope:e.__scopeMenu,checked:s,children:d.jsx(Lg,{role:"menuitemradio","aria-checked":s,...r,ref:n,"data-state":Q0(s),onSelect:re(r.onSelect,()=>{var i;return(i=o.onValueChange)==null?void 0:i.call(o,t)},{checkForDefaultPrevented:!1})})})});iD.displayName=sD;var q0="MenuItemIndicator",[aD,Ute]=ca(q0,{checked:!1}),lD=P.forwardRef((e,n)=>{const{__scopeMenu:t,forceMount:r,...o}=e,s=Ute(q0,t);return d.jsx(Xr,{present:r||_f(s.checked)||s.checked===!0,children:d.jsx(Ce.span,{...o,ref:n,"data-state":Q0(s.checked)})})});lD.displayName=q0;var Hte="MenuSeparator",cD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e;return d.jsx(Ce.div,{role:"separator","aria-orientation":"horizontal",...r,ref:n})});cD.displayName=Hte;var Kte="MenuArrow",uD=P.forwardRef((e,n)=>{const{__scopeMenu:t,...r}=e,o=qu(t);return d.jsx(bO,{...o,...r,ref:n})});uD.displayName=Kte;var Z0="MenuSub",[Wte,dD]=ca(Z0),hD=e=>{const{__scopeMenu:n,children:t,open:r=!1,onOpenChange:o}=e,s=di(Z0,n),i=qu(n),[a,l]=P.useState(null),[c,u]=P.useState(null),h=Vt(o);return P.useEffect(()=>(s.open===!1&&h(!1),()=>h(!1)),[s.open,h]),d.jsx($0,{...i,children:d.jsx(XO,{scope:n,open:r,onOpenChange:h,content:c,onContentChange:u,children:d.jsx(Wte,{scope:n,contentId:Xo(),triggerId:Xo(),trigger:a,onTriggerChange:l,children:t})})})};hD.displayName=Z0;var Ec="MenuSubTrigger",pD=P.forwardRef((e,n)=>{const t=di(Ec,e.__scopeMenu),r=Zu(Ec,e.__scopeMenu),o=dD(Ec,e.__scopeMenu),s=V0(Ec,e.__scopeMenu),i=P.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:l}=s,c={__scopeMenu:e.__scopeMenu},u=P.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return P.useEffect(()=>u,[u]),P.useEffect(()=>{const h=a.current;return()=>{window.clearTimeout(h),l(null)}},[a,l]),d.jsx(W0,{asChild:!0,...c,children:d.jsx(tD,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":o.contentId,"data-state":mD(t.open),...e,ref:vg(n,o.onTriggerChange),onClick:h=>{var p;(p=e.onClick)==null||p.call(e,h),!(e.disabled||h.defaultPrevented)&&(h.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:re(e.onPointerMove,xu(h=>{s.onItemEnter(h),!h.defaultPrevented&&!e.disabled&&!t.open&&!i.current&&(s.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{t.onOpenChange(!0),u()},100))})),onPointerLeave:re(e.onPointerLeave,xu(h=>{var f,y;u();const p=(f=t.content)==null?void 0:f.getBoundingClientRect();if(p){const m=(y=t.content)==null?void 0:y.dataset.side,x=m==="right",S=x?-5:5,v=p[x?"left":"right"],b=p[x?"right":"left"];s.onPointerGraceIntentChange({area:[{x:h.clientX+S,y:h.clientY},{x:v,y:p.top},{x:b,y:p.top},{x:b,y:p.bottom},{x:v,y:p.bottom}],side:m}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(h),h.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:re(e.onKeyDown,h=>{var f;const p=s.searchRef.current!=="";e.disabled||p&&h.key===" "||kte[r.dir].includes(h.key)&&(t.onOpenChange(!0),(f=t.content)==null||f.focus(),h.preventDefault())})})})});pD.displayName=Ec;var fD="MenuSubContent",gD=P.forwardRef((e,n)=>{const t=ZO(Ir,e.__scopeMenu),{forceMount:r=t.forceMount,...o}=e,s=di(Ir,e.__scopeMenu),i=Zu(Ir,e.__scopeMenu),a=dD(fD,e.__scopeMenu),l=P.useRef(null),c=Ye(n,l);return d.jsx(vu.Provider,{scope:e.__scopeMenu,children:d.jsx(Xr,{present:r||s.open,children:d.jsx(vu.Slot,{scope:e.__scopeMenu,children:d.jsx(Y0,{id:a.contentId,"aria-labelledby":a.triggerId,...o,ref:c,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:u=>{var h;i.isUsingKeyboardRef.current&&((h=l.current)==null||h.focus()),u.preventDefault()},onCloseAutoFocus:u=>u.preventDefault(),onFocusOutside:re(e.onFocusOutside,u=>{u.target!==a.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:re(e.onEscapeKeyDown,u=>{i.onClose(),u.preventDefault()}),onKeyDown:re(e.onKeyDown,u=>{var f;const h=u.currentTarget.contains(u.target),p=_te[i.dir].includes(u.key);h&&p&&(s.onOpenChange(!1),(f=a.trigger)==null||f.focus(),u.preventDefault())})})})})})});gD.displayName=fD;function mD(e){return e?"open":"closed"}function _f(e){return e==="indeterminate"}function Q0(e){return _f(e)?"indeterminate":e?"checked":"unchecked"}function Gte(e){const n=document.activeElement;for(const t of e)if(t===n||(t.focus(),document.activeElement!==n))return}function Vte(e,n){return e.map((t,r)=>e[(n+r)%e.length])}function Yte(e,n,t){const o=n.length>1&&Array.from(n).every(c=>c===n[0])?n[0]:n,s=t?e.indexOf(t):-1;let i=Vte(e,Math.max(s,0));o.length===1&&(i=i.filter(c=>c!==t));const l=i.find(c=>c.toLowerCase().startsWith(o.toLowerCase()));return l!==t?l:void 0}function Xte(e,n){const{x:t,y:r}=e;let o=!1;for(let s=0,i=n.length-1;s<n.length;i=s++){const a=n[s].x,l=n[s].y,c=n[i].x,u=n[i].y;l>r!=u>r&&t<(c-a)*(r-l)/(u-l)+a&&(o=!o)}return o}function qte(e,n){if(!n)return!1;const t={x:e.clientX,y:e.clientY};return Xte(t,n)}function xu(e){return n=>n.pointerType==="mouse"?e(n):void 0}var yD=qO,SD=W0,vD=QO,xD=JO,wD=X0,bD=eD,PD=Lg,CD=nD,ID=oD,ED=iD,kD=lD,_D=cD,TD=uD,MD=hD,AD=pD,jD=gD,J0="ContextMenu",[Zte,eae]=ko(J0,[Rg]),dn=Rg(),[Qte,OD]=Zte(J0),DD=e=>{const{__scopeContextMenu:n,children:t,onOpenChange:r,dir:o,modal:s=!0}=e,[i,a]=P.useState(!1),l=dn(n),c=Vt(r),u=P.useCallback(h=>{a(h),c(h)},[c]);return d.jsx(Qte,{scope:n,open:i,onOpenChange:u,modal:s,children:d.jsx(yD,{...l,dir:o,open:i,onOpenChange:u,modal:s,children:t})})};DD.displayName=J0;var RD="ContextMenuTrigger",LD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,disabled:r=!1,...o}=e,s=OD(RD,t),i=dn(t),a=P.useRef({x:0,y:0}),l=P.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...a.current})}),c=P.useRef(0),u=P.useCallback(()=>window.clearTimeout(c.current),[]),h=p=>{a.current={x:p.clientX,y:p.clientY},s.onOpenChange(!0)};return P.useEffect(()=>u,[u]),P.useEffect(()=>void(r&&u()),[r,u]),d.jsxs(d.Fragment,{children:[d.jsx(SD,{...i,virtualRef:l}),d.jsx(Ce.span,{"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,...o,ref:n,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:r?e.onContextMenu:re(e.onContextMenu,p=>{u(),h(p),p.preventDefault()}),onPointerDown:r?e.onPointerDown:re(e.onPointerDown,ch(p=>{u(),c.current=window.setTimeout(()=>h(p),700)})),onPointerMove:r?e.onPointerMove:re(e.onPointerMove,ch(u)),onPointerCancel:r?e.onPointerCancel:re(e.onPointerCancel,ch(u)),onPointerUp:r?e.onPointerUp:re(e.onPointerUp,ch(u))})]})});LD.displayName=RD;var Jte="ContextMenuPortal",eb=e=>{const{__scopeContextMenu:n,...t}=e,r=dn(n);return d.jsx(vD,{...r,...t})};eb.displayName=Jte;var $D="ContextMenuContent",FD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=OD($D,t),s=dn(t),i=P.useRef(!1);return d.jsx(xD,{...s,...r,ref:n,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:a=>{var l;(l=e.onCloseAutoFocus)==null||l.call(e,a),!a.defaultPrevented&&i.current&&a.preventDefault(),i.current=!1},onInteractOutside:a=>{var l;(l=e.onInteractOutside)==null||l.call(e,a),!a.defaultPrevented&&!o.modal&&(i.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});FD.displayName=$D;var ene="ContextMenuGroup",ND=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(wD,{...o,...r,ref:n})});ND.displayName=ene;var tne="ContextMenuLabel",nne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(bD,{...o,...r,ref:n})});nne.displayName=tne;var rne="ContextMenuItem",zD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(PD,{...o,...r,ref:n})});zD.displayName=rne;var one="ContextMenuCheckboxItem",BD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(CD,{...o,...r,ref:n})});BD.displayName=one;var sne="ContextMenuRadioGroup",ine=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(ID,{...o,...r,ref:n})});ine.displayName=sne;var ane="ContextMenuRadioItem",lne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(ED,{...o,...r,ref:n})});lne.displayName=ane;var cne="ContextMenuItemIndicator",une=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(kD,{...o,...r,ref:n})});une.displayName=cne;var dne="ContextMenuSeparator",hne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(_D,{...o,...r,ref:n})});hne.displayName=dne;var pne="ContextMenuArrow",fne=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(TD,{...o,...r,ref:n})});fne.displayName=pne;var gne="ContextMenuSub",UD=e=>{const{__scopeContextMenu:n,children:t,onOpenChange:r,open:o,defaultOpen:s}=e,i=dn(n),[a,l]=li({prop:o,defaultProp:s,onChange:r});return d.jsx(MD,{...i,open:a,onOpenChange:l,children:t})};UD.displayName=gne;var mne="ContextMenuSubTrigger",HD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(AD,{...o,...r,ref:n})});HD.displayName=mne;var yne="ContextMenuSubContent",KD=P.forwardRef((e,n)=>{const{__scopeContextMenu:t,...r}=e,o=dn(t);return d.jsx(jD,{...o,...r,ref:n,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});KD.displayName=yne;function ch(e){return n=>n.pointerType!=="mouse"?e(n):void 0}var Sne=DD,vne=LD,xne=eb,wne=FD,bne=BD;const WD=typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("mac")>-1,Pne=WD?"⌘":"Ctrl",Cne=WD?"⌥":"Alt";function GD(e){return e.split(",")[0].split("").map(n=>{const t=n.replace(/\$/g,Pne).replace(/\?/g,Cne).replace(/!/g,"⇧");return t[0].toUpperCase()+t.slice(1)})}function Yv(e){return"— "+GD(e).join(" ")}function Ine(e){return d.jsx("svg",{width:16,height:16,viewBox:"0 0 16 16",...e,children:d.jsxs("g",{strokeWidth:2,fill:"none",fillRule:"evenodd",children:[d.jsx("circle",{strokeOpacity:.25,cx:8,cy:8,r:7,stroke:"currentColor"}),d.jsx("path",{strokeLinecap:"round",d:"M15 8c0-4.5-4.5-7-7-7",stroke:"currentColor",children:d.jsx("animateTransform",{attributeName:"transform",type:"rotate",from:"0 8 8",to:"360 8 8",dur:"1s",repeatCount:"indefinite"})})]})})}var tb="DropdownMenu",[Ene,tae]=ko(tb,[Rg]),hn=Rg(),[kne,VD]=Ene(tb),YD=e=>{const{__scopeDropdownMenu:n,children:t,dir:r,open:o,defaultOpen:s,onOpenChange:i,modal:a=!0}=e,l=hn(n),c=P.useRef(null),[u=!1,h]=li({prop:o,defaultProp:s,onChange:i});return d.jsx(kne,{scope:n,triggerId:Xo(),triggerRef:c,contentId:Xo(),open:u,onOpenChange:h,onOpenToggle:P.useCallback(()=>h(p=>!p),[h]),modal:a,children:d.jsx(yD,{...l,open:u,onOpenChange:h,dir:r,modal:a,children:t})})};YD.displayName=tb;var XD="DropdownMenuTrigger",qD=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,disabled:r=!1,...o}=e,s=VD(XD,t),i=hn(t);return d.jsx(SD,{asChild:!0,...i,children:d.jsx(Ce.button,{type:"button",id:s.triggerId,"aria-haspopup":"menu","aria-expanded":s.open,"aria-controls":s.open?s.contentId:void 0,"data-state":s.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:vg(n,s.triggerRef),onPointerDown:re(e.onPointerDown,a=>{!r&&a.button===0&&a.ctrlKey===!1&&(s.onOpenToggle(),s.open||a.preventDefault())}),onKeyDown:re(e.onKeyDown,a=>{r||(["Enter"," "].includes(a.key)&&s.onOpenToggle(),a.key==="ArrowDown"&&s.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});qD.displayName=XD;var _ne="DropdownMenuPortal",ZD=e=>{const{__scopeDropdownMenu:n,...t}=e,r=hn(n);return d.jsx(vD,{...r,...t})};ZD.displayName=_ne;var QD="DropdownMenuContent",JD=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=VD(QD,t),s=hn(t),i=P.useRef(!1);return d.jsx(xD,{id:o.contentId,"aria-labelledby":o.triggerId,...s,...r,ref:n,onCloseAutoFocus:re(e.onCloseAutoFocus,a=>{var l;i.current||(l=o.triggerRef.current)==null||l.focus(),i.current=!1,a.preventDefault()}),onInteractOutside:re(e.onInteractOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,u=l.button===2||c;(!o.modal||u)&&(i.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});JD.displayName=QD;var Tne="DropdownMenuGroup",eR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(wD,{...o,...r,ref:n})});eR.displayName=Tne;var Mne="DropdownMenuLabel",Ane=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(bD,{...o,...r,ref:n})});Ane.displayName=Mne;var jne="DropdownMenuItem",tR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(PD,{...o,...r,ref:n})});tR.displayName=jne;var One="DropdownMenuCheckboxItem",nR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(CD,{...o,...r,ref:n})});nR.displayName=One;var Dne="DropdownMenuRadioGroup",Rne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(ID,{...o,...r,ref:n})});Rne.displayName=Dne;var Lne="DropdownMenuRadioItem",$ne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(ED,{...o,...r,ref:n})});$ne.displayName=Lne;var Fne="DropdownMenuItemIndicator",Nne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(kD,{...o,...r,ref:n})});Nne.displayName=Fne;var zne="DropdownMenuSeparator",Bne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(_D,{...o,...r,ref:n})});Bne.displayName=zne;var Une="DropdownMenuArrow",Hne=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(TD,{...o,...r,ref:n})});Hne.displayName=Une;var Kne=e=>{const{__scopeDropdownMenu:n,children:t,open:r,onOpenChange:o,defaultOpen:s}=e,i=hn(n),[a=!1,l]=li({prop:r,defaultProp:s,onChange:o});return d.jsx(MD,{...i,open:a,onOpenChange:l,children:t})},Wne="DropdownMenuSubTrigger",rR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(AD,{...o,...r,ref:n})});rR.displayName=Wne;var Gne="DropdownMenuSubContent",oR=P.forwardRef((e,n)=>{const{__scopeDropdownMenu:t,...r}=e,o=hn(t);return d.jsx(jD,{...o,...r,ref:n,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});oR.displayName=Gne;var nb=YD,rb=qD,$g=ZD,ob=JD,Vne=eR,Yne=tR,Xne=nR,qne=Kne,Zne=rR,Qne=oR;function Qi({id:e,children:n,modal:t=!1,debugOpen:r=!1}){const[o,s]=ui(e);return d.jsx(nb,{open:r||o,dir:"ltr",modal:t,onOpenChange:s,children:n})}function Ji({children:e,...n}){return d.jsx(rb,{dir:"ltr",asChild:!0,onTouchEnd:t=>Ee(t),...n,children:e})}function ea({side:e="bottom",align:n="start",sideOffset:t=8,alignOffset:r=8,children:o}){const s=un();return d.jsx($g,{container:s,children:d.jsx(ob,{className:"tlui-menu",side:e,sideOffset:t,align:n,alignOffset:r,collisionPadding:4,children:o})})}function Jne({id:e,children:n}){const[t,r]=ui(e);return d.jsx(qne,{open:t,onOpenChange:r,children:n})}function ere({id:e,label:n,title:t,disabled:r}){return d.jsx(Zne,{dir:"ltr",asChild:!0,disabled:r,children:d.jsxs(he,{"data-testid":e,type:"menu",className:"tlui-menu__submenu__trigger",disabled:r,title:t,children:[d.jsx(bt,{children:n}),d.jsx(Pe,{icon:"chevron-right",small:!0})]})})}function tre({id:e,alignOffset:n=-1,sideOffset:t=-4,size:r="small",children:o}){const s=un();return d.jsx($g,{container:s,children:d.jsx(Qne,{"data-testid":e,className:"tlui-menu tlui-menu__submenu__content",alignOffset:n,sideOffset:t,collisionPadding:4,"data-size":r,children:o})})}function nre({children:e}){return d.jsx(Vne,{dir:"ltr",className:"tlui-menu__group",children:e})}function wu({noClose:e,children:n}){return d.jsx(Yne,{dir:"ltr",asChild:!0,onClick:e?Ee:void 0,children:n})}function Uc({children:e,visibleOnMobileLayout:n=!1}){const t=Hn();return!n&&t<yt.MOBILE?null:d.jsx("kbd",{className:"tlui-kbd",children:GD(e).map((r,o)=>d.jsx("span",{children:r},o))})}function H({disabled:e=!1,spinner:n=!1,readonlyOk:t=!1,id:r,kbd:o,label:s,icon:i,onSelect:a,noClose:l,isSelected:c}){const{type:u,sourceId:h}=Og(),p=Te(),[f,y]=P.useState(!1);if(cs()&&!t)return null;const x=mu(s,u),S=o?Yv(o):void 0,v=x?p(x):void 0,b=v&&S?`${v} ${S}`:v;switch(u){case"menu":return d.jsx(wu,{children:d.jsxs(he,{type:"menu","data-testid":`${h}.${r}`,disabled:e,title:b,onClick:E=>{l&&Ee(E),f?y(!1):a(h)},children:[d.jsx(bt,{children:v}),o&&d.jsx(Uc,{children:o})]})});case"context-menu":return e?null:d.jsxs(zD,{dir:"ltr",title:b,draggable:!1,className:"tlui-button tlui-button__menu","data-testid":`${h}.${r}`,onSelect:E=>{l&&Ee(E),f?y(!1):a(h)},children:[d.jsx("span",{className:"tlui-button__label",draggable:!1,children:v}),o&&d.jsx(Uc,{children:o}),n&&d.jsx(Ine,{})]});case"panel":return d.jsxs(he,{"data-testid":`${h}.${r}`,type:"menu",title:b,disabled:e,onClick:()=>a(h),children:[d.jsx(bt,{children:v}),i&&d.jsx(Pe,{icon:i})]});case"small-icons":case"icons":return d.jsx(he,{"data-testid":`${h}.${r}`,type:"icon",title:b,disabled:e,onClick:()=>a(h),children:d.jsx(Pe,{icon:i,small:u==="small-icons"})});case"keyboard-shortcuts":return o?d.jsxs("div",{className:"tlui-shortcuts-dialog__key-pair","data-testid":`${h}.${r}`,children:[d.jsx("div",{className:"tlui-shortcuts-dialog__key-pair__key",children:v}),d.jsx("div",{className:"tlui-shortcuts-dialog__key-pair__value",children:d.jsx(Uc,{visibleOnMobileLayout:!0,children:o})})]}):(console.warn(`Menu item '${s}' isn't shown in the keyboard shortcuts dialog because it doesn't have a keyboard shortcut.`),null);case"helper-buttons":return d.jsxs(he,{type:"low",onClick:()=>a(h),children:[d.jsx(Pe,{icon:i}),d.jsx(bt,{children:v})]});case"toolbar":return d.jsx(he,{type:"tool","data-testid":`tools.${r}`,"aria-label":x,"data-value":r,onClick:()=>a("toolbar"),title:b,onTouchStart:E=>{Ee(E),a("toolbar")},role:"radio","aria-checked":c?"true":"false",children:d.jsx(Pe,{icon:i})});case"toolbar-overflow":return d.jsx(wu,{"aria-label":s,children:d.jsx(he,{type:"icon",className:"tlui-button-grid__button",onClick:()=>{a("toolbar")},"data-testid":`tools.more.${r}`,title:b,role:"radio","aria-checked":c?"true":"false","data-value":r,children:d.jsx(Pe,{icon:i})})});default:throw an(u)}}function rre(){return d.jsxs(d.Fragment,{children:[d.jsx(ore,{}),d.jsx(sre,{}),d.jsx(ire,{}),d.jsx(are,{}),d.jsx(lre,{}),d.jsx(dre,{}),d.jsx(hre,{}),d.jsx(pre,{})]})}function ore(){const e=ie(),n=Pn(2),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["align-left"],disabled:!r}),d.jsx(H,{...e["align-center-horizontal"],disabled:!r}),d.jsx(H,{...e["align-right"],disabled:!r}),d.jsx(H,{...e["stretch-horizontal"],disabled:!r}),d.jsx(H,{...e["align-top"],disabled:!r}),d.jsx(H,{...e["align-center-vertical"],disabled:!r}),d.jsx(H,{...e["align-bottom"],disabled:!r}),d.jsx(H,{...e["stretch-vertical"],disabled:!r})]})}function sre(){const e=ie(),n=Pn(3),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["distribute-horizontal"],disabled:!r}),d.jsx(H,{...e["distribute-vertical"],disabled:!r})]})}function ire(){const e=ie(),n=DO(),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["stack-horizontal"],disabled:!r}),d.jsx(H,{...e["stack-vertical"],disabled:!r})]})}function are(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsxs(d.Fragment,{children:[d.jsx(H,{...e["send-to-back"],disabled:!r}),d.jsx(H,{...e["send-backward"],disabled:!r}),d.jsx(H,{...e["bring-forward"],disabled:!r}),d.jsx(H,{...e["bring-to-front"],disabled:!r})]})}function lre(){return Hn()<yt.TABLET_SM?d.jsx(cre,{}):d.jsx(ure,{})}function cre(){const e=ie(),n=B(),t=G("zoom is 1",()=>n.getZoomLevel()===1,[n]);return d.jsx(H,{...e["zoom-to-100"],disabled:t})}function ure(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsx(H,{...e["rotate-ccw"],disabled:!r})}function dre(){const e=ie(),n=Pn(1),t=ds(),r=n&&t;return d.jsx(H,{...e["rotate-cw"],disabled:!r})}function hre(){const e=ie(),n=FO(),t=ds(),r=n&&t;return d.jsx(H,{...e["edit-link"],disabled:!r})}function pre(){const e=RO(),n=LO();return e?d.jsx(eE,{}):n?d.jsx(fre,{}):d.jsx(eE,{})}function eE(){const e=ie(),n=Pn(2),t=ds(),r=n&&t;return d.jsx(H,{...e.group,disabled:!r})}function fre(){const e=ie();return d.jsx(H,{...e.ungroup})}const gre=P.memo(function({children:n}){const t=Te(),r=Hn(),o=cs(),s=B(),i=G("should display quick actions when in readonly",()=>s.isInAny("hand","zoom"),[s]),a=n??d.jsx(rre,{});if(!(o&&!i))return d.jsxs(B0,{id:"actions-menu",children:[d.jsx(U0,{children:d.jsx(he,{type:"icon","data-testid":"actions-menu.button",title:t("actions-menu.title"),children:d.jsx(Pe,{icon:"dots-vertical",small:!0})})}),d.jsx(H0,{side:r>=yt.TABLET?"bottom":"top",sideOffset:6,children:d.jsx("div",{className:"tlui-actions-menu tlui-buttons__grid","data-testid":"actions-menu.content",children:d.jsx(_r,{type:"icons",sourceId:"actions-menu",children:a})})})]})});function Kn({id:e,kbd:n,label:t,readonlyOk:r,onSelect:o,toggle:s=!1,disabled:i=!1,checked:a=!1}){const{type:l,sourceId:c}=Og(),u=cs(),h=Te();if(u&&!r)return null;const p=mu(t,l),f=p?h(p):void 0;switch(l){case"menu":return d.jsxs(Xne,{dir:"ltr",className:"tlui-button tlui-button__menu tlui-button__checkbox",title:f,onSelect:y=>{o==null||o(c),Ee(y)},disabled:i,checked:a,children:[d.jsx(qs,{small:!0,icon:s?a?"toggle-on":"toggle-off":a?"check":"none"}),f&&d.jsx("span",{className:"tlui-button__label",draggable:!1,children:f}),n&&d.jsx(Uc,{children:n})]});case"context-menu":return d.jsxs(bne,{className:"tlui-button tlui-button__menu tlui-button__checkbox",dir:"ltr",title:f,onSelect:y=>{o(c),Ee(y)},disabled:i,checked:a,children:[d.jsx(qs,{small:!0,icon:s?a?"toggle-on":"toggle-off":a?"check":"none"}),f&&d.jsx("span",{className:"tlui-button__label",draggable:!1,children:f}),n&&d.jsx(Uc,{children:n})]},e);default:return null}}function ge({id:e,label:n,children:t}){const{type:r,sourceId:o}=Og(),s=Te(),i=mu(n,r),a=i?s(i):void 0;switch(r){case"panel":return d.jsx("div",{className:"tlui-menu__group","data-testid":`${o}-group.${e}`,children:t});case"menu":return d.jsx(nre,{"data-testid":`${o}-group.${e}`,children:t});case"context-menu":return d.jsx(ND,{dir:"ltr",className:"tlui-menu__group","data-testid":`${o}-group.${e}`,children:t});case"keyboard-shortcuts":return d.jsxs("div",{className:"tlui-shortcuts-dialog__group","data-testid":`${o}-group.${e}`,children:[d.jsx("h2",{className:"tlui-shortcuts-dialog__group__title",children:a}),d.jsx("div",{className:"tlui-shortcuts-dialog__group__content",children:t})]});default:return t}}function Wn({id:e,disabled:n=!1,label:t,size:r="small",children:o}){const{type:s,sourceId:i}=Og(),a=un(),l=Te(),c=t?typeof t=="string"?t:t[s]??t.default:void 0,u=c?l(c):void 0;switch(s){case"menu":return d.jsxs(Jne,{id:`${i}-sub.${e}`,children:[d.jsx(ere,{id:`${i}-sub.${u?u.toLowerCase()+"-button":""}`,disabled:n,label:u,title:u}),d.jsx(tre,{id:`${i}-sub.${u?u.toLowerCase()+"-content":""}`,size:r,children:o})]});case"context-menu":return n?null:d.jsxs(mre,{id:`${i}-sub.${e}`,children:[d.jsx(HD,{dir:"ltr",disabled:n,asChild:!0,children:d.jsxs(he,{"data-testid":`${i}-sub-trigger.${e}`,type:"menu",className:"tlui-menu__submenu__trigger",children:[d.jsx(bt,{children:u}),d.jsx(Pe,{icon:"chevron-right",small:!0})]})}),d.jsx(eb,{container:a,children:d.jsx(KD,{"data-testid":`${i}-sub-content.${e}`,className:"tlui-menu tlui-menu__submenu__content",alignOffset:-1,sideOffset:-4,collisionPadding:4,"data-size":r,children:o})})]});default:return o}}function mre({id:e,children:n}){const[t,r]=ui(e);return d.jsx(UD,{open:t,onOpenChange:r,children:n})}function sR(){const e=ie();return ute()?d.jsx(H,{...e["toggle-auto-size"]}):null}function iR(){const e=ie();return FO()?d.jsx(H,{...e["edit-link"]}):null}function yre(){const e=ie();return Pn(1)?d.jsx(H,{...e.duplicate}):null}function aR(){const e=ie(),n=B();return G("should display flatten option",()=>{if(n.getSelectedShapeIds().length===0)return!1;const o=n.getOnlySelectedShape();return!(o&&n.isShapeOfType(o,"image"))},[n])?d.jsx(H,{...e["flatten-to-image"]}):null}function lR(){const e=ie();return RO()?d.jsx(H,{...e.group}):null}function cR(){const e=ie();return LO()?d.jsx(H,{...e.ungroup}):null}function uR(){const e=B(),n=ie();return G("allow unframe",()=>{const r=e.getSelectedShapes();return r.length===0?!1:r.every(o=>e.isShapeOfType(o,"frame"))},[e])?d.jsx(H,{...n["remove-frame"]}):null}function dR(){const e=B(),n=ie();return G("allow fit frame to content",()=>{const r=e.getOnlySelectedShape();return r?e.isShapeOfType(r,"frame")&&e.getSortedChildIdsForParent(r).length>0:!1},[e])?d.jsx(H,{...n["fit-frame-to-content"]}):null}function hR(){const e=B(),n=ie();return G("selected shapes",()=>e.getSelectedShapes().length>0,[e])?d.jsx(H,{...n["toggle-lock"]}):null}function sb(){const e=ie(),n=B(),t=G("isTransparentBg",()=>!n.getInstanceState().exportBackground,[n]);return d.jsx(Kn,{...e["toggle-transparent"],checked:t,toggle:!0})}function Sre(){const e=B(),n=ie(),t=G("any shapes",()=>e.getCurrentPageShapeIds().size>0,[e]);return d.jsx(H,{...n["unlock-all"],disabled:!t})}function pR(){const e=B(),n=G("zoomed to 100",()=>e.getZoomLevel()===1,[e]),t=ie();return d.jsx(H,{...t["zoom-to-100"],noClose:!0,disabled:n})}function fR(){const e=B(),n=G("has shapes",()=>e.getCurrentPageShapeIds().size>0,[e]),t=ie();return d.jsx(H,{...t["zoom-to-fit"],disabled:!n,"data-testid":"minimap.zoom-menu.zoom-to-fit",noClose:!0})}function gR(){const e=B(),n=G("has shapes",()=>e.getSelectedShapeIds().length>0,[e]),t=ie();return d.jsx(H,{...t["zoom-to-selection"],disabled:!n,"data-testid":"minimap.zoom-menu.zoom-to-selection",noClose:!0})}function mR(){return d.jsxs(ge,{id:"clipboard",children:[d.jsx(xre,{}),d.jsx(wre,{}),d.jsx(bre,{}),d.jsx(yre,{}),d.jsx(Pre,{})]})}function vre(){var r;const e=B(),n=ie(),t=G("atLeastOneShapeOnPage",()=>e.getCurrentPageShapeIds().size>0,[e]);return d.jsxs(Wn,{id:"copy-as",label:"context-menu.copy-as",size:"small",disabled:!t,children:[d.jsxs(ge,{id:"copy-as-group",children:[d.jsx(H,{...n["copy-as-svg"]}),!!((r=window.navigator.clipboard)!=null&&r.write)&&d.jsx(H,{...n["copy-as-png"]}),d.jsx(H,{...n["copy-as-json"]})]}),d.jsx(ge,{id:"copy-as-bg",children:d.jsx(sb,{})})]})}function xre(){const e=ie(),n=Pn(1);return d.jsx(H,{...e.cut,disabled:!n})}function wre(){const e=ie(),n=$O(1);return d.jsx(H,{...e.copy,disabled:!n})}function bre(){const e=ie(),n=cte;return d.jsx(H,{...e.paste,disabled:!n})}function yR(){const e=B(),n=ie();return G("atLeastOneShapeOnPage",()=>e.getCurrentPageShapeIds().size>0,[e])?d.jsxs(ge,{id:"conversions",children:[d.jsx(vre,{}),d.jsxs(Wn,{id:"export-as",label:"context-menu.export-as",size:"small",children:[d.jsxs(ge,{id:"export-as-group",children:[d.jsx(H,{...n["export-as-svg"]}),d.jsx(H,{...n["export-as-png"]}),d.jsx(H,{...n["export-as-json"]})]}),d.jsx(ge,{id:"export-as-bg",children:d.jsx(sb,{})})]})]}):null}function SR(){const e=ie(),n=B(),t=G("atLeastOneShapeOnPage",()=>n.getCurrentPageShapeIds().size>0,[n]);return d.jsx(H,{...e["select-all"],disabled:!t})}function Pre(){const e=ie(),n=Pn(1);return d.jsx(H,{...e.delete,disabled:!n})}function Cre(){return $O(1)?d.jsxs(Wn,{id:"edit",label:"context-menu.edit",size:"small",children:[d.jsx(lR,{}),d.jsx(cR,{}),d.jsx(aR,{}),d.jsx(iR,{}),d.jsx(dR,{}),d.jsx(uR,{}),d.jsx(xR,{}),d.jsx(vR,{}),d.jsx(sR,{}),d.jsx(hR,{})]}):null}function Ire(){const e=Pn(2),n=dte(),t=ie();return e||n?d.jsxs(Wn,{id:"arrange",label:"context-menu.arrange",size:"small",children:[e&&d.jsxs(ge,{id:"align",children:[d.jsx(H,{...t["align-left"]}),d.jsx(H,{...t["align-center-horizontal"]}),d.jsx(H,{...t["align-right"]}),d.jsx(H,{...t["align-top"]}),d.jsx(H,{...t["align-center-vertical"]}),d.jsx(H,{...t["align-bottom"]})]}),d.jsx(Ere,{}),e&&d.jsxs(ge,{id:"stretch",children:[d.jsx(H,{...t["stretch-horizontal"]}),d.jsx(H,{...t["stretch-vertical"]})]}),(e||n)&&d.jsxs(ge,{id:"flip",children:[d.jsx(H,{...t["flip-horizontal"]}),d.jsx(H,{...t["flip-vertical"]})]}),d.jsx(kre,{})]}):null}function Ere(){const e=ie();return Pn(3)?d.jsxs(ge,{id:"distribute",children:[d.jsx(H,{...e["distribute-horizontal"]}),d.jsx(H,{...e["distribute-vertical"]})]}):null}function kre(){const e=ie(),n=Pn(2),t=DO();return n?d.jsxs(ge,{id:"order",children:[d.jsx(H,{...e.pack}),t&&d.jsx(H,{...e["stack-horizontal"]}),t&&d.jsx(H,{...e["stack-vertical"]})]}):null}function _re(){const e=ie();return Pn(1)?d.jsx(Wn,{id:"reorder",label:"context-menu.reorder",size:"small",children:d.jsxs(ge,{id:"reorder",children:[d.jsx(H,{...e["bring-to-front"]}),d.jsx(H,{...e["bring-forward"]}),d.jsx(H,{...e["send-backward"]}),d.jsx(H,{...e["send-to-back"]})]})}):null}function Tre(){const e=B(),n=G("pages",()=>e.getPages(),[e]),t=G("current page id",()=>e.getCurrentPageId(),[e]),{addToast:r}=Qr(),o=ie(),s=Zr();return Pn(1)?d.jsxs(Wn,{id:"move-to-page",label:"context-menu.move-to-page",size:"small",children:[d.jsx(ge,{id:"pages",children:n.map(a=>d.jsx(H,{id:a.id,disabled:t===a.id,label:a.name,onSelect:()=>{e.mark("move_shapes_to_page"),e.moveShapesToPage(e.getSelectedShapeIds(),a.id);const l=e.getPage(a.id);l&&r({title:"Changed Page",description:`Moved to ${l.name}.`,actions:[{label:"Go Back",type:"primary",onClick:()=>{e.mark("change-page"),e.setCurrentPage(t)}}]}),s("move-to-page",{source:"context-menu"})}},a.id))}),d.jsx(ge,{id:"new-page",children:d.jsx(H,{...o["new-page"]})})]}):null}function vR(){const e=B(),n=ie();return G("oneEmbedSelected",()=>{const r=e.getOnlySelectedShape();return r?!!(e.isShapeOfType(r,"embed")&&r.props.url&&!e.isShapeOrAncestorLocked(r)):!1},[e])?d.jsx(H,{...n["convert-to-bookmark"]}):null}function xR(){const e=B(),n=ie();return G("oneEmbeddableBookmarkSelected",()=>{const r=e.getOnlySelectedShape();return r?!!(e.isShapeOfType(r,"bookmark")&&r.props.url&&As(r.props.url)&&!e.isShapeOrAncestorLocked(r)):!1},[e])?d.jsx(H,{...n["convert-to-embed"]}):null}function Mre(){const e=ie(),n=B(),t=G("isSnapMode",()=>n.user.getIsSnapMode(),[n]);return d.jsx(Kn,{...e["toggle-snap-mode"],checked:t})}function Are(){const e=ie(),n=B(),t=G("isToolLock",()=>n.getInstanceState().isToolLocked,[n]);return d.jsx(Kn,{...e["toggle-tool-lock"],checked:t})}function jre(){const e=ie(),n=B(),t=G("isGridMode",()=>n.getInstanceState().isGridMode,[n]);return d.jsx(Kn,{...e["toggle-grid"],checked:t})}function Ore(){const e=ie(),n=B(),t=G("isWrapMode",()=>n.user.getIsWrapMode(),[n]);return d.jsx(Kn,{...e["toggle-wrap-mode"],checked:t})}function Dre(){const e=ie(),n=B(),t=G("isFocusMode",()=>n.getInstanceState().isFocusMode,[n]);return d.jsx(Kn,{...e["toggle-focus-mode"],checked:t})}function Rre(){const e=ie(),n=B(),t=G("edgeScrollSpeed",()=>n.user.getEdgeScrollSpeed(),[n]);return d.jsx(Kn,{...e["toggle-edge-scrolling"],checked:t===1})}function Lre(){const e=ie(),n=B(),t=G("animationSpeed",()=>n.user.getAnimationSpeed(),[n]);return d.jsx(Kn,{...e["toggle-reduce-motion"],checked:t===0})}function $re(){const e=ie(),n=B(),t=G("isDebugMode",()=>n.getInstanceState().isDebugMode,[n]);return d.jsx(Kn,{...e["toggle-debug-mode"],checked:t})}function Fre(){const e=ie(),n=B(),t=G("dynamic resize",()=>n.user.getIsDynamicResizeMode(),[n]);return d.jsx(Kn,{...e["toggle-dynamic-size-mode"],checked:t})}function Nre(){const e=ie(),n=B(),t=G("paste at cursor",()=>n.user.getIsPasteAtCursorMode(),[n]);return d.jsx(Kn,{...e["toggle-paste-at-cursor"],checked:t})}function zre(){const e=B();return G("isSelectToolActive",()=>e.getCurrentToolId()==="select",[e])?d.jsxs(d.Fragment,{children:[d.jsxs(ge,{id:"modify",children:[d.jsx(Cre,{}),d.jsx(Ire,{}),d.jsx(_re,{}),d.jsx(Tre,{})]}),d.jsx(mR,{}),d.jsx(yR,{}),d.jsx(ge,{id:"select-all",children:d.jsx(SR,{})})]}):null}const Bre=P.memo(function({children:n}){const t=B(),{Canvas:r}=it(),o=P.useCallback(c=>{if(c){if(t.getInstanceState().isCoarsePointer){const u=t.getSelectedShapes(),{inputs:{currentPagePoint:h}}=t,p=t.getShapesAtPoint(h);if(!t.getSelectedShapes().length||!p.some(f=>u.includes(f))){const f=p.filter(y=>t.isShapeOrAncestorLocked(y));f.length&&t.select(...f.map(y=>y.id))}}}else{const u=t.getOnlySelectedShape();u&&t.isShapeOrAncestorLocked(u)&&t.setSelectedShapes([])}},[t]),s=un(),[i,a]=ui("context menu",o),l=n??d.jsx(zre,{});return d.jsxs(Sne,{dir:"ltr",onOpenChange:a,modal:!1,children:[d.jsx(vne,{onContextMenu:void 0,dir:"ltr",children:r?d.jsx(r,{}):null}),i&&d.jsx(xne,{container:s,children:d.jsx(wne,{className:"tlui-menu scrollable","data-testid":"context-menu",alignOffset:-4,collisionPadding:4,onContextMenu:Ee,children:d.jsx(_r,{type:"context-menu",sourceId:"context-menu",children:l})})})]})});function Xv({checked:e}){return d.jsx(qs,{icon:e?"check":"none",className:"tlui-button__icon",small:!0})}function Ure(){const e=B(),{addToast:n}=Qr(),{addDialog:t}=la(),[r,o]=we.useState(!1);return d.jsxs(d.Fragment,{children:[d.jsxs(ge,{id:"items",children:[d.jsx(H,{id:"add-toast",onSelect:()=>{n({id:ot(),title:"Something good happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"success"}),n({id:ot(),title:"Something happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"info",actions:[{label:"Primary",type:"primary",onClick:()=>{}},{label:"Normal",type:"normal",onClick:()=>{}},{label:"Danger",type:"danger",onClick:()=>{}}]}),n({id:ot(),title:"Something maybe bad happened",description:"Hey, attend to this thing over here. It might be important!",keepOpen:!0,severity:"warning",actions:[{label:"Primary",type:"primary",onClick:()=>{}},{label:"Normal",type:"normal",onClick:()=>{}},{label:"Danger",type:"danger",onClick:()=>{}}]}),n({id:ot(),title:"Something bad happened",severity:"error",keepOpen:!0})},label:"Show toast"}),d.jsx(H,{id:"show-dialog",label:"Show dialog",onSelect:()=>{t({component:({onClose:s})=>d.jsx(Wre,{displayDontShowAgain:!0,onCancel:()=>s(),onContinue:()=>s()}),onClose:()=>{}})}}),d.jsx(H,{id:"create-shapes",label:"Create 100 shapes",onSelect:()=>Gre(e,100)}),d.jsx(H,{id:"count-nodes",label:"Count shapes / nodes",onSelect:()=>{var a;const s=e.getSelectedShapes(),i=s.length===0?e.getRenderingShapes():s;window.alert(`Shapes ${i.length}, DOM nodes:${(a=document.querySelector(".tl-shapes").querySelectorAll("*"))==null?void 0:a.length}`)}}),(()=>{if(r)throw Error("oh no!");return null})(),d.jsx(H,{id:"throw-error",onSelect:()=>o(!0),label:"Throw error"}),d.jsx(H,{id:"hard-reset",onSelect:aT,label:"Hard reset"})]}),d.jsxs(ge,{id:"flags",children:[d.jsx(Hre,{}),d.jsx(Kre,{})]})]})}function Hre(){const e=Object.values(xt);return e.length?d.jsx(Wn,{id:"debug flags",label:"Debug Flags",children:d.jsx(ge,{id:"debug flags",children:e.map(n=>d.jsx(wR,{flag:n},n.name))})}):null}function Kre(){const e=Object.values(eH);return e.length?d.jsx(Wn,{id:"feature flags",label:"Feature Flags",children:d.jsx(ge,{id:"feature flags",children:e.map(n=>d.jsx(wR,{flag:n},n.name))})}):null}function Wre({title:e="title",body:n="hello hello hello",cancel:t="Cancel",confirm:r="Continue",displayDontShowAgain:o=!1,onCancel:s,onContinue:i}){const[a,l]=we.useState(!1);return d.jsxs(d.Fragment,{children:[d.jsxs(Eg,{children:[d.jsx(kg,{children:e}),d.jsx(_g,{})]}),d.jsx(gu,{style:{maxWidth:350},children:n}),d.jsxs(E0,{className:"tlui-dialog__footer__actions",children:[o&&d.jsxs(he,{type:"normal",onClick:()=>l(!a),style:{marginRight:"auto"},children:[d.jsx(Xv,{checked:a}),d.jsx(bt,{children:"Don’t show again"})]}),d.jsx(he,{type:"normal",onClick:s,children:d.jsx(bt,{children:t})}),d.jsx(he,{type:"primary",onClick:async()=>i(),children:d.jsx(bt,{children:r})})]})]})}const wR=lr(function({flag:n,onChange:t}){const r=n.get();return d.jsx(Kn,{id:n.name,title:n.name,label:n.name.replace(/([a-z0-9])([A-Z])/g,o=>`${o[0]} ${o[1].toLowerCase()}`).replace(/^[a-z]/,o=>o.toUpperCase()),checked:r,onSelect:()=>{n.set(!r),t==null||t(!r)}})});let tE=0;function Gre(e,n){const t=Array(n),r=Math.floor(Math.sqrt(n));for(let o=0;o<n;o++)tE++,t[o]={id:$e("box"+tE),type:"geo",x:o%r*132,y:Math.floor(o/r)*132};e.batch(()=>{e.createShapes(t).setSelectedShapes(t.map(o=>o.id))})}function Vre({children:e}){const n=e??d.jsx(Ure,{});return d.jsxs(Qi,{id:"debug",children:[d.jsx(Ji,{children:d.jsx(he,{type:"icon",title:"Debug menu",children:d.jsx(Pe,{icon:"dots-horizontal"})})}),d.jsx(ea,{side:"top",align:"end",alignOffset:0,children:d.jsx(_r,{type:"menu",sourceId:"debug-panel",children:n})})]})}const Yre=P.memo(function(){const{DebugMenu:n}=pi();return d.jsxs("div",{className:"tlui-debug-panel",children:[d.jsx(qre,{}),d.jsx(Zre,{}),n&&d.jsx(n,{})]})});function Xre(e=!0){const[n,t]=P.useState(0),r=B();P.useEffect(()=>{if(!e)return;const o=()=>t(s=>s+1);return r.on("tick",o),()=>{r.off("tick",o)}},[r,e])}const qre=lr(function(){Xre();const n=B(),t=n.getPath(),r=n.getHoveredShape(),o=n.getOnlySelectedShape(),s=t==="select.idle"||!t.includes("select.")?r:o,i=s&&t.includes("select.")?` / ${s.type||""}${"geo"in s.props?" / "+s.props.geo:""} / [${w.ToInt(n.getPointInShapeSpace(s,n.inputs.currentPagePoint))}]`:"",a=t.startsWith("select.")&&!t.includes(".idle")?` / [${w.ToInt(n.inputs.originPagePoint)}] → [${w.ToInt(n.inputs.currentPagePoint)}] = ${w.Dist(n.inputs.originPagePoint,n.inputs.currentPagePoint).toFixed(0)}`:"";return d.jsx("div",{className:"tlui-debug-panel__current-state",children:`${t}${i}${a}`})});function Zre(){const e=B(),n=G("show_fps",()=>xt.showFps.get(),[xt]),t=P.useRef(null);return P.useEffect(()=>{if(!n)return;const r=250;let o=0,s=-1,i=performance.now(),a=0,l=0,c=!1;function u(){if(l++,a=performance.now()-i,a>r){const h=Math.round(l*(r/a)*(1e3/r));h>o&&(o=h);const p=o*.75;(h<p&&!c||h>=p&&c)&&(c=!c),t.current.innerHTML=`FPS ${h.toString()}`,t.current.className="tlui-debug-panel__fps"+(c?" tlui-debug-panel__fps__slow":""),a-=r,l=0,i=performance.now()}s=e.timers.requestAnimationFrame(u)}return u(),()=>{cancelAnimationFrame(s)}},[n,e]),n?d.jsx("div",{ref:t}):null}function bR(){const e=B(),n=Zr(),t=G("locale",()=>e.user.getLocale(),[e]);return d.jsx(Wn,{id:"help menu language",label:"menu.language",children:d.jsx(ge,{id:"languages",children:Xc.map(({locale:r,label:o})=>d.jsx(Kn,{id:`language-${r}`,title:r,label:o,checked:r===t,onSelect:()=>{e.user.updateUserPreferences({locale:r}),n("change-language",{source:"menu",locale:r})}},r))})})}function Qre(){return d.jsxs(d.Fragment,{children:[d.jsx(bR,{}),d.jsx(Jre,{})]})}function Jre(){const{KeyboardShortcutsDialog:e}=pi(),{addDialog:n}=la();return e?d.jsx(H,{id:"keyboard-shortcuts-button",label:"help-menu.keyboard-shortcuts",readonlyOk:!0,onSelect:()=>{n({component:e})}}):null}const eoe=P.memo(function({children:n}){const t=Te(),r=Hn(),o=n??d.jsx(Qre,{});return r<yt.MOBILE?null:d.jsx("div",{className:"tlui-help-menu",children:d.jsxs(Qi,{id:"help menu",children:[d.jsx(Ji,{children:d.jsx(he,{type:"help",title:t("help-menu.title"),"data-testid":"help-menu.button",children:d.jsx(Pe,{icon:"question-mark",small:!0})})}),d.jsx(ea,{side:"top",align:"end",alignOffset:0,sideOffset:8,children:d.jsx(_r,{type:"menu",sourceId:"help-menu",children:o})})]})})});function toe(){const e=B(),n=ie(),[t,r]=P.useState(!1),o=P.useRef(!1);return Os("toggle showback to content",()=>{const s=o.current,i=e.getCurrentPageShapeIds();let a=!1;i.size&&(a=i.size===e.getCulledShapes().size),s!==a&&(r(a),o.current=a)},[e]),t?d.jsx(H,{...n["back-to-content"],onSelect:()=>{n["back-to-content"].onSelect("helper-buttons"),r(!1)}}):null}function noe(){const e=B(),n=ie();return G("is pen mode",()=>e.getInstanceState().isPenMode,[e])?d.jsx(H,{...n["exit-pen-mode"]}):null}function roe(){const e=B(),n=ie();return G("is following user",()=>!!e.getInstanceState().followingUserId,[e])?d.jsx(H,{...n["stop-following"]}):null}function ooe(){return d.jsxs(d.Fragment,{children:[d.jsx(noe,{}),d.jsx(toe,{}),d.jsx(roe,{})]})}function soe({children:e}){const n=e??d.jsx(ooe,{});return d.jsx("div",{className:"tlui-helper-buttons",children:d.jsx(_r,{type:"helper-buttons",sourceId:"helper-buttons",children:n})})}function ioe(){const e=ie(),n=Tg();return d.jsxs(d.Fragment,{children:[d.jsxs(ge,{label:"shortcuts-dialog.tools",id:"tools",children:[d.jsx(H,{...e["toggle-tool-lock"]}),d.jsx(H,{...e["insert-media"]}),d.jsx(H,{...n.select}),d.jsx(H,{...n.draw}),d.jsx(H,{...n.eraser}),d.jsx(H,{...n.hand}),d.jsx(H,{...n.rectangle}),d.jsx(H,{...n.ellipse}),d.jsx(H,{...n.arrow}),d.jsx(H,{...n.line}),d.jsx(H,{...n.text}),d.jsx(H,{...n.frame}),d.jsx(H,{...n.note}),d.jsx(H,{...n.laser})]}),d.jsxs(ge,{label:"shortcuts-dialog.preferences",id:"preferences",children:[d.jsx(H,{...e["toggle-dark-mode"]}),d.jsx(H,{...e["toggle-focus-mode"]}),d.jsx(H,{...e["toggle-grid"]})]}),d.jsxs(ge,{label:"shortcuts-dialog.edit",id:"edit",children:[d.jsx(H,{...e.undo}),d.jsx(H,{...e.redo}),d.jsx(H,{...e.cut}),d.jsx(H,{...e.copy}),d.jsx(H,{...e.paste}),d.jsx(H,{...e["select-all"]}),d.jsx(H,{...e.delete}),d.jsx(H,{...e.duplicate})]}),d.jsxs(ge,{label:"shortcuts-dialog.view",id:"view",children:[d.jsx(H,{...e["zoom-in"]}),d.jsx(H,{...e["zoom-out"]}),d.jsx(H,{...e["zoom-to-100"]}),d.jsx(H,{...e["zoom-to-fit"]}),d.jsx(H,{...e["zoom-to-selection"]})]}),d.jsxs(ge,{label:"shortcuts-dialog.transform",id:"transform",children:[d.jsx(H,{...e["bring-to-front"]}),d.jsx(H,{...e["bring-forward"]}),d.jsx(H,{...e["send-backward"]}),d.jsx(H,{...e["send-to-back"]}),d.jsx(H,{...e.group}),d.jsx(H,{...e.ungroup}),d.jsx(H,{...e["flip-horizontal"]}),d.jsx(H,{...e["flip-vertical"]}),d.jsx(H,{...e["align-top"]}),d.jsx(H,{...e["align-center-vertical"]}),d.jsx(H,{...e["align-bottom"]}),d.jsx(H,{...e["align-left"]}),d.jsx(H,{...e["align-center-horizontal"]}),d.jsx(H,{...e["align-right"]})]})]})}const aoe=P.memo(function({children:n}){const t=Te(),r=Hn(),o=n??d.jsx(ioe,{});return d.jsxs(d.Fragment,{children:[d.jsxs(Eg,{className:"tlui-shortcuts-dialog__header",children:[d.jsx(kg,{children:t("shortcuts-dialog.title")}),d.jsx(_g,{})]}),d.jsx(gu,{className:ce("tlui-shortcuts-dialog__body",{"tlui-shortcuts-dialog__body__mobile":r<=yt.MOBILE_XS,"tlui-shortcuts-dialog__body__tablet":r<=yt.TABLET}),children:d.jsx(_r,{type:"keyboard-shortcuts",sourceId:"kbd",children:o})}),d.jsx("div",{className:"tlui-dialog__scrim"})]})}),loe=[{colorScheme:"light",label:"theme.light"},{colorScheme:"dark",label:"theme.dark"},{colorScheme:"system",label:"theme.system"}];function coe(){const e=B(),n=Zr(),t=G("colorScheme",()=>e.user.getUserPreferences().colorScheme,[e]);return d.jsx(Wn,{id:"help menu color-scheme",label:"menu.theme",children:d.jsx(ge,{id:"languages",children:loe.map(({colorScheme:r,label:o})=>d.jsx(Kn,{id:`color-scheme-${r}`,label:o,checked:r===t,onSelect:()=>{e.user.updateUserPreferences({colorScheme:r}),n("color-scheme",{source:"menu",value:r})}},r))})})}function uoe(){return d.jsxs(d.Fragment,{children:[d.jsx(hoe,{}),d.jsx(moe,{}),d.jsx(doe,{}),d.jsx(yoe,{}),d.jsx(Soe,{})]})}function doe(){const e=ie();return d.jsxs(Wn,{id:"export-all-as",label:"context-menu.export-all-as",size:"small",children:[d.jsxs(ge,{id:"export-all-as-group",children:[d.jsx(H,{...e["export-all-as-svg"]}),d.jsx(H,{...e["export-all-as-png"]}),d.jsx(H,{...e["export-all-as-json"]})]}),d.jsx(ge,{id:"export-all-as-bg",children:d.jsx(sb,{})})]})}function hoe(){const e=B(),n=G("isSelectToolActive",()=>e.getCurrentToolId()==="select",[e]);return d.jsxs(Wn,{id:"edit",label:"menu.edit",disabled:!n,children:[d.jsx(goe,{}),d.jsx(mR,{}),d.jsx(yR,{}),d.jsx(poe,{}),d.jsx(foe,{}),d.jsx(ge,{id:"select-all",children:d.jsx(SR,{})})]})}function poe(){return d.jsxs(ge,{id:"misc",children:[d.jsx(lR,{}),d.jsx(cR,{}),d.jsx(iR,{}),d.jsx(sR,{}),d.jsx(uR,{}),d.jsx(dR,{}),d.jsx(xR,{}),d.jsx(vR,{}),d.jsx(aR,{})]})}function foe(){return d.jsxs(ge,{id:"lock",children:[d.jsx(hR,{}),d.jsx(Sre,{})]})}function goe(){const e=ie(),n=zO(),t=NO();return d.jsxs(ge,{id:"undo-redo",children:[d.jsx(H,{...e.undo,disabled:!n}),d.jsx(H,{...e.redo,disabled:!t})]})}function moe(){const e=ie();return d.jsx(Wn,{id:"view",label:"menu.view",children:d.jsxs(ge,{id:"view-actions",children:[d.jsx(H,{...e["zoom-in"]}),d.jsx(H,{...e["zoom-out"]}),d.jsx(pR,{}),d.jsx(fR,{}),d.jsx(gR,{})]})})}function yoe(){const e=ie();return d.jsxs(ge,{id:"extras",children:[d.jsx(H,{...e["insert-embed"]}),d.jsx(H,{...e["insert-media"]})]})}function Soe(){return d.jsx(ge,{id:"preferences",children:d.jsxs(Wn,{id:"preferences",label:"menu.preferences",children:[d.jsxs(ge,{id:"preferences-actions",children:[d.jsx(Mre,{}),d.jsx(Are,{}),d.jsx(jre,{}),d.jsx(Ore,{}),d.jsx(Dre,{}),d.jsx(Rre,{}),d.jsx(Lre,{}),d.jsx(Fre,{}),d.jsx(Nre,{}),d.jsx($re,{})]}),d.jsx(ge,{id:"color-scheme",children:d.jsx(coe,{})}),d.jsx(ge,{id:"language",children:d.jsx(bR,{})})]})})}const voe=P.memo(function({children:n}){const t=un(),[r,o]=ui("main menu"),s=Te(),i=n??d.jsx(uoe,{});return d.jsxs(nb,{dir:"ltr",open:r,onOpenChange:o,modal:!1,children:[d.jsx(rb,{asChild:!0,dir:"ltr",children:d.jsx(he,{type:"icon","data-testid":"main-menu.button",title:s("menu.title"),children:d.jsx(Pe,{icon:"menu",small:!0})})}),d.jsx($g,{container:t,children:d.jsx(ob,{className:"tlui-menu",side:"bottom",align:"start",collisionPadding:4,alignOffset:0,sideOffset:6,children:d.jsx(_r,{type:"menu",sourceId:"main-menu",children:i})})})]})}),xoe=P.memo(function(){const n=Hn(),{MainMenu:t,QuickActions:r,ActionsMenu:o,PageMenu:s}=pi();return!t&&!s&&n<6?null:d.jsx("div",{className:"tlui-menu-zone",children:d.jsxs("div",{className:"tlui-buttons__horizontal",children:[t&&d.jsx(t,{}),s&&d.jsx(s,{}),n<6?null:d.jsxs(d.Fragment,{children:[r&&d.jsx(r,{}),o&&d.jsx(o,{})]})]})})}),_y={};function pc(e){if(_y[e])return _y[e];const t=document.createElement("canvas").getContext("2d");t.fillStyle=e,t.fillRect(0,0,1,1);const[r,o,s,i]=t.getImageData(0,0,1,1).data,a=new Float32Array([r/255,o/255,s/255,i/255]);return _y[e]=a,a}const gp=10,PR=4*6*gp+12+4*12;function Ca(e,{center:n,radius:t,numArcSegments:r=20,startAngle:o=0,endAngle:s=Re,offset:i=0}){const a=(s-o)/r;let l=i;for(let c=o;c<s;c+=a)e[l++]=n.x,e[l++]=n.y,e[l++]=n.x+Math.cos(c)*t,e[l++]=n.y+Math.sin(c)*t,e[l++]=n.x+Math.cos(c+a)*t,e[l++]=n.y+Math.sin(c+a)*t;return e}function Ia(e,n,t,r,o,s){e[n++]=t,e[n++]=r,e[n++]=t,e[n++]=r+s,e[n++]=t+o,e[n++]=r,e[n++]=t+o,e[n++]=r,e[n++]=t,e[n++]=r+s,e[n++]=t+o,e[n++]=r+s}function woe(e,n,t){const r=gp;t=Math.min(t,Math.min(n.w,n.h)/2);const o=Z.ExpandBy(n,-t);if(o.w<=0||o.h<=0)return Ca(e,{center:n.center,radius:t,numArcSegments:gp*4}),gp*4*6;let s=0;return Ia(e,s,o.minX,o.minY,o.w,o.h),s+=12,Ia(e,s,o.minX,n.minY,o.w,t),s+=12,Ia(e,s,o.maxX,o.minY,t,o.h),s+=12,Ia(e,s,o.minX,o.maxY,o.w,t),s+=12,Ia(e,s,n.minX,o.minY,t,o.h),s+=12,Ca(e,{numArcSegments:r,offset:s,center:o.point,radius:t,startAngle:ke,endAngle:ke*1.5}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,new w(o.w,0)),radius:t,startAngle:ke*1.5,endAngle:Re}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,o.size),radius:t,startAngle:0,endAngle:Ge}),s+=r*6,Ca(e,{numArcSegments:r,offset:s,center:w.Add(o.point,new w(0,o.h)),radius:t,startAngle:Ge,endAngle:ke}),PR}function boe(e){if(!e)throw new Error("Canvas element not found");const n=e.getContext("webgl2",{premultipliedAlpha:!1});if(!n)throw new Error("Failed to get webgl2 context");const t=`#version 300 es
|
|
286
286
|
precision mediump float;
|
|
287
287
|
|
|
288
288
|
in vec2 shapeVertexPosition;
|