mesurer-solid 0.2.0-beta.13 → 0.2.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +236 -233
- package/dist/inject-script.js +2 -2
- package/dist/inject.js +236 -233
- package/dist/plugins.js +657 -654
- package/package.json +1 -1
package/dist/inject-script.js
CHANGED
|
@@ -1715,7 +1715,7 @@ body.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesur
|
|
|
1715
1715
|
}
|
|
1716
1716
|
}
|
|
1717
1717
|
}
|
|
1718
|
-
`,Gf=0,Kf=`mesurer:tab-id`,qf=`mesurer-settings`,Jf=`mesurer-state`,Yf=80,Xf=(e,t)=>{try{let n=e.sessionStorage.getItem(`${t}:toolbar-position`);if(!n)return;let r=JSON.parse(n);return!Number.isFinite(r.x)||!Number.isFinite(r.y)?void 0:{x:r.x,y:r.y}}catch{return}},Zf=(e,t,n)=>{try{e.sessionStorage.setItem(`${t}:toolbar-position`,JSON.stringify(n))}catch{}},Qf=e=>{try{let t=e.sessionStorage.getItem(Kf);if(t)return t;let n=e.crypto.randomUUID();return e.sessionStorage.setItem(Kf,n),n}catch{return`session`}},$f=(e,t)=>{let n=t=>t!==void 0&&e.document.defaultView?.CSS?.supports(`color`,t)===!0,r={...t};if(n(t.highlightColor)||(r.highlightColor=void 0),n(t.guideColor)||(r.guideColor=void 0),t.selectionSpacingStyle){let e={...t.selectionSpacingStyle};e.color!==void 0&&!n(e.color)&&(e.color=void 0),r.selectionSpacingStyle=e}return r},ep=(e,t)=>{if(e.length<=1)return null;let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t of e)n=Math.min(n,t.rect.left),r=Math.min(r,t.rect.top),i=Math.max(i,t.rect.left+t.rect.width),a=Math.max(a,t.rect.top+t.rect.height);let o={left:n,top:r,width:i-n,height:a-r};return{...e[e.length-1],id:`group-${e.map(e=>e.id).join(`|`)}`,label:`${e.length} elements`,rect:o,paddingRect:o,marginRect:o,padding:{top:0,right:0,bottom:0,left:0},margin:{top:0,right:0,bottom:0,left:0},elementRef:void 0,originRect:t??void 0}};function tp(e){let t=yt(()=>e.model),n=yt(()=>e.env),r=yt(()=>e.input),i=yt(()=>e.onSelectionSpacingStyleChange),a=yt(()=>e.onResetSelectionSpacingStyle),{ownerDocument:o,ownerWindow:s}=n,c=r.pageTarget??o.body,l=++Gf,u=r.persistKey??`mesurer-state:${Qf(s)}${l===1?``:`:${l}`}`,d={key:``,entries:[],overlayNode:null,frame:-1},f=null,p=null,m=null,h=!1,g=0,_=!1,v=0,y=null,b=null,x=!1,S=0,C=null,w={x:s.scrollX,y:s.scrollY},T=nf({model:t,ownerWindow:s,ownerDocument:o,uiRoot:()=>f}),E=e=>r.isBuiltinActionDisabled?.(e)??!1,D=(e,n=!1)=>{E(e)||(e===`color-picker`&&n&&t.current.colorPickerActive&&T.deactivate(`color-picker`),T.run(e))},O=Uf({ownerDocument:o,target:r.pageTarget??o.body,instanceId:l});r.onBuiltinController?.(T);let k=Rr(()=>{let e=t.state.start,n=t.state.end;return e&&n?vo(e,n):null}),A=Rr(()=>ep(t.state.selectedMeasurements,t.state.selectionOriginRect)),j=Rr(()=>A()?[A()]:t.state.selectedMeasurements.length?t.state.selectedMeasurements:t.state.selectedMeasurement?[t.state.selectedMeasurement]:[]),M=Rr(()=>hd(t.state.guides,t.state.selectedGuideIds)),N=Rr(()=>md(t.state.hoverPointer,t.state.guides)),P=Rr(()=>A()??t.state.selectedMeasurement??t.state.selectedMeasurements.at(-1)??null),F=Rr(()=>gd({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:P(),selectedGuide:M(),hoverGuide:N(),hoverElement:t.state.hoverElement,selectedElementRef:P()?.elementRef??null})),I=Rr(()=>_d({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:P(),optionPairOverlay:F(),selectedGuideIds:t.state.selectedGuideIds,selectedElement:P()?.elementRef??null,hoverElement:t.state.hoverElement})),L=Rr(()=>{if(!t.state.altPressed||t.state.toolMode!==`guides`)return null;let e=M(),n=N();if(e&&n&&e.id!==n.id)return Ao(dd(e,s),dd(n,s),null,null,s);let r=t.state.guidePreview;if(!r)return null;let i=t.state.guides.filter(e=>e.orientation===r.orientation).sort((e,t)=>Math.abs(e.position-r.position)-Math.abs(t.position-r.position))[0];return i?Ao(dd({id:`preview`,...r},s),dd(i,s),null,null,s):null}),R=e=>{let n=Dd(e,f,o,c);if(!n){t.setHoverTarget(null,null);return}let r=n.getBoundingClientRect();t.setHoverTarget(n,t.current.settings.hoverHighlightEnabled?{left:r.left,top:r.top,width:r.width,height:r.height}:null)},z=e=>{y=e,!v&&(v=s.requestAnimationFrame(()=>{v=0;let e=y;e&&(t.current.toolMode===`select`&&!t.current.draggingGuideId&&R(e),t.setTransient({hoverPointer:t.current.guides.length?e:null}),t.current.toolMode===`guides`&&!t.current.draggingGuideId&&t.setTransient({guidePreview:{orientation:t.current.guideOrientation,position:pd({orientation:t.current.guideOrientation,point:e,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:null,document:o})}}))}))},B=()=>{S&&s.clearTimeout(S),S=0,C=null},V=e=>{B(),C=e,S=s.setTimeout(()=>{S=0,C===e&&t.setTransient({draggingGuideId:e})},220)},H=()=>{t.setTransient({start:null,end:null,isDragging:!1,draggingGuideId:null,guidePreview:null}),b=null,x=!1,d.key=``,t.endAction()},U=e=>{if(t.current.settingsOpen||!t.current.enabled||e.button!==0||t.current.toolMode===`none`)return;let n={x:e.clientX,y:e.clientY},r=t.beginAction();if(t.current.altPressed&&F()){e.preventDefault(),r(),t.addHeldDistance({...F(),id:Eo()}),t.endAction();return}if(t.current.toolMode===`guides`){e.preventDefault(),r();let i=Eo(),a=pd({orientation:t.current.guideOrientation,point:n,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:null,document:o});t.addGuide({id:i,orientation:t.current.guideOrientation,position:a}),t.setSelectedGuideIds(t.current.settings.selectNewGuideEnabled?[i]:[]),t.setTransient({guidePreview:null}),V(i),os(e.currentTarget,e.pointerId);return}t.current.selectedGuideIds.length>0&&(r(),t.setSelectedGuideIds([])),x=e.shiftKey,b=e.shiftKey?Bd({point:n,selectedMeasurements:t.current.selectedMeasurements,overlayNode:f,document:o,exact:!0})?.elementRef??null:null,t.setTransient({start:n,end:n,isDragging:!1,selectionOriginRect:null}),os(e.currentTarget,e.pointerId)},W=e=>{if(!t.current.enabled||t.current.settingsOpen)return;let n={x:e.clientX,y:e.clientY};if(e.altKey!==t.current.altPressed&&t.setTransient({altPressed:e.altKey}),z(n),t.current.draggingGuideId){let e=t.current.guides.find(e=>e.id===t.current.draggingGuideId);if(e){let r=pd({orientation:e.orientation,point:n,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:e.id,document:o});t.updateGuide(e.id,{position:r})}return}if(t.current.toolMode===`guides`)return;let r=t.current.start;if(!r)return;let i=x?12:4,a=t.current.isDragging||Math.abs(n.x-r.x)>i||Math.abs(n.y-r.y)>i;t.setTransient({end:n,isDragging:a})},ee=e=>{if(!t.current.enabled)return;if(t.current.toolMode===`guides`){B(),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture?.(e.pointerId),H();return}if(t.current.toolMode!==`select`){H();return}let n=t.current.start;if(!n){H();return}let r={x:e.clientX,y:e.clientY};if(t.current.isDragging){let i=vo(n,r),a=Ld(i,f,d,o,c).map(e=>({...ld(e,s),originRect:i})),l=a;if(e.shiftKey){let e=new Map;for(let n of[...t.current.selectedMeasurements,...a])n.elementRef&&e.set(n.elementRef,n);l=[...e.values()]}t.checkpoint(),t.setSelectedMeasurements(l,l.at(-1)??null),t.setTransient({selectionOriginRect:i}),H();return}let i=b?t.current.selectedMeasurements.find(e=>e.elementRef===b)??null:Bd({point:r,selectedMeasurements:t.current.selectedMeasurements,overlayNode:f,document:o,exact:e.shiftKey});if((e.shiftKey||!t.current.settings.hoverHighlightEnabled)&&i){t.checkpoint();let e=t.current.selectedMeasurements.filter(e=>e.elementRef!==i.elementRef);t.setSelectedMeasurements(e,e.at(-1)??null),H();return}let a=e.shiftKey?Dd(r,f,o,c)??Od(r,f,t.current.settings.snapEnabled,o,c):Od(r,f,t.current.settings.snapEnabled,o,c);if(a){let n=ld(a,s);if(t.checkpoint(),e.shiftKey||t.current.settings.multiMeasureEnabled){let e=t.current.selectedMeasurements.some(e=>e.elementRef===a)?t.current.selectedMeasurements.filter(e=>e.elementRef!==a):[...t.current.selectedMeasurements,n];t.setSelectedMeasurements(e,e.at(-1)??null)}else t.setSelectedMeasurements([n],n);let r={id:n.id,rect:n.rect,normalizedRect:go(n.rect),elementRef:n.elementRef,deltaX:0,deltaY:0};t.setActiveMeasurement(r)}else e.shiftKey||(t.checkpoint(),t.setSelectedMeasurements([],null));H()},te=()=>{B(),t.current.draggingGuideId||H(),t.setTransient({guidePreview:null})},ne=(e,n)=>{if(!(!t.current.enabled||n.button!==0||t.current.settingsOpen)){if(n.preventDefault(),n.stopPropagation(),t.checkpoint(),n.shiftKey){let n=t.current.selectedGuideIds.includes(e.id)?t.current.selectedGuideIds.filter(t=>t!==e.id):[...t.current.selectedGuideIds,e.id];t.setSelectedGuideIds(n);return}t.setSelectedGuideIds([e.id]),t.setTransient({draggingGuideId:e.id}),os(n.currentTarget,n.pointerId)}},re=(e,n)=>{n.stopPropagation(),t.setTransient({draggingGuideId:null}),n.currentTarget.hasPointerCapture?.(n.pointerId)&&n.currentTarget.releasePointerCapture?.(n.pointerId)},ie=(e,n,r=null)=>pd({orientation:e,point:e===`vertical`?{x:n,y:0}:{x:0,y:n},snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:r,document:o}),ae=(e,n)=>{t.checkpoint();let r=Eo();return t.addGuide({id:r,orientation:e,position:ie(e,n)}),t.setSelectedGuideIds([]),r},oe=(e,n)=>{let r=t.current.guides.find(t=>t.id===e);r&&t.updateGuide(e,{position:ie(r.orientation,n,e)})},se=e=>{t.current.settings.selectNewGuideEnabled&&t.setSelectedGuideIds([e])},ce=e=>t.setGuides(t.current.guides.filter(t=>t.id!==e)),le=()=>{t.clearWorkspace(),p?.clear(),m?.clearWorkspace()};return Vr(()=>[t.state.toolMode,t.state.enabled],([e,t])=>{p&&(e===`text-inspector`&&t?p.enable():p.disable())}),Vr(()=>t.state.xrayVisible,e=>O.setVisible(e)),Vr(()=>[t.state.settings.highlightColor,t.state.settings.guideColor,t.state.settings.hoverHighlightEnabled,t.state.settings.persistOnReload,t.state.settings.shortcutsEnabled,t.state.settings.theme,t.state.settings.colorPickerClickFormat,t.state.settings.snapEnabled,t.state.settings.snapGuidesEnabled,t.state.settings.selectNewGuideEnabled,t.state.settings.multiMeasureEnabled,t.state.settings.colorPickerFormats.join(`|`),JSON.stringify(t.state.settings.guideStyle),JSON.stringify(t.state.settings.rulerSettings),JSON.stringify(e.selectionSpacingStyle)],()=>{!h||!m||m.saveSettings({...t.serializeSettings(),selectionSpacingStyle:{...yt(()=>e.selectionSpacingStyle)}})}),Vr(()=>[t.state.enabled,t.state.toolMode,t.state.rulersVisible,t.state.xrayVisible,t.state.guideOrientation,t.state.settings.persistOnReload,t.state.guides.map(e=>`${e.id}:${e.orientation}:${e.position}`).join(`|`),t.state.selectedGuideIds.join(`|`),t.state.heldDistances.map(e=>e.id).join(`|`),t.state.measurements.map(e=>e.id).join(`|`),t.state.activeMeasurement?.id??``],()=>{!h||_||!m||!t.current.settings.persistOnReload||(s.clearTimeout(g),g=s.setTimeout(()=>m?.saveWorkspace(t.serializeWorkspace()),250))}),Ut(()=>{sf(Wf,n.portalTarget);let e=o.body&&n.portalTarget instanceof s.ShadowRoot&&!(c instanceof s.ShadowRoot)&&c.getRootNode()===o&&s.CSS?.supports(`anchor-name: --mesurer-native-anchor`)&&s.CSS.supports(`position-anchor: --mesurer-native-anchor`)&&s.CSS.supports(`left: anchor(left)`)?o.body:n.portalTarget;e!==n.portalTarget&&sf(Wf,e),p=If({portalTarget:e,theme:()=>t.current.settings.theme,subscribeTheme:e=>{let n=t.current.settings.theme;return e(n),t.subscribe(()=>{let r=t.current.settings.theme;r!==n&&(n=r,e(r))})}});let a=r.persistence??Gs(s,u,qf,r.persistKey?void 0:Jf);m=a,a.setErrorHandler?.(r.onPersistenceError);let l=fs(s);a.setPageKey?.(l);let d=a.load();if(d?.settings){let e=$f(s,d.settings);t.applyStoredSettings(e),e.selectionSpacingStyle&&i(e.selectionSpacingStyle)}(t.current.settings.persistOnReload||r.persistOnReload)&&d?.workspace&&t.applyStoredWorkspace(d.workspace),h=!0,t.current.toolMode===`text-inspector`&&t.current.enabled&&p.enable();let f=a.subscribe?.((e,n)=>{if(e){if(n?.settings!==!1){let n=$f(s,e.settings);t.applyStoredSettings(n),n.selectionSpacingStyle&&i(n.selectionSpacingStyle)}n?.workspace!==!1&&e.workspace&&t.current.settings.persistOnReload&&t.applyStoredWorkspace(e.workspace)}}),b=gs(s,e=>{if(e===l)return;_=!0,s.clearTimeout(g),g=0,t.current.settings.persistOnReload&&a.saveWorkspace(t.serializeWorkspace()),l=e,a.setPageKey?.(e);let n=a.load(),r={enabled:t.current.enabled,toolMode:t.current.toolMode,rulersVisible:t.current.rulersVisible,xrayVisible:t.current.xrayVisible,guideOrientation:t.current.guideOrientation};t.clearAll(!1),p?.clear(),t.current.settings.persistOnReload&&n?.workspace&&t.applyStoredWorkspace({...n.workspace,...r}),_=!1}),x=e=>{if(is(e,s))return;let n=e.key.toLowerCase(),r=e.metaKey||e.ctrlKey;if(n===`escape`){if(t.current.settingsOpen){t.setTransient({settingsOpen:!1});return}if(t.current.colorPickerActive){T.deactivate(`color-picker`);return}if(t.current.toolMode===`select`){t.current.selectedMeasurements.length>0||t.current.selectedMeasurement!==null||t.current.selectionOriginRect!==null||t.current.selectedGuideIds.length>0?T.clearSelection():T.deactivate(`select`);return}t.current.toolMode===`text-inspector`&&p?.clear(),t.clearAll();return}if(t.current.settings.shortcutsEnabled){if(e.key===`Alt`){t.setTransient({altPressed:!0});return}if(r&&n===`,`){e.preventDefault(),D(`settings`);return}if(r&&n===`z`){if(e.preventDefault(),t.current.toolMode===`text-inspector`&&(e.shiftKey?p?.redo():p?.undo()))return;e.shiftKey?t.redo():t.undo();return}if((n===`delete`||n===`backspace`)&&t.current.selectedGuideIds.length){e.preventDefault(),t.removeGuides(t.current.selectedGuideIds);return}if(n===`m`){t.current.colorPickerActive&&T.deactivate(`color-picker`),t.toggleEnabled(!0);return}if(n===`s`){D(`select`);return}if(n===`a`){D(`text-inspector`);return}if(n===`g`){D(`guides`);return}if(n===`p`){D(`color-picker`,!0);return}if(n===`x`){D(`xray`);return}if(n===`r`){D(`rulers`);return}if(n===`h`){E(`guides`)||t.setGuideOrientation(`horizontal`,!0);return}n===`v`&&(E(`guides`)||t.setGuideOrientation(`vertical`,!0))}},S=e=>{e.key===`Alt`&&t.setTransient({altPressed:!1})};s.addEventListener(`keydown`,x),s.addEventListener(`keyup`,S);let C=0,k=0,A=()=>us(o),j=()=>{C||=s.requestAnimationFrame(()=>{C=0;let e=t.current.selectedMeasurements.filter(e=>e.elementRef?.isConnected).map(e=>({...ld(e.elementRef,s),id:e.id,originRect:e.originRect}));if(e.length||t.current.selectedMeasurements.length){let n=t.current.selectedMeasurement?.id;t.setSelectedMeasurements(e,e.find(e=>e.id===n)??e.at(-1)??null)}let n=ho(s);t.current.measurements.length&&t.setMeasurements(t.current.measurements.map(e=>ud(e,n,o))),t.current.activeMeasurement&&t.setActiveMeasurement(ud(t.current.activeMeasurement,n,o)),t.current.heldDistances.length&&t.setHeldDistances(t.current.heldDistances.map(e=>qo(e,n,o,s)));let r=t.current.hoverElement;if(r?.isConnected&&t.current.toolMode===`select`){let e=r.getBoundingClientRect();t.setHoverTarget(r,t.current.settings.hoverHighlightEnabled?{left:e.left,top:e.top,width:e.width,height:e.height}:null)}})},M=()=>{k&&s.clearTimeout(k),k=s.setTimeout(()=>{k=0,j();let e=y;e&&t.current.toolMode===`select`&&!t.current.draggingGuideId&&R(e)},Yf)},N=()=>{let e={x:s.scrollX,y:s.scrollY},n=e.x-w.x,r=e.y-w.y;w=e,(n||r)&&t.current.guides.length&&t.setGuides(t.current.guides.map(e=>({...e,position:e.position-(e.orientation===`vertical`?n:r)}))),A()?M():j()};s.addEventListener(`scroll`,N,{capture:!0,passive:!0}),s.addEventListener(`resize`,j,!0);let P=e=>{let n=t.current.draggingGuideId;if(!n)return;let r=t.current.guides.find(e=>e.id===n);r&&t.updateGuide(n,{position:ie(r.orientation,r.orientation===`vertical`?e.clientX:e.clientY,n)})},F=()=>t.setTransient({draggingGuideId:null});return s.addEventListener(`pointermove`,P,!0),s.addEventListener(`pointerup`,F,!0),s.addEventListener(`pointercancel`,F,!0),()=>{s.cancelAnimationFrame(C),s.cancelAnimationFrame(v),B(),s.clearTimeout(k),s.clearTimeout(g),t.current.settings.persistOnReload&&a.saveWorkspace(t.serializeWorkspace()),f?.(),b(),a.setErrorHandler?.(void 0),s.removeEventListener(`keydown`,x),s.removeEventListener(`keyup`,S),s.removeEventListener(`scroll`,N,!0),s.removeEventListener(`resize`,j,!0),s.removeEventListener(`pointermove`,P,!0),s.removeEventListener(`pointerup`,F,!0),s.removeEventListener(`pointercancel`,F,!0),p?.destroy(),p=null,O.dispose(),T.dispose(),r.onBuiltinController?.(null)}}),Y(Si,{get mount(){return n.portalMount},get children(){var n=X(`div`,{class:`mesurer-solid-root`,"data-mesurer-root":`true`});return Qi(()=>e=>{f=e,t.rendererRoot=e},n),Q(n,Y(q,{get when(){return qi(()=>!!t.state.enabled)()?t.state.rulersVisible:t.state.enabled},get children(){return Y(cl,{ownerWindow:s,get settings(){return t.state.settings.rulerSettings},get interactive(){return!t.state.settingsOpen},get forceVisible(){return t.state.settingsOpen},get guides(){return t.state.guides},get selectedGuideIds(){return t.state.selectedGuideIds},onStartGuide:ae,onMoveGuide:oe,onFinishGuide:se,onCancelGuide:ce})}}),null),Q(n,Y(rl,{model:t,get displayedSelectedMeasurements(){return j()},get activeRect(){return k()},get optionPairOverlay(){return F()},get guideDistanceOverlay(){return L()},get optionContainerLines(){return I()},get hoverGuide(){return N()},get selectionSpacingStyle(){return e.selectionSpacingStyle},get interactive(){return qi(()=>!!t.state.enabled)()?!t.state.settingsOpen:t.state.enabled},get suppressHoverWhenSelected(){return r.suppressSelectHoverWhenSelected??!1},onPointerDown:U,onPointerMove:W,onPointerUp:ee,onPointerLeave:te,onGuidePointerDown:ne,onGuidePointerUp:re}),null),Q(n,Y(mo,{model:t,ownerWindow:s,onHostPick:e=>{T.pickColorAt(e)}}),null),Q(n,Y(ju,{model:t,ownerWindow:s,onBuiltinAction:D,get pluginTools(){return r.pluginTools},get onPluginTool(){return r.onPluginTool},get onPluginToolMenuItem(){return r.onPluginToolMenuItem},isBuiltinActionDisabled:E,onClearWorkspace:le,get selectionSpacingStyle(){return e.selectionSpacingStyle},onSelectionSpacingStyleChange:i,onResetSettings:()=>{t.resetSettings(),a(),m?.clearSettings()},get initialPosition(){return Sl(s,Xf(s,u))},onPositionChange:e=>Zf(s,u,e)}),null),J(()=>t.state.settings.theme,(e,t)=>{$(n,`data-theme`,e,t)}),n}})}function np(e){let t=yt(()=>({...vs,...e.selectionSpacingStyle})),[n,r]=K({...t}),i=e=>r(t=>({...t,...e})),a=()=>r({...t}),o=Kd({initialEnabled:!0,initialToolMode:`none`,settings:yt(()=>({highlightColor:e.highlightColor??`oklch(0.62 0.18 255)`,guideColor:e.guideColor??`oklch(0.63 0.26 29.23)`,hoverHighlightEnabled:e.hoverHighlightEnabled??!0,persistOnReload:e.persistOnReload??!1,shortcutsEnabled:e.shortcutsEnabled??!0,theme:e.theme??`system`,colorPickerFormats:e.colorPickerFormats??[`hex`,`rgb`,`oklch`],colorPickerClickFormat:e.colorPickerClickFormat??`hex`,snapEnabled:e.snapEnabled??!0,snapGuidesEnabled:e.snapGuidesEnabled??!0,selectNewGuideEnabled:e.selectNewGuideEnabled??!0,multiMeasureEnabled:e.multiMeasureEnabled??!1,guideStyle:{..._s,...e.guideStyle},rulerSettings:{...ys,...e.rulerSettings}}))}),[s,c]=K(null);return Ut(()=>{let t=e.portalTarget??document.body,n=t.ownerDocument??document,r=n.defaultView??window,i,a=!1;return t instanceof r.ShadowRoot?(i=n.createElement(`div`),i.dataset.mesurerPortal=`true`,t.append(i),a=!0):i=t,c({ownerDocument:n,ownerWindow:r,portalTarget:t,portalMount:i,ownedPortalMount:a}),()=>{a&&i.remove()}}),Y(q,{get when(){return s()},children:t=>Y(tp,{model:o,get env(){return t()},input:e,get selectionSpacingStyle(){return n()},onSelectionSpacingStyleChange:i,onResetSelectionSpacingStyle:a})})}var rp=`mesurer.presentation.preferences`,ip=`presentation`,ap={keepTextChanges:!1,keepArrangeChanges:!1},op=e=>e.state.get(`mesurer.presentation.preferences`)??ap,sp=(e,t)=>{e.state.update(rp,e=>({...e,...t}))},cp=e=>{e.state.register({id:rp,initial:{...ap},persist:!0}),e.settings.register({id:ip,label:`Changes`,order:20,controls:[{type:`toggle`,id:`keep-text-changes`,label:`Keep text changes`,description:`Keep saved Typography text and style changes visible while another tool is active.`,value:()=>op(e).keepTextChanges,set:t=>sp(e,{keepTextChanges:t})},{type:`toggle`,id:`keep-arrange-changes`,label:`Keep Arrange changes`,description:`Keep saved Arrange positions visible while another tool is active.`,value:()=>op(e).keepArrangeChanges,set:t=>sp(e,{keepArrangeChanges:t})}]})},lp=`mesurer.arrange`,up=`arrange`,dp=`mesurer.arrange.intents`,fp=`mesurer.arrange.active`,pp=`mesurer.arrange.settings`,mp=`runtime:solid`,hp=`builtin.select`,gp=`arrange.toggle`,_p=`arrange.commit`,vp=`arrange.clear`,yp=`arrange.reset-selection`,bp=`arrange.reset-all`,xp=`mesurer.arrange.selection-available`,Sp=1,Cp=24,wp=160,Tp=500,Ep=`#ef4444`,Dp=24,Op=6,kp=30,Ap=.5,jp={viewBox:`0 0 24 24`,paths:[`M12 2.75 8.75 6h2.5v5.25H6V8.75L2.75 12 6 15.25v-2.5h5.25V18h-2.5L12 21.25 15.25 18h-2.5v-5.25H18v2.5L21.25 12 18 8.75v2.5h-5.25V6h2.5L12 2.75Z`]},Mp=(e,t)=>({left:e.left+t.x,top:e.top+t.y,width:e.width,height:e.height}),Np=(e,t)=>({left:e.left-t.left,top:e.top-t.top,width:e.width-t.width,height:e.height-t.height}),Pp=e=>{if(!e.length)return null;let t=Math.min(...e.map(e=>e.left)),n=Math.min(...e.map(e=>e.top)),r=Math.max(...e.map(e=>e.left+e.width)),i=Math.max(...e.map(e=>e.top+e.height));return{left:t,top:n,width:r-t,height:i-n}},Fp=(e,t,n,r)=>Math.max(0,Math.max(e,n)-Math.min(t,r)),Ip=(e,t,n)=>{let r=t===`x`?e.left:e.top,i=t===`x`?e.width:e.height,a=r+i;return n===`edge`?[r,a]:n===`center`?[r+i/2]:[r,r+i/2,a]},Lp=(e,t)=>t===`x`?{start:e.top,end:e.top+e.height}:{start:e.left,end:e.left+e.width},Rp=e=>e.kind===`edge`?2:+(e.kind===`guide`),zp=(e,t,n)=>{let r=Lp(t,e),i=null;for(let a of n)if(a.axis===e&&!(a.source===`element`&&Fp(r.start,r.end,a.start,a.end)>wp))for(let n of Ip(t,e,a.kind)){let e=a.position-n,t=Math.abs(e);if(t>10)continue;let r=i?Math.abs(i.delta):1/0;(t<r||t===r&&(!i||Rp(a)>Rp(i)))&&(i={...a,delta:e})}return i},Bp=e=>{let{origin:t,pathname:n,search:r}=e.location;return`${t}${n}${r}`},Vp=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,Hp=e=>({tag:e.fingerprintTag,id:e.fingerprintId,testId:e.fingerprintTestId,role:e.fingerprintRole,ariaLabel:e.fingerprintAriaLabel,classes:[...e.fingerprintClasses],text:e.fingerprintText}),Up=e=>({id:e.id,selector:e.selector,fingerprint:Hp(e),before:{left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight},desired:{left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight},beforeOffset:{x:e.beforeOffsetX,y:e.beforeOffsetY},desiredOffset:{x:e.desiredOffsetX,y:e.desiredOffsetY}}),Wp=e=>({id:e.id,createdAt:e.createdAt,pageUrl:e.pageUrl,targets:e.targets.map(Up)}),Gp=(e,t)=>({value:e.style.getPropertyValue(t),priority:e.style.getPropertyPriority(t)}),Kp=e=>Gp(e,`transform`),qp=(e,t)=>e.value===t.value&&e.priority===t.priority,Jp=qp,Yp=e=>{let{element:t,beforeTransform:n,appliedTransform:r}=e;Jp(Kp(t),r)&&(n.value||n.priority?t.style.setProperty(`transform`,n.value,n.priority):t.style.removeProperty(`transform`))},Xp=e=>e instanceof Element&&!!e.closest(`input, textarea, select, [contenteditable='true'], [contenteditable='']`),Zp=()=>_a({id:lp,version:`0.1.0`,requires:[mp,`tool:select`],provides:[`tool:arrange`,`intent:arrange`,`agent:arrange`,`settings:arrange`],setup(e){let t=e.service.get(mp);if(!t)throw Error(`Arrange plugin requires the Solid renderer runtime.`);let{ownerDocument:n,ownerWindow:r}=t,i=t.createWorkspaceRuntime(),a=t.createInspectorMount(),o=t.pageTarget??n.body??n.documentElement,s=t.portalTarget,c=r;e.state.register({id:dp,initial:{intents:[]},history:!0,persist:!0}),e.state.register({id:fp,initial:!1}),e.state.register({id:pp,initial:{snapping:!0,elementEdges:!0,elementCenters:!0,guides:!0,preferXrayEdges:!0,snapLines:!0},persist:!0});let l=a.element;l.dataset.mesurerArrange=`true`,l.style.position=`fixed`,l.style.inset=`0`,l.style.zIndex=`84`,l.style.pointerEvents=`none`;let u=n.createElement(`div`);u.dataset.mesurerArrangeSnapLine=`vertical`,u.setAttribute(`aria-hidden`,`true`),u.style.position=`fixed`,u.style.display=`none`,u.style.width=`1px`,u.style.backgroundColor=Ep,u.style.pointerEvents=`none`;let d=n.createElement(`div`);d.dataset.mesurerArrangeSnapLine=`horizontal`,d.setAttribute(`aria-hidden`,`true`),d.style.position=`fixed`,d.style.display=`none`,d.style.height=`1px`,d.style.backgroundColor=Ep,d.style.pointerEvents=`none`;let f=n.createElement(`div`);f.dataset.mesurerArrangeBox=`true`,f.setAttribute(`role`,`application`),f.setAttribute(`aria-label`,`Arrange selected elements`),f.style.position=`fixed`,f.style.display=`none`,f.style.boxSizing=`border-box`,f.style.border=`1px solid #0d99ff`,f.style.cursor=`grab`,f.style.pointerEvents=`auto`,f.style.touchAction=`none`,f.style.userSelect=`none`,l.append(u,d,f);let p=new Map,m=new Map,h=new Map,g=new Map,_={intentId:null,state:`desired`},v=null,y=null,b=null,x=!1,S=0,C=null,w=()=>e.state.get(`mesurer.arrange.intents`)??{intents:[]},T=()=>e.state.get(`mesurer.arrange.active`)??!1,E=()=>{let t=e.state.get(pp);return{snapping:t?.snapping??!0,elementEdges:t?.elementEdges??!0,elementCenters:t?.elementCenters??!0,guides:t?.guides??!0,preferXrayEdges:t?.preferXrayEdges??!0,snapLines:t?.snapLines??!0}},D=t=>{e.state.update(pp,e=>({...e,...t}))},O=()=>Bp(r),k=()=>w().intents.filter(e=>e.pageUrl===O()),A=e=>!!e.closest(`[data-mesurer-island='true'], [data-mesurer-inspector-ui='true'], [data-mesurer-root='true']`),j=e=>qu(e,o)&&!A(e),M=e=>{let t=[];o instanceof c.HTMLElement&&o.matches(e)&&!A(o)&&t.push(o);for(let n of o.querySelectorAll(e))n instanceof c.HTMLElement&&j(n)&&t.push(n);return t},N=e=>{let t=Hp(e);if(!Zu(t))return null;let n=[];try{n=M(e.selector).filter(e=>Qu(e,t))}catch{return null}if(n.length!==1)return null;if(!t.id&&!t.testId){let e=[];try{e=M(t.tag).filter(e=>Qu(e,t))}catch{return null}if(e.length!==1||e[0]!==n[0])return null}return n[0]??null},P={value:`none`,priority:`important`},F=e=>{let t=Gp(e,`transition-property`);(!m.get(e)||!qp(t,P))&&m.set(e,t),qp(t,P)||e.style.setProperty(`transition-property`,P.value,P.priority)},I=e=>{let t=m.get(e);t&&(qp(Gp(e,`transition-property`),P)&&(t.value||t.priority?e.style.setProperty(`transition-property`,t.value,t.priority):e.style.removeProperty(`transition-property`)),m.delete(e))},L=e=>{for(let t of m.keys())e.has(t)||I(t)},R=()=>{for(let e of m.keys())I(e)},z=()=>{for(let e of p.values())Yp(e);p.clear()},B=()=>{z(),R()},V=()=>{u.style.display=`none`,d.style.display=`none`},H=(e,t,n)=>{if(V(),E().snapLines){if(e){let t=Math.min(n.top,e.start),r=Math.max(n.top+n.height,e.end);u.style.display=`block`,u.style.left=`${e.position}px`,u.style.top=`${t}px`,u.style.height=`${Math.max(1,r-t)}px`}if(t){let e=Math.min(n.left,t.start),r=Math.max(n.left+n.width,t.end);d.style.display=`block`,d.style.left=`${e}px`,d.style.top=`${t.position}px`,d.style.width=`${Math.max(1,r-e)}px`}}},U=()=>{if(!(h.size>0))for(let e of s.querySelectorAll(`[data-mesurer-measurement='true']`))e instanceof c.HTMLElement&&(h.set(e,{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}),e.style.setProperty(`visibility`,`hidden`,`important`))},W=()=>{for(let[e,t]of h)t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`);h.clear()},ee=e=>{if(e.parentElement instanceof c.HTMLElement)return e.parentElement;let t=e.getRootNode();return t instanceof c.ShadowRoot&&t.host instanceof c.HTMLElement?t.host:null},te=(e,t)=>{let n=ee(e);for(;n;){let e=t.get(n);if(e)return e;n=ee(n)}return{x:0,y:0}},ne=(e=k())=>{let t=new Map;for(let n of e)for(let e of n.targets){let n=N(e);n&&t.set(n,e)}return t},re=e=>e.offsetSpace!==`local`||e.desiredLocalOffsetX===null||e.desiredLocalOffsetY===null?null:{x:e.desiredLocalOffsetX,y:e.desiredLocalOffsetY},ie=(e,t)=>{let n=ee(e);for(;n;){if(t.has(n))return n;n=ee(n)}return null},ae=(e=k(),t=new Map)=>{let n=ne(e),r=new Set([...n.keys(),...t.keys()]),i=new Map,a=new Set,o=e=>{let s=i.get(e);if(s)return s;let c=n.get(e),l=t.get(e)??(c?re(c):null);if(!l&&c){let t={x:c.desiredOffsetX,y:c.desiredOffsetY};return i.set(e,t),t}if(!l)return{x:0,y:0};if(a.has(e))return l;a.add(e);let u=ie(e,r),d=u?o(u):{x:0,y:0},f={x:d.x+l.x,y:d.y+l.y};return a.delete(e),i.set(e,f),f};for(let e of r)o(e);return i},oe=()=>{if(_.state===`live`)return new Map;if(!_.intentId)return ae();let e=w().intents.find(e=>e.id===_.intentId);if(!e)return ae();let t=new Map;for(let n of e.targets){let e=N(n);e&&t.set(e,_.state===`before`?{x:n.beforeOffsetX,y:n.beforeOffsetY}:{x:n.desiredOffsetX,y:n.desiredOffsetY})}return t},se=e=>{let t=[...e].flatMap(([t,n])=>{if(!t.isConnected||!j(t))return[];let r=te(t,e),i={x:n.x-r.x,y:n.y-r.y};return i.x===0&&i.y===0?[]:[{element:t,offset:i}]}),n=new Set(t.map(({element:e})=>e));for(let{element:e}of t)F(e);z();for(let{element:e,offset:n}of t){let t=Kp(e),i=r.getComputedStyle(e).transform,a=i&&i!==`none`?` ${i}`:``;e.style.setProperty(`transform`,`translate3d(${n.x}px, ${n.y}px, 0)${a}`,`important`),p.set(e,{element:e,beforeTransform:t,appliedTransform:Kp(e)})}L(n)},ce=()=>se(oe()),le=e=>{z();try{return e()}finally{!x&&!v&&ce()}},ue=()=>i.currentSelection().elements.filter(e=>e instanceof c.HTMLElement&&e.isConnected&&j(e));e.state.register({id:xp,initial:ue().length>0});let de=()=>e.state.get(xp)??!1,fe=()=>{let t=ue().length>0;t!==de()&&e.state.update(xp,()=>t)},pe=()=>Pp(ue().map(e=>Ru(e))),me=()=>{for(let e of g.values())e.remove();g.clear()},he=e=>{let t=e.getBoundingClientRect(),n=t.right+Op;n+Dp>r.innerWidth-4&&(n=Math.max(4,t.left-Dp-Op));let i=Math.min(Math.max(4,t.top+kp),Math.max(4,r.innerHeight-Dp-4));return{left:n,top:i}},ge=()=>{if(!T()||v){me();return}let t=k(),r=ne(t),i=ae(t),a=new Set;for(let t of ue()){let o=r.get(t);if(!o)continue;let s=i.get(t);if(!s)continue;let c=te(t,i),u=re(o)??{x:s.x-c.x,y:s.y-c.y};if(Math.abs(u.x)<=Ap&&Math.abs(u.y)<=Ap)continue;a.add(t);let d=g.get(t);d||(d=n.createElement(`button`),d.type=`button`,d.dataset.mesurerArrangeReset=`true`,d.dataset.mesurerInspectorUi=`true`,d.setAttribute(`aria-label`,`Reset position`),d.title=`Reset position`,d.textContent=`↺`,d.className=`msr:pointer-events-auto msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-[14px] msr:leading-none msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]`,d.style.position=`fixed`,d.addEventListener(`pointerdown`,e=>e.stopPropagation()),d.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),b=[t],e.command.execute(yp,void 0,{source:`arrange-reset-button`}).catch(()=>{b=null})}),g.set(t,d),l.append(d));let f=he(t);d.style.left=`${f.left}px`,d.style.top=`${f.top}px`}for(let[e,t]of g)a.has(e)||(t.remove(),g.delete(e))},_e=t=>{let n=new Set(t);n.size&&(e.state.update(`mesurer.arrange.intents`,e=>{let t=!1,r=e.intents.flatMap(e=>{if(e.pageUrl!==O())return[e];let r=e.targets.filter(e=>{let r=N(e),i=r!==null&&n.has(r);return i&&(t=!0),!i});return r.length?r.length===e.targets.length?[e]:[{...e,targets:r}]:[]});return t?{intents:r}:e}),xe(),be())},ve=()=>{e.state.update(dp,e=>{let t=e.intents.filter(e=>e.pageUrl!==O());return t.length===e.intents.length?e:{intents:t}}),xe(),be()},ye=e=>{let t=E();if(!t.snapping)return[];let n=[],a=new Set(e),s=i.snapshot(),l=s.xrayVisible&&t.preferXrayEdges&&t.elementEdges,u=0,d=i=>{if(u>=Tp||a.has(i)||e.some(e=>e.contains(i))||!j(i))return;let o=r.getComputedStyle(i);if(o.display===`none`||o.visibility===`hidden`||o.visibility===`collapse`)return;let s=o.outlineStyle===`solid`&&(Number.parseFloat(o.outlineWidth)||0)>0;if(l&&!s)return;let c=Ru(i);if(c.width<=0||c.height<=0)return;let d=wp;if(c.left+c.width<-160||c.top+c.height<-160||c.left>r.innerWidth+d||c.top>r.innerHeight+d)return;u+=1;let f=c.left+c.width,p=c.top+c.height;if(t.elementEdges){for(let e of[c.left,f])n.push({axis:`x`,position:e,start:c.top,end:p,source:`element`,kind:`edge`});for(let e of[c.top,p])n.push({axis:`y`,position:e,start:c.left,end:f,source:`element`,kind:`edge`})}t.elementCenters&&!l&&(n.push({axis:`x`,position:c.left+c.width/2,start:c.top,end:p,source:`element`,kind:`center`}),n.push({axis:`y`,position:c.top+c.height/2,start:c.left,end:f,source:`element`,kind:`center`}))};if(t.elementEdges||t.elementCenters){o instanceof c.HTMLElement&&d(o);for(let e of o.querySelectorAll(`*`)){if(u>=Tp)break;e instanceof c.HTMLElement&&d(e)}}if(t.guides)for(let e of s.guides)e.orientation===`vertical`?n.push({axis:`x`,position:e.position,start:0,end:r.innerHeight,source:`guide`,kind:`guide`}):n.push({axis:`y`,position:e.position,start:0,end:r.innerWidth,source:`guide`,kind:`guide`});return n},be=e=>{if(!T()){f.style.display=`none`,me();return}let t=e===void 0?pe():e;if(!t){f.style.display=`none`,me();return}f.style.display=`block`,f.style.left=`${t.left}px`,f.style.top=`${t.top}px`,f.style.width=`${t.width}px`,f.style.height=`${t.height}px`,v?me():ge()},xe=()=>{_={intentId:null,state:`desired`},ce(),V(),T()?U():W()},Se=()=>{_={intentId:null,state:`live`},B(),V(),W()},Ce=()=>{x||v||(ce(),V(),T()?U():W(),be())},we=()=>{S||x||(S=r.requestAnimationFrame(()=>{S=0,Ce()}))},Te=async()=>{s.querySelector(`[data-mesurer-builtin='select'] button`)?.getAttribute(`aria-pressed`)!==`true`&&await e.command.execute(hp,void 0,{source:`arrange`})},Ee=e=>{if(!T()||e.button!==0)return;let r=ue();if(!r.length)return;let a=e.shiftKey?Ju(t.rendererRoot??null,()=>Ju(l,()=>Ku({x:e.clientX,y:e.clientY},o,n))):null;if(e.shiftKey&&a instanceof c.HTMLElement&&j(a)&&!r.includes(a)){e.preventDefault(),e.stopPropagation(),i.toggleSelection(a);return}e.preventDefault(),e.stopPropagation(),_={intentId:null,state:`desired`},ce();let s=ne(k()),u=ae(k()),d=new Set(r);z();let p=r.map((e,t)=>{let n=Ru(e),r=te(e,u),i=u.get(e)??r,a=s.get(e),o=(a?re(a):null)??{x:i.x-r.x,y:i.y-r.y},c=Mp(n,i),l=Xu(e);return{element:e,movesDirectly:ie(e,d)===null,target:{id:`target-${t+1}`,selector:Yu(e),fingerprintTag:l.tag,fingerprintId:l.id,fingerprintTestId:l.testId,fingerprintRole:l.role,fingerprintAriaLabel:l.ariaLabel,fingerprintClasses:[...l.classes],fingerprintText:l.text,beforeLeft:c.left,beforeTop:c.top,beforeWidth:c.width,beforeHeight:c.height,desiredLeft:c.left,desiredTop:c.top,desiredWidth:c.width,desiredHeight:c.height,beforeOffsetX:i.x,beforeOffsetY:i.y,desiredOffsetX:i.x,desiredOffsetY:i.y,offsetSpace:`local`,beforeLocalOffsetX:o.x,beforeLocalOffsetY:o.y,desiredLocalOffsetX:o.x,desiredLocalOffsetY:o.y}}}),m=Pp(p.map(({target:e})=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight})));if(!m){ce();return}ce(),U(),V(),v={pointerId:e.pointerId,originX:e.clientX,originY:e.clientY,targets:p,groupBefore:m,snapCandidates:ye(r),shiftToggleElement:e.shiftKey&&a instanceof c.HTMLElement&&r.includes(a)?a:null,dx:0,dy:0},be(m),f.style.cursor=`grabbing`,f.setPointerCapture?.(e.pointerId)},De=(e,t,n)=>{let r=new Map;for(let i of e.targets){let e={x:i.target.beforeLocalOffsetX??0,y:i.target.beforeLocalOffsetY??0};r.set(i.element,i.movesDirectly?{x:e.x+t,y:e.y+n}:e)}return r},Oe=e=>{if(!v||e.pointerId!==v.pointerId)return;let t=e.clientX-v.originX,n=e.clientY-v.originY,r=null;e.shiftKey&&(Math.abs(t)>=Math.abs(n)?(n=0,r=`x`):(t=0,r=`y`));let i=Mp(v.groupBefore,{x:t,y:n}),a=r===`y`?null:zp(`x`,i,v.snapCandidates),o=r===`x`?null:zp(`y`,i,v.snapCandidates);t+=a?.delta??0,n+=o?.delta??0,v.dx=t,v.dy=n;let s=ae(k(),De(v,t,n));se(s);let c=Mp(v.groupBefore,{x:t,y:n});be(c),H(a,o,c)},ke=()=>{if(!v)return;let e=v.pointerId;v=null,f.hasPointerCapture?.(e)&&f.releasePointerCapture(e),f.style.cursor=`grab`,xe(),be()},Ae=t=>{if(!v||t.pointerId!==v.pointerId)return;t.preventDefault(),t.stopPropagation();let n=v;if(v=null,f.hasPointerCapture?.(t.pointerId)&&f.releasePointerCapture(t.pointerId),f.style.cursor=`grab`,V(),n.dx===0&&n.dy===0){n.shiftToggleElement&&i.toggleSelection(n.shiftToggleElement),xe(),be();return}let a=ae(k(),De(n,n.dx,n.dy));y={id:Vp(r,`arrange`),createdAt:Date.now(),pageUrl:O(),targets:n.targets.map(({element:e,movesDirectly:t,target:r})=>{let i={x:r.beforeLocalOffsetX??0,y:r.beforeLocalOffsetY??0},o=t?{x:i.x+n.dx,y:i.y+n.dy}:i,s=a.get(e)??{x:r.beforeOffsetX+n.dx,y:r.beforeOffsetY+n.dy};return{...r,desiredLeft:r.beforeLeft+n.dx,desiredTop:r.beforeTop+n.dy,desiredOffsetX:s.x,desiredOffsetY:s.y,desiredLocalOffsetX:o.x,desiredLocalOffsetY:o.y}})},e.command.execute(_p).catch(()=>{y=null,xe(),be()})},je=e=>{!v||e.pointerId!==v.pointerId||ke()},Me=t=>{if(t.key!==`Escape`||!T()&&!v||Xp(t.target)||s.querySelector(`[data-mesurer-tool-menu]`))return;if(t.preventDefault(),t.stopImmediatePropagation(),v){ke();return}let n=i.currentSelection();if(n.elements.length>0||n.region){i.clearSelection(),be();return}e.state.update(fp,()=>!1),Se(),be(),e.command.execute(hp,void 0,{source:`arrange-escape`}).catch(()=>void 0)};f.addEventListener(`pointerdown`,Ee),f.addEventListener(`pointermove`,Oe),f.addEventListener(`pointerup`,Ae),f.addEventListener(`pointercancel`,je),r.addEventListener(`keydown`,Me,!0),r.addEventListener(`resize`,we),r.addEventListener(`scroll`,we,!0),o.addEventListener(`scroll`,we,!0),C=new c.MutationObserver(()=>{fe(),we()}),C.observe(o,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`]});let Ne=i.subscribe(()=>{fe(),we()}),Pe=e.state.subscribe(we),Fe=e=>w().intents.find(t=>t.id===e)??null,Ie=(e,t)=>{let n=null;if(n=t===`before`?Pp(e.targets.map(e=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight}))):t===`desired`?Pp(e.targets.map(e=>({left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight}))):le(()=>Pp(e.targets.map(e=>N(e)).filter(e=>e!==null).map(e=>Ru(e)))),!n)throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);let i=Math.max(0,n.left-Cp),a=Math.max(0,n.top-Cp),o=Math.min(r.innerWidth,n.left+n.width+Cp),s=Math.min(r.innerHeight,n.top+n.height+Cp);return{left:i,top:a,width:Math.max(0,o-i),height:Math.max(0,s-a)}},Le={active:T,intents:()=>w().intents.map(Wp),intent(e){let t=Fe(e);return t?Wp(t):null},show(e,t){if(!Fe(e))throw Error(`Arrange intent not found: ${e}`);_={intentId:e,state:t},Ce()},showCurrent(){_={intentId:null,state:`desired`},Ce()},capturePlan(e,t){let n=Fe(e);if(!n)throw Error(`Arrange intent not found: ${e}`);return{schema:`mesurer.arrange-capture/v1`,arrangeId:e,state:t,chrome:`hide`,captures:[{id:`viewport`,kind:`viewport`},{id:`focus`,kind:`clip`,rect:Ie(n,t)}]}},review:(e,t=Sp)=>{let n=Fe(e);if(!n)throw Error(`Arrange intent not found: ${e}`);let r=le(()=>n.targets.map(e=>{let n=N(e),r={left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight};if(!n)return{targetId:e.id,selector:e.selector,desired:r,current:null,delta:null,matched:!1};let i=Ru(n),a=Np(i,r),o=Math.abs(a.left)<=t&&Math.abs(a.top)<=t&&Math.abs(a.width)<=t&&Math.abs(a.height)<=t;return{targetId:e.id,selector:e.selector,desired:r,current:i,delta:a,matched:o}})),i=r.filter(e=>e.current!==null).length,a=i===0?`stale`:i===r.length?`connected`:`partial`;return{schema:`mesurer.arrange-review/v1`,arrangeId:n.id,targetStatus:a,tolerance:t,matched:r.length>0&&r.every(e=>e.matched),targets:r}},resetSelection:async()=>{await e.command.execute(yp)},resetAll:async()=>{await e.command.execute(bp)},clear:async()=>{await e.command.execute(vp)}};e.tool.register({id:`arrange`,label:`Arrange`,shortcut:`Shift+A`,order:65,command:gp,icon:jp,active:T,menu:{label:`Arrange options`,items:[{id:`snapping`,label:`Snapping`,checked:()=>E().snapping,run:()=>D({snapping:!E().snapping})},{id:`element-edges`,label:`Element edges`,checked:()=>E().elementEdges,disabled:()=>!E().snapping,run:()=>D({elementEdges:!E().elementEdges})},{id:`element-centers`,label:`Element centers`,checked:()=>E().elementCenters,disabled:()=>!E().snapping,run:()=>D({elementCenters:!E().elementCenters})},{id:`guides`,label:`Guides`,checked:()=>E().guides,disabled:()=>!E().snapping,run:()=>D({guides:!E().guides})},{id:`prefer-xray-edges`,label:`Prefer X-ray edges`,checked:()=>E().preferXrayEdges,disabled:()=>!E().snapping||!E().elementEdges,run:()=>D({preferXrayEdges:!E().preferXrayEdges})},{id:`alignment-rulers`,label:`Alignment rulers`,checked:()=>E().snapLines,disabled:()=>!E().snapping,run:()=>D({snapLines:!E().snapLines})},{id:`reset-all-positions`,label:`Reset all positions`,disabled:()=>k().length===0,run:async()=>{await e.command.execute(bp,void 0,{source:`arrange-menu`})}}]}}),e.settings.register({id:`arrange`,label:`Arrange`,order:35,controls:[{type:`toggle`,id:`snapping`,label:`Snapping`,description:`Magnetically align dragged selections to nearby layout anchors.`,value:()=>E().snapping,set:e=>D({snapping:e})},{type:`toggle`,id:`element-edges`,label:`Element edges`,description:`Snap left/right and top/bottom edges to nearby elements.`,value:()=>E().elementEdges,set:e=>D({elementEdges:e}),disabled:()=>!E().snapping},{type:`toggle`,id:`element-centers`,label:`Element centers`,description:`Snap center-to-center when X-ray edge preference is not active.`,value:()=>E().elementCenters,set:e=>D({elementCenters:e}),disabled:()=>!E().snapping},{type:`toggle`,id:`guides`,label:`Guides`,description:`Snap to existing Mesurer guides.`,value:()=>E().guides,set:e=>D({guides:e}),disabled:()=>!E().snapping},{type:`toggle`,id:`prefer-xray-edges`,label:`Prefer X-ray edges`,description:`When X-ray is on, use its visible blue box edges as element snap targets.`,value:()=>E().preferXrayEdges,set:e=>D({preferXrayEdges:e}),disabled:()=>!E().snapping||!E().elementEdges},{type:`toggle`,id:`alignment-rulers`,label:`Alignment rulers`,description:`Show the red alignment ruler while a snap is active.`,value:()=>E().snapLines,set:e=>D({snapLines:e}),disabled:()=>!E().snapping}]}),e.command.register(gp,async()=>{let t=!T();if(t&&await Te(),e.state.update(`mesurer.arrange.active`,()=>t),!t){v&&ke(),Se(),be();return}xe(),be()}),e.command.register(_p,()=>{let t=y;y=null,t&&(e.state.update(`mesurer.arrange.intents`,e=>({intents:[...e.intents,t].slice(-100)})),xe(),be())}),e.command.register(yp,()=>{let e=b??ue();b=null,_e(e)}),e.command.register(bp,ve),e.command.register(vp,()=>{e.state.update(dp,()=>({intents:[]})),_={intentId:null,state:`desired`},B(),V(),T()?U():W(),be()}),e.service.provide(up,Le),ce(),be(),e.lifecycle.onDispose(()=>{x=!0,S&&r.cancelAnimationFrame(S),C?.disconnect(),C=null,f.removeEventListener(`pointerdown`,Ee),f.removeEventListener(`pointermove`,Oe),f.removeEventListener(`pointerup`,Ae),f.removeEventListener(`pointercancel`,je),r.removeEventListener(`keydown`,Me,!0),r.removeEventListener(`resize`,we),r.removeEventListener(`scroll`,we,!0),o.removeEventListener(`scroll`,we,!0),Ne(),Pe.dispose(),B(),me(),V(),W(),i.dispose(),a.dispose()})}}),Qp=(e,t,n)=>{let r=!1,i=0,a=null,o=null,s=()=>({visible:(e.state.get(`mesurer.arrange.active`)??!1)||op(e).keepArrangeChanges,intents:e.state.get(`mesurer.arrange.intents`)?.intents??[]}),c=(e,t)=>e?.visible===t.visible&&e.intents===t.intents,l=e=>{if(a=e,e.visible){t.showCurrent();return}let n=e.intents.at(-1);n&&t.show(n.id,`live`)},u=()=>{if(i=0,r||!o)return;let e=o;o=null,c(a,e)||l(e)},d=e.state.subscribe(()=>{if(r)return;let e=s();c(o??a,e)||(o=e,i||=n.requestAnimationFrame(u))});l(s()),e.lifecycle.onDispose(()=>{r=!0,i&&n.cancelAnimationFrame(i),i=0,o=null,d.dispose()})},$p=[`[data-mesurer-measurement='true']`,`[data-mesurer-selected-measurement='true']`,`[data-mesurer-inspector-ui='true']`].join(``),em=`[data-mesurer-text-edit-runtime='true']`,tm=`[data-mesurer-text-editor='true']`,nm=(e,t)=>{let n=t.ownerDocument.body;if(!n)return;let r=t.ownerWindow,i=new Map,a=e.state.get(`mesurer.arrange.active`)??!1,o=null,s=null,c=e=>e.matches($p)&&e.getRootNode()===t.ownerDocument&&e.parentElement===n,l=()=>{for(let[e,t]of i)e.isConnected&&(t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`));i.clear()},u=()=>!!o?.querySelector(tm),d=e=>{!a||u()||!c(e)||(i.has(e)||i.set(e,{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}),(e.style.getPropertyValue(`visibility`)!==`hidden`||e.style.getPropertyPriority(`visibility`)!==`important`)&&e.style.setProperty(`visibility`,`hidden`,`important`))},f=()=>{if(!(!a||u()))for(let e of n.querySelectorAll($p))e instanceof r.HTMLElement&&d(e)},p=()=>{!a||u()?l():f()},m=e=>{if(e!==o){if(s?.disconnect(),s=null,o=e,!e){p();return}s=new r.MutationObserver(p),s.observe(e,{childList:!0,subtree:!0}),p()}},h=()=>{let e=n.querySelectorAll(em);return e.item(e.length-1)};m(h());let g=new r.MutationObserver(e=>{let t=!1;for(let n of e){for(let e of n.addedNodes)e instanceof r.HTMLElement&&(e.matches(em)&&(t=!0),d(e));for(let e of n.removedNodes)e===o&&(t=!0)}t&&m(h())});g.observe(n,{childList:!0});let _=e.state.subscribe(()=>{let t=e.state.get(`mesurer.arrange.active`)??!1;t!==a&&(a=t,p())});p(),e.lifecycle.onDispose(()=>{g.disconnect(),s?.disconnect(),s=null,_.dispose(),l()})},rm=()=>{let e=Zp();return{...e,async setup(t){await e.setup(t);let n=t.service.get(up);if(!n)throw Error(`Arrange presentation policy requires the Arrange service.`);let r=t.service.get(`runtime:solid`);if(!r)throw Error(`Arrange presentation policy requires the Solid renderer runtime.`);Qp(t,n,r.ownerWindow),nm(t,r)}}},im=(e,t,n,r)=>_a({id:`mesurer.${e}`,version:`0.1.0`,provides:[`tool:${e}`],setup(i){i.tool.register({id:e,builtin:e,label:t,shortcut:n,order:r,command:`builtin.${e}`})}}),am=()=>im(`select`,`Select`,`S`,10),om=()=>im(`xray`,`X-ray`,`X`,20),sm=()=>im(`color-picker`,`Color picker`,`P`,30),cm=()=>im(`rulers`,`Rulers`,`R`,40),lm=()=>im(`text-inspector`,`Typography`,`A`,50),um=()=>im(`guides`,`Guides`,`G`,60),dm=()=>im(`settings`,`Settings`,`⌘/Ctrl+,`,90),fm=()=>_a({id:`mesurer.distance`,version:`0.1.0`,provides:[`overlay:distance`,`settings:selection-spacing`],setup(e){e.overlay.register({id:`distance`,builtin:`distance`,order:30}),e.settings.register({id:`selection-spacing`,label:`Selection spacing`,builtin:`distance`,order:30})}}),pm=()=>[am(),om(),sm(),cm(),lm(),um(),fm(),dm()];function mm(e=[],t=[]){let n=new Set(t.map(e=>`mesurer.${e}`));return[...pm().filter(e=>!n.has(e.id)),...e]}var hm=`arrange.toggle`,gm=`builtin.select`;function _m(e,t){let n=t.createWorkspaceRuntime(),r=!1,i=0,a=!1,o=e.state.get(`mesurer.arrange.active`)??!1,s=t.currentToolMode?.(),c=!1,l=!1,u=()=>{r||i||(i=t.ownerWindow.requestAnimationFrame(()=>{if(i=0,r||a)return;let n=t.currentToolMode?.(),o=e.state.get(`mesurer.arrange.active`)??!1;if(n===void 0||!o){c=!1,l=!1;return}if(n===`select`){c=!1,l=!1;return}a=!0;let s=l?hm:c?gm:hm,d=s===gm?`arrange-requires-select`:`select-deactivated`;c=!1,l=!1,e.command.execute(s,void 0,{source:d}).catch(()=>void 0).finally(()=>{a=!1,u()})}))},d=()=>{let e=t.currentToolMode?.();s===`select`&&e!==void 0&&e!==`select`&&(l=!0),s=e,u()},f=()=>{let t=e.state.get(`mesurer.arrange.active`)??!1;t&&!o&&(c=!0),o=t,u()},p=n.subscribe(d),m=e.state.subscribe(f);u(),e.lifecycle.onDispose(()=>{r=!0,i&&t.ownerWindow.cancelAnimationFrame(i),i=0,m.dispose(),p(),n.dispose()})}var vm=80,ym=8,bm=8,xm=0,Sm=e=>({left:e.left,top:e.top,right:e.right,bottom:e.bottom,width:e.width,height:e.height}),Cm=e=>{let t=Number.parseFloat(e.style.left)||0,n=Number.parseFloat(e.style.top)||0,r=Number.parseFloat(e.style.width)||e.getBoundingClientRect().width,i=Number.parseFloat(e.style.height)||e.getBoundingClientRect().height;return{left:t,top:n,right:t+r,bottom:n+i,width:r,height:i}},wm=(e,t,n=5)=>Math.abs(e.left-t.left)<=n&&Math.abs(e.top-t.top)<=n&&Math.abs(e.width-t.width)<=n&&Math.abs(e.height-t.height)<=n,Tm=e=>e.width>0&&e.height>0&&e.right>0&&e.bottom>0,Em=e=>!!(e.CSS?.supports(`anchor-name: --mesurer-native-anchor`)&&e.CSS.supports(`position-anchor: --mesurer-native-anchor`)&&e.CSS.supports(`left: anchor(left)`)&&e.CSS.supports(`width: anchor-size(width)`)),Dm=(e,t,n)=>{(e.style.getPropertyValue(t)!==n||e.style.getPropertyPriority(t)!==`important`)&&e.style.setProperty(t,n,`important`)},Om=e=>{e&&(delete e.dataset.mesurerNativeScrollAnchor,delete e.dataset.mesurerNativeScrollOwner,e.style.removeProperty(`position-anchor`),e.style.removeProperty(`--mesurer-native-anchor-x`),e.style.removeProperty(`--mesurer-native-anchor-y`))},km=(e,t,n)=>{let r=[],i=e;for(;i instanceof n.HTMLElement&&(r.push(i),i!==t);)i=i.parentElement;return r},Am=(e,t,n,r)=>{if(!Tm(e))return null;let i=Math.min(Math.max(e.left+e.width/2,0),Math.max(0,n.innerWidth-1)),a=Math.min(Math.max(e.top+e.height/2,0),Math.max(0,n.innerHeight-1)),o=new Set;for(let s of t.elementsFromPoint(i,a))for(let t of km(s,r,n))if(!(o.has(t)||(o.add(t),t!==r&&!r.contains(t))||t.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`))&&wm(Sm(t.getBoundingClientRect()),e))return t;return null},jm=(e,t)=>t.map(t=>({property:t,value:e.style.getPropertyValue(t),priority:e.style.getPropertyPriority(t)})),Mm=(e,t)=>{for(let{property:n,value:r,priority:i}of t)r?e.style.setProperty(n,r,i):e.style.removeProperty(n)},Nm=(e,t,n=`none`)=>{let r=e.body,i=t.parentNode,a=i&&i!==r?e.createComment(`mesurer-document-scroll-layer`):null;a&&i&&i.insertBefore(a,t),t.parentNode!==r&&r.append(t);let o=jm(t,n===`selection-root`?[`display`,`position`,`left`,`top`,`width`,`height`]:n===`runtime`||n===`inspector-overlay`?[`display`,`position`,`inset`,`width`,`height`]:[]);n===`selection-root`?(Dm(t,`display`,`block`),Dm(t,`position`,`absolute`),Dm(t,`left`,`0px`),Dm(t,`top`,`0px`),Dm(t,`width`,`100vw`),Dm(t,`height`,`0px`)):(n===`runtime`||n===`inspector-overlay`)&&(Dm(t,`display`,`block`),Dm(t,`position`,`static`),Dm(t,`inset`,`auto`),Dm(t,`width`,`0px`),Dm(t,`height`,`0px`));let s=!1;return{element:t,release(){s||(s=!0,Mm(t,o),a?.parentNode&&(t.isConnected&&a.parentNode.insertBefore(t,a),a.remove()))}}};function Pm(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i,portalTarget:a}=t,o=r;if(!Em(o)||a instanceof o.ShadowRoot||i instanceof o.ShadowRoot||a.getRootNode()!==n||i.getRootNode()!==n||!n.body)return;let s=ls(n),c=t.createWorkspaceRuntime(),l=new Map,u=new Map,d=new Map,f=new Map,p=new Map,m=null,h=null,g=!1,_=!1,v=0,y=0,b=!1,x=0,S=a.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),C=S.item(S.length-1),w=C?.isConnected?Nm(n,C,`runtime`):null;C&&(C.dataset.mesurerNativeScrollRuntimeLayer=`true`);let T=n.createElement(`style`);T.dataset.mesurerNativeScrollAnchoring=`true`,T.dataset.mesurerInspectorUi=`true`,T.textContent=`
|
|
1718
|
+
`,Gf=0,Kf=`mesurer:tab-id`,qf=`mesurer-settings`,Jf=`mesurer-state`,Yf=80,Xf=(e,t)=>{try{let n=e.sessionStorage.getItem(`${t}:toolbar-position`);if(!n)return;let r=JSON.parse(n);return!Number.isFinite(r.x)||!Number.isFinite(r.y)?void 0:{x:r.x,y:r.y}}catch{return}},Zf=(e,t,n)=>{try{e.sessionStorage.setItem(`${t}:toolbar-position`,JSON.stringify(n))}catch{}},Qf=e=>{try{let t=e.sessionStorage.getItem(Kf);if(t)return t;let n=e.crypto.randomUUID();return e.sessionStorage.setItem(Kf,n),n}catch{return`session`}},$f=(e,t)=>{let n=t=>t!==void 0&&e.document.defaultView?.CSS?.supports(`color`,t)===!0,r={...t};if(n(t.highlightColor)||(r.highlightColor=void 0),n(t.guideColor)||(r.guideColor=void 0),t.selectionSpacingStyle){let e={...t.selectionSpacingStyle};e.color!==void 0&&!n(e.color)&&(e.color=void 0),r.selectionSpacingStyle=e}return r},ep=(e,t)=>{if(e.length<=1)return null;let n=1/0,r=1/0,i=-1/0,a=-1/0;for(let t of e)n=Math.min(n,t.rect.left),r=Math.min(r,t.rect.top),i=Math.max(i,t.rect.left+t.rect.width),a=Math.max(a,t.rect.top+t.rect.height);let o={left:n,top:r,width:i-n,height:a-r};return{...e[e.length-1],id:`group-${e.map(e=>e.id).join(`|`)}`,label:`${e.length} elements`,rect:o,paddingRect:o,marginRect:o,padding:{top:0,right:0,bottom:0,left:0},margin:{top:0,right:0,bottom:0,left:0},elementRef:void 0,originRect:t??void 0}};function tp(e){let t=yt(()=>e.model),n=yt(()=>e.env),r=yt(()=>e.input),i=yt(()=>e.onSelectionSpacingStyleChange),a=yt(()=>e.onResetSelectionSpacingStyle),{ownerDocument:o,ownerWindow:s}=n,c=r.pageTarget??o.body,l=++Gf,u=r.persistKey??`mesurer-state:${Qf(s)}${l===1?``:`:${l}`}`,d={key:``,entries:[],overlayNode:null,frame:-1},f=null,p=null,m=null,h=!1,g=0,_=!1,v=0,y=null,b=null,x=!1,S=0,C=null,w={x:s.scrollX,y:s.scrollY},T=nf({model:t,ownerWindow:s,ownerDocument:o,uiRoot:()=>f}),E=e=>r.isBuiltinActionDisabled?.(e)??!1,D=(e,n=!1)=>{E(e)||(e===`color-picker`&&n&&t.current.colorPickerActive&&T.deactivate(`color-picker`),T.run(e))},O=Uf({ownerDocument:o,target:r.pageTarget??o.body,instanceId:l});r.onBuiltinController?.(T);let k=Rr(()=>{let e=t.state.start,n=t.state.end;return e&&n?vo(e,n):null}),A=Rr(()=>ep(t.state.selectedMeasurements,t.state.selectionOriginRect)),j=Rr(()=>A()?[A()]:t.state.selectedMeasurements.length?t.state.selectedMeasurements:t.state.selectedMeasurement?[t.state.selectedMeasurement]:[]),M=Rr(()=>hd(t.state.guides,t.state.selectedGuideIds)),N=Rr(()=>md(t.state.hoverPointer,t.state.guides)),P=Rr(()=>A()??t.state.selectedMeasurement??t.state.selectedMeasurements.at(-1)??null),F=Rr(()=>gd({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:P(),selectedGuide:M(),hoverGuide:N(),hoverElement:t.state.hoverElement,selectedElementRef:P()?.elementRef??null})),I=Rr(()=>_d({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:P(),optionPairOverlay:F(),selectedGuideIds:t.state.selectedGuideIds,selectedElement:P()?.elementRef??null,hoverElement:t.state.hoverElement})),L=Rr(()=>{if(!t.state.altPressed||t.state.toolMode!==`guides`)return null;let e=M(),n=N();if(e&&n&&e.id!==n.id)return Ao(dd(e,s),dd(n,s),null,null,s);let r=t.state.guidePreview;if(!r)return null;let i=t.state.guides.filter(e=>e.orientation===r.orientation).sort((e,t)=>Math.abs(e.position-r.position)-Math.abs(t.position-r.position))[0];return i?Ao(dd({id:`preview`,...r},s),dd(i,s),null,null,s):null}),R=e=>{let n=Dd(e,f,o,c);if(!n){t.setHoverTarget(null,null);return}let r=n.getBoundingClientRect();t.setHoverTarget(n,t.current.settings.hoverHighlightEnabled?{left:r.left,top:r.top,width:r.width,height:r.height}:null)},z=e=>{y=e,!v&&(v=s.requestAnimationFrame(()=>{v=0;let e=y;e&&(t.current.toolMode===`select`&&!t.current.draggingGuideId&&R(e),t.setTransient({hoverPointer:t.current.guides.length?e:null}),t.current.toolMode===`guides`&&!t.current.draggingGuideId&&t.setTransient({guidePreview:{orientation:t.current.guideOrientation,position:pd({orientation:t.current.guideOrientation,point:e,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:null,document:o})}}))}))},B=()=>{S&&s.clearTimeout(S),S=0,C=null},V=e=>{B(),C=e,S=s.setTimeout(()=>{S=0,C===e&&t.setTransient({draggingGuideId:e})},220)},H=()=>{t.setTransient({start:null,end:null,isDragging:!1,draggingGuideId:null,guidePreview:null}),b=null,x=!1,d.key=``,t.endAction()},U=e=>{if(t.current.settingsOpen||!t.current.enabled||e.button!==0||t.current.toolMode===`none`)return;let n={x:e.clientX,y:e.clientY},r=t.beginAction();if(t.current.altPressed&&F()){e.preventDefault(),r(),t.addHeldDistance({...F(),id:Eo()}),t.endAction();return}if(t.current.toolMode===`guides`){e.preventDefault(),r();let i=Eo(),a=pd({orientation:t.current.guideOrientation,point:n,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:null,document:o});t.addGuide({id:i,orientation:t.current.guideOrientation,position:a}),t.setSelectedGuideIds(t.current.settings.selectNewGuideEnabled?[i]:[]),t.setTransient({guidePreview:null}),V(i),os(e.currentTarget,e.pointerId);return}t.current.selectedGuideIds.length>0&&(r(),t.setSelectedGuideIds([])),x=e.shiftKey,b=e.shiftKey?Bd({point:n,selectedMeasurements:t.current.selectedMeasurements,overlayNode:f,document:o,exact:!0})?.elementRef??null:null,t.setTransient({start:n,end:n,isDragging:!1,selectionOriginRect:null}),os(e.currentTarget,e.pointerId)},W=e=>{if(!t.current.enabled||t.current.settingsOpen)return;let n={x:e.clientX,y:e.clientY};if(e.altKey!==t.current.altPressed&&t.setTransient({altPressed:e.altKey}),z(n),t.current.draggingGuideId){let e=t.current.guides.find(e=>e.id===t.current.draggingGuideId);if(e){let r=pd({orientation:e.orientation,point:n,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:e.id,document:o});t.updateGuide(e.id,{position:r})}return}if(t.current.toolMode===`guides`)return;let r=t.current.start;if(!r)return;let i=x?12:4,a=t.current.isDragging||Math.abs(n.x-r.x)>i||Math.abs(n.y-r.y)>i;t.setTransient({end:n,isDragging:a})},ee=e=>{if(!t.current.enabled)return;if(t.current.toolMode===`guides`){B(),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture?.(e.pointerId),H();return}if(t.current.toolMode!==`select`){H();return}let n=t.current.start;if(!n){H();return}let r={x:e.clientX,y:e.clientY};if(t.current.isDragging){let i=vo(n,r),a=Ld(i,f,d,o,c).map(e=>({...ld(e,s),originRect:i})),l=a;if(e.shiftKey){let e=new Map;for(let n of[...t.current.selectedMeasurements,...a])n.elementRef&&e.set(n.elementRef,n);l=[...e.values()]}t.checkpoint(),t.setSelectedMeasurements(l,l.at(-1)??null),t.setTransient({selectionOriginRect:i}),H();return}let i=b?t.current.selectedMeasurements.find(e=>e.elementRef===b)??null:Bd({point:r,selectedMeasurements:t.current.selectedMeasurements,overlayNode:f,document:o,exact:e.shiftKey});if((e.shiftKey||!t.current.settings.hoverHighlightEnabled)&&i){t.checkpoint();let e=t.current.selectedMeasurements.filter(e=>e.elementRef!==i.elementRef);t.setSelectedMeasurements(e,e.at(-1)??null),H();return}let a=e.shiftKey?Dd(r,f,o,c)??Od(r,f,t.current.settings.snapEnabled,o,c):Od(r,f,t.current.settings.snapEnabled,o,c);if(a){let n=ld(a,s);if(t.checkpoint(),e.shiftKey||t.current.settings.multiMeasureEnabled){let e=t.current.selectedMeasurements.some(e=>e.elementRef===a)?t.current.selectedMeasurements.filter(e=>e.elementRef!==a):[...t.current.selectedMeasurements,n];t.setSelectedMeasurements(e,e.at(-1)??null)}else t.setSelectedMeasurements([n],n);let r={id:n.id,rect:n.rect,normalizedRect:go(n.rect),elementRef:n.elementRef,deltaX:0,deltaY:0};t.setActiveMeasurement(r)}else e.shiftKey||(t.checkpoint(),t.setSelectedMeasurements([],null));H()},te=()=>{B(),t.current.draggingGuideId||H(),t.setTransient({guidePreview:null})},ne=(e,n)=>{if(!(!t.current.enabled||n.button!==0||t.current.settingsOpen)){if(n.preventDefault(),n.stopPropagation(),t.checkpoint(),n.shiftKey){let n=t.current.selectedGuideIds.includes(e.id)?t.current.selectedGuideIds.filter(t=>t!==e.id):[...t.current.selectedGuideIds,e.id];t.setSelectedGuideIds(n);return}t.setSelectedGuideIds([e.id]),t.setTransient({draggingGuideId:e.id}),os(n.currentTarget,n.pointerId)}},re=(e,n)=>{n.stopPropagation(),t.setTransient({draggingGuideId:null}),n.currentTarget.hasPointerCapture?.(n.pointerId)&&n.currentTarget.releasePointerCapture?.(n.pointerId)},ie=(e,n,r=null)=>pd({orientation:e,point:e===`vertical`?{x:n,y:0}:{x:0,y:n},snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:r,document:o}),ae=(e,n)=>{t.checkpoint();let r=Eo();return t.addGuide({id:r,orientation:e,position:ie(e,n)}),t.setSelectedGuideIds([]),r},oe=(e,n)=>{let r=t.current.guides.find(t=>t.id===e);r&&t.updateGuide(e,{position:ie(r.orientation,n,e)})},se=e=>{t.current.settings.selectNewGuideEnabled&&t.setSelectedGuideIds([e])},ce=e=>t.setGuides(t.current.guides.filter(t=>t.id!==e)),le=()=>{t.clearWorkspace(),p?.clear(),m?.clearWorkspace()};return Vr(()=>[t.state.toolMode,t.state.enabled],([e,t])=>{p&&(e===`text-inspector`&&t?p.enable():p.disable())}),Vr(()=>t.state.xrayVisible,e=>O.setVisible(e)),Vr(()=>[t.state.settings.highlightColor,t.state.settings.guideColor,t.state.settings.hoverHighlightEnabled,t.state.settings.persistOnReload,t.state.settings.shortcutsEnabled,t.state.settings.theme,t.state.settings.colorPickerClickFormat,t.state.settings.snapEnabled,t.state.settings.snapGuidesEnabled,t.state.settings.selectNewGuideEnabled,t.state.settings.multiMeasureEnabled,t.state.settings.colorPickerFormats.join(`|`),JSON.stringify(t.state.settings.guideStyle),JSON.stringify(t.state.settings.rulerSettings),JSON.stringify(e.selectionSpacingStyle)],()=>{!h||!m||m.saveSettings({...t.serializeSettings(),selectionSpacingStyle:{...yt(()=>e.selectionSpacingStyle)}})}),Vr(()=>[t.state.enabled,t.state.toolMode,t.state.rulersVisible,t.state.xrayVisible,t.state.guideOrientation,t.state.settings.persistOnReload,t.state.guides.map(e=>`${e.id}:${e.orientation}:${e.position}`).join(`|`),t.state.selectedGuideIds.join(`|`),t.state.heldDistances.map(e=>e.id).join(`|`),t.state.measurements.map(e=>e.id).join(`|`),t.state.activeMeasurement?.id??``],()=>{!h||_||!m||!t.current.settings.persistOnReload||(s.clearTimeout(g),g=s.setTimeout(()=>m?.saveWorkspace(t.serializeWorkspace()),250))}),Ut(()=>{sf(Wf,n.portalTarget);let e=o.body&&n.portalTarget instanceof s.ShadowRoot&&!(c instanceof s.ShadowRoot)&&c.getRootNode()===o&&s.CSS?.supports(`anchor-name: --mesurer-native-anchor`)&&s.CSS.supports(`position-anchor: --mesurer-native-anchor`)&&s.CSS.supports(`left: anchor(left)`)?o.body:n.portalTarget;e!==n.portalTarget&&sf(Wf,e),p=If({portalTarget:e,theme:()=>t.current.settings.theme,subscribeTheme:e=>{let n=t.current.settings.theme;return e(n),t.subscribe(()=>{let r=t.current.settings.theme;r!==n&&(n=r,e(r))})}});let a=r.persistence??Gs(s,u,qf,r.persistKey?void 0:Jf);m=a,a.setErrorHandler?.(r.onPersistenceError);let l=fs(s);a.setPageKey?.(l);let d=a.load();if(d?.settings){let e=$f(s,d.settings);t.applyStoredSettings(e),e.selectionSpacingStyle&&i(e.selectionSpacingStyle)}(t.current.settings.persistOnReload||r.persistOnReload)&&d?.workspace&&t.applyStoredWorkspace(d.workspace),h=!0,t.current.toolMode===`text-inspector`&&t.current.enabled&&p.enable();let f=a.subscribe?.((e,n)=>{if(e){if(n?.settings!==!1){let n=$f(s,e.settings);t.applyStoredSettings(n),n.selectionSpacingStyle&&i(n.selectionSpacingStyle)}n?.workspace!==!1&&e.workspace&&t.current.settings.persistOnReload&&t.applyStoredWorkspace(e.workspace)}}),b=gs(s,e=>{if(e===l)return;_=!0,s.clearTimeout(g),g=0,t.current.settings.persistOnReload&&a.saveWorkspace(t.serializeWorkspace()),l=e,a.setPageKey?.(e);let n=a.load(),r={enabled:t.current.enabled,toolMode:t.current.toolMode,rulersVisible:t.current.rulersVisible,xrayVisible:t.current.xrayVisible,guideOrientation:t.current.guideOrientation};t.clearAll(!1),p?.clear(),t.current.settings.persistOnReload&&n?.workspace&&t.applyStoredWorkspace({...n.workspace,...r}),_=!1}),x=e=>{if(is(e,s))return;let n=e.key.toLowerCase(),r=e.metaKey||e.ctrlKey;if(n===`escape`){if(t.current.settingsOpen){t.setTransient({settingsOpen:!1});return}if(t.current.colorPickerActive){T.deactivate(`color-picker`);return}if(t.current.toolMode===`select`){t.current.selectedMeasurements.length>0||t.current.selectedMeasurement!==null||t.current.selectionOriginRect!==null||t.current.selectedGuideIds.length>0?T.clearSelection():T.deactivate(`select`);return}t.current.toolMode===`text-inspector`&&p?.clear(),t.clearAll();return}if(t.current.settings.shortcutsEnabled){if(e.key===`Alt`){t.setTransient({altPressed:!0});return}if(r&&n===`,`){e.preventDefault(),D(`settings`);return}if(r&&n===`z`){if(e.preventDefault(),t.current.toolMode===`text-inspector`&&(e.shiftKey?p?.redo():p?.undo()))return;e.shiftKey?t.redo():t.undo();return}if((n===`delete`||n===`backspace`)&&t.current.selectedGuideIds.length){e.preventDefault(),t.removeGuides(t.current.selectedGuideIds);return}if(n===`m`){t.current.colorPickerActive&&T.deactivate(`color-picker`),t.toggleEnabled(!0);return}if(n===`s`){D(`select`);return}if(n===`a`){D(`text-inspector`);return}if(n===`g`){D(`guides`);return}if(n===`p`){D(`color-picker`,!0);return}if(n===`x`){D(`xray`);return}if(n===`r`){D(`rulers`);return}if(n===`h`){E(`guides`)||t.setGuideOrientation(`horizontal`,!0);return}n===`v`&&(E(`guides`)||t.setGuideOrientation(`vertical`,!0))}},S=e=>{e.key===`Alt`&&t.setTransient({altPressed:!1})};s.addEventListener(`keydown`,x),s.addEventListener(`keyup`,S);let C=0,k=0,A=()=>us(o),j=()=>{C||=s.requestAnimationFrame(()=>{C=0;let e=t.current.selectedMeasurements.filter(e=>e.elementRef?.isConnected).map(e=>({...ld(e.elementRef,s),id:e.id,originRect:e.originRect}));if(e.length||t.current.selectedMeasurements.length){let n=t.current.selectedMeasurement?.id;t.setSelectedMeasurements(e,e.find(e=>e.id===n)??e.at(-1)??null)}let n=ho(s);t.current.measurements.length&&t.setMeasurements(t.current.measurements.map(e=>ud(e,n,o))),t.current.activeMeasurement&&t.setActiveMeasurement(ud(t.current.activeMeasurement,n,o)),t.current.heldDistances.length&&t.setHeldDistances(t.current.heldDistances.map(e=>qo(e,n,o,s)));let r=t.current.hoverElement;if(r?.isConnected&&t.current.toolMode===`select`){let e=r.getBoundingClientRect();t.setHoverTarget(r,t.current.settings.hoverHighlightEnabled?{left:e.left,top:e.top,width:e.width,height:e.height}:null)}})},M=()=>{k&&s.clearTimeout(k),k=s.setTimeout(()=>{k=0,j();let e=y;e&&t.current.toolMode===`select`&&!t.current.draggingGuideId&&R(e)},Yf)},N=()=>{let e={x:s.scrollX,y:s.scrollY},n=e.x-w.x,r=e.y-w.y;w=e,(n||r)&&t.current.guides.length&&t.setGuides(t.current.guides.map(e=>({...e,position:e.position-(e.orientation===`vertical`?n:r)}))),A()?M():j()};s.addEventListener(`scroll`,N,{capture:!0,passive:!0}),s.addEventListener(`resize`,j,!0);let P=e=>{let n=t.current.draggingGuideId;if(!n)return;let r=t.current.guides.find(e=>e.id===n);r&&t.updateGuide(n,{position:ie(r.orientation,r.orientation===`vertical`?e.clientX:e.clientY,n)})},F=()=>t.setTransient({draggingGuideId:null});return s.addEventListener(`pointermove`,P,!0),s.addEventListener(`pointerup`,F,!0),s.addEventListener(`pointercancel`,F,!0),()=>{s.cancelAnimationFrame(C),s.cancelAnimationFrame(v),B(),s.clearTimeout(k),s.clearTimeout(g),t.current.settings.persistOnReload&&a.saveWorkspace(t.serializeWorkspace()),f?.(),b(),a.setErrorHandler?.(void 0),s.removeEventListener(`keydown`,x),s.removeEventListener(`keyup`,S),s.removeEventListener(`scroll`,N,!0),s.removeEventListener(`resize`,j,!0),s.removeEventListener(`pointermove`,P,!0),s.removeEventListener(`pointerup`,F,!0),s.removeEventListener(`pointercancel`,F,!0),p?.destroy(),p=null,O.dispose(),T.dispose(),r.onBuiltinController?.(null)}}),Y(Si,{get mount(){return n.portalMount},get children(){var n=X(`div`,{class:`mesurer-solid-root`,"data-mesurer-root":`true`});return Qi(()=>e=>{f=e,t.rendererRoot=e},n),Q(n,Y(q,{get when(){return qi(()=>!!t.state.enabled)()?t.state.rulersVisible:t.state.enabled},get children(){return Y(cl,{ownerWindow:s,get settings(){return t.state.settings.rulerSettings},get interactive(){return!t.state.settingsOpen},get forceVisible(){return t.state.settingsOpen},get guides(){return t.state.guides},get selectedGuideIds(){return t.state.selectedGuideIds},onStartGuide:ae,onMoveGuide:oe,onFinishGuide:se,onCancelGuide:ce})}}),null),Q(n,Y(rl,{model:t,get displayedSelectedMeasurements(){return j()},get activeRect(){return k()},get optionPairOverlay(){return F()},get guideDistanceOverlay(){return L()},get optionContainerLines(){return I()},get hoverGuide(){return N()},get selectionSpacingStyle(){return e.selectionSpacingStyle},get interactive(){return qi(()=>!!t.state.enabled)()?!t.state.settingsOpen:t.state.enabled},get suppressHoverWhenSelected(){return r.suppressSelectHoverWhenSelected??!1},onPointerDown:U,onPointerMove:W,onPointerUp:ee,onPointerLeave:te,onGuidePointerDown:ne,onGuidePointerUp:re}),null),Q(n,Y(mo,{model:t,ownerWindow:s,onHostPick:e=>{T.pickColorAt(e)}}),null),Q(n,Y(ju,{model:t,ownerWindow:s,onBuiltinAction:D,get pluginTools(){return r.pluginTools},get onPluginTool(){return r.onPluginTool},get onPluginToolMenuItem(){return r.onPluginToolMenuItem},isBuiltinActionDisabled:E,onClearWorkspace:le,get selectionSpacingStyle(){return e.selectionSpacingStyle},onSelectionSpacingStyleChange:i,onResetSettings:()=>{t.resetSettings(),a(),m?.clearSettings()},get initialPosition(){return Sl(s,Xf(s,u))},onPositionChange:e=>Zf(s,u,e)}),null),J(()=>t.state.settings.theme,(e,t)=>{$(n,`data-theme`,e,t)}),n}})}function np(e){let t=yt(()=>({...vs,...e.selectionSpacingStyle})),[n,r]=K({...t}),i=e=>r(t=>({...t,...e})),a=()=>r({...t}),o=Kd({initialEnabled:!0,initialToolMode:`none`,settings:yt(()=>({highlightColor:e.highlightColor??`oklch(0.62 0.18 255)`,guideColor:e.guideColor??`oklch(0.63 0.26 29.23)`,hoverHighlightEnabled:e.hoverHighlightEnabled??!0,persistOnReload:e.persistOnReload??!1,shortcutsEnabled:e.shortcutsEnabled??!0,theme:e.theme??`system`,colorPickerFormats:e.colorPickerFormats??[`hex`,`rgb`,`oklch`],colorPickerClickFormat:e.colorPickerClickFormat??`hex`,snapEnabled:e.snapEnabled??!0,snapGuidesEnabled:e.snapGuidesEnabled??!0,selectNewGuideEnabled:e.selectNewGuideEnabled??!0,multiMeasureEnabled:e.multiMeasureEnabled??!1,guideStyle:{..._s,...e.guideStyle},rulerSettings:{...ys,...e.rulerSettings}}))}),[s,c]=K(null);return Ut(()=>{let t=e.portalTarget??document.body,n=t.ownerDocument??document,r=n.defaultView??window,i,a=!1;return t instanceof r.ShadowRoot?(i=n.createElement(`div`),i.dataset.mesurerPortal=`true`,t.append(i),a=!0):i=t,c({ownerDocument:n,ownerWindow:r,portalTarget:t,portalMount:i,ownedPortalMount:a}),()=>{a&&i.remove()}}),Y(q,{get when(){return s()},children:t=>Y(tp,{model:o,get env(){return t()},input:e,get selectionSpacingStyle(){return n()},onSelectionSpacingStyleChange:i,onResetSelectionSpacingStyle:a})})}var rp=`mesurer.presentation.preferences`,ip=`presentation`,ap={keepTextChanges:!1,keepArrangeChanges:!1},op=e=>e.state.get(`mesurer.presentation.preferences`)??ap,sp=(e,t)=>{e.state.update(rp,e=>({...e,...t}))},cp=e=>{e.state.register({id:rp,initial:{...ap},persist:!0}),e.settings.register({id:ip,label:`Changes`,order:20,controls:[{type:`toggle`,id:`keep-text-changes`,label:`Keep text changes`,description:`Keep saved Typography text and style changes visible while another tool is active.`,value:()=>op(e).keepTextChanges,set:t=>sp(e,{keepTextChanges:t})},{type:`toggle`,id:`keep-arrange-changes`,label:`Keep Arrange changes`,description:`Keep saved Arrange positions visible while another tool is active.`,value:()=>op(e).keepArrangeChanges,set:t=>sp(e,{keepArrangeChanges:t})}]})},lp=`mesurer.arrange`,up=`arrange`,dp=`mesurer.arrange.intents`,fp=`mesurer.arrange.active`,pp=`mesurer.arrange.settings`,mp=`runtime:solid`,hp=`builtin.select`,gp=`arrange.toggle`,_p=`arrange.commit`,vp=`arrange.clear`,yp=`arrange.reset-selection`,bp=`arrange.reset-all`,xp=`mesurer.arrange.selection-available`,Sp=1,Cp=24,wp=160,Tp=500,Ep=`#ef4444`,Dp=24,Op=6,kp=30,Ap=.5,jp={viewBox:`0 0 24 24`,paths:[`M12 2.75 8.75 6h2.5v5.25H6V8.75L2.75 12 6 15.25v-2.5h5.25V18h-2.5L12 21.25 15.25 18h-2.5v-5.25H18v2.5L21.25 12 18 8.75v2.5h-5.25V6h2.5L12 2.75Z`]},Mp=(e,t)=>({left:e.left+t.x,top:e.top+t.y,width:e.width,height:e.height}),Np=(e,t)=>({left:e.left-t.left,top:e.top-t.top,width:e.width-t.width,height:e.height-t.height}),Pp=e=>{if(!e.length)return null;let t=Math.min(...e.map(e=>e.left)),n=Math.min(...e.map(e=>e.top)),r=Math.max(...e.map(e=>e.left+e.width)),i=Math.max(...e.map(e=>e.top+e.height));return{left:t,top:n,width:r-t,height:i-n}},Fp=(e,t,n,r)=>Math.max(0,Math.max(e,n)-Math.min(t,r)),Ip=(e,t,n)=>{let r=t===`x`?e.left:e.top,i=t===`x`?e.width:e.height,a=r+i;return n===`edge`?[r,a]:n===`center`?[r+i/2]:[r,r+i/2,a]},Lp=(e,t)=>t===`x`?{start:e.top,end:e.top+e.height}:{start:e.left,end:e.left+e.width},Rp=e=>e.kind===`edge`?2:+(e.kind===`guide`),zp=(e,t,n)=>{let r=Lp(t,e),i=null;for(let a of n)if(a.axis===e&&!(a.source===`element`&&Fp(r.start,r.end,a.start,a.end)>wp))for(let n of Ip(t,e,a.kind)){let e=a.position-n,t=Math.abs(e);if(t>10)continue;let r=i?Math.abs(i.delta):1/0;(t<r||t===r&&(!i||Rp(a)>Rp(i)))&&(i={...a,delta:e})}return i},Bp=e=>{let{origin:t,pathname:n,search:r}=e.location;return`${t}${n}${r}`},Vp=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,Hp=e=>({tag:e.fingerprintTag,id:e.fingerprintId,testId:e.fingerprintTestId,role:e.fingerprintRole,ariaLabel:e.fingerprintAriaLabel,classes:[...e.fingerprintClasses],text:e.fingerprintText}),Up=e=>({id:e.id,selector:e.selector,fingerprint:Hp(e),before:{left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight},desired:{left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight},beforeOffset:{x:e.beforeOffsetX,y:e.beforeOffsetY},desiredOffset:{x:e.desiredOffsetX,y:e.desiredOffsetY}}),Wp=e=>({id:e.id,createdAt:e.createdAt,pageUrl:e.pageUrl,targets:e.targets.map(Up)}),Gp=(e,t)=>({value:e.style.getPropertyValue(t),priority:e.style.getPropertyPriority(t)}),Kp=e=>Gp(e,`transform`),qp=(e,t)=>e.value===t.value&&e.priority===t.priority,Jp=qp,Yp=e=>{let{element:t,beforeTransform:n,appliedTransform:r}=e;Jp(Kp(t),r)&&(n.value||n.priority?t.style.setProperty(`transform`,n.value,n.priority):t.style.removeProperty(`transform`))},Xp=e=>e instanceof Element&&!!e.closest(`input, textarea, select, [contenteditable='true'], [contenteditable='']`),Zp=()=>_a({id:lp,version:`0.1.0`,requires:[mp,`tool:select`],provides:[`tool:arrange`,`intent:arrange`,`agent:arrange`,`settings:arrange`],setup(e){let t=e.service.get(mp);if(!t)throw Error(`Arrange plugin requires the Solid renderer runtime.`);let{ownerDocument:n,ownerWindow:r}=t,i=t.createWorkspaceRuntime(),a=t.createInspectorMount(),o=t.pageTarget??n.body??n.documentElement,s=t.portalTarget,c=r;e.state.register({id:dp,initial:{intents:[]},history:!0,persist:!0}),e.state.register({id:fp,initial:!1}),e.state.register({id:pp,initial:{snapping:!0,elementEdges:!0,elementCenters:!0,guides:!0,preferXrayEdges:!0,snapLines:!0},persist:!0});let l=a.element;l.dataset.mesurerArrange=`true`,l.style.position=`fixed`,l.style.inset=`0`,l.style.zIndex=`84`,l.style.pointerEvents=`none`;let u=n.createElement(`div`);u.dataset.mesurerArrangeSnapLine=`vertical`,u.setAttribute(`aria-hidden`,`true`),u.style.position=`fixed`,u.style.display=`none`,u.style.width=`1px`,u.style.backgroundColor=Ep,u.style.pointerEvents=`none`;let d=n.createElement(`div`);d.dataset.mesurerArrangeSnapLine=`horizontal`,d.setAttribute(`aria-hidden`,`true`),d.style.position=`fixed`,d.style.display=`none`,d.style.height=`1px`,d.style.backgroundColor=Ep,d.style.pointerEvents=`none`;let f=n.createElement(`div`);f.dataset.mesurerArrangeBox=`true`,f.setAttribute(`role`,`application`),f.setAttribute(`aria-label`,`Arrange selected elements`),f.style.position=`fixed`,f.style.display=`none`,f.style.boxSizing=`border-box`,f.style.border=`1px solid #0d99ff`,f.style.cursor=`grab`,f.style.pointerEvents=`auto`,f.style.touchAction=`none`,f.style.userSelect=`none`,l.append(u,d,f);let p=new Map,m=new Map,h=new Map,g=new Map,_=new Map,v={intentId:null,state:`desired`},y=null,b=null,x=null,S=!1,C=0,w=null,T=()=>e.state.get(`mesurer.arrange.intents`)??{intents:[]},E=()=>e.state.get(`mesurer.arrange.active`)??!1,D=()=>{let t=e.state.get(pp);return{snapping:t?.snapping??!0,elementEdges:t?.elementEdges??!0,elementCenters:t?.elementCenters??!0,guides:t?.guides??!0,preferXrayEdges:t?.preferXrayEdges??!0,snapLines:t?.snapLines??!0}},O=t=>{e.state.update(pp,e=>({...e,...t}))},k=()=>Bp(r),A=()=>T().intents.filter(e=>e.pageUrl===k()),j=e=>!!e.closest(`[data-mesurer-island='true'], [data-mesurer-inspector-ui='true'], [data-mesurer-root='true']`),M=e=>qu(e,o)&&!j(e),N=e=>{let t=[];o instanceof c.HTMLElement&&o.matches(e)&&!j(o)&&t.push(o);for(let n of o.querySelectorAll(e))n instanceof c.HTMLElement&&M(n)&&t.push(n);return t},P=(e,t)=>e.localName!==t.fingerprintTag||t.fingerprintId&&e.id!==t.fingerprintId||t.fingerprintTestId&&e.getAttribute(`data-testid`)!==t.fingerprintTestId||t.fingerprintRole&&e.getAttribute(`role`)!==t.fingerprintRole||t.fingerprintAriaLabel&&e.getAttribute(`aria-label`)!==t.fingerprintAriaLabel?!1:t.fingerprintClasses.every(t=>e.classList.contains(t)),F=e=>{let t=Hp(e),n=m.get(e.selector);if(n&&n.isConnected&&M(n)&&P(n,e))return n;if(n&&m.delete(e.selector),!Zu(t))return null;let r=[];try{r=N(e.selector).filter(e=>Qu(e,t))}catch{return null}if(r.length!==1)return null;if(!t.id&&!t.testId){let e=[];try{e=N(t.tag).filter(e=>Qu(e,t))}catch{return null}if(e.length!==1||e[0]!==r[0])return null}return r[0]??null},I={value:`none`,priority:`important`},L=e=>{let t=Gp(e,`transition-property`);(!h.get(e)||!qp(t,I))&&h.set(e,t),qp(t,I)||e.style.setProperty(`transition-property`,I.value,I.priority)},R=e=>{let t=h.get(e);t&&(qp(Gp(e,`transition-property`),I)&&(t.value||t.priority?e.style.setProperty(`transition-property`,t.value,t.priority):e.style.removeProperty(`transition-property`)),h.delete(e))},z=e=>{for(let t of h.keys())e.has(t)||R(t)},B=()=>{for(let e of h.keys())R(e)},V=()=>{for(let e of p.values())Yp(e);p.clear()},H=()=>{V(),B()},U=()=>{u.style.display=`none`,d.style.display=`none`},W=(e,t,n)=>{if(U(),D().snapLines){if(e){let t=Math.min(n.top,e.start),r=Math.max(n.top+n.height,e.end);u.style.display=`block`,u.style.left=`${e.position}px`,u.style.top=`${t}px`,u.style.height=`${Math.max(1,r-t)}px`}if(t){let e=Math.min(n.left,t.start),r=Math.max(n.left+n.width,t.end);d.style.display=`block`,d.style.left=`${e}px`,d.style.top=`${t.position}px`,d.style.width=`${Math.max(1,r-e)}px`}}},ee=()=>{if(!(g.size>0))for(let e of s.querySelectorAll(`[data-mesurer-measurement='true']`))e instanceof c.HTMLElement&&(g.set(e,{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}),e.style.setProperty(`visibility`,`hidden`,`important`))},te=()=>{for(let[e,t]of g)t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`);g.clear()},ne=e=>{if(e.parentElement instanceof c.HTMLElement)return e.parentElement;let t=e.getRootNode();return t instanceof c.ShadowRoot&&t.host instanceof c.HTMLElement?t.host:null},re=(e,t)=>{let n=ne(e);for(;n;){let e=t.get(n);if(e)return e;n=ne(n)}return{x:0,y:0}},ie=(e=A())=>{let t=new Map;for(let n of e)for(let e of n.targets){let n=F(e);n&&t.set(n,e)}return t},ae=e=>e.offsetSpace!==`local`||e.desiredLocalOffsetX===null||e.desiredLocalOffsetY===null?null:{x:e.desiredLocalOffsetX,y:e.desiredLocalOffsetY},oe=(e,t)=>{let n=ne(e);for(;n;){if(t.has(n))return n;n=ne(n)}return null},se=(e=A(),t=new Map)=>{let n=ie(e),r=new Set([...n.keys(),...t.keys()]),i=new Map,a=new Set,o=e=>{let s=i.get(e);if(s)return s;let c=n.get(e),l=t.get(e)??(c?ae(c):null);if(!l&&c){let t={x:c.desiredOffsetX,y:c.desiredOffsetY};return i.set(e,t),t}if(!l)return{x:0,y:0};if(a.has(e))return l;a.add(e);let u=oe(e,r),d=u?o(u):{x:0,y:0},f={x:d.x+l.x,y:d.y+l.y};return a.delete(e),i.set(e,f),f};for(let e of r)o(e);return i},ce=()=>{if(v.state===`live`)return new Map;if(!v.intentId)return se();let e=T().intents.find(e=>e.id===v.intentId);if(!e)return se();let t=new Map;for(let n of e.targets){let e=F(n);e&&t.set(e,v.state===`before`?{x:n.beforeOffsetX,y:n.beforeOffsetY}:{x:n.desiredOffsetX,y:n.desiredOffsetY})}return t},le=e=>{let t=[...e].flatMap(([t,n])=>{if(!t.isConnected||!M(t))return[];let r=re(t,e),i={x:n.x-r.x,y:n.y-r.y};return i.x===0&&i.y===0?[]:[{element:t,offset:i}]}),n=new Set(t.map(({element:e})=>e));for(let{element:e}of t)L(e);V();for(let{element:e,offset:n}of t){let t=Kp(e),i=r.getComputedStyle(e).transform,a=i&&i!==`none`?` ${i}`:``;e.style.setProperty(`transform`,`translate3d(${n.x}px, ${n.y}px, 0)${a}`,`important`),p.set(e,{element:e,beforeTransform:t,appliedTransform:Kp(e)})}z(n)},ue=()=>le(ce()),de=e=>{V();try{return e()}finally{!S&&!y&&ue()}},fe=()=>i.currentSelection().elements.filter(e=>e instanceof c.HTMLElement&&e.isConnected&&M(e));e.state.register({id:xp,initial:fe().length>0});let pe=()=>e.state.get(xp)??!1,me=()=>{let t=fe().length>0;t!==pe()&&e.state.update(xp,()=>t)},he=()=>Pp(fe().map(e=>Ru(e))),ge=()=>{for(let e of _.values())e.remove();_.clear()},_e=e=>{let t=e.getBoundingClientRect(),n=t.right+Op;n+Dp>r.innerWidth-4&&(n=Math.max(4,t.left-Dp-Op));let i=Math.min(Math.max(4,t.top+kp),Math.max(4,r.innerHeight-Dp-4));return{left:n,top:i}},ve=()=>{if(!E()||y){ge();return}let t=A(),r=ie(t),i=se(t),a=new Set;for(let t of fe()){let o=r.get(t);if(!o)continue;let s=i.get(t);if(!s)continue;let c=re(t,i),u=ae(o)??{x:s.x-c.x,y:s.y-c.y};if(Math.abs(u.x)<=Ap&&Math.abs(u.y)<=Ap)continue;a.add(t);let d=_.get(t);d||(d=n.createElement(`button`),d.type=`button`,d.dataset.mesurerArrangeReset=`true`,d.dataset.mesurerInspectorUi=`true`,d.setAttribute(`aria-label`,`Reset position`),d.title=`Reset position`,d.textContent=`↺`,d.className=`msr:pointer-events-auto msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-[14px] msr:leading-none msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]`,d.style.position=`fixed`,d.addEventListener(`pointerdown`,e=>e.stopPropagation()),d.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),x=[t],e.command.execute(yp,void 0,{source:`arrange-reset-button`}).catch(()=>{x=null})}),_.set(t,d),l.append(d));let f=_e(t);d.style.left=`${f.left}px`,d.style.top=`${f.top}px`}for(let[e,t]of _)a.has(e)||(t.remove(),_.delete(e))},ye=t=>{let n=new Set(t);n.size&&(e.state.update(`mesurer.arrange.intents`,e=>{let t=!1,r=e.intents.flatMap(e=>{if(e.pageUrl!==k())return[e];let r=e.targets.filter(e=>{let r=F(e),i=r!==null&&n.has(r);return i&&(t=!0),!i});return r.length?r.length===e.targets.length?[e]:[{...e,targets:r}]:[]});return t?{intents:r}:e}),Ce(),Se())},be=()=>{e.state.update(dp,e=>{let t=e.intents.filter(e=>e.pageUrl!==k());return t.length===e.intents.length?e:{intents:t}}),Ce(),Se()},xe=e=>{let t=D();if(!t.snapping)return[];let n=[],a=new Set(e),s=i.snapshot(),l=s.xrayVisible&&t.preferXrayEdges&&t.elementEdges,u=0,d=i=>{if(u>=Tp||a.has(i)||e.some(e=>e.contains(i))||!M(i))return;let o=r.getComputedStyle(i);if(o.display===`none`||o.visibility===`hidden`||o.visibility===`collapse`)return;let s=o.outlineStyle===`solid`&&(Number.parseFloat(o.outlineWidth)||0)>0;if(l&&!s)return;let c=Ru(i);if(c.width<=0||c.height<=0)return;let d=wp;if(c.left+c.width<-160||c.top+c.height<-160||c.left>r.innerWidth+d||c.top>r.innerHeight+d)return;u+=1;let f=c.left+c.width,p=c.top+c.height;if(t.elementEdges){for(let e of[c.left,f])n.push({axis:`x`,position:e,start:c.top,end:p,source:`element`,kind:`edge`});for(let e of[c.top,p])n.push({axis:`y`,position:e,start:c.left,end:f,source:`element`,kind:`edge`})}t.elementCenters&&!l&&(n.push({axis:`x`,position:c.left+c.width/2,start:c.top,end:p,source:`element`,kind:`center`}),n.push({axis:`y`,position:c.top+c.height/2,start:c.left,end:f,source:`element`,kind:`center`}))};if(t.elementEdges||t.elementCenters){o instanceof c.HTMLElement&&d(o);for(let e of o.querySelectorAll(`*`)){if(u>=Tp)break;e instanceof c.HTMLElement&&d(e)}}if(t.guides)for(let e of s.guides)e.orientation===`vertical`?n.push({axis:`x`,position:e.position,start:0,end:r.innerHeight,source:`guide`,kind:`guide`}):n.push({axis:`y`,position:e.position,start:0,end:r.innerWidth,source:`guide`,kind:`guide`});return n},Se=e=>{if(!E()){f.style.display=`none`,ge();return}let t=e===void 0?he():e;if(!t){f.style.display=`none`,ge();return}f.style.display=`block`,f.style.left=`${t.left}px`,f.style.top=`${t.top}px`,f.style.width=`${t.width}px`,f.style.height=`${t.height}px`,y?ge():ve()},Ce=()=>{v={intentId:null,state:`desired`},ue(),U(),E()?ee():te()},we=()=>{v={intentId:null,state:`live`},H(),U(),te()},Te=()=>{S||y||(ue(),U(),E()?ee():te(),Se())},Ee=()=>{C||S||(C=r.requestAnimationFrame(()=>{C=0,Te()}))},De=async()=>{s.querySelector(`[data-mesurer-builtin='select'] button`)?.getAttribute(`aria-pressed`)!==`true`&&await e.command.execute(hp,void 0,{source:`arrange`})},Oe=e=>{if(!E()||e.button!==0)return;let r=fe();if(!r.length)return;let a=e.shiftKey?Ju(t.rendererRoot??null,()=>Ju(l,()=>Ku({x:e.clientX,y:e.clientY},o,n))):null;if(e.shiftKey&&a instanceof c.HTMLElement&&M(a)&&!r.includes(a)){e.preventDefault(),e.stopPropagation(),i.toggleSelection(a);return}e.preventDefault(),e.stopPropagation(),v={intentId:null,state:`desired`},ue();let s=ie(A()),u=se(A()),d=new Set(r);V();let p=r.map((e,t)=>{let n=Ru(e),r=re(e,u),i=u.get(e)??r,a=s.get(e),o=(a?ae(a):null)??{x:i.x-r.x,y:i.y-r.y},c=Mp(n,i),l=Xu(e);return{element:e,movesDirectly:oe(e,d)===null,target:{id:`target-${t+1}`,selector:Yu(e),fingerprintTag:l.tag,fingerprintId:l.id,fingerprintTestId:l.testId,fingerprintRole:l.role,fingerprintAriaLabel:l.ariaLabel,fingerprintClasses:[...l.classes],fingerprintText:l.text,beforeLeft:c.left,beforeTop:c.top,beforeWidth:c.width,beforeHeight:c.height,desiredLeft:c.left,desiredTop:c.top,desiredWidth:c.width,desiredHeight:c.height,beforeOffsetX:i.x,beforeOffsetY:i.y,desiredOffsetX:i.x,desiredOffsetY:i.y,offsetSpace:`local`,beforeLocalOffsetX:o.x,beforeLocalOffsetY:o.y,desiredLocalOffsetX:o.x,desiredLocalOffsetY:o.y}}}),m=Pp(p.map(({target:e})=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight})));if(!m){ue();return}ue(),ee(),U(),y={pointerId:e.pointerId,originX:e.clientX,originY:e.clientY,targets:p,groupBefore:m,snapCandidates:xe(r),shiftToggleElement:e.shiftKey&&a instanceof c.HTMLElement&&r.includes(a)?a:null,dx:0,dy:0},Se(m),f.style.cursor=`grabbing`,f.setPointerCapture?.(e.pointerId)},ke=(e,t,n)=>{let r=new Map;for(let i of e.targets){let e={x:i.target.beforeLocalOffsetX??0,y:i.target.beforeLocalOffsetY??0};r.set(i.element,i.movesDirectly?{x:e.x+t,y:e.y+n}:e)}return r},Ae=e=>{if(!y||e.pointerId!==y.pointerId)return;let t=e.clientX-y.originX,n=e.clientY-y.originY,r=null;e.shiftKey&&(Math.abs(t)>=Math.abs(n)?(n=0,r=`x`):(t=0,r=`y`));let i=Mp(y.groupBefore,{x:t,y:n}),a=r===`y`?null:zp(`x`,i,y.snapCandidates),o=r===`x`?null:zp(`y`,i,y.snapCandidates);t+=a?.delta??0,n+=o?.delta??0,y.dx=t,y.dy=n;let s=se(A(),ke(y,t,n));le(s);let c=Mp(y.groupBefore,{x:t,y:n});Se(c),W(a,o,c)},je=()=>{if(!y)return;let e=y.pointerId;y=null,f.hasPointerCapture?.(e)&&f.releasePointerCapture(e),f.style.cursor=`grab`,Ce(),Se()},Me=t=>{if(!y||t.pointerId!==y.pointerId)return;t.preventDefault(),t.stopPropagation();let n=y;if(y=null,f.hasPointerCapture?.(t.pointerId)&&f.releasePointerCapture(t.pointerId),f.style.cursor=`grab`,U(),n.dx===0&&n.dy===0){n.shiftToggleElement&&i.toggleSelection(n.shiftToggleElement),Ce(),Se();return}let a=se(A(),ke(n,n.dx,n.dy));b={id:Vp(r,`arrange`),createdAt:Date.now(),pageUrl:k(),targets:n.targets.map(({element:e,movesDirectly:t,target:r})=>{let i={x:r.beforeLocalOffsetX??0,y:r.beforeLocalOffsetY??0},o=t?{x:i.x+n.dx,y:i.y+n.dy}:i,s=a.get(e)??{x:r.beforeOffsetX+n.dx,y:r.beforeOffsetY+n.dy};return{...r,desiredLeft:r.beforeLeft+n.dx,desiredTop:r.beforeTop+n.dy,desiredOffsetX:s.x,desiredOffsetY:s.y,desiredLocalOffsetX:o.x,desiredLocalOffsetY:o.y}})};for(let{element:e,target:t}of n.targets)m.set(t.selector,e);e.command.execute(_p).catch(()=>{b=null,Ce(),Se()})},Ne=e=>{!y||e.pointerId!==y.pointerId||je()},Pe=t=>{if(t.key!==`Escape`||!E()&&!y||Xp(t.target)||s.querySelector(`[data-mesurer-tool-menu]`))return;if(t.preventDefault(),t.stopImmediatePropagation(),y){je();return}let n=i.currentSelection();if(n.elements.length>0||n.region){i.clearSelection(),Se();return}e.state.update(fp,()=>!1),we(),Se(),e.command.execute(hp,void 0,{source:`arrange-escape`}).catch(()=>void 0)};f.addEventListener(`pointerdown`,Oe),f.addEventListener(`pointermove`,Ae),f.addEventListener(`pointerup`,Me),f.addEventListener(`pointercancel`,Ne),r.addEventListener(`keydown`,Pe,!0),r.addEventListener(`resize`,Ee),r.addEventListener(`scroll`,Ee,!0),o.addEventListener(`scroll`,Ee,!0),w=new c.MutationObserver(()=>{me(),Ee()}),w.observe(o,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`]});let Fe=i.subscribe(()=>{me(),Ee()}),Ie=e.state.subscribe(Ee),Le=e=>T().intents.find(t=>t.id===e)??null,Re=(e,t)=>{let n=null;if(n=t===`before`?Pp(e.targets.map(e=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight}))):t===`desired`?Pp(e.targets.map(e=>({left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight}))):de(()=>Pp(e.targets.map(e=>F(e)).filter(e=>e!==null).map(e=>Ru(e)))),!n)throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);let i=Math.max(0,n.left-Cp),a=Math.max(0,n.top-Cp),o=Math.min(r.innerWidth,n.left+n.width+Cp),s=Math.min(r.innerHeight,n.top+n.height+Cp);return{left:i,top:a,width:Math.max(0,o-i),height:Math.max(0,s-a)}},ze={active:E,intents:()=>T().intents.map(Wp),intent(e){let t=Le(e);return t?Wp(t):null},show(e,t){if(!Le(e))throw Error(`Arrange intent not found: ${e}`);v={intentId:e,state:t},Te()},showCurrent(){v={intentId:null,state:`desired`},Te()},capturePlan(e,t){let n=Le(e);if(!n)throw Error(`Arrange intent not found: ${e}`);return{schema:`mesurer.arrange-capture/v1`,arrangeId:e,state:t,chrome:`hide`,captures:[{id:`viewport`,kind:`viewport`},{id:`focus`,kind:`clip`,rect:Re(n,t)}]}},review:(e,t=Sp)=>{let n=Le(e);if(!n)throw Error(`Arrange intent not found: ${e}`);let r=de(()=>n.targets.map(e=>{let n=F(e),r={left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight};if(!n)return{targetId:e.id,selector:e.selector,desired:r,current:null,delta:null,matched:!1};let i=Ru(n),a=Np(i,r),o=Math.abs(a.left)<=t&&Math.abs(a.top)<=t&&Math.abs(a.width)<=t&&Math.abs(a.height)<=t;return{targetId:e.id,selector:e.selector,desired:r,current:i,delta:a,matched:o}})),i=r.filter(e=>e.current!==null).length,a=i===0?`stale`:i===r.length?`connected`:`partial`;return{schema:`mesurer.arrange-review/v1`,arrangeId:n.id,targetStatus:a,tolerance:t,matched:r.length>0&&r.every(e=>e.matched),targets:r}},resetSelection:async()=>{await e.command.execute(yp)},resetAll:async()=>{await e.command.execute(bp)},clear:async()=>{await e.command.execute(vp)}};e.tool.register({id:`arrange`,label:`Arrange`,shortcut:`Shift+A`,order:65,command:gp,icon:jp,active:E,menu:{label:`Arrange options`,items:[{id:`snapping`,label:`Snapping`,checked:()=>D().snapping,run:()=>O({snapping:!D().snapping})},{id:`element-edges`,label:`Element edges`,checked:()=>D().elementEdges,disabled:()=>!D().snapping,run:()=>O({elementEdges:!D().elementEdges})},{id:`element-centers`,label:`Element centers`,checked:()=>D().elementCenters,disabled:()=>!D().snapping,run:()=>O({elementCenters:!D().elementCenters})},{id:`guides`,label:`Guides`,checked:()=>D().guides,disabled:()=>!D().snapping,run:()=>O({guides:!D().guides})},{id:`prefer-xray-edges`,label:`Prefer X-ray edges`,checked:()=>D().preferXrayEdges,disabled:()=>!D().snapping||!D().elementEdges,run:()=>O({preferXrayEdges:!D().preferXrayEdges})},{id:`alignment-rulers`,label:`Alignment rulers`,checked:()=>D().snapLines,disabled:()=>!D().snapping,run:()=>O({snapLines:!D().snapLines})},{id:`reset-all-positions`,label:`Reset all positions`,disabled:()=>A().length===0,run:async()=>{await e.command.execute(bp,void 0,{source:`arrange-menu`})}}]}}),e.settings.register({id:`arrange`,label:`Arrange`,order:35,controls:[{type:`toggle`,id:`snapping`,label:`Snapping`,description:`Magnetically align dragged selections to nearby layout anchors.`,value:()=>D().snapping,set:e=>O({snapping:e})},{type:`toggle`,id:`element-edges`,label:`Element edges`,description:`Snap left/right and top/bottom edges to nearby elements.`,value:()=>D().elementEdges,set:e=>O({elementEdges:e}),disabled:()=>!D().snapping},{type:`toggle`,id:`element-centers`,label:`Element centers`,description:`Snap center-to-center when X-ray edge preference is not active.`,value:()=>D().elementCenters,set:e=>O({elementCenters:e}),disabled:()=>!D().snapping},{type:`toggle`,id:`guides`,label:`Guides`,description:`Snap to existing Mesurer guides.`,value:()=>D().guides,set:e=>O({guides:e}),disabled:()=>!D().snapping},{type:`toggle`,id:`prefer-xray-edges`,label:`Prefer X-ray edges`,description:`When X-ray is on, use its visible blue box edges as element snap targets.`,value:()=>D().preferXrayEdges,set:e=>O({preferXrayEdges:e}),disabled:()=>!D().snapping||!D().elementEdges},{type:`toggle`,id:`alignment-rulers`,label:`Alignment rulers`,description:`Show the red alignment ruler while a snap is active.`,value:()=>D().snapLines,set:e=>O({snapLines:e}),disabled:()=>!D().snapping}]}),e.command.register(gp,async()=>{let t=!E();if(t&&await De(),e.state.update(`mesurer.arrange.active`,()=>t),!t){y&&je(),we(),Se();return}Ce(),Se()}),e.command.register(_p,()=>{let t=b;b=null,t&&(e.state.update(`mesurer.arrange.intents`,e=>({intents:[...e.intents,t].slice(-100)})),Ce(),Se())}),e.command.register(yp,()=>{let e=x??fe();x=null,ye(e)}),e.command.register(bp,be),e.command.register(vp,()=>{e.state.update(dp,()=>({intents:[]})),v={intentId:null,state:`desired`},H(),U(),E()?ee():te(),Se()}),e.service.provide(up,ze),ue(),Se(),e.lifecycle.onDispose(()=>{S=!0,C&&r.cancelAnimationFrame(C),w?.disconnect(),w=null,f.removeEventListener(`pointerdown`,Oe),f.removeEventListener(`pointermove`,Ae),f.removeEventListener(`pointerup`,Me),f.removeEventListener(`pointercancel`,Ne),r.removeEventListener(`keydown`,Pe,!0),r.removeEventListener(`resize`,Ee),r.removeEventListener(`scroll`,Ee,!0),o.removeEventListener(`scroll`,Ee,!0),Fe(),Ie.dispose(),H(),ge(),U(),te(),i.dispose(),a.dispose()})}}),Qp=(e,t,n)=>{let r=!1,i=0,a=null,o=null,s=()=>({visible:(e.state.get(`mesurer.arrange.active`)??!1)||op(e).keepArrangeChanges,intents:e.state.get(`mesurer.arrange.intents`)?.intents??[]}),c=(e,t)=>e?.visible===t.visible&&e.intents===t.intents,l=e=>{if(a=e,e.visible){t.showCurrent();return}let n=e.intents.at(-1);n&&t.show(n.id,`live`)},u=()=>{if(i=0,r||!o)return;let e=o;o=null,c(a,e)||l(e)},d=e.state.subscribe(()=>{if(r)return;let e=s();c(o??a,e)||(o=e,i||=n.requestAnimationFrame(u))});l(s()),e.lifecycle.onDispose(()=>{r=!0,i&&n.cancelAnimationFrame(i),i=0,o=null,d.dispose()})},$p=[`[data-mesurer-measurement='true']`,`[data-mesurer-selected-measurement='true']`,`[data-mesurer-inspector-ui='true']`].join(``),em=`[data-mesurer-text-edit-runtime='true']`,tm=`[data-mesurer-text-editor='true']`,nm=(e,t)=>{let n=t.ownerDocument.body;if(!n)return;let r=t.ownerWindow,i=new Map,a=e.state.get(`mesurer.arrange.active`)??!1,o=null,s=null,c=e=>e.matches($p)&&e.getRootNode()===t.ownerDocument&&e.parentElement===n,l=()=>{for(let[e,t]of i)e.isConnected&&(t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`));i.clear()},u=()=>!!o?.querySelector(tm),d=e=>{!a||u()||!c(e)||(i.has(e)||i.set(e,{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}),(e.style.getPropertyValue(`visibility`)!==`hidden`||e.style.getPropertyPriority(`visibility`)!==`important`)&&e.style.setProperty(`visibility`,`hidden`,`important`))},f=()=>{if(!(!a||u()))for(let e of n.querySelectorAll($p))e instanceof r.HTMLElement&&d(e)},p=()=>{!a||u()?l():f()},m=e=>{if(e!==o){if(s?.disconnect(),s=null,o=e,!e){p();return}s=new r.MutationObserver(p),s.observe(e,{childList:!0,subtree:!0}),p()}},h=()=>{let e=n.querySelectorAll(em);return e.item(e.length-1)};m(h());let g=new r.MutationObserver(e=>{let t=!1;for(let n of e){for(let e of n.addedNodes)e instanceof r.HTMLElement&&(e.matches(em)&&(t=!0),d(e));for(let e of n.removedNodes)e===o&&(t=!0)}t&&m(h())});g.observe(n,{childList:!0});let _=e.state.subscribe(()=>{let t=e.state.get(`mesurer.arrange.active`)??!1;t!==a&&(a=t,p())});p(),e.lifecycle.onDispose(()=>{g.disconnect(),s?.disconnect(),s=null,_.dispose(),l()})},rm=()=>{let e=Zp();return{...e,async setup(t){await e.setup(t);let n=t.service.get(up);if(!n)throw Error(`Arrange presentation policy requires the Arrange service.`);let r=t.service.get(`runtime:solid`);if(!r)throw Error(`Arrange presentation policy requires the Solid renderer runtime.`);Qp(t,n,r.ownerWindow),nm(t,r)}}},im=(e,t,n,r)=>_a({id:`mesurer.${e}`,version:`0.1.0`,provides:[`tool:${e}`],setup(i){i.tool.register({id:e,builtin:e,label:t,shortcut:n,order:r,command:`builtin.${e}`})}}),am=()=>im(`select`,`Select`,`S`,10),om=()=>im(`xray`,`X-ray`,`X`,20),sm=()=>im(`color-picker`,`Color picker`,`P`,30),cm=()=>im(`rulers`,`Rulers`,`R`,40),lm=()=>im(`text-inspector`,`Typography`,`A`,50),um=()=>im(`guides`,`Guides`,`G`,60),dm=()=>im(`settings`,`Settings`,`⌘/Ctrl+,`,90),fm=()=>_a({id:`mesurer.distance`,version:`0.1.0`,provides:[`overlay:distance`,`settings:selection-spacing`],setup(e){e.overlay.register({id:`distance`,builtin:`distance`,order:30}),e.settings.register({id:`selection-spacing`,label:`Selection spacing`,builtin:`distance`,order:30})}}),pm=()=>[am(),om(),sm(),cm(),lm(),um(),fm(),dm()];function mm(e=[],t=[]){let n=new Set(t.map(e=>`mesurer.${e}`));return[...pm().filter(e=>!n.has(e.id)),...e]}var hm=`arrange.toggle`,gm=`builtin.select`;function _m(e,t){let n=t.createWorkspaceRuntime(),r=!1,i=0,a=!1,o=e.state.get(`mesurer.arrange.active`)??!1,s=t.currentToolMode?.(),c=!1,l=!1,u=()=>{r||i||(i=t.ownerWindow.requestAnimationFrame(()=>{if(i=0,r||a)return;let n=t.currentToolMode?.(),o=e.state.get(`mesurer.arrange.active`)??!1;if(n===void 0||!o){c=!1,l=!1;return}if(n===`select`){c=!1,l=!1;return}a=!0;let s=l?hm:c?gm:hm,d=s===gm?`arrange-requires-select`:`select-deactivated`;c=!1,l=!1,e.command.execute(s,void 0,{source:d}).catch(()=>void 0).finally(()=>{a=!1,u()})}))},d=()=>{let e=t.currentToolMode?.();s===`select`&&e!==void 0&&e!==`select`&&(l=!0),s=e,u()},f=()=>{let t=e.state.get(`mesurer.arrange.active`)??!1;t&&!o&&(c=!0),o=t,u()},p=n.subscribe(d),m=e.state.subscribe(f);u(),e.lifecycle.onDispose(()=>{r=!0,i&&t.ownerWindow.cancelAnimationFrame(i),i=0,m.dispose(),p(),n.dispose()})}var vm=80,ym=8,bm=8,xm=0,Sm=e=>({left:e.left,top:e.top,right:e.right,bottom:e.bottom,width:e.width,height:e.height}),Cm=e=>{let t=Number.parseFloat(e.style.left)||0,n=Number.parseFloat(e.style.top)||0,r=Number.parseFloat(e.style.width)||e.getBoundingClientRect().width,i=Number.parseFloat(e.style.height)||e.getBoundingClientRect().height;return{left:t,top:n,right:t+r,bottom:n+i,width:r,height:i}},wm=(e,t,n=5)=>Math.abs(e.left-t.left)<=n&&Math.abs(e.top-t.top)<=n&&Math.abs(e.width-t.width)<=n&&Math.abs(e.height-t.height)<=n,Tm=e=>e.width>0&&e.height>0&&e.right>0&&e.bottom>0,Em=e=>!!(e.CSS?.supports(`anchor-name: --mesurer-native-anchor`)&&e.CSS.supports(`position-anchor: --mesurer-native-anchor`)&&e.CSS.supports(`left: anchor(left)`)&&e.CSS.supports(`width: anchor-size(width)`)),Dm=(e,t,n)=>{(e.style.getPropertyValue(t)!==n||e.style.getPropertyPriority(t)!==`important`)&&e.style.setProperty(t,n,`important`)},Om=e=>{e&&(delete e.dataset.mesurerNativeScrollAnchor,delete e.dataset.mesurerNativeScrollOwner,e.style.removeProperty(`position-anchor`),e.style.removeProperty(`--mesurer-native-anchor-x`),e.style.removeProperty(`--mesurer-native-anchor-y`))},km=(e,t,n)=>{let r=[],i=e;for(;i instanceof n.HTMLElement&&(r.push(i),i!==t);)i=i.parentElement;return r},Am=(e,t,n,r)=>{if(!Tm(e))return null;let i=Math.min(Math.max(e.left+e.width/2,0),Math.max(0,n.innerWidth-1)),a=Math.min(Math.max(e.top+e.height/2,0),Math.max(0,n.innerHeight-1)),o=new Set;for(let s of t.elementsFromPoint(i,a))for(let t of km(s,r,n))if(!(o.has(t)||(o.add(t),t!==r&&!r.contains(t))||t.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`))&&wm(Sm(t.getBoundingClientRect()),e))return t;return null},jm=(e,t)=>t.map(t=>({property:t,value:e.style.getPropertyValue(t),priority:e.style.getPropertyPriority(t)})),Mm=(e,t)=>{for(let{property:n,value:r,priority:i}of t)r?e.style.setProperty(n,r,i):e.style.removeProperty(n)},Nm=(e,t,n=`none`)=>{let r=e.body,i=t.parentNode,a=i&&i!==r?e.createComment(`mesurer-document-scroll-layer`):null;a&&i&&i.insertBefore(a,t),t.parentNode!==r&&r.append(t);let o=jm(t,n===`selection-root`?[`display`,`position`,`left`,`top`,`width`,`height`]:n===`runtime`||n===`inspector-overlay`?[`display`,`position`,`inset`,`width`,`height`]:[]);n===`selection-root`?(Dm(t,`display`,`block`),Dm(t,`position`,`absolute`),Dm(t,`left`,`0px`),Dm(t,`top`,`0px`),Dm(t,`width`,`100vw`),Dm(t,`height`,`0px`)):(n===`runtime`||n===`inspector-overlay`)&&(Dm(t,`display`,`block`),Dm(t,`position`,`static`),Dm(t,`inset`,`auto`),Dm(t,`width`,`0px`),Dm(t,`height`,`0px`));let s=!1;return{element:t,release(){s||(s=!0,Mm(t,o),a?.parentNode&&(t.isConnected&&a.parentNode.insertBefore(t,a),a.remove()))}}};function Pm(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i,portalTarget:a}=t,o=r;if(!Em(o)||a instanceof o.ShadowRoot||i instanceof o.ShadowRoot||a.getRootNode()!==n||i.getRootNode()!==n||!n.body)return;let s=ls(n),c=t.createWorkspaceRuntime(),l=new Map,u=new Map,d=new Map,f=new Map,p=new Map,m=null,h=null,g=!1,_=!1,v=0,y=0,b=!1,x=0,S=a.querySelectorAll(`[data-mesurer-text-edit-runtime='true']`),C=S.item(S.length-1),w=C?.isConnected?Nm(n,C,`runtime`):null;C&&(C.dataset.mesurerNativeScrollRuntimeLayer=`true`);let T=n.createElement(`style`);T.dataset.mesurerNativeScrollAnchoring=`true`,T.dataset.mesurerInspectorUi=`true`,T.textContent=`
|
|
1719
1719
|
[data-mesurer-native-scroll-anchor="box"] {
|
|
1720
1720
|
position: absolute !important;
|
|
1721
1721
|
left: anchor(left) !important;
|
|
@@ -1774,6 +1774,6 @@ body.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesur
|
|
|
1774
1774
|
position: absolute !important;
|
|
1775
1775
|
z-index: ${Y_} !important;
|
|
1776
1776
|
}
|
|
1777
|
-
`,t.head.append(s),i.append(a);let c=!1;return{element:a,dispose(){c||(c=!0,o(),s.remove(),a.remove())}}}var Z_=e=>`color-mix(in srgb, ${e.color} ${e.opacity*100}%, transparent)`,Q_=e=>e===`max`?`end`:e===`center`?`center`:`start`,$_=e=>{let t=e.kind===`columns`,n=e.align===`stretch`,r=n?`repeat(${e.count}, minmax(0, 1fr))`:`repeat(${e.count}, ${e.size}px)`,i=Q_(e.align);return{position:`absolute`,inset:`0`,display:`grid`,...t?{"grid-template-columns":r,"column-gap":`${e.gutter}px`,"justify-content":n?void 0:i,"padding-left":n||e.align===`min`?`${e.offset}px`:`0`,"padding-right":n||e.align===`max`?`${e.offset}px`:`0`}:{"grid-template-rows":r,"row-gap":`${e.gutter}px`,"align-content":n?void 0:i,"padding-top":n||e.align===`min`?`${e.offset}px`:`0`,"padding-bottom":n||e.align===`max`?`${e.offset}px`:`0`},transform:e.align===`center`?t?`translateX(${e.offset}px)`:`translateY(${e.offset}px)`:void 0}};function ev(e){let t=()=>e.guides.filter(e=>e.visible);return Y(q,{get when(){return t().length>0},get children(){var e=X(`div`,{"data-mesurer-layout-guides":`true`,"data-mesurer-layer":`evidence`,class:`msr:pointer-events-none msr:absolute msr:inset-0 msr:overflow-hidden`,style:{"z-index":`2`},"aria-hidden":`true`});return Q(e,Y(Wr,{get each(){return t()},children:e=>Y(q,{get when(){return e.kind===`grid`},get fallback(){var t=X(`div`,{class:`msr:pointer-events-none msr:absolute msr:inset-0`});return Q(t,Y(Wr,{get each(){return Array.from({length:e.count})},children:()=>(()=>{var t=X(`div`,{"data-mesurer-layout-band":`true`});return J(()=>({"min-width":`0`,"min-height":`0`,width:`100%`,height:`100%`,"background-color":Z_(e)}),(e,n)=>{$(t,`style`,e,n)}),t})()})),J(()=>({e:e.id,t:e.kind,a:$_(e)}),({e,t:n,a:r},i)=>{e!==i?.e&&$(t,`data-mesurer-layout-guide`,e,i?.e),n!==i?.t&&$(t,`data-mesurer-layout-guide-kind`,n,i?.t),r!==i?.a&&$(t,`style`,r,i?.a)}),t},get children(){var t=X(`div`,{"data-mesurer-layout-guide-kind":`grid`,class:`msr:pointer-events-none msr:absolute msr:inset-0`});return J(()=>({e:e.id,t:{"background-image":`linear-gradient(to right, ${Z_(e)} 1px, transparent 1px), linear-gradient(to bottom, ${Z_(e)} 1px, transparent 1px)`,"background-size":`${e.size}px ${e.size}px`}}),({e,t:n},r)=>{e!==r?.e&&$(t,`data-mesurer-layout-guide`,e,r?.e),n!==r?.t&&$(t,`style`,n,r?.t)}),t}})})),e}})}var tv=`#FF0000`,nv=.1,rv=new Set([`columns`,`rows`,`grid`]),iv=new Set([`stretch`,`min`,`center`,`max`]),av=(e,t,n)=>Math.min(n,Math.max(t,e)),ov=(e,t)=>e!==void 0&&Number.isFinite(e)?e:t,sv=(e={})=>{let t=e.kind&&rv.has(e.kind)?e.kind:`columns`,n=e.align&&iv.has(e.align)?e.align:t===`grid`?`min`:`stretch`,r=e.id?.trim(),i=e.color?.trim();return{id:r||Eo(),kind:t,visible:e.visible??!0,color:i||`#FF0000`,opacity:av(ov(e.opacity,nv),0,1),count:av(Math.round(ov(e.count,5)),1,24),size:av(ov(e.size,72),1,4096),gutter:av(ov(e.gutter,20),0,800),offset:av(ov(e.offset,0),0,4096),align:n}},cv=e=>(e??[]).map(sv),lv=e=>{if(e.kind===`grid`)return`Grid ${Math.round(e.size)}px`;let t=e.kind===`columns`?`columns`:`rows`;return e.align===`stretch`?`${e.count} ${t}`:`${e.count} ${t} (${Math.round(e.size)}px)`},uv=e=>(()=>{var t=X(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,class:`msr:block`});return Z(t,X(`path`,{d:`m6 6 12 12M18 6 6 18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})),J(()=>({e:e.size??14,t:e.size??14}),({e,t:n},r)=>{e!==r?.e&&$(t,`width`,e,r?.e),n!==r?.t&&$(t,`height`,n,r?.t)}),t})(),dv=e=>e.kind===`rows`?Y(Gl,{size:14}):e.kind===`grid`?Y(Ul,{size:14}):Y(Wl,{size:14}),fv=`msr:grid-cols-[78px_minmax(0,1fr)]`,pv=e=>(()=>{var t=X(`label`,{class:`msr:col-span-2 msr:grid msr:h-8 msr:w-full msr:grid-cols-[78px_minmax(0,1fr)] msr:items-center msr:gap-0 msr:text-[12px] msr:text-ink-700`}),n=X(`span`);return Z(t,n),Q(n,()=>e.label),Q(t,()=>e.children,null),t})(),mv=e=>(()=>{var t=X(`span`,{class:`msr:relative msr:block msr:w-full`}),n=X(`select`,{class:Dl,onPointerDown:e=>e.stopPropagation(),onChange:t=>e.onChange(t.currentTarget.value)});return Z(t,n),Q(n,()=>e.children),Q(t,Y(Ol,{}),null),J(()=>({e:e.label,t:e.value}),({e,t},r)=>{e!==r?.e&&$(n,`aria-label`,e,r?.e),t!==r?.t&&$(n,`value`,t,r?.t)}),t})(),hv=e=>{let[t,n]=K(!1),[r,i]=K(String(e.value)),a=()=>e.min??0,o=()=>e.max??9999,s=e=>Math.min(o(),Math.max(a(),e)),c=t=>{let n=Number(t.replace(/[^\d.-]/g,``));if(!Number.isFinite(n)){i(String(e.value));return}e.onChange(s(n))};return Y(kl,{get left(){var a=X(`input`,{type:`text`,inputmode:`numeric`,class:`msr:h-full msr:w-full msr:min-w-0 msr:border-0 msr:bg-transparent msr:px-2 msr:font-mono msr:text-[12px] msr:font-medium msr:tabular-nums msr:text-ink-700 msr:outline-none`,onFocus:()=>{i(String(e.value)),n(!0)},onBlur:()=>{c(r()),n(!1)},onInput:t=>{let n=t.currentTarget.value.replace(/[^\d.-]/g,``);i(n);let r=Number(n);Number.isFinite(r)&&e.onChange(s(r))},onKeyDown:t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=Number(r()),a=Number.isFinite(n)?n:e.value,o=s(a+(t.key===`ArrowUp`?1:-1));i(String(o)),e.onChange(o)},onPointerDown:e=>e.stopPropagation()});return J(()=>({e:e.label,t:t()?r():String(e.value)}),({e,t},n)=>{e!==n?.e&&$(a,`aria-label`,e,n?.e),t!==n?.t&&$(a,`value`,t,n?.t)}),a}})},gv=e=>e===`rows`||e===`grid`?e:`columns`,_v=e=>e===`min`||e===`center`||e===`max`?e:`stretch`,vv=e=>{let t=Rr(()=>e.guide.kind===`rows`?{stretch:`Stretch`,min:`Top`,center:`Center`,max:`Bottom`}:{stretch:`Stretch`,min:`Left`,center:`Center`,max:`Right`}),n=Rr(()=>e.guide.kind===`rows`?`Height`:e.guide.kind===`grid`?`Size`:`Width`);var r=X(`div`,{class:`mesurer-thin-scrollbar msr:flex msr:min-h-0 msr:flex-1 msr:flex-col msr:gap-2 msr:overflow-y-auto msr:p-3`}),i=X(`div`,{class:`msr:flex msr:items-center msr:justify-between msr:gap-2`}),a=X(`button`,{type:`button`,"aria-label":`Back to layout guides`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-500 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`});return Z(r,i),Z(i,a),Q(i,Y(mv,{label:`Layout guide type`,get value(){return e.guide.kind},onChange:t=>{let n=gv(t);e.onUpdate({kind:n,align:n===`grid`?`min`:e.guide.align===`stretch`||n===e.guide.kind?e.guide.align:`stretch`})},get children(){return[(()=>{var e=X(`option`,{value:`columns`});return Z(e,Ji(`Columns`)),e})(),(()=>{var e=X(`option`,{value:`rows`});return Z(e,Ji(`Rows`)),e})(),(()=>{var e=X(`option`,{value:`grid`});return Z(e,Ji(`Grid`)),e})()]}}),a),Q(a,Y(uv,{})),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return Y(pv,{label:`Count`,get children(){return Y(hv,{label:`Count`,get value(){return e.guide.count},min:1,max:24,onChange:t=>e.onUpdate({count:t})})}})}}),null),Q(r,Y(Al,{label:`Color`,columns:fv,get value(){return Ea({...wa(e.guide.color)??wa(`#FF0000`),alpha:e.guide.opacity})},fallback:tv,get ownerWindow(){return e.ownerWindow},onChange:t=>{let n=wa(t);e.onUpdate({color:n?Ea({...n,alpha:1}).slice(0,7):t,opacity:n?.alpha??e.guide.opacity})}}),null),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return Y(pv,{label:`Type`,get children(){return Y(mv,{label:`Alignment`,get value(){return e.guide.align},onChange:t=>e.onUpdate({align:_v(t)}),get children(){return Y(Wr,{each:[`stretch`,`min`,`center`,`max`],children:e=>(()=>{var n=X(`option`,{value:e});return Q(n,()=>t()[e]),n})()})}})}})}}),null),Q(r,Y(q,{get when(){return e.guide.kind===`grid`||e.guide.align!==`stretch`},get children(){return Y(pv,{get label(){return n()},get children(){return Y(hv,{get label(){return n()},get value(){return e.guide.size},min:1,max:4096,onChange:t=>e.onUpdate({size:t})})}})}}),null),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return[Y(pv,{label:`Offset`,get children(){return Y(hv,{label:`Offset`,get value(){return e.guide.offset},min:0,max:4096,onChange:t=>e.onUpdate({offset:t})})}}),Y(pv,{label:`Gutter`,get children(){return Y(hv,{label:`Gutter`,get value(){return e.guide.gutter},min:0,max:800,onChange:t=>e.onUpdate({gutter:t})})}})]}}),null),J(()=>e.onBack,(e,t)=>{$(a,`onClick`,e,t)}),r};function yv(e){let[t,n]=K(null),r=Rr(()=>e.guides.find(e=>e.id===t())??null);var i=X(`div`,{"data-mesurer-layout-guides-panel":`true`,role:`dialog`,"aria-label":`Layout guides`,class:`mesurer-menu-surface msr:pointer-events-auto msr:flex msr:max-h-[min(320px,calc(100vh-16px))] msr:w-60 msr:flex-col msr:overflow-hidden msr:rounded-lg msr:bg-white msr:p-0 msr:text-[12px] msr:leading-[18px]`,onPointerDown:e=>e.stopPropagation(),onPointerMove:e=>e.stopPropagation(),onPointerUp:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()});return Q(i,Y(q,{get when(){return r()},get fallback(){var t=X(`div`,{class:`msr:flex msr:min-h-0 msr:flex-1 msr:flex-col msr:gap-1 msr:p-2`}),r=X(`div`,{class:`msr:flex msr:h-7 msr:shrink-0 msr:items-center msr:justify-between msr:px-1`}),i=X(`h2`,{class:`msr:text-[11px] msr:font-semibold msr:text-ink-700`}),a=X(`button`,{type:`button`,"aria-label":`Add layout guide`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-500 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`});return Z(t,r),Z(r,i),Z(r,a),Z(i,Ji(`Layout guides`)),Q(a,Y(Kl,{})),Q(t,Y(q,{get when(){return e.guides.length>0},get fallback(){var e=X(`p`,{class:`msr:px-1 msr:pb-2 msr:text-[11px] msr:text-ink-500`});return Z(e,Ji(`Add columns, rows, or a pixel grid on the page.`)),e},get children(){var t=X(`ul`,{class:`mesurer-thin-scrollbar msr:m-0 msr:flex msr:min-h-0 msr:flex-1 msr:list-none msr:flex-col msr:gap-0.5 msr:overflow-y-auto msr:p-0`});return Q(t,Y(Wr,{get each(){return e.guides},children:t=>(()=>{var r=X(`li`,{class:`msr:flex msr:items-center msr:gap-0.5`}),i=X(`button`,{type:`button`,class:`msr:flex msr:min-w-0 msr:flex-1 msr:items-center msr:gap-2 msr:rounded-control msr:px-1 msr:py-1 msr:text-left msr:text-[11px] msr:text-ink-700 msr:outline-none msr:hover:bg-ink-100`,onClick:()=>n(t.id)}),a=X(`span`,{class:`msr:flex msr:h-[19px] msr:items-start msr:text-ink-500`}),o=X(`span`,{class:`msr:min-w-0 msr:flex-1 msr:truncate`}),s=X(`button`,{type:`button`,onClick:()=>e.onUpdate(t.id,{visible:!t.visible})}),c=X(`button`,{type:`button`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-400 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`,onClick:()=>e.onRemove(t.id)});return Z(r,i),Z(r,s),Z(r,c),Z(i,a),Z(i,o),Q(a,Y(dv,{get kind(){return t.kind}})),Q(o,()=>lv(t)),Q(i,Y(Il,{size:8,class:`msr:block msr:-rotate-90 msr:text-ink-400`}),null),Q(s,(()=>{var e=qi(()=>!!t.visible);return()=>e()?Y(ql,{}):Y(Jl,{})})()),Q(c,Y(Rl,{size:10,class:`msr:block`})),J(()=>({e:t.visible?`Hide ${lv(t)}`:`Show ${lv(t)}`,t:t.visible?`true`:`false`,a:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:outline-none msr:hover:bg-ink-100 ${t.visible?`msr:text-ink-700`:`msr:text-ink-400`}`,o:`Remove ${lv(t)}`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&$(s,`aria-label`,e,i?.e),t!==i?.t&&$(s,`aria-pressed`,t,i?.t),n!==i?.a&&$(s,`class`,n,i?.a),r!==i?.o&&$(c,`aria-label`,r,i?.o)}),r})()})),t}}),null),J(()=>e.onAdd,(e,t)=>{$(a,`onClick`,e,t)}),t},children:t=>Y(vv,{get guide(){return t()},get ownerWindow(){return e.ownerWindow},onBack:()=>n(null),onUpdate:n=>e.onUpdate(t().id,n)})})),i}var bv=`mesurer.layout-guides`,xv=`layout-guides:v1`,Sv=`mesurer.layout-guides.pages`,Cv=`mesurer.layout-guides.active`,wv=`runtime:solid`,Tv=`layout-guides.toggle`,Ev=`layout-guides.add`,Dv=`layout-guides.update`,Ov=`layout-guides.remove`,kv=`layout-guides.clear`,Av=240,jv=8,Mv=8,Nv=()=>({pages:{}}),Pv=(e,t)=>e.pages[t]??[],Fv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Iv=e=>typeof e==`string`,Lv=e=>typeof e==`boolean`,Rv=e=>typeof e==`number`,zv=e=>e===`columns`||e===`rows`||e===`grid`,Bv=e=>e===`stretch`||e===`min`||e===`center`||e===`max`,Vv=e=>({...e}),Hv=e=>e.map(Vv),Uv=e=>Fv(e)?e:null,Wv=e=>{if(!e)return{};let t={};return Iv(e.id)&&(t.id=e.id),zv(e.kind)&&(t.kind=e.kind),Lv(e.visible)&&(t.visible=e.visible),Iv(e.color)&&(t.color=e.color),Rv(e.opacity)&&(t.opacity=e.opacity),Rv(e.count)&&(t.count=e.count),Rv(e.size)&&(t.size=e.size),Rv(e.gutter)&&(t.gutter=e.gutter),Rv(e.offset)&&(t.offset=e.offset),Bv(e.align)&&(t.align=e.align),t},Gv=e=>{let t={};return e.id!==void 0&&(t.id=e.id),e.kind!==void 0&&(t.kind=e.kind),e.visible!==void 0&&(t.visible=e.visible),e.color!==void 0&&(t.color=e.color),e.opacity!==void 0&&(t.opacity=e.opacity),e.count!==void 0&&(t.count=e.count),e.size!==void 0&&(t.size=e.size),e.gutter!==void 0&&(t.gutter=e.gutter),e.offset!==void 0&&(t.offset=e.offset),e.align!==void 0&&(t.align=e.align),t},Kv={viewBox:`0 0 256 256`,paths:[`M48 48h160v8H48zM48 200h160v8H48zM48 56h8v144h-8zM200 56h8v144h-8z`,`M101 56h8v144h-8zM147 56h8v144h-8z`]},qv=()=>_a({id:bv,version:`0.1.0`,requires:[wv],provides:[xv,`tool:layout-guides`],setup(e){let t=e.service.get(wv);if(!t)throw Error(`Layout Guides requires the Solid renderer runtime.`);let n=t.rendererRoot;if(!n)throw Error(`Layout Guides requires a mounted renderer root.`);e.state.register({id:Sv,initial:Nv(),history:!0,persist:!0}),e.state.register({id:Cv,initial:!1});let r=fs(t.ownerWindow),i=!1,[a,o]=K(0),s=new Set,c=0,l=()=>e.state.get(`mesurer.layout-guides.pages`)??Nv(),u=()=>e.state.get(`mesurer.layout-guides.active`)??!1,d=()=>cv(Pv(l(),r)),f=()=>(a(),u()?d():[]),p=t=>{e.state.update(Cv,()=>t)},m=t=>{e.state.update(Sv,e=>({...e,pages:{...e.pages,[r]:Hv(t(cv(e.pages[r])))}}))};e.command.register(Tv,()=>{let e=!u();return e&&d().length===0&&m(()=>[sv()]),i=e,p(e),u()}),e.command.register(Ev,e=>{let t=sv(Wv(Uv(e)));return m(e=>[...e,t]),{...t}}),e.command.register(Dv,e=>{let t=Uv(e),n=t&&Iv(t.id)?t.id:null,r=Wv(Uv(t?.patch));if(!n)throw Error(`layout-guides.update requires a guide id.`);m(e=>e.map(e=>e.id===n?sv({...e,...r,id:e.id}):e));let i=d().find(e=>e.id===n);if(!i)throw Error(`Layout guide not found: ${n}`);return{...i}}),e.command.register(Ov,e=>{let t=Uv(e),n=t&&Iv(t.id)?t.id:null;if(!n)throw Error(`layout-guides.remove requires a guide id.`);let r=d().length;return m(e=>e.filter(e=>e.id!==n)),d().length!==r}),e.command.register(kv,()=>{m(()=>[])});let h=async(t,n)=>{let r=Uv(await e.command.execute(t,n));if(!r)throw Error(`${t} did not return a layout guide.`);return sv(Wv(r))},g={list:()=>d().map(e=>({...e})),add:(e={})=>h(Ev,Gv(e)),update:(e,t)=>h(Dv,{id:e,patch:Gv(t)}),async remove(t){return await e.command.execute(Ov,{id:t})===!0},async clear(){await e.command.execute(kv)},subscribe(e){s.add(e);let t=!1;return()=>{t||(t=!0,s.delete(e))}}};e.service.provide(xv,g),e.tool.register({id:`layout-guides`,label:`Layout guides`,shortcut:`L`,command:Tv,order:38,icon:Kv,active:u});let _=t.ownerDocument.createElement(`div`);_.dataset.mesurerLayoutGuidesRoot=`true`,_.dataset.mesurerLayer=`evidence`,_.style.position=`absolute`,_.style.inset=`0`,_.style.pointerEvents=`none`,n.prepend(_);let v=Ki(()=>Y(ev,{get guides(){return f()}}),_),y=t.createInspectorMount();y.element.dataset.mesurerLayoutGuidesPanelRoot=`true`,Object.assign(y.element.style,{position:`fixed`,left:`0`,top:`0`,width:`${Av}px`,zIndex:`100`,pointerEvents:`none`,display:`none`});let b=()=>{if(c=0,!i)return;let e=t.portalTarget.querySelector(`[data-mesurer-tool-id='layout-guides']`);if(!e)return;let n=e.getBoundingClientRect(),r=Math.min(Math.max(Mv,n.right-Av),Math.max(Mv,t.ownerWindow.innerWidth-Av-Mv)),a=t.ownerWindow.innerHeight-n.bottom-jv-Mv,o=Math.min(320,t.ownerWindow.innerHeight-16),s=a>=Math.min(o,320)?n.bottom+jv:Math.max(Mv,n.top-jv-o);y.element.style.left=`${r}px`,y.element.style.top=`${s}px`},x=()=>{c||=t.ownerWindow.requestAnimationFrame(b)},S=()=>{y.element.style.display=i?`block`:`none`,i&&x()},C=Ki(()=>Y(yv,{get guides(){return f()},get ownerWindow(){return t.ownerWindow},onAdd:()=>{g.add().catch(()=>void 0)},onUpdate:(e,t)=>{g.update(e,t).catch(()=>void 0)},onRemove:e=>{g.remove(e).catch(()=>void 0)}}),y.element),w=()=>{o(e=>e+1);for(let e of s)e();S()},T=e.state.subscribe(w),E=gs(t.ownerWindow,e=>{r!==e&&(r=e,w())}),D=e=>{if(!i)return;let n=e.composedPath();if(n.includes(y.element))return;let r=t.portalTarget.querySelector(`[data-mesurer-tool-id='layout-guides']`);r&&n.includes(r)||(i=!1,S())},O=e=>{e.key!==`Escape`||!i||(i=!1,S())};S(),t.ownerDocument.addEventListener(`pointerdown`,D,!0),t.ownerDocument.addEventListener(`keydown`,O,!0),t.ownerWindow.addEventListener(`resize`,x),t.ownerWindow.addEventListener(`pointerup`,x,!0),e.lifecycle.onDispose(()=>{t.ownerDocument.removeEventListener(`pointerdown`,D,!0),t.ownerDocument.removeEventListener(`keydown`,O,!0),t.ownerWindow.removeEventListener(`resize`,x),t.ownerWindow.removeEventListener(`pointerup`,x,!0),c&&t.ownerWindow.cancelAnimationFrame(c),c=0,s.clear(),T.dispose(),E(),C(),y.dispose(),v(),_.remove()})}}),Jv=144,Yv=96,Xv=8,Zv=4,Qv=1800,$v=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},ey=(e,t)=>({left:Math.min(Math.max(Xv,e.left),Math.max(Xv,t.innerWidth-Jv-Xv)),top:Math.min(Math.max(Xv,e.top),Math.max(Xv,t.innerHeight-Yv-Xv))}),ty=(e,t)=>{let n=e.createElement(`button`);return n.type=`button`,n.textContent=t,$v(n,{height:`32px`,padding:`0 12px`,border:`1px solid rgb(255 255 255 / 18%)`,"border-radius":`8px`,"background-color":`rgb(28 28 30 / 84%)`,color:`white`,"font-family":`inherit`,"font-size":`12px`,"font-weight":`500`,cursor:`pointer`}),n},ny=({copied:e,downloaded:t,copyFailed:n,downloadFailed:r})=>e&&t?`Copied and saved screenshot`:e&&r?`Copied screenshot · Save unavailable`:t&&n?`Saved screenshot · Copy unavailable`:e?`Copied screenshot`:t?`Saved screenshot`:n&&r?`Screenshot captured · Copy and save unavailable`:n?`Screenshot captured · Copy unavailable`:r?`Screenshot captured · Save unavailable`:`Screenshot captured`,ry=e=>e!==null&&(e.nodeType===1||e.nodeType===11),iy=({ownerDocument:e,ownerWindow:t,root:n,previewDurationMs:r})=>{let i=n.closest(`[data-mesurer-root='true']`)?.parentNode??n.parentNode;if(!ry(i))throw Error(`Screenshot preview requires a mounted Mesurer host.`);let a=e.createElement(`div`);a.dataset.mesurerInspectorUi=`true`,a.dataset.mesurerScreenshotInteractive=`true`,$v(a,{position:`fixed`,left:`0`,top:`0`,width:`0`,height:`0`,overflow:`visible`,"z-index":`96`,"pointer-events":`auto`,"font-family":`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif`}),i.append(a);let o=e.createElement(`div`);o.dataset.mesurerScreenshotPreview=`true`,o.setAttribute(`role`,`button`),o.setAttribute(`aria-label`,`Open captured screenshot`),o.tabIndex=0,$v(o,{position:`fixed`,display:`none`,"z-index":`96`,width:`${Jv}px`,height:`${Yv}px`,"box-sizing":`border-box`,overflow:`hidden`,"border-radius":`10px`,border:`1px solid rgb(0 0 0 / 14%)`,"background-color":`white`,"box-shadow":`0 2px 8px rgb(0 0 0 / 12%)`,"pointer-events":`auto`,cursor:`grab`,"user-select":`none`,"touch-action":`none`});let s=e.createElement(`img`);s.dataset.mesurerScreenshotPreviewImage=`true`,s.alt=`Captured screenshot`,s.draggable=!1,s.title=`Click to open · Right-click for browser image actions`,$v(s,{display:`block`,width:`100%`,height:`100%`,"object-fit":`contain`,"background-color":`white`}),o.append(s);let c=e.createElement(`button`);c.dataset.mesurerScreenshotPreviewDismiss=`true`,c.type=`button`,c.setAttribute(`aria-label`,`Dismiss screenshot preview`),c.title=`Dismiss`,$v(c,{position:`absolute`,top:`8px`,right:`8px`,width:`20px`,height:`20px`,display:`flex`,"align-items":`center`,"justify-content":`center`,"box-sizing":`border-box`,padding:`0`,border:`0`,"border-radius":`999px`,"background-color":`rgb(48 51 64)`,color:`white`,"font-family":`inherit`,"font-size":`14px`,"line-height":`1`,"z-index":`1`,cursor:`pointer`});let l=e.createElementNS(`http://www.w3.org/2000/svg`,`svg`);l.setAttribute(`viewBox`,`0 0 16 16`),l.setAttribute(`width`,`12`),l.setAttribute(`height`,`12`),l.setAttribute(`fill`,`none`),l.setAttribute(`aria-hidden`,`true`);let u=e.createElementNS(`http://www.w3.org/2000/svg`,`path`);u.setAttribute(`d`,`m4 4 8 8M12 4l-8 8`),u.setAttribute(`stroke`,`currentColor`),u.setAttribute(`stroke-width`,`1.75`),u.setAttribute(`stroke-linecap`,`round`),l.append(u),c.append(l),o.append(c),a.append(o);let d=e.createElement(`div`);d.dataset.mesurerScreenshotViewer=`true`,d.setAttribute(`role`,`dialog`),d.setAttribute(`aria-modal`,`true`),d.setAttribute(`aria-label`,`Screenshot viewer`),$v(d,{position:`fixed`,inset:`0`,display:`none`,"z-index":`110`,"align-items":`center`,"justify-content":`center`,padding:`56px 48px 40px`,"box-sizing":`border-box`,"background-color":`rgb(0 0 0 / 72%)`,"backdrop-filter":`blur(8px)`,"pointer-events":`auto`});let f=e.createElement(`img`);f.dataset.mesurerScreenshotViewerImage=`true`,f.alt=`Captured screenshot`,$v(f,{display:`block`,"max-width":`calc(100vw - 96px)`,"max-height":`calc(100vh - 112px)`,width:`auto`,height:`auto`,"object-fit":`contain`,"border-radius":`8px`,"box-shadow":`0 8px 30px rgb(0 0 0 / 28%)`}),d.append(f);let p=e.createElement(`div`);p.dataset.mesurerScreenshotViewerControls=`true`,$v(p,{position:`fixed`,top:`16px`,right:`16px`,display:`flex`,gap:`8px`,"pointer-events":`auto`});let m=ty(e,`Copy`);m.dataset.mesurerScreenshotViewerCopy=`true`,m.setAttribute(`aria-label`,`Copy screenshot`);let h=ty(e,`Save`);h.dataset.mesurerScreenshotViewerSave=`true`,h.setAttribute(`aria-label`,`Save screenshot`);let g=ty(e,`Close`);g.dataset.mesurerScreenshotViewerClose=`true`,g.setAttribute(`aria-label`,`Close screenshot viewer`),p.append(m,h,g),d.append(p),a.append(d);let _=e.createElement(`div`);_.dataset.mesurerScreenshotToast=`true`,_.setAttribute(`role`,`status`),$v(_,{position:`fixed`,left:`50%`,bottom:`20px`,display:`none`,"z-index":`120`,transform:`translateX(-50%)`,padding:`7px 10px`,"border-radius":`8px`,"background-color":`rgb(28 28 30 / 90%)`,color:`white`,"font-size":`12px`,"font-weight":`500`,"pointer-events":`none`}),a.append(_);let v=null,y=null,b=null,x=null,S=0,C=0,w=!1,T=()=>{S&&t.clearTimeout(S),S=0},E=()=>{C&&t.clearTimeout(C),C=0},D=(e,n=!1)=>{E(),_.textContent=e,_.style.backgroundColor=n?`#b42318`:`rgb(28 28 30 / 90%)`,_.style.display=`block`,C=t.setTimeout(()=>{C=0,_.style.display=`none`},Qv)},O=()=>{d.style.display=`none`},k=()=>{y&&globalThis.URL.revokeObjectURL(y),y=null,v=null,s.removeAttribute(`src`),f.removeAttribute(`src`)},A=()=>{T(),O(),o.style.display=`none`,k()},j=()=>ey({left:t.innerWidth-Jv-Xv,top:t.innerHeight-Yv-Xv},t),M=e=>{let n=ey(e,t);b=n,o.style.left=`${n.left}px`,o.style.top=`${n.top}px`},N=()=>{!v||!y||(T(),d.style.display=`flex`,g.focus())},P=async()=>{let e=v;if(e)try{await Va(Promise.resolve(e),t),D(`Copied screenshot`)}catch{D(`Could not copy screenshot`,!0)}},F=()=>{let n=v;if(n)try{Ua(n,Ha(),e,t),D(`Saved screenshot`)}catch{D(`Could not save screenshot`,!0)}},I=(e,t,n)=>{if(!v)return!1;T();let r=o.getBoundingClientRect();return x={pointerId:n,startX:e,startY:t,left:r.left,top:r.top,moved:!1},o.style.cursor=`grabbing`,!0},L=(e,t)=>{let n=x;if(!n)return;let r=e-n.startX,i=t-n.startY;!n.moved&&Math.hypot(r,i)>=Zv&&(n.moved=!0),n.moved&&M({left:n.left+r,top:n.top+i})},R=()=>{let e=x;e&&(x=null,o.style.cursor=`grab`,e.moved||N())},z=()=>{x&&(x=null,o.style.cursor=`grab`)},B=e=>{e.button!==0||!I(e.clientX,e.clientY,null)||e.preventDefault()},V=e=>{x?.pointerId===null&&L(e.clientX,e.clientY)},H=e=>{e.button===0&&x?.pointerId===null&&R()},U=e=>{e.pointerType!==`mouse`&&e.button===0&&I(e.clientX,e.clientY,e.pointerId)&&(o.setPointerCapture?.(e.pointerId),e.preventDefault())},W=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&L(e.clientX,e.clientY)},ee=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),R())},te=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),z())},ne=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),N())},re=e=>{e.target!==s&&e.preventDefault()},ie=e=>{e.target===d&&O()},ae=e=>{e.key===`Escape`&&d.style.display!==`none`&&(e.preventDefault(),e.stopImmediatePropagation(),O())};return c.addEventListener(`pointerdown`,e=>e.stopPropagation()),c.addEventListener(`mousedown`,e=>e.stopPropagation()),c.addEventListener(`click`,e=>{e.stopPropagation(),A()}),o.addEventListener(`mousedown`,B),o.addEventListener(`pointerdown`,U),o.addEventListener(`keydown`,ne),o.addEventListener(`contextmenu`,re),d.addEventListener(`click`,ie),m.addEventListener(`click`,()=>{P()}),h.addEventListener(`click`,F),g.addEventListener(`click`,O),t.addEventListener(`mousemove`,V,!0),t.addEventListener(`mouseup`,H,!0),t.addEventListener(`pointermove`,W,!0),t.addEventListener(`pointerup`,ee,!0),t.addEventListener(`pointercancel`,te,!0),t.addEventListener(`keydown`,ae,!0),{show(e,n){if(w)return;T(),O(),k(),v=e;let i=globalThis.URL.createObjectURL(e);y=i,s.src=i,f.src=i,o.style.display=`block`,M(b??j()),D(ny(n)),r>0&&(S=t.setTimeout(A,r))},dismiss:A,dispose(){w||(w=!0,T(),E(),A(),t.removeEventListener(`mousemove`,V,!0),t.removeEventListener(`mouseup`,H,!0),t.removeEventListener(`pointermove`,W,!0),t.removeEventListener(`pointerup`,ee,!0),t.removeEventListener(`pointercancel`,te,!0),t.removeEventListener(`keydown`,ae,!0),o.removeEventListener(`mousedown`,B),o.removeEventListener(`pointerdown`,U),o.removeEventListener(`keydown`,ne),o.removeEventListener(`contextmenu`,re),d.removeEventListener(`click`,ie),a.remove())}}},ay=`mesurer.screenshot`,oy=`screenshot`,sy=`mesurer.screenshot.settings`,cy=`mesurer.screenshot.active`,ly=`runtime:solid`,uy=`screenshot.toggle`,dy=2500,fy=0,py=[`[data-mesurer-measurement='true']`,`[data-mesurer-selected-measurement='true']`,`[data-mesurer-selection-spacing-target='true']`,`[data-mesurer-guide='true']`,`[data-mesurer-distance='true']`].join(`,`),my=`${py},[data-mesurer-rulers='true']`,hy={viewBox:`0 0 256 256`,paths:[`m 96,50 a 6.0006,6.0006 0 0 0 -4.992188,2.671875 L 76.789062,74 H 40 C 27.920803,74 18,83.920803 18,96 v 96 c 0,12.0792 9.920803,22 22,22 h 176 c 12.0792,0 22,-9.9208 22,-22 V 96 C 238,83.920803 228.0792,74 216,74 H 179.21094 L 164.99219,52.671875 A 6.0006,6.0006 0 0 0 160,50 Z m 3.210937,12 h 57.578123 l 14.21875,21.328125 A 6.0006,6.0006 0 0 0 176,86 h 40 c 5.59392,0 10,4.406085 10,10 v 96 c 0,5.59392 -4.40608,10 -10,10 H 40 c -5.593915,0 -10,-4.40608 -10,-10 V 96 c 0,-5.593915 4.406085,-10 10,-10 h 40 a 6.0006,6.0006 0 0 0 4.992187,-2.671875 z`,`m 128,94 c -23.12489,0 -42,18.87511 -42,42 0,23.12489 18.87511,42 42,42 23.12489,0 42,-18.87511 42,-42 0,-23.12489 -18.87511,-42 -42,-42 z m 0,12 c 16.63961,0 30,13.36039 30,30 0,16.63961 -13.36039,30 -30,30 -16.63961,0 -30,-13.36039 -30,-30 0,-16.63961 13.36039,-30 30,-30 z`]},gy=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},_y=(e,t)=>{for(let n of[`left`,`top`,`right`,`bottom`,`width`,`height`]){let r=t[n];r===void 0?e.style.removeProperty(n):e.style.setProperty(n,`${r}px`)}},vy=e=>{let t=e(sy);return{toolEnabled:t?.toolEnabled??!0,copy:t?.copy??!0,download:t?.download??!1,includeMeasurements:t?.includeMeasurements??!1}},yy=e=>({value:e.style.getPropertyValue(`display`),priority:e.style.getPropertyPriority(`display`)}),by=(e,t)=>{t.value||t.priority?e.style.setProperty(`display`,t.value,t.priority):e.style.removeProperty(`display`)},xy=(e,t)=>{let n=e;for(;n.parentElement&&n.parentElement!==t;)n=n.parentElement;return n.parentElement===t?n:null},Sy=e=>{let t=e.querySelector(`[data-mesurer-root='true']`);if(!t)return()=>void 0;let n=new Set;for(let e of t.querySelectorAll(`[data-mesurer-rulers='true']`)){let r=xy(e,t);r&&n.add(r)}for(let e of t.querySelectorAll(py)){let r=xy(e,t);r&&n.add(r)}let r=[];for(let e of n)e.dataset.mesurerInspectorUi!==`true`&&(r.push({element:e,display:yy(e)}),e.style.setProperty(`display`,`none`,`important`));return()=>{for(let e of r)by(e.element,e.display)}},Cy=e=>Array.from(e.querySelectorAll(my)).filter(e=>e.dataset.mesurerInspectorUi===`true`).map(e=>({element:e,display:yy(e)})),wy=e=>{for(let t of e)t.element.isConnected&&by(t.element,t.display)},Ty=(e={})=>_a({id:ay,version:`0.1.0`,requires:[ly],provides:[`tool:screenshot`,`capture:screenshot`,`settings:screenshot`],setup(t){let n=t.service.get(ly);if(!n)throw Error(`Screenshot plugin requires the Solid renderer runtime.`);let{ownerDocument:r,ownerWindow:i}=n,a=n.createWorkspaceRuntime(),o=n.createInspectorMount(),s=e.capture??e.captureVisibleTab,c=s??co,l=e.previewDurationMs??fy;t.state.register({id:sy,initial:{toolEnabled:e.toolEnabled??!0,copy:e.copy??!0,download:e.download??!1,includeMeasurements:e.includeMeasurements??!1},persist:!0}),t.state.register({id:cy,initial:!1});let u=o.element;u.dataset.mesurerScreenshot=`true`,gy(u,{position:`fixed`,inset:`0`,"z-index":`85`,"pointer-events":`none`,"font-family":`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif`});let d=r.createElement(`div`);d.dataset.mesurerScreenshotSelect=`true`,d.setAttribute(`role`,`application`),d.setAttribute(`aria-label`,`Screenshot selection`),gy(d,{position:`fixed`,inset:`0`,display:`none`,"z-index":`85`,cursor:`crosshair`,"pointer-events":`auto`,"user-select":`none`,"touch-action":`none`}),u.append(d);let f=Array.from({length:4},()=>{let e=r.createElement(`div`);return gy(e,{position:`fixed`,"background-color":`rgb(0 0 0 / 40%)`,"pointer-events":`none`}),d.append(e),e}),p=r.createElement(`div`);gy(p,{position:`fixed`,display:`none`,border:`1px solid #0d99ff`,"box-sizing":`border-box`,"pointer-events":`none`}),d.append(p);let m=r.createElement(`div`);gy(m,{position:`fixed`,display:`none`,"z-index":`86`,transform:`translateX(-50%)`,"border-radius":`4px`,padding:`2px 4px`,"background-color":`#0d99ff`,color:`white`,"font-size":`10px`,"font-variant-numeric":`tabular-nums`,"pointer-events":`none`}),d.append(m);let h=r.createElement(`div`);h.textContent=`Drag to select · Esc to cancel`,gy(h,{position:`fixed`,left:`50%`,bottom:`16px`,transform:`translateX(-50%)`,"border-radius":`4px`,padding:`4px 8px`,"background-color":`black`,color:`white`,"font-size":`11px`,"pointer-events":`none`}),d.append(h);let g=r.createElement(`div`);g.dataset.mesurerScreenshotError=`true`,g.setAttribute(`role`,`status`),g.textContent=`Could not save screenshot`,gy(g,{position:`fixed`,display:`none`,"z-index":`97`,"border-radius":`6px`,padding:`6px 8px`,"background-color":`#b42318`,color:`white`,"font-size":`11px`,"pointer-events":`none`}),u.append(g);let _=null,v=null,y=0,b=0,x=!1,S=!1,C=!1,w=()=>t.state.get(`mesurer.screenshot.active`)??!1,T=()=>vy(t.state.get),E=e=>{t.state.update(sy,t=>{let n={...t};return e.toolEnabled!==void 0&&(n.toolEnabled=e.toolEnabled),e.copy!==void 0&&(n.copy=e.copy),e.download!==void 0&&(n.download=e.download),e.includeMeasurements!==void 0&&(n.includeMeasurements=e.includeMeasurements),n})},D=e=>{w()!==e&&t.state.update(`mesurer.screenshot.active`,()=>e)},O=()=>{if(v)return;let e=n.portalTarget.querySelector(`[data-mesurer-toolbar='true']`);e&&(v={element:e,visibility:{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}},e.style.setProperty(`visibility`,`hidden`,`important`))},k=()=>{if(!v)return;let{element:e,visibility:t}=v;v=null,t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`)},A=e=>{let t=i.innerWidth,n=i.innerHeight;if(!e||e.width<=0||e.height<=0){_y(f[0],{left:0,top:0,width:t,height:n});for(let e of f.slice(1))_y(e,{left:0,top:0,width:0,height:0});p.style.display=`none`,m.style.display=`none`;return}_y(f[0],{left:0,top:0,width:t,height:e.top}),_y(f[1],{left:0,top:e.top,width:e.left,height:e.height}),_y(f[2],{left:e.left+e.width,top:e.top,width:Math.max(0,t-e.left-e.width),height:e.height}),_y(f[3],{left:0,top:e.top+e.height,width:t,height:Math.max(0,n-e.top-e.height)}),p.style.display=`block`,_y(p,e),m.style.display=`block`,m.textContent=`${Math.round(e.width)} × ${Math.round(e.height)}`,_y(m,{left:e.left+e.width/2,top:Math.min(n-22,e.top+e.height+6)})},j=()=>n.portalTarget.querySelector(`[data-mesurer-tool-id='screenshot']`)?.getBoundingClientRect()??null,M=iy({ownerDocument:r,ownerWindow:i,root:u,previewDurationMs:l}),N=e=>{let t=j(),n=Math.max(140,e.offsetWidth||140),r=Math.max(26,e.offsetHeight||26),a=t?Math.min(i.innerWidth-n-8,Math.max(8,t.left+t.width/2-n/2)):8,o=t?t.bottom+8:8,s=o+r<=i.innerHeight-8?o:Math.max(8,(t?.top??i.innerHeight)-r-8);e.style.left=`${a}px`,e.style.top=`${s}px`},P=()=>{y&&i.clearTimeout(y),g.style.display=`block`,N(g),y=i.setTimeout(()=>{y=0,g.style.display=`none`},dy)},F=()=>{_=null,A(null),d.style.visibility=``,d.style.display=`none`,u.style.pointerEvents=`none`,D(!1),k()},I=()=>{b+=1,F(),lo(i)},L=async e=>{if(x)throw Error(`A screenshot capture is already running.`);if(e.width<4||e.height<4)throw Error(`Screenshot selection must be at least 4px by 4px.`);x=!0;let o=++b,s=T(),l=s.includeMeasurements?Cy(r):[],u=s.includeMeasurements?()=>void 0:Sy(n.portalTarget);a.prepareCapture(),s.includeMeasurements&&wy(l);try{d.style.visibility=`hidden`,await Wa(i);let n=await Ba(await c({ownerDocument:r,ownerWindow:i}),e,{width:i.innerWidth,height:i.innerHeight},r);if(b!==o)throw Error(`Screenshot capture was cancelled.`);let a=!1,l=!1,u=s.copy?Va(Promise.resolve(n),i).then(()=>{a=!0}):Promise.resolve(),f=s.download?Promise.resolve().then(()=>{Ua(n,Ha(),r,i),l=!0}):Promise.resolve(),p=await Promise.allSettled([u,f]),m=s.copy&&p[0]?.status===`rejected`,h=s.download&&p[1]?.status===`rejected`;if(b!==o)throw Error(`Screenshot capture was cancelled.`);return M.show(n,{copied:a,downloaded:l,copyFailed:m,downloadFailed:h}),await t.hook.emit(`screenshot:capture`,{rect:{...e},copied:a,downloaded:l}),{blob:n,rect:{...e},copied:a,downloaded:l}}catch(e){throw b===o&&P(),e}finally{d.style.visibility=``,u(),a.finishCapture(),x=!1}},R=async()=>{if(T().toolEnabled){if(w()){I();return}if(!S){S=!0,M.dismiss();try{if(s||await so(r,i),C)return;O(),A(null),d.style.visibility=`visible`,u.style.pointerEvents=`auto`,d.style.display=`block`,D(!0)}catch(e){throw e instanceof Error&&e.name===`AbortError`||P(),e}finally{S=!1}}}},z=e=>{!w()||e.button!==0||(e.preventDefault(),e.stopPropagation(),_={x:e.clientX,y:e.clientY},A(za(_,_,{width:i.innerWidth,height:i.innerHeight})),d.setPointerCapture?.(e.pointerId))},B=e=>{!w()||!_||A(za(_,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight}))},V=e=>{let t=_;if(_=null,!w()||!t)return;d.hasPointerCapture?.(e.pointerId)&&d.releasePointerCapture(e.pointerId);let n=za(t,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight});if(A(n),n.width<4||n.height<4){A(null);return}L(n).catch(()=>void 0).finally(()=>{w()&&F()})},H=e=>{_=null,d.hasPointerCapture?.(e.pointerId)&&d.releasePointerCapture(e.pointerId),A(null)},U=e=>{e.key!==`Escape`||!w()||(e.preventDefault(),e.stopImmediatePropagation(),I())};d.addEventListener(`pointerdown`,z),d.addEventListener(`pointermove`,B),d.addEventListener(`pointerup`,V),d.addEventListener(`pointercancel`,H),i.addEventListener(`keydown`,U,!0);let W={active:w,settings:T,setSettings:E,start:R,cancel:I,capture:L};t.tool.register({id:`screenshot`,label:`Screenshot`,shortcut:`Shift+S`,order:70,command:uy,icon:hy,active:w,hidden:()=>!T().toolEnabled,menu:{label:`Screenshot options`,items:[{id:`copy`,label:`Auto-copy`,checked:()=>T().copy,run:()=>E({copy:!T().copy})},{id:`download`,label:`Auto-download`,checked:()=>T().download,run:()=>E({download:!T().download})},{id:`measurements`,label:`Include measurements`,checked:()=>T().includeMeasurements,run:()=>E({includeMeasurements:!T().includeMeasurements})}]}}),t.settings.register({id:`screenshot`,label:`Screenshot`,order:40,controls:[{type:`toggle`,id:`tool`,label:`Screenshot tool`,description:`Show the camera tool in the toolbar.`,value:()=>T().toolEnabled,set:e=>{E({toolEnabled:e}),!e&&w()&&I()}},{type:`toggle`,id:`copy`,label:`Auto-copy`,description:`Copy each successful capture when the browser allows it.`,value:()=>T().copy,set:e=>E({copy:e})},{type:`toggle`,id:`download`,label:`Auto-download`,description:`Download each successful capture as a PNG.`,value:()=>T().download,set:e=>E({download:e})},{type:`toggle`,id:`measurements`,label:`Include measurements`,description:`Keep selections, measurements, guides, distances, and rulers in the PNG.`,value:()=>T().includeMeasurements,set:e=>E({includeMeasurements:e})}]}),t.command.register(uy,R),t.service.provide(oy,W),t.lifecycle.onDispose(()=>{C=!0,b+=1,d.removeEventListener(`pointerdown`,z),d.removeEventListener(`pointermove`,B),d.removeEventListener(`pointerup`,V),d.removeEventListener(`pointercancel`,H),i.removeEventListener(`keydown`,U,!0),y&&i.clearTimeout(y),M.dispose(),k(),lo(i),a.finishCapture(),a.dispose(),o.dispose()})}}),Ey=e=>Number.parseFloat(e)||0,Dy=0,Oy=(e,t)=>{let n=t.CSS;return n?.escape?n.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)},ky=e=>e.nodeType===9,Ay=e=>e.nodeType===11;function jy(e){let t=e.getRootNode();return Ay(t)?t:e.ownerDocument}var My=(e,t)=>{if(ky(e)||Ay(e))return e;let n=jy(e);return Ay(n)?n:t},Ny=600,Py=(e,t)=>t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom,Fy=(e,t)=>Array.from(e.getClientRects()).some(e=>Py(e,t)),Iy=(e,t,n)=>{let r=t,i=r.caretRangeFromPoint?.(e.x,e.y)?.startContainer??r.caretPositionFromPoint?.(e.x,e.y)?.offsetNode;if(!i)return null;let a=t.defaultView?.Element;if(!a)return null;let o=i instanceof a?i:i.parentElement;for(;o&&o!==n;){if(n.contains(o))return o;o=o.parentElement}return o===n?n:null},Ly=(e,t,n)=>{let r=n.defaultView,i=r?.Element;if(!r||!i)return[];let a=[],o=new Set,s=(e,n,i)=>{if(o.has(e))return;let s=r.getComputedStyle(e);if(s.pointerEvents!==`none`||s.visibility===`hidden`||s.display===`none`||s.opacity===`0`||!Fy(e,t))return;let c=e.getBoundingClientRect();o.add(e),a.push({element:e,area:c.width*c.height,depth:n,order:i})},c=n.createTreeWalker(e,1),l=c.nextNode(),u=1;for(;l&&u<=Ny;){if(l instanceof i){let t=l;if(r.getComputedStyle(t).pointerEvents===`none`){let n=1,r=t.parentElement;for(;r&&r!==e;)n+=1,r=r.parentElement;s(t,n,u)}}u+=1,l=c.nextNode()}let d=Iy(t,n,e);return d&&r.getComputedStyle(d).pointerEvents===`none`&&s(d,1e4,u),a.sort((e,t)=>t.depth-e.depth||e.area-t.area||t.order-e.order).map(({element:e})=>e)};function Ry(e,t,n=ky(t)?t:t.ownerDocument??document){let r=My(t,n),i=n.defaultView;if(!i)return null;let a=r.elementsFromPoint(e.x,e.y);for(let r of a){let a=r;for(;a?.shadowRoot;){let t=a.shadowRoot.elementFromPoint(e.x,e.y);if(!t||t===a)break;a=t}if(!a||!zy(a,t))continue;let o=Ly(a,e,n);if(o.length>0)return o[0];if(i.getComputedStyle(a).pointerEvents!==`none`)return a}return null}function zy(e,t){if(ky(t))return!0;let n=e;for(;n;){if(t===n||t.contains(n))return!0;let e=n.getRootNode();if(!Ay(e))return!1;n=e.host}return!1}function By(e,t){if(!e)return t();let n=[e,...e.querySelectorAll(`*`)],r=n.map(e=>[e,e.style.getPropertyValue(`pointer-events`),e.style.getPropertyPriority(`pointer-events`)]);for(let e of n)e.style.setProperty(`pointer-events`,`none`,`important`);try{return t()}finally{for(let[e,t,n]of r)t?e.style.setProperty(`pointer-events`,t,n):e.style.removeProperty(`pointer-events`)}}function Vy(e){let t=e.ownerDocument.defaultView??window;if(e.id)return`#${Oy(e.id,t)}`;let n=e.getAttribute(`data-testid`);if(n)return`[data-testid=${JSON.stringify(n)}]`;let r=[],i=e;for(;i&&r.length<5;){let e=i.localName,t=i.localName,n=i.parentElement;if(n){let r=[...n.children].filter(e=>e.localName===t);r.length>1&&(e+=`:nth-of-type(${r.indexOf(i)+1})`)}r.unshift(e),i=n}return r.join(` > `)}function Hy(e,t,n=`dom-inspection-${++Dy}`){let r=e.getBoundingClientRect(),i=t.getComputedStyle(e),a={top:Ey(i.paddingTop),right:Ey(i.paddingRight),bottom:Ey(i.paddingBottom),left:Ey(i.paddingLeft)},o={top:Ey(i.marginTop),right:Ey(i.marginRight),bottom:Ey(i.marginBottom),left:Ey(i.marginLeft)},s={left:r.left+a.left,top:r.top+a.top,width:Math.max(0,r.width-a.left-a.right),height:Math.max(0,r.height-a.top-a.bottom)},c={left:r.left-o.left,top:r.top-o.top,width:r.width+o.left+o.right,height:r.height+o.top+o.bottom},l=e.tagName.toLowerCase(),u=e.id?`#${e.id}`:``,d=e.classList.item(0),f=d?`.${d}`:``;return{id:n,rect:{left:r.left,top:r.top,width:r.width,height:r.height},paddingRect:s,marginRect:c,padding:a,margin:o,label:`${l}${u}${f}`,elementRef:e}}function Uy(e){let t=e.ownerDocument.defaultView??window,n=t.getComputedStyle(e),r=e instanceof t.HTMLElement?e:null,i=e.getBoundingClientRect(),a=r?Hy(r,t):null,o=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},s=e=>({top:o(n.getPropertyValue(`${e}-top${e===`border`?`-width`:``}`)),right:o(n.getPropertyValue(`${e}-right${e===`border`?`-width`:``}`)),bottom:o(n.getPropertyValue(`${e}-bottom${e===`border`?`-width`:``}`)),left:o(n.getPropertyValue(`${e}-left${e===`border`?`-width`:``}`))});return{selector:Vy(e),tag:e.localName,id:e.id||null,classes:[...e.classList],text:(e.textContent??``).replace(/\s+/g,` `).trim().slice(0,500),role:e.getAttribute(`role`),ariaLabel:e.getAttribute(`aria-label`),rect:{left:i.left,top:i.top,right:i.right,bottom:i.bottom,width:i.width,height:i.height,x:i.x,y:i.y},margin:a?.margin??s(`margin`),padding:a?.padding??s(`padding`),border:s(`border`),typography:{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,color:n.color},appearance:{backgroundColor:n.backgroundColor,borderColor:n.borderColor,borderRadius:n.borderRadius,boxShadow:n.boxShadow,opacity:n.opacity},layout:{display:n.display,position:n.position,zIndex:n.zIndex,overflowX:n.overflowX,overflowY:n.overflowY,flexDirection:n.flexDirection,alignItems:n.alignItems,justifyContent:n.justifyContent,gap:n.gap,gridTemplateColumns:n.gridTemplateColumns,gridTemplateRows:n.gridTemplateRows,transform:n.transform},scroll:{clientWidth:r?.clientWidth??0,clientHeight:r?.clientHeight??0,scrollWidth:r?.scrollWidth??0,scrollHeight:r?.scrollHeight??0,overflowsX:(r?.scrollWidth??0)>(r?.clientWidth??0)+1,overflowsY:(r?.scrollHeight??0)>(r?.clientHeight??0)+1}}}var Wy=`text-edit`,Gy=e=>Uy(e);function Ky(e){let t=e.root??e.ownerDocument,n=e.ownerDocument.defaultView??window,r=(e,n=0)=>t.querySelectorAll(e).item(n)||null,i=n=>t===e.ownerDocument||zy(n,t),a=async()=>{let t=(e.getPluginHost()??await e.waitForPluginHost()).service.get(Wy);if(!t)throw Error(`Mesurer text editing service is unavailable.`);return t},o=()=>{let t=e.ownerDocument.documentElement,r=e.ownerDocument.body,i=Math.max(t.scrollWidth,r?.scrollWidth??0),a=Math.max(t.scrollHeight,r?.scrollHeight??0);return{width:n.innerWidth,height:n.innerHeight,devicePixelRatio:n.devicePixelRatio,scrollX:n.scrollX,scrollY:n.scrollY,documentWidth:i,documentHeight:a,horizontalOverflow:i>n.innerWidth+1,verticalOverflow:a>n.innerHeight+1}},s=async(t=2)=>{await e.ownerDocument.fonts?.ready;for(let e=0;e<Math.max(1,t);e+=1)await new Promise(e=>n.requestAnimationFrame(()=>e()))};return{async ready(){await e.waitForPluginHost(),await s()},async describe(){return(await e.waitForPluginHost()).describe()},inspect(e,t=0){let n=r(e,t);return n?Gy(n):null},inspectAll(e,n=50){return[...t.querySelectorAll(e)].slice(0,Math.max(0,n)).map(Gy)},at(n,r){let a=t.querySelector?.(`[data-mesurer-island]`)??null;return By(a?.shadowRoot?.querySelector(`[data-mesurer-root='true']`)??a,()=>{let a=Ry({x:n,y:r},t,e.ownerDocument);return a&&i(a)?Gy(a):null})},distance(e,t){let n=r(e),i=r(t);if(!n||!i)return null;let a=Gy(n),o=Gy(i),s=a.rect,c=o.rect;return{a,b:o,horizontalGap:c.left>=s.right?c.left-s.right:s.left>=c.right?s.left-c.right:0,verticalGap:c.top>=s.bottom?c.top-s.bottom:s.top>=c.bottom?s.top-c.bottom:0,centerDeltaX:c.left+c.width/2-(s.left+s.width/2),centerDeltaY:c.top+c.height/2-(s.top+s.height/2)}},viewport:o,async feedback(n=[]){await s();let r=e.getPluginHost()??await e.waitForPluginHost();return{viewport:o(),elements:n.flatMap(e=>[...t.querySelectorAll(e)].slice(0,50).map(Gy)),plugins:r.describe(),pluginState:r.state.serialize(`all`)}},async command(t,n){let r=await(e.getPluginHost()??await e.waitForPluginHost()).command.execute(t,n,{source:`agent-harness`});return await s(1),r},async state(){return(e.getPluginHost()??await e.waitForPluginHost()).state.serialize(`all`)},async textEdits(){return(await a()).intents()},async textEdit(e){let t=(await a()).intent(e);if(!t)throw Error(`Text edit intent not found: ${e}`);return t},stable:s}}var qy=`0.2.0-beta.13`,Jy=lp,Yy=up,Xy=()=>({...rm(),version:qy}),Zy=(e,t)=>e.left<=t.left+t.width&&e.left+e.width>=t.left&&e.top<=t.top+t.height&&e.top+e.height>=t.top,Qy=e=>{if(!e.length)return null;let t=Math.min(...e.map(e=>e.left)),n=Math.min(...e.map(e=>e.top)),r=Math.max(...e.map(e=>e.left+e.width)),i=Math.max(...e.map(e=>e.top+e.height));return{left:t,top:n,width:r-t,height:i-n}},$y=(e,t,n)=>t.some(t=>e.orientation===`vertical`?e.position>=t.left-n&&e.position<=t.left+t.width+n:e.position>=t.top-n&&e.position<=t.top+t.height+n),eb=e=>[...e.measurements,...e.activeMeasurement&&!e.measurements.some(t=>t.id===e.activeMeasurement?.id)?[e.activeMeasurement]:[]];function tb(e){let{workspace:t,scope:n,guideTolerance:r}=e;if(n.kind===`workspace`)return{guides:t.guides.map(e=>({...e})),measurements:eb(t),distances:[...t.distances]};let i=new Set(n.elements),a=e=>e!=null&&i.has(e),o=e=>n.regions.some(t=>Zy(e,t));return{guides:t.guides.filter(e=>$y(e,n.regions,r)).map(e=>({...e})),measurements:eb(t).filter(e=>a(e.elementRef)||o(e.rect)),distances:t.distances.filter(e=>a(e.elementRefA)||a(e.elementRefB)||o(e.rectA)||o(e.rectB))}}var nb={opacity:1,width:1,pattern:`solid`,dashLength:6,gap:4},rb={opacity:1,edgeReveal:!1};({...nb}),{...rb};var ib=10,ab=e=>({left:e.left,top:e.top,width:e.width,height:e.height}),ob=e=>{let t=new Set,n=[];for(let r of e)!r?.isConnected||t.has(r)||(t.add(r),n.push(r));return n},sb=e=>e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function cb(e){let{runtime:t,ownerDocument:n,ownerWindow:r}=e,i=e.request??{scope:`workspace`},a=t.snapshot();if(!a)throw Error(`Mesurer workspace is not ready yet.`);let o=[],s=[],c={kind:`workspace`},l=new Map;if(`annotation`in i){let e=t.annotation(i.annotation);if(!e)throw Error(`Mesurer annotation not found: ${i.annotation}`);for(let t of e.resolvedTargets)t.element?.isConnected&&l.set(t.element,t.target.id);o=ob(e.resolvedTargets.map(e=>e.element));let n=t.annotationRect(e.id);n&&(s=[n]);let r=e.resolvedTargets.length,a=e.resolvedTargets.filter(e=>e.element?.isConnected).length,u=e.anchor.kind===`region`?`connected`:r===0||a===0?`stale`:a===r?`connected`:`partial`;c={kind:`annotation`,annotationId:e.id,note:e.note,targetStatus:u}}else if(i.scope===`selection`){let e=t.currentSelection();if(o=ob(e.elements),!o.length&&!e.region)throw Error(`Mesurer has no current selection.`);s=e.region?[e.region]:o.map(e=>ab(e.getBoundingClientRect())),c={kind:`selection`}}else o=ob([...t.currentSelection().elements,...a.measurements.map(e=>e.elementRef),a.activeMeasurement?.elementRef,...a.heldDistances.flatMap(e=>[e.elementRefA,e.elementRefB])]);let u=c.kind===`workspace`?[]:s.length?s:o.map(e=>ab(e.getBoundingClientRect())),d=tb({workspace:{guides:a.guides,measurements:a.measurements,activeMeasurement:a.activeMeasurement,distances:a.heldDistances},scope:c.kind===`workspace`?{kind:`workspace`}:{kind:`scoped`,elements:o,regions:u},guideTolerance:a.guideRelevanceTolerance??ib}),f=d.measurements,p=d.distances,m=d.guides,h=ob([...o,...f.map(e=>e.elementRef),...p.flatMap(e=>[e.elementRefA,e.elementRefB])]),g=new Map,_=new Set(l.values()),v=1,y=()=>{let e=`target-${v++}`;for(;_.has(e);)e=`target-${v++}`;return _.add(e),e},b=h.map(e=>{let t=l.get(e)??y();return g.set(e,t),{ref:t,inspection:Uy(e)}}),x=f.map(e=>{let t={id:e.id,rect:ab(e.rect),deltaX:e.deltaX,deltaY:e.deltaY};e.snapped!==void 0&&(t.snapped=e.snapped);let n=e.elementRef?g.get(e.elementRef):void 0;return n&&(t.targetRef=n),t}),S=p.map(e=>{let t={id:e.id,rectA:ab(e.rectA),rectB:ab(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null},n=e.elementRefA?g.get(e.elementRefA):void 0,r=e.elementRefB?g.get(e.elementRefB):void 0;return n&&(t.targetARef=n),r&&(t.targetBRef=r),t});return{schema:`mesurer.context/v1`,id:sb(r),createdAt:new Date().toISOString(),scope:c,page:{url:r.location?.href??n.URL,title:n.title},viewport:{width:r.innerWidth,height:r.innerHeight,devicePixelRatio:r.devicePixelRatio,scrollX:r.scrollX,scrollY:r.scrollY},coordinateSpace:`viewport-css-px`,regions:c.kind===`workspace`?[]:s.map(ab),visualState:{rulersVisible:a.rulersVisible,xrayVisible:a.xrayVisible},targets:b,visualContext:{guides:m,layoutGuides:(e.layoutGuides??[]).map(e=>({...e})),measurements:x,distances:S}}}var lb=e=>`${Math.round(e*100)/100}px`,ub=e=>`x=${lb(e.left)} y=${lb(e.top)} w=${lb(e.width)} h=${lb(e.height)}`;function db(e){let t=[`Mesurer visual context`,``,`Page: ${e.page.url}`,`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`];if(e.scope.kind===`annotation`?t.push(``,`Annotation`,e.scope.note,`Target status: ${e.scope.targetStatus}`):t.push(``,`Scope: ${e.scope.kind}`),e.regions.length&&(t.push(``,`Requested regions`),e.regions.forEach((e,n)=>t.push(`- region-${n+1}: ${ub(e)}`))),(e.visualState.rulersVisible||e.visualState.xrayVisible)&&t.push(``,`Visual state: rulers=${e.visualState.rulersVisible?`on`:`off`}; x-ray=${e.visualState.xrayVisible?`on`:`off`}`),e.targets.length){t.push(``,`Targets`);for(let n of e.targets){let e=n.inspection;t.push(`[${n.ref}] ${e.selector}`,` rect: ${ub(e.rect)}`,` margin: ${lb(e.margin.top)} ${lb(e.margin.right)} ${lb(e.margin.bottom)} ${lb(e.margin.left)}`,` padding: ${lb(e.padding.top)} ${lb(e.padding.right)} ${lb(e.padding.bottom)} ${lb(e.padding.left)}`,` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`,` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`),e.text&&t.push(` text: ${JSON.stringify(e.text)}`)}}if(e.visualContext.guides.length){t.push(``,`Relevant guides`);for(let n of e.visualContext.guides)t.push(`- ${n.orientation} ${n.orientation===`vertical`?`x`:`y`}=${lb(n.position)}`)}if(e.visualContext.layoutGuides.length){t.push(``,`Layout guides`);for(let n of e.visualContext.layoutGuides){if(!n.visible)continue;let e=n.kind===`grid`?`grid ${lb(n.size)}`:`${n.count} ${n.kind}; gutter=${lb(n.gutter)}; offset=${lb(n.offset)}; align=${n.align}`;t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity*100)}%`)}}if(e.visualContext.measurements.length){t.push(``,`Relevant measurements`);for(let n of e.visualContext.measurements)t.push(`- ${n.targetRef?`${n.targetRef}: `:``}${ub(n.rect)}; delta=${lb(n.deltaX)} × ${lb(n.deltaY)}`)}if(e.visualContext.distances.length){t.push(``,`Relevant distances`);for(let n of e.visualContext.distances){let e=[n.targetARef,n.targetBRef].filter(Boolean).join(` → `),r=[n.horizontal?`horizontal=${lb(n.horizontal.value)}`:null,n.vertical?`vertical=${lb(n.vertical.value)}`:null].filter(Boolean).join(`; `);t.push(`- ${e?`${e}: `:``}${r||`overlapping`}`)}}return t.join(`
|
|
1777
|
+
`,t.head.append(s),i.append(a);let c=!1;return{element:a,dispose(){c||(c=!0,o(),s.remove(),a.remove())}}}var Z_=e=>`color-mix(in srgb, ${e.color} ${e.opacity*100}%, transparent)`,Q_=e=>e===`max`?`end`:e===`center`?`center`:`start`,$_=e=>{let t=e.kind===`columns`,n=e.align===`stretch`,r=n?`repeat(${e.count}, minmax(0, 1fr))`:`repeat(${e.count}, ${e.size}px)`,i=Q_(e.align);return{position:`absolute`,inset:`0`,display:`grid`,...t?{"grid-template-columns":r,"column-gap":`${e.gutter}px`,"justify-content":n?void 0:i,"padding-left":n||e.align===`min`?`${e.offset}px`:`0`,"padding-right":n||e.align===`max`?`${e.offset}px`:`0`}:{"grid-template-rows":r,"row-gap":`${e.gutter}px`,"align-content":n?void 0:i,"padding-top":n||e.align===`min`?`${e.offset}px`:`0`,"padding-bottom":n||e.align===`max`?`${e.offset}px`:`0`},transform:e.align===`center`?t?`translateX(${e.offset}px)`:`translateY(${e.offset}px)`:void 0}};function ev(e){let t=()=>e.guides.filter(e=>e.visible);return Y(q,{get when(){return t().length>0},get children(){var e=X(`div`,{"data-mesurer-layout-guides":`true`,"data-mesurer-layer":`evidence`,class:`msr:pointer-events-none msr:absolute msr:inset-0 msr:overflow-hidden`,style:{"z-index":`2`},"aria-hidden":`true`});return Q(e,Y(Wr,{get each(){return t()},children:e=>Y(q,{get when(){return e.kind===`grid`},get fallback(){var t=X(`div`,{class:`msr:pointer-events-none msr:absolute msr:inset-0`});return Q(t,Y(Wr,{get each(){return Array.from({length:e.count})},children:()=>(()=>{var t=X(`div`,{"data-mesurer-layout-band":`true`});return J(()=>({"min-width":`0`,"min-height":`0`,width:`100%`,height:`100%`,"background-color":Z_(e)}),(e,n)=>{$(t,`style`,e,n)}),t})()})),J(()=>({e:e.id,t:e.kind,a:$_(e)}),({e,t:n,a:r},i)=>{e!==i?.e&&$(t,`data-mesurer-layout-guide`,e,i?.e),n!==i?.t&&$(t,`data-mesurer-layout-guide-kind`,n,i?.t),r!==i?.a&&$(t,`style`,r,i?.a)}),t},get children(){var t=X(`div`,{"data-mesurer-layout-guide-kind":`grid`,class:`msr:pointer-events-none msr:absolute msr:inset-0`});return J(()=>({e:e.id,t:{"background-image":`linear-gradient(to right, ${Z_(e)} 1px, transparent 1px), linear-gradient(to bottom, ${Z_(e)} 1px, transparent 1px)`,"background-size":`${e.size}px ${e.size}px`}}),({e,t:n},r)=>{e!==r?.e&&$(t,`data-mesurer-layout-guide`,e,r?.e),n!==r?.t&&$(t,`style`,n,r?.t)}),t}})})),e}})}var tv=`#FF0000`,nv=.1,rv=new Set([`columns`,`rows`,`grid`]),iv=new Set([`stretch`,`min`,`center`,`max`]),av=(e,t,n)=>Math.min(n,Math.max(t,e)),ov=(e,t)=>e!==void 0&&Number.isFinite(e)?e:t,sv=(e={})=>{let t=e.kind&&rv.has(e.kind)?e.kind:`columns`,n=e.align&&iv.has(e.align)?e.align:t===`grid`?`min`:`stretch`,r=e.id?.trim(),i=e.color?.trim();return{id:r||Eo(),kind:t,visible:e.visible??!0,color:i||`#FF0000`,opacity:av(ov(e.opacity,nv),0,1),count:av(Math.round(ov(e.count,5)),1,24),size:av(ov(e.size,72),1,4096),gutter:av(ov(e.gutter,20),0,800),offset:av(ov(e.offset,0),0,4096),align:n}},cv=e=>(e??[]).map(sv),lv=e=>{if(e.kind===`grid`)return`Grid ${Math.round(e.size)}px`;let t=e.kind===`columns`?`columns`:`rows`;return e.align===`stretch`?`${e.count} ${t}`:`${e.count} ${t} (${Math.round(e.size)}px)`},uv=e=>(()=>{var t=X(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,"aria-hidden":`true`,class:`msr:block`});return Z(t,X(`path`,{d:`m6 6 12 12M18 6 6 18`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`})),J(()=>({e:e.size??14,t:e.size??14}),({e,t:n},r)=>{e!==r?.e&&$(t,`width`,e,r?.e),n!==r?.t&&$(t,`height`,n,r?.t)}),t})(),dv=e=>e.kind===`rows`?Y(Gl,{size:14}):e.kind===`grid`?Y(Ul,{size:14}):Y(Wl,{size:14}),fv=`msr:grid-cols-[78px_minmax(0,1fr)]`,pv=e=>(()=>{var t=X(`label`,{class:`msr:col-span-2 msr:grid msr:h-8 msr:w-full msr:grid-cols-[78px_minmax(0,1fr)] msr:items-center msr:gap-0 msr:text-[12px] msr:text-ink-700`}),n=X(`span`);return Z(t,n),Q(n,()=>e.label),Q(t,()=>e.children,null),t})(),mv=e=>(()=>{var t=X(`span`,{class:`msr:relative msr:block msr:w-full`}),n=X(`select`,{class:Dl,onPointerDown:e=>e.stopPropagation(),onChange:t=>e.onChange(t.currentTarget.value)});return Z(t,n),Q(n,()=>e.children),Q(t,Y(Ol,{}),null),J(()=>({e:e.label,t:e.value}),({e,t},r)=>{e!==r?.e&&$(n,`aria-label`,e,r?.e),t!==r?.t&&$(n,`value`,t,r?.t)}),t})(),hv=e=>{let[t,n]=K(!1),[r,i]=K(String(e.value)),a=()=>e.min??0,o=()=>e.max??9999,s=e=>Math.min(o(),Math.max(a(),e)),c=t=>{let n=Number(t.replace(/[^\d.-]/g,``));if(!Number.isFinite(n)){i(String(e.value));return}e.onChange(s(n))};return Y(kl,{get left(){var a=X(`input`,{type:`text`,inputmode:`numeric`,class:`msr:h-full msr:w-full msr:min-w-0 msr:border-0 msr:bg-transparent msr:px-2 msr:font-mono msr:text-[12px] msr:font-medium msr:tabular-nums msr:text-ink-700 msr:outline-none`,onFocus:()=>{i(String(e.value)),n(!0)},onBlur:()=>{c(r()),n(!1)},onInput:t=>{let n=t.currentTarget.value.replace(/[^\d.-]/g,``);i(n);let r=Number(n);Number.isFinite(r)&&e.onChange(s(r))},onKeyDown:t=>{if(t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let n=Number(r()),a=Number.isFinite(n)?n:e.value,o=s(a+(t.key===`ArrowUp`?1:-1));i(String(o)),e.onChange(o)},onPointerDown:e=>e.stopPropagation()});return J(()=>({e:e.label,t:t()?r():String(e.value)}),({e,t},n)=>{e!==n?.e&&$(a,`aria-label`,e,n?.e),t!==n?.t&&$(a,`value`,t,n?.t)}),a}})},gv=e=>e===`rows`||e===`grid`?e:`columns`,_v=e=>e===`min`||e===`center`||e===`max`?e:`stretch`,vv=e=>{let t=Rr(()=>e.guide.kind===`rows`?{stretch:`Stretch`,min:`Top`,center:`Center`,max:`Bottom`}:{stretch:`Stretch`,min:`Left`,center:`Center`,max:`Right`}),n=Rr(()=>e.guide.kind===`rows`?`Height`:e.guide.kind===`grid`?`Size`:`Width`);var r=X(`div`,{class:`mesurer-thin-scrollbar msr:flex msr:min-h-0 msr:flex-1 msr:flex-col msr:gap-2 msr:overflow-y-auto msr:p-3`}),i=X(`div`,{class:`msr:flex msr:items-center msr:justify-between msr:gap-2`}),a=X(`button`,{type:`button`,"aria-label":`Back to layout guides`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-500 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`});return Z(r,i),Z(i,a),Q(i,Y(mv,{label:`Layout guide type`,get value(){return e.guide.kind},onChange:t=>{let n=gv(t);e.onUpdate({kind:n,align:n===`grid`?`min`:e.guide.align===`stretch`||n===e.guide.kind?e.guide.align:`stretch`})},get children(){return[(()=>{var e=X(`option`,{value:`columns`});return Z(e,Ji(`Columns`)),e})(),(()=>{var e=X(`option`,{value:`rows`});return Z(e,Ji(`Rows`)),e})(),(()=>{var e=X(`option`,{value:`grid`});return Z(e,Ji(`Grid`)),e})()]}}),a),Q(a,Y(uv,{})),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return Y(pv,{label:`Count`,get children(){return Y(hv,{label:`Count`,get value(){return e.guide.count},min:1,max:24,onChange:t=>e.onUpdate({count:t})})}})}}),null),Q(r,Y(Al,{label:`Color`,columns:fv,get value(){return Ea({...wa(e.guide.color)??wa(`#FF0000`),alpha:e.guide.opacity})},fallback:tv,get ownerWindow(){return e.ownerWindow},onChange:t=>{let n=wa(t);e.onUpdate({color:n?Ea({...n,alpha:1}).slice(0,7):t,opacity:n?.alpha??e.guide.opacity})}}),null),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return Y(pv,{label:`Type`,get children(){return Y(mv,{label:`Alignment`,get value(){return e.guide.align},onChange:t=>e.onUpdate({align:_v(t)}),get children(){return Y(Wr,{each:[`stretch`,`min`,`center`,`max`],children:e=>(()=>{var n=X(`option`,{value:e});return Q(n,()=>t()[e]),n})()})}})}})}}),null),Q(r,Y(q,{get when(){return e.guide.kind===`grid`||e.guide.align!==`stretch`},get children(){return Y(pv,{get label(){return n()},get children(){return Y(hv,{get label(){return n()},get value(){return e.guide.size},min:1,max:4096,onChange:t=>e.onUpdate({size:t})})}})}}),null),Q(r,Y(q,{get when(){return e.guide.kind!==`grid`},get children(){return[Y(pv,{label:`Offset`,get children(){return Y(hv,{label:`Offset`,get value(){return e.guide.offset},min:0,max:4096,onChange:t=>e.onUpdate({offset:t})})}}),Y(pv,{label:`Gutter`,get children(){return Y(hv,{label:`Gutter`,get value(){return e.guide.gutter},min:0,max:800,onChange:t=>e.onUpdate({gutter:t})})}})]}}),null),J(()=>e.onBack,(e,t)=>{$(a,`onClick`,e,t)}),r};function yv(e){let[t,n]=K(null),r=Rr(()=>e.guides.find(e=>e.id===t())??null);var i=X(`div`,{"data-mesurer-layout-guides-panel":`true`,role:`dialog`,"aria-label":`Layout guides`,class:`mesurer-menu-surface msr:pointer-events-auto msr:flex msr:max-h-[min(320px,calc(100vh-16px))] msr:w-60 msr:flex-col msr:overflow-hidden msr:rounded-lg msr:bg-white msr:p-0 msr:text-[12px] msr:leading-[18px]`,onPointerDown:e=>e.stopPropagation(),onPointerMove:e=>e.stopPropagation(),onPointerUp:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()});return Q(i,Y(q,{get when(){return r()},get fallback(){var t=X(`div`,{class:`msr:flex msr:min-h-0 msr:flex-1 msr:flex-col msr:gap-1 msr:p-2`}),r=X(`div`,{class:`msr:flex msr:h-7 msr:shrink-0 msr:items-center msr:justify-between msr:px-1`}),i=X(`h2`,{class:`msr:text-[11px] msr:font-semibold msr:text-ink-700`}),a=X(`button`,{type:`button`,"aria-label":`Add layout guide`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-500 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`});return Z(t,r),Z(r,i),Z(r,a),Z(i,Ji(`Layout guides`)),Q(a,Y(Kl,{})),Q(t,Y(q,{get when(){return e.guides.length>0},get fallback(){var e=X(`p`,{class:`msr:px-1 msr:pb-2 msr:text-[11px] msr:text-ink-500`});return Z(e,Ji(`Add columns, rows, or a pixel grid on the page.`)),e},get children(){var t=X(`ul`,{class:`mesurer-thin-scrollbar msr:m-0 msr:flex msr:min-h-0 msr:flex-1 msr:list-none msr:flex-col msr:gap-0.5 msr:overflow-y-auto msr:p-0`});return Q(t,Y(Wr,{get each(){return e.guides},children:t=>(()=>{var r=X(`li`,{class:`msr:flex msr:items-center msr:gap-0.5`}),i=X(`button`,{type:`button`,class:`msr:flex msr:min-w-0 msr:flex-1 msr:items-center msr:gap-2 msr:rounded-control msr:px-1 msr:py-1 msr:text-left msr:text-[11px] msr:text-ink-700 msr:outline-none msr:hover:bg-ink-100`,onClick:()=>n(t.id)}),a=X(`span`,{class:`msr:flex msr:h-[19px] msr:items-start msr:text-ink-500`}),o=X(`span`,{class:`msr:min-w-0 msr:flex-1 msr:truncate`}),s=X(`button`,{type:`button`,onClick:()=>e.onUpdate(t.id,{visible:!t.visible})}),c=X(`button`,{type:`button`,class:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:text-ink-400 msr:outline-none msr:hover:bg-ink-100 msr:hover:text-ink-900`,onClick:()=>e.onRemove(t.id)});return Z(r,i),Z(r,s),Z(r,c),Z(i,a),Z(i,o),Q(a,Y(dv,{get kind(){return t.kind}})),Q(o,()=>lv(t)),Q(i,Y(Il,{size:8,class:`msr:block msr:-rotate-90 msr:text-ink-400`}),null),Q(s,(()=>{var e=qi(()=>!!t.visible);return()=>e()?Y(ql,{}):Y(Jl,{})})()),Q(c,Y(Rl,{size:10,class:`msr:block`})),J(()=>({e:t.visible?`Hide ${lv(t)}`:`Show ${lv(t)}`,t:t.visible?`true`:`false`,a:`msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-control msr:outline-none msr:hover:bg-ink-100 ${t.visible?`msr:text-ink-700`:`msr:text-ink-400`}`,o:`Remove ${lv(t)}`}),({e,t,a:n,o:r},i)=>{e!==i?.e&&$(s,`aria-label`,e,i?.e),t!==i?.t&&$(s,`aria-pressed`,t,i?.t),n!==i?.a&&$(s,`class`,n,i?.a),r!==i?.o&&$(c,`aria-label`,r,i?.o)}),r})()})),t}}),null),J(()=>e.onAdd,(e,t)=>{$(a,`onClick`,e,t)}),t},children:t=>Y(vv,{get guide(){return t()},get ownerWindow(){return e.ownerWindow},onBack:()=>n(null),onUpdate:n=>e.onUpdate(t().id,n)})})),i}var bv=`mesurer.layout-guides`,xv=`layout-guides:v1`,Sv=`mesurer.layout-guides.pages`,Cv=`mesurer.layout-guides.active`,wv=`runtime:solid`,Tv=`layout-guides.toggle`,Ev=`layout-guides.add`,Dv=`layout-guides.update`,Ov=`layout-guides.remove`,kv=`layout-guides.clear`,Av=240,jv=8,Mv=8,Nv=()=>({pages:{}}),Pv=(e,t)=>e.pages[t]??[],Fv=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Iv=e=>typeof e==`string`,Lv=e=>typeof e==`boolean`,Rv=e=>typeof e==`number`,zv=e=>e===`columns`||e===`rows`||e===`grid`,Bv=e=>e===`stretch`||e===`min`||e===`center`||e===`max`,Vv=e=>({...e}),Hv=e=>e.map(Vv),Uv=e=>Fv(e)?e:null,Wv=e=>{if(!e)return{};let t={};return Iv(e.id)&&(t.id=e.id),zv(e.kind)&&(t.kind=e.kind),Lv(e.visible)&&(t.visible=e.visible),Iv(e.color)&&(t.color=e.color),Rv(e.opacity)&&(t.opacity=e.opacity),Rv(e.count)&&(t.count=e.count),Rv(e.size)&&(t.size=e.size),Rv(e.gutter)&&(t.gutter=e.gutter),Rv(e.offset)&&(t.offset=e.offset),Bv(e.align)&&(t.align=e.align),t},Gv=e=>{let t={};return e.id!==void 0&&(t.id=e.id),e.kind!==void 0&&(t.kind=e.kind),e.visible!==void 0&&(t.visible=e.visible),e.color!==void 0&&(t.color=e.color),e.opacity!==void 0&&(t.opacity=e.opacity),e.count!==void 0&&(t.count=e.count),e.size!==void 0&&(t.size=e.size),e.gutter!==void 0&&(t.gutter=e.gutter),e.offset!==void 0&&(t.offset=e.offset),e.align!==void 0&&(t.align=e.align),t},Kv={viewBox:`0 0 256 256`,paths:[`M48 48h160v8H48zM48 200h160v8H48zM48 56h8v144h-8zM200 56h8v144h-8z`,`M101 56h8v144h-8zM147 56h8v144h-8z`]},qv=()=>_a({id:bv,version:`0.1.0`,requires:[wv],provides:[xv,`tool:layout-guides`],setup(e){let t=e.service.get(wv);if(!t)throw Error(`Layout Guides requires the Solid renderer runtime.`);let n=t.rendererRoot;if(!n)throw Error(`Layout Guides requires a mounted renderer root.`);e.state.register({id:Sv,initial:Nv(),history:!0,persist:!0}),e.state.register({id:Cv,initial:!1});let r=fs(t.ownerWindow),i=!1,[a,o]=K(0),s=new Set,c=0,l=()=>e.state.get(`mesurer.layout-guides.pages`)??Nv(),u=()=>e.state.get(`mesurer.layout-guides.active`)??!1,d=()=>cv(Pv(l(),r)),f=()=>(a(),u()?d():[]),p=t=>{e.state.update(Cv,()=>t)},m=t=>{e.state.update(Sv,e=>({...e,pages:{...e.pages,[r]:Hv(t(cv(e.pages[r])))}}))};e.command.register(Tv,()=>{let e=!u();return e&&d().length===0&&m(()=>[sv()]),i=e,p(e),u()}),e.command.register(Ev,e=>{let t=sv(Wv(Uv(e)));return m(e=>[...e,t]),{...t}}),e.command.register(Dv,e=>{let t=Uv(e),n=t&&Iv(t.id)?t.id:null,r=Wv(Uv(t?.patch));if(!n)throw Error(`layout-guides.update requires a guide id.`);m(e=>e.map(e=>e.id===n?sv({...e,...r,id:e.id}):e));let i=d().find(e=>e.id===n);if(!i)throw Error(`Layout guide not found: ${n}`);return{...i}}),e.command.register(Ov,e=>{let t=Uv(e),n=t&&Iv(t.id)?t.id:null;if(!n)throw Error(`layout-guides.remove requires a guide id.`);let r=d().length;return m(e=>e.filter(e=>e.id!==n)),d().length!==r}),e.command.register(kv,()=>{m(()=>[])});let h=async(t,n)=>{let r=Uv(await e.command.execute(t,n));if(!r)throw Error(`${t} did not return a layout guide.`);return sv(Wv(r))},g={list:()=>d().map(e=>({...e})),add:(e={})=>h(Ev,Gv(e)),update:(e,t)=>h(Dv,{id:e,patch:Gv(t)}),async remove(t){return await e.command.execute(Ov,{id:t})===!0},async clear(){await e.command.execute(kv)},subscribe(e){s.add(e);let t=!1;return()=>{t||(t=!0,s.delete(e))}}};e.service.provide(xv,g),e.tool.register({id:`layout-guides`,label:`Layout guides`,shortcut:`L`,command:Tv,order:38,icon:Kv,active:u});let _=t.ownerDocument.createElement(`div`);_.dataset.mesurerLayoutGuidesRoot=`true`,_.dataset.mesurerLayer=`evidence`,_.style.position=`absolute`,_.style.inset=`0`,_.style.pointerEvents=`none`,n.prepend(_);let v=Ki(()=>Y(ev,{get guides(){return f()}}),_),y=t.createInspectorMount();y.element.dataset.mesurerLayoutGuidesPanelRoot=`true`,Object.assign(y.element.style,{position:`fixed`,left:`0`,top:`0`,width:`${Av}px`,zIndex:`100`,pointerEvents:`none`,display:`none`});let b=()=>{if(c=0,!i)return;let e=t.portalTarget.querySelector(`[data-mesurer-tool-id='layout-guides']`);if(!e)return;let n=e.getBoundingClientRect(),r=Math.min(Math.max(Mv,n.right-Av),Math.max(Mv,t.ownerWindow.innerWidth-Av-Mv)),a=t.ownerWindow.innerHeight-n.bottom-jv-Mv,o=Math.min(320,t.ownerWindow.innerHeight-16),s=a>=Math.min(o,320)?n.bottom+jv:Math.max(Mv,n.top-jv-o);y.element.style.left=`${r}px`,y.element.style.top=`${s}px`},x=()=>{c||=t.ownerWindow.requestAnimationFrame(b)},S=()=>{y.element.style.display=i?`block`:`none`,i&&x()},C=Ki(()=>Y(yv,{get guides(){return f()},get ownerWindow(){return t.ownerWindow},onAdd:()=>{g.add().catch(()=>void 0)},onUpdate:(e,t)=>{g.update(e,t).catch(()=>void 0)},onRemove:e=>{g.remove(e).catch(()=>void 0)}}),y.element),w=()=>{o(e=>e+1);for(let e of s)e();S()},T=e.state.subscribe(w),E=gs(t.ownerWindow,e=>{r!==e&&(r=e,w())}),D=e=>{if(!i)return;let n=e.composedPath();if(n.includes(y.element))return;let r=t.portalTarget.querySelector(`[data-mesurer-tool-id='layout-guides']`);r&&n.includes(r)||(i=!1,S())},O=e=>{e.key!==`Escape`||!i||(i=!1,S())};S(),t.ownerDocument.addEventListener(`pointerdown`,D,!0),t.ownerDocument.addEventListener(`keydown`,O,!0),t.ownerWindow.addEventListener(`resize`,x),t.ownerWindow.addEventListener(`pointerup`,x,!0),e.lifecycle.onDispose(()=>{t.ownerDocument.removeEventListener(`pointerdown`,D,!0),t.ownerDocument.removeEventListener(`keydown`,O,!0),t.ownerWindow.removeEventListener(`resize`,x),t.ownerWindow.removeEventListener(`pointerup`,x,!0),c&&t.ownerWindow.cancelAnimationFrame(c),c=0,s.clear(),T.dispose(),E(),C(),y.dispose(),v(),_.remove()})}}),Jv=144,Yv=96,Xv=8,Zv=4,Qv=1800,$v=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},ey=(e,t)=>({left:Math.min(Math.max(Xv,e.left),Math.max(Xv,t.innerWidth-Jv-Xv)),top:Math.min(Math.max(Xv,e.top),Math.max(Xv,t.innerHeight-Yv-Xv))}),ty=(e,t)=>{let n=e.createElement(`button`);return n.type=`button`,n.textContent=t,$v(n,{height:`32px`,padding:`0 12px`,border:`1px solid rgb(255 255 255 / 18%)`,"border-radius":`8px`,"background-color":`rgb(28 28 30 / 84%)`,color:`white`,"font-family":`inherit`,"font-size":`12px`,"font-weight":`500`,cursor:`pointer`}),n},ny=({copied:e,downloaded:t,copyFailed:n,downloadFailed:r})=>e&&t?`Copied and saved screenshot`:e&&r?`Copied screenshot · Save unavailable`:t&&n?`Saved screenshot · Copy unavailable`:e?`Copied screenshot`:t?`Saved screenshot`:n&&r?`Screenshot captured · Copy and save unavailable`:n?`Screenshot captured · Copy unavailable`:r?`Screenshot captured · Save unavailable`:`Screenshot captured`,ry=e=>e!==null&&(e.nodeType===1||e.nodeType===11),iy=({ownerDocument:e,ownerWindow:t,root:n,previewDurationMs:r})=>{let i=n.closest(`[data-mesurer-root='true']`)?.parentNode??n.parentNode;if(!ry(i))throw Error(`Screenshot preview requires a mounted Mesurer host.`);let a=e.createElement(`div`);a.dataset.mesurerInspectorUi=`true`,a.dataset.mesurerScreenshotInteractive=`true`,$v(a,{position:`fixed`,left:`0`,top:`0`,width:`0`,height:`0`,overflow:`visible`,"z-index":`96`,"pointer-events":`auto`,"font-family":`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif`}),i.append(a);let o=e.createElement(`div`);o.dataset.mesurerScreenshotPreview=`true`,o.setAttribute(`role`,`button`),o.setAttribute(`aria-label`,`Open captured screenshot`),o.tabIndex=0,$v(o,{position:`fixed`,display:`none`,"z-index":`96`,width:`${Jv}px`,height:`${Yv}px`,"box-sizing":`border-box`,overflow:`hidden`,"border-radius":`10px`,border:`1px solid rgb(0 0 0 / 14%)`,"background-color":`white`,"box-shadow":`0 2px 8px rgb(0 0 0 / 12%)`,"pointer-events":`auto`,cursor:`grab`,"user-select":`none`,"touch-action":`none`});let s=e.createElement(`img`);s.dataset.mesurerScreenshotPreviewImage=`true`,s.alt=`Captured screenshot`,s.draggable=!1,s.title=`Click to open · Right-click for browser image actions`,$v(s,{display:`block`,width:`100%`,height:`100%`,"object-fit":`contain`,"background-color":`white`}),o.append(s);let c=e.createElement(`button`);c.dataset.mesurerScreenshotPreviewDismiss=`true`,c.type=`button`,c.setAttribute(`aria-label`,`Dismiss screenshot preview`),c.title=`Dismiss`,$v(c,{position:`absolute`,top:`8px`,right:`8px`,width:`20px`,height:`20px`,display:`flex`,"align-items":`center`,"justify-content":`center`,"box-sizing":`border-box`,padding:`0`,border:`0`,"border-radius":`999px`,"background-color":`rgb(48 51 64)`,color:`white`,"font-family":`inherit`,"font-size":`14px`,"line-height":`1`,"z-index":`1`,cursor:`pointer`});let l=e.createElementNS(`http://www.w3.org/2000/svg`,`svg`);l.setAttribute(`viewBox`,`0 0 16 16`),l.setAttribute(`width`,`12`),l.setAttribute(`height`,`12`),l.setAttribute(`fill`,`none`),l.setAttribute(`aria-hidden`,`true`);let u=e.createElementNS(`http://www.w3.org/2000/svg`,`path`);u.setAttribute(`d`,`m4 4 8 8M12 4l-8 8`),u.setAttribute(`stroke`,`currentColor`),u.setAttribute(`stroke-width`,`1.75`),u.setAttribute(`stroke-linecap`,`round`),l.append(u),c.append(l),o.append(c),a.append(o);let d=e.createElement(`div`);d.dataset.mesurerScreenshotViewer=`true`,d.setAttribute(`role`,`dialog`),d.setAttribute(`aria-modal`,`true`),d.setAttribute(`aria-label`,`Screenshot viewer`),$v(d,{position:`fixed`,inset:`0`,display:`none`,"z-index":`110`,"align-items":`center`,"justify-content":`center`,padding:`56px 48px 40px`,"box-sizing":`border-box`,"background-color":`rgb(0 0 0 / 72%)`,"backdrop-filter":`blur(8px)`,"pointer-events":`auto`});let f=e.createElement(`img`);f.dataset.mesurerScreenshotViewerImage=`true`,f.alt=`Captured screenshot`,$v(f,{display:`block`,"max-width":`calc(100vw - 96px)`,"max-height":`calc(100vh - 112px)`,width:`auto`,height:`auto`,"object-fit":`contain`,"border-radius":`8px`,"box-shadow":`0 8px 30px rgb(0 0 0 / 28%)`}),d.append(f);let p=e.createElement(`div`);p.dataset.mesurerScreenshotViewerControls=`true`,$v(p,{position:`fixed`,top:`16px`,right:`16px`,display:`flex`,gap:`8px`,"pointer-events":`auto`});let m=ty(e,`Copy`);m.dataset.mesurerScreenshotViewerCopy=`true`,m.setAttribute(`aria-label`,`Copy screenshot`);let h=ty(e,`Save`);h.dataset.mesurerScreenshotViewerSave=`true`,h.setAttribute(`aria-label`,`Save screenshot`);let g=ty(e,`Close`);g.dataset.mesurerScreenshotViewerClose=`true`,g.setAttribute(`aria-label`,`Close screenshot viewer`),p.append(m,h,g),d.append(p),a.append(d);let _=e.createElement(`div`);_.dataset.mesurerScreenshotToast=`true`,_.setAttribute(`role`,`status`),$v(_,{position:`fixed`,left:`50%`,bottom:`20px`,display:`none`,"z-index":`120`,transform:`translateX(-50%)`,padding:`7px 10px`,"border-radius":`8px`,"background-color":`rgb(28 28 30 / 90%)`,color:`white`,"font-size":`12px`,"font-weight":`500`,"pointer-events":`none`}),a.append(_);let v=null,y=null,b=null,x=null,S=0,C=0,w=!1,T=()=>{S&&t.clearTimeout(S),S=0},E=()=>{C&&t.clearTimeout(C),C=0},D=(e,n=!1)=>{E(),_.textContent=e,_.style.backgroundColor=n?`#b42318`:`rgb(28 28 30 / 90%)`,_.style.display=`block`,C=t.setTimeout(()=>{C=0,_.style.display=`none`},Qv)},O=()=>{d.style.display=`none`},k=()=>{y&&globalThis.URL.revokeObjectURL(y),y=null,v=null,s.removeAttribute(`src`),f.removeAttribute(`src`)},A=()=>{T(),O(),o.style.display=`none`,k()},j=()=>ey({left:t.innerWidth-Jv-Xv,top:t.innerHeight-Yv-Xv},t),M=e=>{let n=ey(e,t);b=n,o.style.left=`${n.left}px`,o.style.top=`${n.top}px`},N=()=>{!v||!y||(T(),d.style.display=`flex`,g.focus())},P=async()=>{let e=v;if(e)try{await Va(Promise.resolve(e),t),D(`Copied screenshot`)}catch{D(`Could not copy screenshot`,!0)}},F=()=>{let n=v;if(n)try{Ua(n,Ha(),e,t),D(`Saved screenshot`)}catch{D(`Could not save screenshot`,!0)}},I=(e,t,n)=>{if(!v)return!1;T();let r=o.getBoundingClientRect();return x={pointerId:n,startX:e,startY:t,left:r.left,top:r.top,moved:!1},o.style.cursor=`grabbing`,!0},L=(e,t)=>{let n=x;if(!n)return;let r=e-n.startX,i=t-n.startY;!n.moved&&Math.hypot(r,i)>=Zv&&(n.moved=!0),n.moved&&M({left:n.left+r,top:n.top+i})},R=()=>{let e=x;e&&(x=null,o.style.cursor=`grab`,e.moved||N())},z=()=>{x&&(x=null,o.style.cursor=`grab`)},B=e=>{e.button!==0||!I(e.clientX,e.clientY,null)||e.preventDefault()},V=e=>{x?.pointerId===null&&L(e.clientX,e.clientY)},H=e=>{e.button===0&&x?.pointerId===null&&R()},U=e=>{e.pointerType!==`mouse`&&e.button===0&&I(e.clientX,e.clientY,e.pointerId)&&(o.setPointerCapture?.(e.pointerId),e.preventDefault())},W=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&L(e.clientX,e.clientY)},ee=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),R())},te=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),z())},ne=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),N())},re=e=>{e.target!==s&&e.preventDefault()},ie=e=>{e.target===d&&O()},ae=e=>{e.key===`Escape`&&d.style.display!==`none`&&(e.preventDefault(),e.stopImmediatePropagation(),O())};return c.addEventListener(`pointerdown`,e=>e.stopPropagation()),c.addEventListener(`mousedown`,e=>e.stopPropagation()),c.addEventListener(`click`,e=>{e.stopPropagation(),A()}),o.addEventListener(`mousedown`,B),o.addEventListener(`pointerdown`,U),o.addEventListener(`keydown`,ne),o.addEventListener(`contextmenu`,re),d.addEventListener(`click`,ie),m.addEventListener(`click`,()=>{P()}),h.addEventListener(`click`,F),g.addEventListener(`click`,O),t.addEventListener(`mousemove`,V,!0),t.addEventListener(`mouseup`,H,!0),t.addEventListener(`pointermove`,W,!0),t.addEventListener(`pointerup`,ee,!0),t.addEventListener(`pointercancel`,te,!0),t.addEventListener(`keydown`,ae,!0),{show(e,n){if(w)return;T(),O(),k(),v=e;let i=globalThis.URL.createObjectURL(e);y=i,s.src=i,f.src=i,o.style.display=`block`,M(b??j()),D(ny(n)),r>0&&(S=t.setTimeout(A,r))},dismiss:A,dispose(){w||(w=!0,T(),E(),A(),t.removeEventListener(`mousemove`,V,!0),t.removeEventListener(`mouseup`,H,!0),t.removeEventListener(`pointermove`,W,!0),t.removeEventListener(`pointerup`,ee,!0),t.removeEventListener(`pointercancel`,te,!0),t.removeEventListener(`keydown`,ae,!0),o.removeEventListener(`mousedown`,B),o.removeEventListener(`pointerdown`,U),o.removeEventListener(`keydown`,ne),o.removeEventListener(`contextmenu`,re),d.removeEventListener(`click`,ie),a.remove())}}},ay=`mesurer.screenshot`,oy=`screenshot`,sy=`mesurer.screenshot.settings`,cy=`mesurer.screenshot.active`,ly=`runtime:solid`,uy=`screenshot.toggle`,dy=2500,fy=0,py=[`[data-mesurer-measurement='true']`,`[data-mesurer-selected-measurement='true']`,`[data-mesurer-selection-spacing-target='true']`,`[data-mesurer-guide='true']`,`[data-mesurer-distance='true']`].join(`,`),my=`${py},[data-mesurer-rulers='true']`,hy={viewBox:`0 0 256 256`,paths:[`m 96,50 a 6.0006,6.0006 0 0 0 -4.992188,2.671875 L 76.789062,74 H 40 C 27.920803,74 18,83.920803 18,96 v 96 c 0,12.0792 9.920803,22 22,22 h 176 c 12.0792,0 22,-9.9208 22,-22 V 96 C 238,83.920803 228.0792,74 216,74 H 179.21094 L 164.99219,52.671875 A 6.0006,6.0006 0 0 0 160,50 Z m 3.210937,12 h 57.578123 l 14.21875,21.328125 A 6.0006,6.0006 0 0 0 176,86 h 40 c 5.59392,0 10,4.406085 10,10 v 96 c 0,5.59392 -4.40608,10 -10,10 H 40 c -5.593915,0 -10,-4.40608 -10,-10 V 96 c 0,-5.593915 4.406085,-10 10,-10 h 40 a 6.0006,6.0006 0 0 0 4.992187,-2.671875 z`,`m 128,94 c -23.12489,0 -42,18.87511 -42,42 0,23.12489 18.87511,42 42,42 23.12489,0 42,-18.87511 42,-42 0,-23.12489 -18.87511,-42 -42,-42 z m 0,12 c 16.63961,0 30,13.36039 30,30 0,16.63961 -13.36039,30 -30,30 -16.63961,0 -30,-13.36039 -30,-30 0,-16.63961 13.36039,-30 30,-30 z`]},gy=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},_y=(e,t)=>{for(let n of[`left`,`top`,`right`,`bottom`,`width`,`height`]){let r=t[n];r===void 0?e.style.removeProperty(n):e.style.setProperty(n,`${r}px`)}},vy=e=>{let t=e(sy);return{toolEnabled:t?.toolEnabled??!0,copy:t?.copy??!0,download:t?.download??!1,includeMeasurements:t?.includeMeasurements??!1}},yy=e=>({value:e.style.getPropertyValue(`display`),priority:e.style.getPropertyPriority(`display`)}),by=(e,t)=>{t.value||t.priority?e.style.setProperty(`display`,t.value,t.priority):e.style.removeProperty(`display`)},xy=(e,t)=>{let n=e;for(;n.parentElement&&n.parentElement!==t;)n=n.parentElement;return n.parentElement===t?n:null},Sy=e=>{let t=e.querySelector(`[data-mesurer-root='true']`);if(!t)return()=>void 0;let n=new Set;for(let e of t.querySelectorAll(`[data-mesurer-rulers='true']`)){let r=xy(e,t);r&&n.add(r)}for(let e of t.querySelectorAll(py)){let r=xy(e,t);r&&n.add(r)}let r=[];for(let e of n)e.dataset.mesurerInspectorUi!==`true`&&(r.push({element:e,display:yy(e)}),e.style.setProperty(`display`,`none`,`important`));return()=>{for(let e of r)by(e.element,e.display)}},Cy=e=>Array.from(e.querySelectorAll(my)).filter(e=>e.dataset.mesurerInspectorUi===`true`).map(e=>({element:e,display:yy(e)})),wy=e=>{for(let t of e)t.element.isConnected&&by(t.element,t.display)},Ty=(e={})=>_a({id:ay,version:`0.1.0`,requires:[ly],provides:[`tool:screenshot`,`capture:screenshot`,`settings:screenshot`],setup(t){let n=t.service.get(ly);if(!n)throw Error(`Screenshot plugin requires the Solid renderer runtime.`);let{ownerDocument:r,ownerWindow:i}=n,a=n.createWorkspaceRuntime(),o=n.createInspectorMount(),s=e.capture??e.captureVisibleTab,c=s??co,l=e.previewDurationMs??fy;t.state.register({id:sy,initial:{toolEnabled:e.toolEnabled??!0,copy:e.copy??!0,download:e.download??!1,includeMeasurements:e.includeMeasurements??!1},persist:!0}),t.state.register({id:cy,initial:!1});let u=o.element;u.dataset.mesurerScreenshot=`true`,gy(u,{position:`fixed`,inset:`0`,"z-index":`85`,"pointer-events":`none`,"font-family":`ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif`});let d=r.createElement(`div`);d.dataset.mesurerScreenshotSelect=`true`,d.setAttribute(`role`,`application`),d.setAttribute(`aria-label`,`Screenshot selection`),gy(d,{position:`fixed`,inset:`0`,display:`none`,"z-index":`85`,cursor:`crosshair`,"pointer-events":`auto`,"user-select":`none`,"touch-action":`none`}),u.append(d);let f=Array.from({length:4},()=>{let e=r.createElement(`div`);return gy(e,{position:`fixed`,"background-color":`rgb(0 0 0 / 40%)`,"pointer-events":`none`}),d.append(e),e}),p=r.createElement(`div`);gy(p,{position:`fixed`,display:`none`,border:`1px solid #0d99ff`,"box-sizing":`border-box`,"pointer-events":`none`}),d.append(p);let m=r.createElement(`div`);gy(m,{position:`fixed`,display:`none`,"z-index":`86`,transform:`translateX(-50%)`,"border-radius":`4px`,padding:`2px 4px`,"background-color":`#0d99ff`,color:`white`,"font-size":`10px`,"font-variant-numeric":`tabular-nums`,"pointer-events":`none`}),d.append(m);let h=r.createElement(`div`);h.textContent=`Drag to select · Esc to cancel`,gy(h,{position:`fixed`,left:`50%`,bottom:`16px`,transform:`translateX(-50%)`,"border-radius":`4px`,padding:`4px 8px`,"background-color":`black`,color:`white`,"font-size":`11px`,"pointer-events":`none`}),d.append(h);let g=r.createElement(`div`);g.dataset.mesurerScreenshotError=`true`,g.setAttribute(`role`,`status`),g.textContent=`Could not save screenshot`,gy(g,{position:`fixed`,display:`none`,"z-index":`97`,"border-radius":`6px`,padding:`6px 8px`,"background-color":`#b42318`,color:`white`,"font-size":`11px`,"pointer-events":`none`}),u.append(g);let _=null,v=null,y=0,b=0,x=!1,S=!1,C=!1,w=()=>t.state.get(`mesurer.screenshot.active`)??!1,T=()=>vy(t.state.get),E=e=>{t.state.update(sy,t=>{let n={...t};return e.toolEnabled!==void 0&&(n.toolEnabled=e.toolEnabled),e.copy!==void 0&&(n.copy=e.copy),e.download!==void 0&&(n.download=e.download),e.includeMeasurements!==void 0&&(n.includeMeasurements=e.includeMeasurements),n})},D=e=>{w()!==e&&t.state.update(`mesurer.screenshot.active`,()=>e)},O=()=>{if(v)return;let e=n.portalTarget.querySelector(`[data-mesurer-toolbar='true']`);e&&(v={element:e,visibility:{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}},e.style.setProperty(`visibility`,`hidden`,`important`))},k=()=>{if(!v)return;let{element:e,visibility:t}=v;v=null,t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`)},A=e=>{let t=i.innerWidth,n=i.innerHeight;if(!e||e.width<=0||e.height<=0){_y(f[0],{left:0,top:0,width:t,height:n});for(let e of f.slice(1))_y(e,{left:0,top:0,width:0,height:0});p.style.display=`none`,m.style.display=`none`;return}_y(f[0],{left:0,top:0,width:t,height:e.top}),_y(f[1],{left:0,top:e.top,width:e.left,height:e.height}),_y(f[2],{left:e.left+e.width,top:e.top,width:Math.max(0,t-e.left-e.width),height:e.height}),_y(f[3],{left:0,top:e.top+e.height,width:t,height:Math.max(0,n-e.top-e.height)}),p.style.display=`block`,_y(p,e),m.style.display=`block`,m.textContent=`${Math.round(e.width)} × ${Math.round(e.height)}`,_y(m,{left:e.left+e.width/2,top:Math.min(n-22,e.top+e.height+6)})},j=()=>n.portalTarget.querySelector(`[data-mesurer-tool-id='screenshot']`)?.getBoundingClientRect()??null,M=iy({ownerDocument:r,ownerWindow:i,root:u,previewDurationMs:l}),N=e=>{let t=j(),n=Math.max(140,e.offsetWidth||140),r=Math.max(26,e.offsetHeight||26),a=t?Math.min(i.innerWidth-n-8,Math.max(8,t.left+t.width/2-n/2)):8,o=t?t.bottom+8:8,s=o+r<=i.innerHeight-8?o:Math.max(8,(t?.top??i.innerHeight)-r-8);e.style.left=`${a}px`,e.style.top=`${s}px`},P=()=>{y&&i.clearTimeout(y),g.style.display=`block`,N(g),y=i.setTimeout(()=>{y=0,g.style.display=`none`},dy)},F=()=>{_=null,A(null),d.style.visibility=``,d.style.display=`none`,u.style.pointerEvents=`none`,D(!1),k()},I=()=>{b+=1,F(),lo(i)},L=async e=>{if(x)throw Error(`A screenshot capture is already running.`);if(e.width<4||e.height<4)throw Error(`Screenshot selection must be at least 4px by 4px.`);x=!0;let o=++b,s=T(),l=s.includeMeasurements?Cy(r):[],u=s.includeMeasurements?()=>void 0:Sy(n.portalTarget);a.prepareCapture(),s.includeMeasurements&&wy(l);try{d.style.visibility=`hidden`,await Wa(i);let n=await Ba(await c({ownerDocument:r,ownerWindow:i}),e,{width:i.innerWidth,height:i.innerHeight},r);if(b!==o)throw Error(`Screenshot capture was cancelled.`);let a=!1,l=!1,u=s.copy?Va(Promise.resolve(n),i).then(()=>{a=!0}):Promise.resolve(),f=s.download?Promise.resolve().then(()=>{Ua(n,Ha(),r,i),l=!0}):Promise.resolve(),p=await Promise.allSettled([u,f]),m=s.copy&&p[0]?.status===`rejected`,h=s.download&&p[1]?.status===`rejected`;if(b!==o)throw Error(`Screenshot capture was cancelled.`);return M.show(n,{copied:a,downloaded:l,copyFailed:m,downloadFailed:h}),await t.hook.emit(`screenshot:capture`,{rect:{...e},copied:a,downloaded:l}),{blob:n,rect:{...e},copied:a,downloaded:l}}catch(e){throw b===o&&P(),e}finally{d.style.visibility=``,u(),a.finishCapture(),x=!1}},R=async()=>{if(T().toolEnabled){if(w()){I();return}if(!S){S=!0,M.dismiss();try{if(s||await so(r,i),C)return;O(),A(null),d.style.visibility=`visible`,u.style.pointerEvents=`auto`,d.style.display=`block`,D(!0)}catch(e){throw e instanceof Error&&e.name===`AbortError`||P(),e}finally{S=!1}}}},z=e=>{!w()||e.button!==0||(e.preventDefault(),e.stopPropagation(),_={x:e.clientX,y:e.clientY},A(za(_,_,{width:i.innerWidth,height:i.innerHeight})),d.setPointerCapture?.(e.pointerId))},B=e=>{!w()||!_||A(za(_,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight}))},V=e=>{let t=_;if(_=null,!w()||!t)return;d.hasPointerCapture?.(e.pointerId)&&d.releasePointerCapture(e.pointerId);let n=za(t,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight});if(A(n),n.width<4||n.height<4){A(null);return}L(n).catch(()=>void 0).finally(()=>{w()&&F()})},H=e=>{_=null,d.hasPointerCapture?.(e.pointerId)&&d.releasePointerCapture(e.pointerId),A(null)},U=e=>{e.key!==`Escape`||!w()||(e.preventDefault(),e.stopImmediatePropagation(),I())};d.addEventListener(`pointerdown`,z),d.addEventListener(`pointermove`,B),d.addEventListener(`pointerup`,V),d.addEventListener(`pointercancel`,H),i.addEventListener(`keydown`,U,!0);let W={active:w,settings:T,setSettings:E,start:R,cancel:I,capture:L};t.tool.register({id:`screenshot`,label:`Screenshot`,shortcut:`Shift+S`,order:70,command:uy,icon:hy,active:w,hidden:()=>!T().toolEnabled,menu:{label:`Screenshot options`,items:[{id:`copy`,label:`Auto-copy`,checked:()=>T().copy,run:()=>E({copy:!T().copy})},{id:`download`,label:`Auto-download`,checked:()=>T().download,run:()=>E({download:!T().download})},{id:`measurements`,label:`Include measurements`,checked:()=>T().includeMeasurements,run:()=>E({includeMeasurements:!T().includeMeasurements})}]}}),t.settings.register({id:`screenshot`,label:`Screenshot`,order:40,controls:[{type:`toggle`,id:`tool`,label:`Screenshot tool`,description:`Show the camera tool in the toolbar.`,value:()=>T().toolEnabled,set:e=>{E({toolEnabled:e}),!e&&w()&&I()}},{type:`toggle`,id:`copy`,label:`Auto-copy`,description:`Copy each successful capture when the browser allows it.`,value:()=>T().copy,set:e=>E({copy:e})},{type:`toggle`,id:`download`,label:`Auto-download`,description:`Download each successful capture as a PNG.`,value:()=>T().download,set:e=>E({download:e})},{type:`toggle`,id:`measurements`,label:`Include measurements`,description:`Keep selections, measurements, guides, distances, and rulers in the PNG.`,value:()=>T().includeMeasurements,set:e=>E({includeMeasurements:e})}]}),t.command.register(uy,R),t.service.provide(oy,W),t.lifecycle.onDispose(()=>{C=!0,b+=1,d.removeEventListener(`pointerdown`,z),d.removeEventListener(`pointermove`,B),d.removeEventListener(`pointerup`,V),d.removeEventListener(`pointercancel`,H),i.removeEventListener(`keydown`,U,!0),y&&i.clearTimeout(y),M.dispose(),k(),lo(i),a.finishCapture(),a.dispose(),o.dispose()})}}),Ey=e=>Number.parseFloat(e)||0,Dy=0,Oy=(e,t)=>{let n=t.CSS;return n?.escape?n.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)},ky=e=>e.nodeType===9,Ay=e=>e.nodeType===11;function jy(e){let t=e.getRootNode();return Ay(t)?t:e.ownerDocument}var My=(e,t)=>{if(ky(e)||Ay(e))return e;let n=jy(e);return Ay(n)?n:t},Ny=600,Py=(e,t)=>t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom,Fy=(e,t)=>Array.from(e.getClientRects()).some(e=>Py(e,t)),Iy=(e,t,n)=>{let r=t,i=r.caretRangeFromPoint?.(e.x,e.y)?.startContainer??r.caretPositionFromPoint?.(e.x,e.y)?.offsetNode;if(!i)return null;let a=t.defaultView?.Element;if(!a)return null;let o=i instanceof a?i:i.parentElement;for(;o&&o!==n;){if(n.contains(o))return o;o=o.parentElement}return o===n?n:null},Ly=(e,t,n)=>{let r=n.defaultView,i=r?.Element;if(!r||!i)return[];let a=[],o=new Set,s=(e,n,i)=>{if(o.has(e))return;let s=r.getComputedStyle(e);if(s.pointerEvents!==`none`||s.visibility===`hidden`||s.display===`none`||s.opacity===`0`||!Fy(e,t))return;let c=e.getBoundingClientRect();o.add(e),a.push({element:e,area:c.width*c.height,depth:n,order:i})},c=n.createTreeWalker(e,1),l=c.nextNode(),u=1;for(;l&&u<=Ny;){if(l instanceof i){let t=l;if(r.getComputedStyle(t).pointerEvents===`none`){let n=1,r=t.parentElement;for(;r&&r!==e;)n+=1,r=r.parentElement;s(t,n,u)}}u+=1,l=c.nextNode()}let d=Iy(t,n,e);return d&&r.getComputedStyle(d).pointerEvents===`none`&&s(d,1e4,u),a.sort((e,t)=>t.depth-e.depth||e.area-t.area||t.order-e.order).map(({element:e})=>e)};function Ry(e,t,n=ky(t)?t:t.ownerDocument??document){let r=My(t,n),i=n.defaultView;if(!i)return null;let a=r.elementsFromPoint(e.x,e.y);for(let r of a){let a=r;for(;a?.shadowRoot;){let t=a.shadowRoot.elementFromPoint(e.x,e.y);if(!t||t===a)break;a=t}if(!a||!zy(a,t))continue;let o=Ly(a,e,n);if(o.length>0)return o[0];if(i.getComputedStyle(a).pointerEvents!==`none`)return a}return null}function zy(e,t){if(ky(t))return!0;let n=e;for(;n;){if(t===n||t.contains(n))return!0;let e=n.getRootNode();if(!Ay(e))return!1;n=e.host}return!1}function By(e,t){if(!e)return t();let n=[e,...e.querySelectorAll(`*`)],r=n.map(e=>[e,e.style.getPropertyValue(`pointer-events`),e.style.getPropertyPriority(`pointer-events`)]);for(let e of n)e.style.setProperty(`pointer-events`,`none`,`important`);try{return t()}finally{for(let[e,t,n]of r)t?e.style.setProperty(`pointer-events`,t,n):e.style.removeProperty(`pointer-events`)}}function Vy(e){let t=e.ownerDocument.defaultView??window;if(e.id)return`#${Oy(e.id,t)}`;let n=e.getAttribute(`data-testid`);if(n)return`[data-testid=${JSON.stringify(n)}]`;let r=[],i=e;for(;i&&r.length<5;){let e=i.localName,t=i.localName,n=i.parentElement;if(n){let r=[...n.children].filter(e=>e.localName===t);r.length>1&&(e+=`:nth-of-type(${r.indexOf(i)+1})`)}r.unshift(e),i=n}return r.join(` > `)}function Hy(e,t,n=`dom-inspection-${++Dy}`){let r=e.getBoundingClientRect(),i=t.getComputedStyle(e),a={top:Ey(i.paddingTop),right:Ey(i.paddingRight),bottom:Ey(i.paddingBottom),left:Ey(i.paddingLeft)},o={top:Ey(i.marginTop),right:Ey(i.marginRight),bottom:Ey(i.marginBottom),left:Ey(i.marginLeft)},s={left:r.left+a.left,top:r.top+a.top,width:Math.max(0,r.width-a.left-a.right),height:Math.max(0,r.height-a.top-a.bottom)},c={left:r.left-o.left,top:r.top-o.top,width:r.width+o.left+o.right,height:r.height+o.top+o.bottom},l=e.tagName.toLowerCase(),u=e.id?`#${e.id}`:``,d=e.classList.item(0),f=d?`.${d}`:``;return{id:n,rect:{left:r.left,top:r.top,width:r.width,height:r.height},paddingRect:s,marginRect:c,padding:a,margin:o,label:`${l}${u}${f}`,elementRef:e}}function Uy(e){let t=e.ownerDocument.defaultView??window,n=t.getComputedStyle(e),r=e instanceof t.HTMLElement?e:null,i=e.getBoundingClientRect(),a=r?Hy(r,t):null,o=e=>{let t=Number.parseFloat(e);return Number.isFinite(t)?t:0},s=e=>({top:o(n.getPropertyValue(`${e}-top${e===`border`?`-width`:``}`)),right:o(n.getPropertyValue(`${e}-right${e===`border`?`-width`:``}`)),bottom:o(n.getPropertyValue(`${e}-bottom${e===`border`?`-width`:``}`)),left:o(n.getPropertyValue(`${e}-left${e===`border`?`-width`:``}`))});return{selector:Vy(e),tag:e.localName,id:e.id||null,classes:[...e.classList],text:(e.textContent??``).replace(/\s+/g,` `).trim().slice(0,500),role:e.getAttribute(`role`),ariaLabel:e.getAttribute(`aria-label`),rect:{left:i.left,top:i.top,right:i.right,bottom:i.bottom,width:i.width,height:i.height,x:i.x,y:i.y},margin:a?.margin??s(`margin`),padding:a?.padding??s(`padding`),border:s(`border`),typography:{fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,color:n.color},appearance:{backgroundColor:n.backgroundColor,borderColor:n.borderColor,borderRadius:n.borderRadius,boxShadow:n.boxShadow,opacity:n.opacity},layout:{display:n.display,position:n.position,zIndex:n.zIndex,overflowX:n.overflowX,overflowY:n.overflowY,flexDirection:n.flexDirection,alignItems:n.alignItems,justifyContent:n.justifyContent,gap:n.gap,gridTemplateColumns:n.gridTemplateColumns,gridTemplateRows:n.gridTemplateRows,transform:n.transform},scroll:{clientWidth:r?.clientWidth??0,clientHeight:r?.clientHeight??0,scrollWidth:r?.scrollWidth??0,scrollHeight:r?.scrollHeight??0,overflowsX:(r?.scrollWidth??0)>(r?.clientWidth??0)+1,overflowsY:(r?.scrollHeight??0)>(r?.clientHeight??0)+1}}}var Wy=`text-edit`,Gy=e=>Uy(e);function Ky(e){let t=e.root??e.ownerDocument,n=e.ownerDocument.defaultView??window,r=(e,n=0)=>t.querySelectorAll(e).item(n)||null,i=n=>t===e.ownerDocument||zy(n,t),a=async()=>{let t=(e.getPluginHost()??await e.waitForPluginHost()).service.get(Wy);if(!t)throw Error(`Mesurer text editing service is unavailable.`);return t},o=()=>{let t=e.ownerDocument.documentElement,r=e.ownerDocument.body,i=Math.max(t.scrollWidth,r?.scrollWidth??0),a=Math.max(t.scrollHeight,r?.scrollHeight??0);return{width:n.innerWidth,height:n.innerHeight,devicePixelRatio:n.devicePixelRatio,scrollX:n.scrollX,scrollY:n.scrollY,documentWidth:i,documentHeight:a,horizontalOverflow:i>n.innerWidth+1,verticalOverflow:a>n.innerHeight+1}},s=async(t=2)=>{await e.ownerDocument.fonts?.ready;for(let e=0;e<Math.max(1,t);e+=1)await new Promise(e=>n.requestAnimationFrame(()=>e()))};return{async ready(){await e.waitForPluginHost(),await s()},async describe(){return(await e.waitForPluginHost()).describe()},inspect(e,t=0){let n=r(e,t);return n?Gy(n):null},inspectAll(e,n=50){return[...t.querySelectorAll(e)].slice(0,Math.max(0,n)).map(Gy)},at(n,r){let a=t.querySelector?.(`[data-mesurer-island]`)??null;return By(a?.shadowRoot?.querySelector(`[data-mesurer-root='true']`)??a,()=>{let a=Ry({x:n,y:r},t,e.ownerDocument);return a&&i(a)?Gy(a):null})},distance(e,t){let n=r(e),i=r(t);if(!n||!i)return null;let a=Gy(n),o=Gy(i),s=a.rect,c=o.rect;return{a,b:o,horizontalGap:c.left>=s.right?c.left-s.right:s.left>=c.right?s.left-c.right:0,verticalGap:c.top>=s.bottom?c.top-s.bottom:s.top>=c.bottom?s.top-c.bottom:0,centerDeltaX:c.left+c.width/2-(s.left+s.width/2),centerDeltaY:c.top+c.height/2-(s.top+s.height/2)}},viewport:o,async feedback(n=[]){await s();let r=e.getPluginHost()??await e.waitForPluginHost();return{viewport:o(),elements:n.flatMap(e=>[...t.querySelectorAll(e)].slice(0,50).map(Gy)),plugins:r.describe(),pluginState:r.state.serialize(`all`)}},async command(t,n){let r=await(e.getPluginHost()??await e.waitForPluginHost()).command.execute(t,n,{source:`agent-harness`});return await s(1),r},async state(){return(e.getPluginHost()??await e.waitForPluginHost()).state.serialize(`all`)},async textEdits(){return(await a()).intents()},async textEdit(e){let t=(await a()).intent(e);if(!t)throw Error(`Text edit intent not found: ${e}`);return t},stable:s}}var qy=`0.2.0-beta.14`,Jy=lp,Yy=up,Xy=()=>({...rm(),version:qy}),Zy=(e,t)=>e.left<=t.left+t.width&&e.left+e.width>=t.left&&e.top<=t.top+t.height&&e.top+e.height>=t.top,Qy=e=>{if(!e.length)return null;let t=Math.min(...e.map(e=>e.left)),n=Math.min(...e.map(e=>e.top)),r=Math.max(...e.map(e=>e.left+e.width)),i=Math.max(...e.map(e=>e.top+e.height));return{left:t,top:n,width:r-t,height:i-n}},$y=(e,t,n)=>t.some(t=>e.orientation===`vertical`?e.position>=t.left-n&&e.position<=t.left+t.width+n:e.position>=t.top-n&&e.position<=t.top+t.height+n),eb=e=>[...e.measurements,...e.activeMeasurement&&!e.measurements.some(t=>t.id===e.activeMeasurement?.id)?[e.activeMeasurement]:[]];function tb(e){let{workspace:t,scope:n,guideTolerance:r}=e;if(n.kind===`workspace`)return{guides:t.guides.map(e=>({...e})),measurements:eb(t),distances:[...t.distances]};let i=new Set(n.elements),a=e=>e!=null&&i.has(e),o=e=>n.regions.some(t=>Zy(e,t));return{guides:t.guides.filter(e=>$y(e,n.regions,r)).map(e=>({...e})),measurements:eb(t).filter(e=>a(e.elementRef)||o(e.rect)),distances:t.distances.filter(e=>a(e.elementRefA)||a(e.elementRefB)||o(e.rectA)||o(e.rectB))}}var nb={opacity:1,width:1,pattern:`solid`,dashLength:6,gap:4},rb={opacity:1,edgeReveal:!1};({...nb}),{...rb};var ib=10,ab=e=>({left:e.left,top:e.top,width:e.width,height:e.height}),ob=e=>{let t=new Set,n=[];for(let r of e)!r?.isConnected||t.has(r)||(t.add(r),n.push(r));return n},sb=e=>e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function cb(e){let{runtime:t,ownerDocument:n,ownerWindow:r}=e,i=e.request??{scope:`workspace`},a=t.snapshot();if(!a)throw Error(`Mesurer workspace is not ready yet.`);let o=[],s=[],c={kind:`workspace`},l=new Map;if(`annotation`in i){let e=t.annotation(i.annotation);if(!e)throw Error(`Mesurer annotation not found: ${i.annotation}`);for(let t of e.resolvedTargets)t.element?.isConnected&&l.set(t.element,t.target.id);o=ob(e.resolvedTargets.map(e=>e.element));let n=t.annotationRect(e.id);n&&(s=[n]);let r=e.resolvedTargets.length,a=e.resolvedTargets.filter(e=>e.element?.isConnected).length,u=e.anchor.kind===`region`?`connected`:r===0||a===0?`stale`:a===r?`connected`:`partial`;c={kind:`annotation`,annotationId:e.id,note:e.note,targetStatus:u}}else if(i.scope===`selection`){let e=t.currentSelection();if(o=ob(e.elements),!o.length&&!e.region)throw Error(`Mesurer has no current selection.`);s=e.region?[e.region]:o.map(e=>ab(e.getBoundingClientRect())),c={kind:`selection`}}else o=ob([...t.currentSelection().elements,...a.measurements.map(e=>e.elementRef),a.activeMeasurement?.elementRef,...a.heldDistances.flatMap(e=>[e.elementRefA,e.elementRefB])]);let u=c.kind===`workspace`?[]:s.length?s:o.map(e=>ab(e.getBoundingClientRect())),d=tb({workspace:{guides:a.guides,measurements:a.measurements,activeMeasurement:a.activeMeasurement,distances:a.heldDistances},scope:c.kind===`workspace`?{kind:`workspace`}:{kind:`scoped`,elements:o,regions:u},guideTolerance:a.guideRelevanceTolerance??ib}),f=d.measurements,p=d.distances,m=d.guides,h=ob([...o,...f.map(e=>e.elementRef),...p.flatMap(e=>[e.elementRefA,e.elementRefB])]),g=new Map,_=new Set(l.values()),v=1,y=()=>{let e=`target-${v++}`;for(;_.has(e);)e=`target-${v++}`;return _.add(e),e},b=h.map(e=>{let t=l.get(e)??y();return g.set(e,t),{ref:t,inspection:Uy(e)}}),x=f.map(e=>{let t={id:e.id,rect:ab(e.rect),deltaX:e.deltaX,deltaY:e.deltaY};e.snapped!==void 0&&(t.snapped=e.snapped);let n=e.elementRef?g.get(e.elementRef):void 0;return n&&(t.targetRef=n),t}),S=p.map(e=>{let t={id:e.id,rectA:ab(e.rectA),rectB:ab(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null},n=e.elementRefA?g.get(e.elementRefA):void 0,r=e.elementRefB?g.get(e.elementRefB):void 0;return n&&(t.targetARef=n),r&&(t.targetBRef=r),t});return{schema:`mesurer.context/v1`,id:sb(r),createdAt:new Date().toISOString(),scope:c,page:{url:r.location?.href??n.URL,title:n.title},viewport:{width:r.innerWidth,height:r.innerHeight,devicePixelRatio:r.devicePixelRatio,scrollX:r.scrollX,scrollY:r.scrollY},coordinateSpace:`viewport-css-px`,regions:c.kind===`workspace`?[]:s.map(ab),visualState:{rulersVisible:a.rulersVisible,xrayVisible:a.xrayVisible},targets:b,visualContext:{guides:m,layoutGuides:(e.layoutGuides??[]).map(e=>({...e})),measurements:x,distances:S}}}var lb=e=>`${Math.round(e*100)/100}px`,ub=e=>`x=${lb(e.left)} y=${lb(e.top)} w=${lb(e.width)} h=${lb(e.height)}`;function db(e){let t=[`Mesurer visual context`,``,`Page: ${e.page.url}`,`Viewport: ${e.viewport.width} × ${e.viewport.height} CSS px; scroll x=${e.viewport.scrollX} y=${e.viewport.scrollY}`];if(e.scope.kind===`annotation`?t.push(``,`Annotation`,e.scope.note,`Target status: ${e.scope.targetStatus}`):t.push(``,`Scope: ${e.scope.kind}`),e.regions.length&&(t.push(``,`Requested regions`),e.regions.forEach((e,n)=>t.push(`- region-${n+1}: ${ub(e)}`))),(e.visualState.rulersVisible||e.visualState.xrayVisible)&&t.push(``,`Visual state: rulers=${e.visualState.rulersVisible?`on`:`off`}; x-ray=${e.visualState.xrayVisible?`on`:`off`}`),e.targets.length){t.push(``,`Targets`);for(let n of e.targets){let e=n.inspection;t.push(`[${n.ref}] ${e.selector}`,` rect: ${ub(e.rect)}`,` margin: ${lb(e.margin.top)} ${lb(e.margin.right)} ${lb(e.margin.bottom)} ${lb(e.margin.left)}`,` padding: ${lb(e.padding.top)} ${lb(e.padding.right)} ${lb(e.padding.bottom)} ${lb(e.padding.left)}`,` layout: display=${e.layout.display}; position=${e.layout.position}; gap=${e.layout.gap}`,` typography: ${e.typography.fontSize} / ${e.typography.lineHeight}; weight=${e.typography.fontWeight}; align=${e.typography.textAlign}`),e.text&&t.push(` text: ${JSON.stringify(e.text)}`)}}if(e.visualContext.guides.length){t.push(``,`Relevant guides`);for(let n of e.visualContext.guides)t.push(`- ${n.orientation} ${n.orientation===`vertical`?`x`:`y`}=${lb(n.position)}`)}if(e.visualContext.layoutGuides.length){t.push(``,`Layout guides`);for(let n of e.visualContext.layoutGuides){if(!n.visible)continue;let e=n.kind===`grid`?`grid ${lb(n.size)}`:`${n.count} ${n.kind}; gutter=${lb(n.gutter)}; offset=${lb(n.offset)}; align=${n.align}`;t.push(`- ${e}; color=${n.color}; opacity=${Math.round(n.opacity*100)}%`)}}if(e.visualContext.measurements.length){t.push(``,`Relevant measurements`);for(let n of e.visualContext.measurements)t.push(`- ${n.targetRef?`${n.targetRef}: `:``}${ub(n.rect)}; delta=${lb(n.deltaX)} × ${lb(n.deltaY)}`)}if(e.visualContext.distances.length){t.push(``,`Relevant distances`);for(let n of e.visualContext.distances){let e=[n.targetARef,n.targetBRef].filter(Boolean).join(` → `),r=[n.horizontal?`horizontal=${lb(n.horizontal.value)}`:null,n.vertical?`vertical=${lb(n.vertical.value)}`:null].filter(Boolean).join(`; `);t.push(`- ${e?`${e}: `:``}${r||`overlapping`}`)}}return t.join(`
|
|
1778
1778
|
`).trimEnd()}function fb(e){let t=Qy([...e.regions,...e.targets.map(e=>e.inspection.rect),...e.visualContext.measurements.map(e=>e.rect),...e.visualContext.distances.flatMap(e=>[e.rectA,e.rectB])]),n=[{id:`viewport`,kind:`viewport`}];if(t){let r=Math.max(0,t.left-48),i=Math.max(0,t.top-48),a=Math.min(e.viewport.width,t.left+t.width+48),o=Math.min(e.viewport.height,t.top+t.height+48);a>r&&o>i&&n.push({id:`focus`,kind:`clip`,rect:{left:r,top:i,width:a-r,height:o-i}})}return{schema:`mesurer.capture/v1`,contextId:e.id,chrome:`hide`,evidence:`show`,captures:n}}var pb=(e,t,n,r,i)=>{!Number.isFinite(r)||!Number.isFinite(i)||Math.abs(r-i)<.01||e.push({kind:t,label:n,before:r,current:i,delta:i-r,unit:`px`})},mb=(e,t,n,r)=>e.push({kind:`missing`,evidence:t,id:n,label:r}),hb=(e,t)=>Math.abs(e.left-t.left)<.01&&Math.abs(e.top-t.top)<.01&&Math.abs(e.width-t.width)<.01&&Math.abs(e.height-t.height)<.01;function gb(e){let t=e.runtime.annotation(e.annotationId);if(!t)throw Error(`Mesurer annotation not found: ${e.annotationId}`);let n=cb({runtime:e.runtime,ownerDocument:e.ownerDocument,ownerWindow:e.ownerWindow,request:{annotation:e.annotationId},layoutGuides:e.layoutGuides});if(n.scope.kind!==`annotation`)throw Error(`Mesurer annotation context invariant failed.`);let r=e.runtime.snapshot();if(!r)throw Error(`Mesurer workspace is not ready yet.`);let i=eb({measurements:r.measurements,activeMeasurement:r.activeMeasurement}),a=[];for(let e of t.baseline.targets){let t=n.targets.find(t=>t.ref===e.id);if(!t){mb(a,`target`,e.id,e.selector);continue}pb(a,`target-rect`,`${t.inspection.selector} left`,e.rect.left,t.inspection.rect.left),pb(a,`target-rect`,`${t.inspection.selector} top`,e.rect.top,t.inspection.rect.top),pb(a,`target-rect`,`${t.inspection.selector} width`,e.rect.width,t.inspection.rect.width),pb(a,`target-rect`,`${t.inspection.selector} height`,e.rect.height,t.inspection.rect.height)}for(let e of t.baseline.guides){let t=n.visualContext.guides.find(t=>t.id===e.id)??r.guides.find(t=>t.id===e.id);if(!t){mb(a,`guide`,e.id,`${e.orientation} guide ${e.id}`);continue}pb(a,`guide`,`${e.orientation} guide ${e.id}`,e.position,t.position)}for(let e of t.baseline.measurements){let r=n.visualContext.measurements.find(t=>t.id===e.id)??i.find(t=>t.id===e.id);if(!r){let r=t.baseline.targets.find(t=>hb(t.rect,e.rect));r&&n.targets.some(e=>e.ref===r.id)||mb(a,`measurement`,e.id,e.id);continue}pb(a,`measurement`,`${e.id} width`,e.rect.width,r.rect.width),pb(a,`measurement`,`${e.id} height`,e.rect.height,r.rect.height)}for(let e of t.baseline.distances){let t=n.visualContext.distances.find(t=>t.id===e.id)??r.heldDistances.find(t=>t.id===e.id);if(!t){mb(a,`distance`,e.id,e.id);continue}e.horizontal&&t.horizontal?pb(a,`distance`,`${e.id} horizontal`,e.horizontal.value,t.horizontal.value):e.horizontal&&!t.horizontal&&mb(a,`distance`,e.id,`${e.id} horizontal`),e.vertical&&t.vertical?pb(a,`distance`,`${e.id} vertical`,e.vertical.value,t.vertical.value):e.vertical&&!t.vertical&&mb(a,`distance`,e.id,`${e.id} vertical`)}return{schema:`mesurer.review/v1`,annotationId:t.id,note:t.note,targetStatus:n.scope.targetStatus,baseline:t.baseline,current:n,changes:a}}async function _b(e,t,n){try{if(t.navigator.clipboard?.writeText){await t.navigator.clipboard.writeText(n);return}}catch{}let r=e.createElement(`textarea`);r.value=n,r.setAttribute(`readonly`,``),r.style.position=`fixed`,r.style.opacity=`0`,r.style.pointerEvents=`none`,e.body.append(r),r.select();let i=e.execCommand?.(`copy`)??!1;if(r.remove(),!i)throw Error(`Unable to copy Mesurer context to the clipboard.`)}var vb=bv,yb=xv,bb=()=>({...qv(),version:qy}),xb=`mesurer.context`,Sb=`context:v1`,Cb=`mesurer.context.settings`,wb=`context.ui`,Tb=`data-mesurer-direct-text-edit-active`,Eb={viewBox:`0 0 256 256`,paths:[`M216,32H88a8,8,0,0,0-8,8V80H40a8,8,0,0,0-8,8V216a8,8,0,0,0,8,8H168a8,8,0,0,0,8-8V176h40a8,8,0,0,0,8-8V40A8,8,0,0,0,216,32ZM160,208H48V96H160Zm48-48H176V88a8,8,0,0,0-8-8H96V48H208Z`]},Db={viewBox:`0 0 256 256`,paths:[`M152,40a8,8,0,0,1-8,8H112a8,8,0,0,1,0-16h32A8,8,0,0,1,152,40Zm-8,168H112a8,8,0,0,0,0,16h32a8,8,0,0,0,0-16ZM208,32H184a8,8,0,0,0,0,16h24V72a8,8,0,0,0,16,0V48A16,16,0,0,0,208,32Zm8,72a8,8,0,0,0-8,8v32a8,8,0,0,0,16,0V112A8,8,0,0,0,216,104Zm0,72a8,8,0,0,0-8,8v24H184a8,8,0,0,0,0,16h24a16,16,0,0,0,16-16V184A8,8,0,0,0,216,176ZM40,152a8,8,0,0,0,8-8V112a8,8,0,0,0-16,0v32A8,8,0,0,0,40,152Zm32,56H48V184a8,8,0,0,0-16,0v24a16,16,0,0,0,16,16H72a8,8,0,0,0,0-16ZM72,32H48A16,16,0,0,0,32,48V72a8,8,0,0,0,16,0V48H72a8,8,0,0,0,0-16Z`]},Ob={viewBox:`0 0 256 256`,paths:[`M229.66,58.34l-32-32a8,8,0,0,0-11.32,0l-96,96A8,8,0,0,0,88,128v32a8,8,0,0,0,8,8h32a8,8,0,0,0,5.66-2.34l96-96A8,8,0,0,0,229.66,58.34ZM124.69,152H104V131.31l64-64L188.69,88ZM200,76.69,179.31,56,192,43.31,212.69,64ZM224,128v80a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32h80a8,8,0,0,1,0,16H48V208H208V128a8,8,0,0,1,16,0Z`]},kb=async(e,t,n=1)=>{await e.fonts?.ready;for(let e=0;e<Math.max(1,n);e+=1)await new Promise(e=>t.requestAnimationFrame(()=>e()))},Ab=(e,t,n,r)=>{let i=async i=>cb({runtime:e,ownerDocument:t,ownerWindow:n,request:i,layoutGuides:r()}),a=async e=>db(await i(e));return{context:i,contextText:a,copyContext:async e=>_b(t,n,await a(e)),select:async r=>{let a=Array.isArray(r)?[...r]:[String(r)];return e.select(a),await kb(t,n),i({scope:`selection`})},annotations:async()=>e.annotations(),removeAnnotation:async r=>{e.removeAnnotation(r),await kb(t,n)},review:async i=>{if(await kb(t,n),i)return gb({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:i,layoutGuides:r()});let a=r();return e.annotations().map(r=>gb({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r.id,layoutGuides:a}))},capturePlan:async e=>fb(await i(e)),prepareCapture:async()=>{e.prepareCapture(),await kb(t,n)},finishCapture:async()=>{e.finishCapture(),await kb(t,n)}}},jb=e=>{let t=e.currentSelection();return t.elements.length>0||t.region!==null};function Mb(e={}){return{id:xb,version:qy,requires:[`runtime:solid`],provides:[Sb],setup(t){let n=t.service.get(`runtime:solid`);if(!n)throw Error(`Mesurer context plugin requires the renderer runtime service.`);let r=n.createWorkspaceRuntime(xb),i=Ab(r,n.ownerDocument,n.ownerWindow,()=>t.service.get(yb)?.list()??[]);t.service.provide(Sb,i),t.state.register({id:Cb,initial:{ui:e.ui??!0},persist:!0}),t.state.register({id:wb,initial:{hasSelection:jb(r)}});let a=()=>t.state.get(`mesurer.context.settings`)?.ui??!0,o=()=>t.state.get(wb)?.hasSelection===!0,s=e=>{t.state.update(Cb,t=>({...t,ui:e}))},c=null,l=null,u=null,d=null,f=r.currentSelection(),p={elements:[...f.elements],region:f.region?{...f.region}:null},m=(e,t)=>e.elements.length!==t.elements.length||e.elements.some((e,n)=>e!==t.elements[n])?!1:e.region===t.region?!0:!e.region||!t.region?!1:e.region.left===t.region.left&&e.region.top===t.region.top&&e.region.width===t.region.width&&e.region.height===t.region.height,h=r.subscribe(()=>{let e=r.currentSelection(),n=!m(p,e);p={elements:[...e.elements],region:e.region?{...e.region}:null},r.selectGestureActive()?c?.abandonNoteComposer():n&&c?.closeNoteComposer();let i=e.elements.length>0||e.region!==null;i!==(t.state.get(wb)?.hasSelection??!1)&&t.state.update(wb,()=>({hasSelection:i}))});t.command.register(`context.copy`,()=>i.copyContext()),t.command.register(`context.copy-selection`,()=>i.copyContext({scope:`selection`}));let g=()=>{let e=u?.element;e&&(n.rendererRoot?.hasAttribute(Tb)?e.setAttribute(Tb,`true`):e.removeAttribute(Tb))},_=()=>{d?.disconnect(),d=null,c=null,l?.(),l=null,u?.dispose(),u=null},v=()=>{if(u)return;if(u=X_(n),u.element.dataset.mesurerLayer=`evidence`,u.element.dataset.mesurerContextRoot=`true`,n.rendererRoot){let e=new n.ownerWindow.MutationObserver(g);d=e,e.observe(n.rendererRoot,{attributes:!0,attributeFilter:[Tb]}),g()}let e={runtime:r,onCopy:i.copyContext,onController:e=>{c=e},coordinateSpace:`document`};l=xi(()=>Hr(K_,bi(e,{get ownerWindow(){return n.ownerWindow}})),u.element)},y=()=>{a()?v():_()};y(),t.state.subscribe(y),t.command.register(`context.add-note`,()=>c?.openNoteComposer()),t.tool.register({id:`context.copy`,label:`Copy context`,shortcut:`C`,command:`context.copy`,order:70,icon:Eb,hidden:()=>!a()}),t.tool.register({id:`context.copy-selection`,label:`Copy selection`,shortcut:`Shift+C`,command:`context.copy-selection`,order:71,icon:Db,hidden:()=>!a(),disabled:()=>!o()}),t.tool.register({id:`context.add-note`,label:`Add note`,shortcut:`N`,command:`context.add-note`,order:72,icon:Ob,hidden:()=>!a(),disabled:()=>!o()}),t.settings.register({id:`context`,label:`Context`,order:30,controls:[{type:`toggle`,id:`ui`,label:`Context tools`,description:`Show Copy Context, Copy Selection, Add Note, and annotation controls.`,value:a,set:s}]}),t.lifecycle.onDispose(()=>{h(),_(),r.dispose()})}}}var Nb={display:`block`,position:`fixed`,inset:`0`,width:`0`,height:`0`,"min-width":`0`,"min-height":`0`,"max-width":`none`,"max-height":`none`,margin:`0`,padding:`0`,border:`0`,overflow:`visible`,background:`transparent`,"box-sizing":`border-box`,"pointer-events":`auto`,"z-index":`2147483647`,opacity:`1`,visibility:`visible`,transform:`none`,translate:`none`,rotate:`none`,scale:`none`,filter:`none`,"backdrop-filter":`none`,"clip-path":`none`,mask:`none`,contain:`none`,isolation:`isolate`,"mix-blend-mode":`normal`,animation:`none`,transition:`none`,"color-scheme":`light`,color:`#0f172a`,"font-family":`ui-sans-serif, system-ui, sans-serif`,"font-size":`16px`,"font-weight":`400`,"line-height":`1.5`,"letter-spacing":`normal`,direction:`ltr`};function Pb(e){for(let[t,n]of Object.entries(Nb))e.style.setProperty(t,n,`important`)}function Fb(e){return`popover`in e&&`showPopover`in e&&typeof e.showPopover==`function`&&`hidePopover`in e&&typeof e.hidePopover==`function`}var Ib=e=>`newState`in e,Lb=e=>e.localName===`dialog`;function Rb(e){if(!Lb(e)||!e.open)return!1;try{return e.matches(`:modal`)}catch{return!1}}function zb(e,t,n=!0){Pb(e);let r=e.ownerDocument,i=r.defaultView??window,a=t,o=!1,s=`fixed`,c=!1,l=0,u=[];if(n&&Fb(e)&&(e.popover=`manual`),t.append(e),n&&Fb(e))try{e.showPopover(),c=e.matches(`:popover-open`),c&&(s=`top-layer`)}catch{e.removeAttribute(`popover`)}let d=()=>{if(!(!c||!Fb(e)))try{e.matches(`:popover-open`)||e.showPopover()}catch{}},f=t=>{if(e.parentNode===t)return;let n=c&&Fb(e)&&e.matches(`:popover-open`);if(n&&Fb(e))try{e.hidePopover()}catch{}t.append(e),Pb(e),n&&d()},p=()=>{u=u.filter(e=>e.isConnected&&Rb(e)),f(u.at(-1)??a)},m=e=>{u=u.filter(t=>t!==e),u.push(e),p()},h=e=>{u=u.filter(t=>t!==e),p()},g=()=>{if(!(o||!c||!Fb(e)))try{e.matches(`:popover-open`)&&e.hidePopover(),e.showPopover()}catch{}},_=()=>{o||!c||l||(l=i.requestAnimationFrame(()=>{l=0,g()}))},v=t=>{if(!c||t.target===e)return;let n=Ib(t)?t.newState:void 0,r=t.target;if(r instanceof i.Element){if(Lb(r)){n===`open`&&Rb(r)?(m(r),_()):n===`closed`?h(r):n===`open`&&_();return}n===`open`&&r.hasAttribute(`popover`)&&_()}},y=e=>{let t=e.target;t instanceof i.Element&&Lb(t)&&h(t)},b=()=>{r.fullscreenElement&&_()},x=e=>{Rb(e)&&m(e);for(let t of e.querySelectorAll(`dialog`))Rb(t)&&m(t)},S=new i.MutationObserver(e=>{if(c)for(let t of e){if(t.type===`attributes`){let e=t.target;e instanceof i.Element&&Lb(e)&&(Rb(e)?m(e):h(e))}for(let e of t.addedNodes)e instanceof i.Element&&x(e);u.some(e=>!e.isConnected)&&p()}});return c&&(r.addEventListener(`toggle`,v,!0),r.addEventListener(`close`,y,!0),r.addEventListener(`fullscreenchange`,b,!0),S.observe(r.documentElement,{subtree:!0,childList:!0,attributes:!0,attributeFilter:[`open`]}),x(r.documentElement)),{mode:s,bringToFront:g,dispose(){if(!o){if(o=!0,l&&i.cancelAnimationFrame(l),r.removeEventListener(`toggle`,v,!0),r.removeEventListener(`close`,y,!0),r.removeEventListener(`fullscreenchange`,b,!0),S.disconnect(),c&&Fb(e)&&e.matches(`:popover-open`))try{e.hidePopover()}catch{}u=[]}}}}var Bb=`mesurer.codex`,Vb=`codex:v1`,Hb=2e3,Ub=750,Wb=1800,Gb=2e3,Kb=12e4,qb=10,Jb=5,Yb=[`Implement the current human feedback from Mesurer in this project.`,`Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,`,`and verify the affected UI in the live page with Mesurer before claiming completion.`].join(` `),Xb={viewBox:`0 0 256 256`,paths:[`M224,48,32,120l88,32,32,88Z M120,152l104-104`]},Zb={viewBox:`0 0 256 256`,paths:[`M72,32H184a8,8,0,0,1,0,16h-8v20.69a40,40,0,0,1-11.72,28.28L137.25,124l27.03,27.03A40,40,0,0,1,176,179.31V208h8a8,8,0,0,1,0,16H72a8,8,0,0,1,0-16h8V179.31a40,40,0,0,1,11.72-28.28L118.75,124,91.72,96.97A40,40,0,0,1,80,68.69V48H72a8,8,0,0,1,0-16Zm24,16V68.69a24,24,0,0,0,7.03,16.97L128,110.63l24.97-24.97A24,24,0,0,0,160,68.69V48Zm32,90.63-24.97,24.97A24,24,0,0,0,96,180.57V208h64V180.57a24,24,0,0,0-7.03-16.97Z`]},Qb={viewBox:`0 0 256 256`,paths:[`M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z`]},$b=()=>{try{let e=globalThis.location;return e?.origin?`mesurer-codex-ui:v2:${e.origin}${e.pathname}`:null}catch{return null}},ex=()=>{let e=$b();if(!e)return null;try{let t=globalThis.sessionStorage?.getItem(e);if(!t)return null;let n=JSON.parse(t);if(n.version!==1)return null;let r=n.originThread?.trim()||null,i=n.selectedThread?.trim()||null,a=n.delivery;return{version:1,originThread:r,selectedThread:i,delivery:a&&a.id.trim()&&a.thread.trim()&&(a.status===`queued`||a.status===`working`||a.status===`interrupted`)&&Array.isArray(a.annotationIds)?{id:a.id.trim(),thread:a.thread.trim(),status:a.status,annotationIds:a.annotationIds.filter(e=>e.trim().length>0),queuedSubmissionId:a.queuedSubmissionId?.trim()||null,dispatch:a.dispatch??null,dispatchError:a.dispatchError?.trim()||null}:null}}catch{return null}},tx=e=>{let t=$b();if(t)try{globalThis.sessionStorage?.setItem(t,JSON.stringify(e))}catch{}},nx=async e=>{let t=window.__MESURER_HOST__?.codexBridge;if(!t)throw Error(`Codex Bridge is unavailable in this host.`);let n=await t(e);if(n.ok===!1)throw Error(n.error??`Codex Bridge request failed.`);return n},rx=e=>{let t=e.runtime;return!t||![`shared`,`standalone`,`desktop`,`none`].includes(t.source)||![`shared-app-server`,`desktop-queue`,`private-stdio`,`none`].includes(t.transport)||t.reason!==null&&t.reason!==`desktop-private-transport`&&t.reason!==`runtime-not-found`?null:{source:t.source,transport:t.transport,available:t.available===!0,reason:t.reason}},ix=e=>({thread:e.thread?.trim()||null,threads:Array.isArray(e.threads)?e.threads.filter(e=>e.trim().length>0):[]}),ax=e=>{let t=e.deliveryId?.trim(),n=e.thread?.trim(),r=e.status;if(!t||!n||!r)throw Error(`Codex Bridge returned an invalid delivery state.`);let i={id:t,thread:n,status:r,turnId:e.turnId?.trim()||null,createdAt:Number.isFinite(e.createdAt)?Number(e.createdAt):0,updatedAt:Number.isFinite(e.updatedAt)?Number(e.updatedAt):0};return e.queuedSubmissionId!==void 0&&(i.queuedSubmissionId=e.queuedSubmissionId?.trim()||null),e.dispatch!==void 0&&(i.dispatch=e.dispatch),e.dispatchError!==void 0&&(i.dispatchError=e.dispatchError?.trim()||null),i},ox=e=>({thread:e.thread?.trim()||null,threads:Array.isArray(e.threadDetails)?e.threadDetails.flatMap(e=>{let t=e.id?.trim()??``;return t?[{id:t,title:e.title?.trim()||t,updatedAt:e.updatedAt!=null&&Number.isFinite(e.updatedAt)?e.updatedAt:null,connected:e.connected===!0}]:[]}):[],hasMore:e.hasMore===!0}),sx=async(e,t,n)=>{let r=t?.instruction?.trim()||n,i=await e.annotations(),a=t?.annotationIds,o=a?a.flatMap(e=>{let t=i.find(t=>t.id===e);return t?[t]:[]}):i,s=[];for(let t of o)s.push(await e.contextText({annotation:t.id}));if(s.length===0)try{s.push(await e.contextText({scope:`selection`}))}catch{s.push(await e.contextText())}return{annotationIds:o.map(e=>e.id),message:[r,``,...s.flatMap((e,t)=>[s.length>1?`Feedback ${t+1}`:`Mesurer evidence`,e,``])].join(`
|
|
1779
1779
|
`).trimEnd()}},cx=e=>e.length>16?`${e.slice(0,8)}…${e.slice(-4)}`:e,lx=(e,t=42)=>e.length>t?`${e.slice(0,t-1)}…`:e,ux=e=>e instanceof Error&&e.message===`Codex Bridge is unavailable in this host.`;function dx(e={}){let t=e.instruction?.trim()||Yb,n=e.ui??!0,r=e.clearCompletedAnnotations??!0;return{id:Bb,version:qy,requires:[Sb],provides:[Vb],setup(e){let i=e.service.get(Sb);if(!i)throw Error(`Mesurer Codex plugin requires context() from mesurer-solid/plugins.`);let a=n?ex():null,o=`unknown`,s=null,c=!1,l=a?.originThread??null,u=a?.selectedThread??a?.originThread??null,d=!1,f=null,p=[],m=[],h=!1,g=Jb,_,v=``,y=null,b=a?.delivery?{id:a.delivery.id,thread:a.delivery.thread,status:a.delivery.status,annotationIds:a.delivery.annotationIds,queuedSubmissionId:a.delivery.queuedSubmissionId??null,dispatch:a.delivery.dispatch??null,dispatchError:a.delivery.dispatchError??null}:null,x=0,S=0,C=null,w=!1,T=async()=>{let e=rx(await nx({action:`runtime`}));if(!e)throw Error(`Codex Bridge returned an invalid runtime state.`);return s=e,e},E=async()=>{let e=await nx({action:`health`,thread:u??l??void 0});return s=rx(e)??s,ix(e)},D=E,O=async e=>ax(await nx({action:`delivery`,deliveryId:e})),k=async e=>{if(!e.id||!e.thread)throw Error(`Cannot restore a Codex delivery without its id and thread.`);let t={action:`restore`,deliveryId:e.id,thread:e.thread};return e.queuedSubmissionId&&(t.queuedSubmissionId=e.queuedSubmissionId),ax(await nx(t))},A=async(e={})=>{let t={action:`threads`,limit:e.limit??qb},n=e.thread?.trim();return n&&(t.thread=n),ox(await nx(t))},j=()=>u??l??(d?null:f),M=()=>{if(!n)return;let e=b?.id&&(b.status===`queued`||b.status===`working`||b.status===`interrupted`)?{id:b.id,thread:b.thread??j()??``,status:b.status,annotationIds:[...b.annotationIds],queuedSubmissionId:b.queuedSubmissionId,dispatch:b.dispatch,dispatchError:b.dispatchError}:null;tx({version:1,originThread:l,selectedThread:u,delivery:e?.thread?e:null})},N=(e,t=!1)=>{let n=e.trim();n&&((t||!l)&&(l=n),u=n,d=!1,M())},P=()=>b!==null&&[`queueing`,`queued`,`working`,`completed`].includes(b.status),F=e=>e===`queueing`?`Queueing…`:e===`queued`?`Queued`:e===`working`?`Working…`:e===`completed`?`Done`:e===`interrupted`?`Interrupted`:`Failed`,I=()=>b?b.status===`queueing`?`Queueing to Codex…`:b.status===`queued`?b.dispatch===`desktop-wake-failed`?`Queued — open Codex`:`Queued for Codex`:b.status===`working`?`Codex working…`:b.status===`completed`?`Codex finished`:b.status===`interrupted`?`Codex interrupted`:`Queue failed`:null,L=()=>b?[`queueing`,`queued`,`working`].includes(b.status)?Zb:b.status===`completed`?Qb:Xb:Xb,R=()=>{let e=[],t=new Set,n=n=>{t.has(n.id)||(t.add(n.id),e.push(n))},r=e=>({id:e,title:`Codex ${cx(e)}`,updatedAt:null,connected:!0});l&&n(m.find(e=>e.id===l)??r(l));let i=u;i&&n(m.find(e=>e.id===i)??r(i));for(let e of m)n(e);for(let e of p)n(m.find(t=>t.id===e)??r(e));return e},z=(e=!1)=>Promise.resolve(),B=()=>{if(o!==`available`){let e=s?.source===`desktop`&&s.reason===`desktop-private-transport`;return[{id:`codex.thread.connect`,label:o===`unavailable`?e?`Retry Codex Desktop`:`Retry Codex connection`:`Choose Codex thread…`,run:()=>z(!0)}]}let e=R(),t=e.slice(0,g),n=j(),r=t.map(e=>{let t=e.id===l?`Current · `:e.connected?`Loaded · `:``,r=b?.thread===e.id?` · ${F(b.status)}`:``;return{id:`codex.thread.${e.id}`,label:`${t}${lx(e.title)}${r}`,checked:()=>n===e.id,disabled:()=>P(),run(){P()||(N(e.id,!l),V())}}});return g<qb&&(e.length>g||h)&&r.push({id:`codex.thread.show-more`,label:`Show 5 more…`,run(){g=qb,V()}}),r},V=()=>{if(!n||w)return;let t=j(),r=B(),i=!P()&&!d&&o!==`unavailable`&&(o===`unknown`||!!t),a=s?.source===`desktop`&&s.reason===`desktop-private-transport`,c=I()??(o===`unavailable`?a?`Codex Desktop not connected`:`Codex unavailable`:d||o===`available`&&!t?`Choose Codex thread`:`Queue to Codex`),l=JSON.stringify({bridgeAvailability:o,codexRuntime:s,routeNeedsSelection:d,target:t,label:c,visibleThreadCount:g,activeDelivery:b,items:r.map(e=>({id:e.id,label:e.label,checked:e.checked?.()??null,disabled:e.disabled?.()??!1}))});l!==v&&(v=l,_?.dispose(),_=e.tool.register({id:`codex.send`,label:c,command:`codex.queue`,order:73,icon:L(),disabled:()=>!i,menu:r.length?{label:`Codex destination`,items:r}:void 0}))},H=async e=>{if(o!==`available`)return;let t=await A({limit:qb,thread:e??void 0});m=t.threads,h=t.hasMore,p=t.threads.filter(e=>e.connected).map(e=>e.id),f=t.thread};z=(e=!1)=>w||o===`unknown`&&!e?Promise.resolve():y||(y=(async()=>{try{let e=await D();o=`available`,c=!0,f=e.thread,await H(u??l??e.thread);let t=u??l;t&&p.includes(t)?d=!1:p.length===1?N(p[0],!0):d=!0,!d&&t&&M()}catch(e){throw o=`unavailable`,s=await T().catch(()=>s),e}finally{y=null,V()}})(),y);let U=()=>{x&&=(globalThis.clearTimeout(x),0),S&&=(globalThis.clearTimeout(S),0)},W=()=>{S&&globalThis.clearTimeout(S),S=globalThis.setTimeout(()=>{S=0,b?.status===`completed`&&(b=null,M(),V())},Wb)},ee=()=>{S&&globalThis.clearTimeout(S),S=globalThis.setTimeout(()=>{S=0,!(b?.status!==`queued`||b.dispatch!==`desktop-opened`&&b.dispatch!==`desktop-wake-failed`)&&(b=null,M(),V())},Wb)},te=async e=>{if(!(!b||b.id!==e.id)){if(b={...b,thread:e.thread,status:e.status,queuedSubmissionId:e.queuedSubmissionId??b.queuedSubmissionId,dispatch:e.dispatch??b.dispatch,dispatchError:e.dispatchError??b.dispatchError},M(),e.status===`queued`&&(e.dispatch===`desktop-opened`||e.dispatch===`desktop-wake-failed`)){V(),ee();return}if(e.status===`completed`){if(r)for(let e of b.annotationIds)await i.removeAnnotation(e);M(),V(),W();return}if(e.status===`interrupted`){M(),V();let t=e.updatedAt>0?e.updatedAt:Date.now();Date.now()-t<Kb&&(x=globalThis.setTimeout(()=>{x=0,ne(e.id)},Gb));return}V(),x=globalThis.setTimeout(()=>{x=0,ne(e.id)},Ub)}},ne=async e=>{if(!(w||b?.id!==e))try{await te(await O(e))}catch(t){if(b?.id!==e)return;let n=t;if(b.status===`queued`&&b.thread)try{o!==`available`&&await z(!0);let e=await k(b);await te(e);return}catch(e){n=e}if(b?.id!==e)return;if(b.status===`interrupted`){V();return}b={...b,status:`failed`},M(),ux(n)&&(o=`unavailable`),V()}},re={health:E,listThreads:A,delivery:O,async useThread(e){let t=e.trim();if(!t)throw Error(`Codex thread must be a non-empty string.`);let n=await nx({action:`target`,thread:t}),r=ix(n);return s=rx(n)??s,N(t,!l),f=r.thread,p=r.threads,o=`available`,c=!0,V(),r},async queue(e){let r=await sx(i,e,t),a=e?.thread?.trim(),s=a||(n?j():null);if(n&&!a&&(d||!s))throw Error(`Choose a Codex thread before queueing feedback.`);let c={message:r.message};s&&(c.thread=s);try{let e=await nx({action:`queue`,...c}),t=e.thread?.trim();if(!t)throw Error(`Codex Bridge did not report the destination thread.`);let n={thread:t,output:e.output??``,delivery:`queued`,deliveryId:e.deliveryId?.trim()||null,status:e.status??`queued`,annotationIds:r.annotationIds};return e.queuedSubmissionId!==void 0&&(n.queuedSubmissionId=e.queuedSubmissionId?.trim()||null),e.dispatch!==void 0&&(n.dispatch=e.dispatch),e.dispatchError!==void 0&&(n.dispatchError=e.dispatchError?.trim()||null),n}catch(e){throw n&&ux(e)&&(o=`unavailable`,V()),e}},send(e){return re.queue(e)}};e.service.provide(Vb,re);let ie=async()=>{if(!(C||P()))return U(),b={id:null,thread:j(),status:`queueing`,annotationIds:[],queuedSubmissionId:null,dispatch:null,dispatchError:null},V(),C=(async()=>{try{n&&o!==`available`&&await z(!0);let e=await re.queue();b={id:e.deliveryId,thread:e.thread,status:e.status,annotationIds:e.annotationIds,queuedSubmissionId:e.queuedSubmissionId??null,dispatch:e.dispatch??null,dispatchError:e.dispatchError??null},N(e.thread,!l),M(),V(),console.info(`[Mesurer] Queued feedback for Codex thread ${e.thread}.`),e.deliveryId?e.status===`completed`||e.status===`interrupted`?await te({id:e.deliveryId,thread:e.thread,status:e.status,turnId:null,createdAt:0,updatedAt:0}):x=globalThis.setTimeout(()=>{x=0,ne(e.deliveryId)},Ub):S=globalThis.setTimeout(()=>{S=0,b?.id===null&&b?.status===`queued`&&(b=null,M(),V())},Wb)}catch(e){b=null,M(),V();let t=e instanceof Error?e.message:String(e);throw console.error(`[Mesurer] Failed to queue feedback for Codex: ${t}`),e}finally{C=null}})(),C};if(e.command.register(`codex.queue`,ie),e.command.register(`codex.send`,ie),n){V(),window.__MESURER_HOST__?.codexBridge&&z(!0).catch(()=>void 0),b?.id&&(c=!0,x=globalThis.setTimeout(()=>{x=0,b?.id&&ne(b.id)},0));let t=globalThis.setInterval(()=>{c&&z().catch(()=>void 0)},Hb);e.lifecycle.onDispose(()=>{w=!0,U(),globalThis.clearInterval(t),_?.dispose(),_=void 0})}}}}var fx=[{id:xb,label:`Context`,order:30,create:Mb,settingsIds:[`context`],hiddenSettingsControlIds:[`ui`]},{id:Jy,label:`Arrange`,order:35,create:Xy,settingsIds:[`arrange`]},{id:vb,label:`Layout Guides`,order:38,create:bb},{id:ay,label:`Screenshot`,order:40,create:(e={})=>({...Ty(e),version:qy}),settingsIds:[`screenshot`],hiddenSettingsControlIds:[`tool`]},{id:Bb,label:`Codex`,description:`Connects Mesurer to your open Codex threads on this computer.`,order:45,create:dx}],px=e=>{let t=e!==void 0,n=new Map((e??[]).map(e=>[e.id,e])),r=new Set(fx.map(e=>e.id)),i=fx.map(e=>{let r=n.get(e.id);return{...e,settingsIds:e.settingsIds?[...e.settingsIds]:void 0,hiddenSettingsControlIds:e.hiddenSettingsControlIds?[...e.hiddenSettingsControlIds]:void 0,enabled:t?!!r:e.enabled!==!1,create:r?()=>r:e.create}});for(let[t,n]of(e??[]).entries())r.has(n.id)||i.push({id:n.id,order:1e3+t,enabled:!0,create:()=>n});return i},mx={select:`select`,xray:`xray`,colorPicker:`color-picker`,rulers:`rulers`,typography:`text-inspector`,guides:`guides`,distance:`distance`,settings:`settings`};function hx(e={}){if(!(`document`in globalThis))throw Error(`mountMesurer() requires a browser or Electron renderer document.`);let{target:t=document.body,isolate:n=!0,shadowMode:r=`open`,topLayer:i=!0,agent:a=!1,signal:o,onPluginHost:s,onPluginsReady:c,plugins:l,excludeBuiltins:u,excludePlugins:d,...f}=e;if(o?.aborted)throw o.reason??new DOMException(`Mesurer mount aborted.`,`AbortError`);if(!t)throw Error(`mountMesurer() requires document.body to exist or an explicit target.`);let p=t.ownerDocument??document,m=p.defaultView??window,h=p.createElement(`div`);h.dataset.mesurerIsland=`true`;let g=zb(h,t,i),_=h,v=h,y=h;if(n){let e=h.attachShadow({mode:r});v=p.createElement(`div`),v.dataset.mesurerIslandMount=`true`,e.append(v),_=e,y=e}let b,x,S,C,w,T=!1,E=!1,D=new Promise((e,t)=>{x=e,S=t}),O=new Promise((e,t)=>{C=e,w=t});D.catch(()=>void 0),O.catch(()=>void 0);let k=async()=>(await(b?Promise.resolve(b):D),O),A=a===!0?{}:a===!1?null:a,j=Ky({ownerDocument:p,root:A?.root??(t.nodeType===11?t:p),getPluginHost:()=>b,waitForPluginHost:k}),M=async e=>{await k();let t=b?.service.get(e);if(t===void 0)throw Error(`Mesurer service is unavailable: ${e}.`);return t},N=async()=>{await j.ready();let e=b?.service.get(Sb);if(!e)throw Error(`Mesurer Context is disabled. Enable it in Settings or include context() in plugins.`);return e},P=async()=>{await j.ready();let e=b?.service.get(Yy);if(!e)throw Error(`Mesurer Arrange is disabled. Enable it in Settings or include arrange() in plugins.`);return e},F=async e=>(await N()).context(e),I=async e=>(await N()).contextText(e),L=async e=>(await N()).copyContext(e),R=async e=>(await N()).select(e),z=async()=>(await N()).annotations(),B=async e=>(await N()).review(e),V=async e=>(await N()).capturePlan(e),H=async()=>(await N()).prepareCapture(),U=async()=>(await N()).finishCapture(),W=async()=>(await P()).intents(),ee=async e=>{let t=(await P()).intent(e);if(!t)throw Error(`Arrange intent not found: ${e}`);return t},te=async(e,t)=>{(await P()).show(e,t)},ne=async(e,t)=>(await P()).capturePlan(e,t),re=async(e,t)=>(await P()).review(e,t),ie=()=>j.textEdits(),ae=e=>j.textEdit(e),oe=Object.assign(j,{capabilities:()=>{let e=!!b?.service.get(Sb);return{protocol:`mesurer.agent/v1`,contextSchema:`mesurer.context/v1`,capabilities:{context:e,select:e,annotations:e,review:e,capturePlan:e,arrange:!!b?.service.get(Yy),textEdit:!!b?.service.get(Wy)}}},context:F,contextText:I,select:R,annotations:z,review:B,capturePlan:V,prepareCapture:H,finishCapture:U,arrangements:W,arrange:ee,showArrange:te,arrangeCapturePlan:ne,reviewArrange:re}),se={...f,version:qy,plugins:px(l),excludePlugins:u?u.map(e=>mx[e]):[...d??[]]},ce=xi(()=>Hr(j_,bi(se,{portalTarget:y,pageTarget:t,onPluginHost:e=>{T||(T=!0,x(e)),b=e,s?.(e)},onPluginsReady:e=>{b=e,E||(E=!0,C(e)),c?.(e)}})),v),le,ue=new Promise((e,t)=>{le=t});ue.catch(()=>void 0);let de=Promise.race([(async()=>(await oe.ready(),k()))(),ue]);de.catch(()=>void 0);let fe=null;if(A){let e=A.globalName??`__MESURER__`,t=Object.getOwnPropertyDescriptor(m,e);Reflect.set(m,e,oe),fe=()=>{Object.getOwnPropertyDescriptor(m,e)?.value===oe&&(t?Object.defineProperty(m,e,t):Reflect.deleteProperty(m,e))}}let pe=!1,me=()=>void 0,he=e=>{T||S(e),E||w(e),le(e)},ge={element:h,root:_,hostLayer:g.mode,get pluginHost(){return b},ready:de,agent:oe,service:M,context:F,contextText:I,copyContext:L,select:R,annotations:z,review:B,capturePlan:V,prepareCapture:H,finishCapture:U,arrangements:W,arrange:ee,showArrange:te,arrangeCapturePlan:ne,reviewArrange:re,textEdits:ie,textEdit:ae,bringToFront:g.bringToFront,describe:async()=>(await de).describe(),dispose(){pe||(pe=!0,me(),he(new DOMException(`Mesurer was disposed before it became ready.`,`AbortError`)),fe?.(),ce(),g.dispose(),h.remove())}};if(o){let e=()=>{if(pe)return;let e=o.reason??new DOMException(`Mesurer mount aborted.`,`AbortError`);he(e),ge.dispose()};o.addEventListener(`abort`,e,{once:!0}),me=()=>{o.removeEventListener(`abort`,e)}}return ge}var{target:gx,globalName:_x=`__MESURER__`,reuseExisting:vx=!0,recoverDisconnected:yx=!1,...bx}=globalThis.__MESURER_CONFIG__??{},xx=globalThis.__MESURER_INSTANCE__,Sx=vx&&xx?.element.isConnected?xx:void 0,Cx=()=>{let e=gx?document.querySelector(gx):document.body;if(!e)throw Error(`Mesurer injection target not found: ${gx}`);return globalThis.__MESURER_INSTANCE__?.dispose(),hx({...bx,target:e,agent:{globalName:_x,root:document}})},wx=e=>{globalThis.__MESURER_INJECT_RECOVERY__?.stop();let t=!1,n=!1,r=()=>{if(n=!1,t||globalThis.__MESURER_INSTANCE__?.element.isConnected)return;let r=e();globalThis.__MESURER_INSTANCE__=r,r.ready.catch(e=>{queueMicrotask(()=>{throw e})})},i=new MutationObserver(()=>{t||n||globalThis.__MESURER_INSTANCE__?.element.isConnected||(n=!0,queueMicrotask(r))});i.observe(document,{childList:!0,subtree:!0}),globalThis.__MESURER_INJECT_RECOVERY__={stop(){t=!0,i.disconnect()}}},Tx=Sx??Cx();globalThis.__MESURER_INSTANCE__=Tx,globalThis.__MESURER_INJECT_RECOVERY__?.stop(),globalThis.__MESURER_INJECT_RECOVERY__=void 0,yx&&wx(Cx),Tx.ready.catch(e=>{queueMicrotask(()=>{throw e})})})();
|