mesurer-solid 0.1.4 → 0.1.5
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/README.md +27 -27
- package/dist/arrange.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inject-script.js +1 -1
- package/dist/inject.js +1 -1
- package/dist/screenshot.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,13 +45,13 @@ import { createRoot } from "react-dom/client"
|
|
|
45
45
|
import { mountMesurer } from "mesurer-solid"
|
|
46
46
|
import { App } from "./App"
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
: undefined
|
|
48
|
+
if (import.meta.env.DEV) {
|
|
49
|
+
const mesurer = mountMesurer()
|
|
51
50
|
|
|
52
|
-
import.meta.hot
|
|
53
|
-
|
|
54
|
-
}
|
|
51
|
+
if (import.meta.hot) {
|
|
52
|
+
import.meta.hot.dispose(() => mesurer.dispose())
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
55
|
|
|
56
56
|
createRoot(document.getElementById("root")!).render(<App />)
|
|
57
57
|
```
|
|
@@ -63,13 +63,13 @@ import { render } from "solid-js/web"
|
|
|
63
63
|
import { mountMesurer } from "mesurer-solid"
|
|
64
64
|
import App from "./App"
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
: undefined
|
|
66
|
+
if (import.meta.env.DEV) {
|
|
67
|
+
const mesurer = mountMesurer()
|
|
69
68
|
|
|
70
|
-
import.meta.hot
|
|
71
|
-
|
|
72
|
-
}
|
|
69
|
+
if (import.meta.hot) {
|
|
70
|
+
import.meta.hot.dispose(() => mesurer.dispose())
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
73
|
|
|
74
74
|
render(() => <App />, document.getElementById("root")!)
|
|
75
75
|
```
|
|
@@ -79,13 +79,13 @@ For Vue, Svelte, or vanilla Vite, put the same Mesurer block in the existing `sr
|
|
|
79
79
|
```ts
|
|
80
80
|
import { mountMesurer } from "mesurer-solid"
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
: undefined
|
|
82
|
+
if (import.meta.env.DEV) {
|
|
83
|
+
const mesurer = mountMesurer()
|
|
85
84
|
|
|
86
|
-
import.meta.hot
|
|
87
|
-
|
|
88
|
-
}
|
|
85
|
+
if (import.meta.hot) {
|
|
86
|
+
import.meta.hot.dispose(() => mesurer.dispose())
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
89
|
|
|
90
90
|
// Keep the app's existing browser startup code here as usual.
|
|
91
91
|
```
|
|
@@ -96,13 +96,13 @@ For Electron, use the renderer entry—not the Electron main process:
|
|
|
96
96
|
// src/renderer.ts
|
|
97
97
|
import { mountMesurer } from "mesurer-solid"
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
: undefined
|
|
99
|
+
if (import.meta.env.DEV) {
|
|
100
|
+
const mesurer = mountMesurer()
|
|
102
101
|
|
|
103
|
-
import.meta.hot
|
|
104
|
-
|
|
105
|
-
}
|
|
102
|
+
if (import.meta.hot) {
|
|
103
|
+
import.meta.hot.dispose(() => mesurer.dispose())
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
106
|
|
|
107
107
|
// Existing renderer startup follows.
|
|
108
108
|
```
|
|
@@ -129,9 +129,9 @@ import { mountMesurer } from "mesurer-solid"
|
|
|
129
129
|
|
|
130
130
|
const mesurer = mountMesurer()
|
|
131
131
|
|
|
132
|
-
import.meta.hot
|
|
133
|
-
mesurer.dispose()
|
|
134
|
-
}
|
|
132
|
+
if (import.meta.hot) {
|
|
133
|
+
import.meta.hot.dispose(() => mesurer.dispose())
|
|
134
|
+
}
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
Then load that helper from the same existing browser entry:
|
package/dist/arrange.js
CHANGED
|
@@ -2900,7 +2900,7 @@ var Qn = "mesurer.arrange", $n = "arrange", er = "mesurer.arrange.intents", tr =
|
|
|
2900
2900
|
].join(",");
|
|
2901
2901
|
//#endregion
|
|
2902
2902
|
//#region src/version.ts
|
|
2903
|
-
var jr = "0.1.
|
|
2903
|
+
var jr = "0.1.5", Mr = tr, Nr = Qn, Pr = $n, Fr = nr, Ir = er, Lr = () => ({
|
|
2904
2904
|
...Ar(),
|
|
2905
2905
|
version: jr
|
|
2906
2906
|
});
|
package/dist/index.js
CHANGED
|
@@ -12725,7 +12725,7 @@ async function Wp(e, t, n) {
|
|
|
12725
12725
|
}
|
|
12726
12726
|
//#endregion
|
|
12727
12727
|
//#region src/version.ts
|
|
12728
|
-
var Gp = "0.1.
|
|
12728
|
+
var Gp = "0.1.5", Kp = "mesurer.context", qp = "context:v1", Jp = "mesurer.context.settings", Yp = "context.ui", Xp = {
|
|
12729
12729
|
viewBox: "0 0 256 256",
|
|
12730
12730
|
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"]
|
|
12731
12731
|
}, Zp = {
|
package/dist/inject-script.js
CHANGED
|
@@ -1298,4 +1298,4 @@ body.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesur
|
|
|
1298
1298
|
}
|
|
1299
1299
|
`,zu=0,Bu=`mesurer:tab-id`,Vu=`mesurer-settings`,Hu=`mesurer-state`,Uu=e=>{try{let t=e.sessionStorage.getItem(Bu);if(t)return t;let n=e.crypto.randomUUID();return e.sessionStorage.setItem(Bu,n),n}catch{return`session`}},Wu=(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},Gu=(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 Ku(e){let t=V(()=>e.model),n=V(()=>e.env),r=V(()=>e.input),i=V(()=>e.onSelectionSpacingStyleChange),a=V(()=>e.onResetSelectionSpacingStyle),{ownerDocument:o,ownerWindow:s}=n,c=r.pageTarget??o.body,l=++zu,u=r.persistKey??`mesurer-state:${Uu(s)}${l===1?``:`:${l}`}`,d={key:``,entries:[],overlayNode:null,frame:-1},f=null,p=null,m=null,h=!1,g=0,_=0,v=null,y=null,b=!1,x=0,S=null,C={x:s.scrollX,y:s.scrollY},w=Ql({model:t,ownerWindow:s}),T=e=>r.isBuiltinActionDisabled?.(e)??!1,E=(e,n=!1)=>{T(e)||(e===`color-picker`&&n&&t.current.colorPickerActive&&t.setTransient({colorPickerActive:!1}),w.run(e))},D=Lu({ownerDocument:o,target:r.pageTarget??o.body,instanceId:l});r.onBuiltinController?.(w);let O=W(()=>{let e=t.state.start,n=t.state.end;return e&&n?za(e,n):null}),k=W(()=>Gu(t.state.selectedMeasurements,t.state.selectionOriginRect)),A=W(()=>k()?[k()]:t.state.selectedMeasurements.length?t.state.selectedMeasurements:t.state.selectedMeasurement?[t.state.selectedMeasurement]:[]),j=W(()=>yl(t.state.guides,t.state.selectedGuideIds)),M=W(()=>vl(t.state.hoverPointer,t.state.guides)),N=W(()=>k()??t.state.selectedMeasurement??t.state.selectedMeasurements.at(-1)??null),P=W(()=>bl({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:N(),selectedGuide:j(),hoverGuide:M(),hoverElement:t.state.hoverElement,selectedElementRef:N()?.elementRef??null})),F=W(()=>xl({document:o,window:s,altPressed:t.state.altPressed,primarySelectedMeasurement:N(),optionPairOverlay:P(),selectedGuideIds:t.state.selectedGuideIds,selectedElement:N()?.elementRef??null,hoverElement:t.state.hoverElement})),I=W(()=>{if(!t.state.altPressed||t.state.toolMode!==`guides`)return null;let e=j(),n=M();if(e&&n&&e.id!==n.id)return qa(hl(e,s),hl(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?qa(hl({id:`preview`,...r},s),hl(i,s),null,null,s):null}),ee=e=>{let n=kl(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)},te=e=>{v=e,!_&&(_=s.requestAnimationFrame(()=>{_=0;let e=v;e&&(t.current.toolMode===`select`&&!t.current.draggingGuideId&&ee(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:_l({orientation:t.current.guideOrientation,point:e,snapGuidesEnabled:t.current.settings.snapGuidesEnabled,overlayNode:f,guides:t.current.guides,draggingGuideId:null,document:o})}}))}))},L=()=>{x&&s.clearTimeout(x),x=0,S=null},R=e=>{L(),S=e,x=s.setTimeout(()=>{x=0,S===e&&t.setTransient({draggingGuideId:e})},220)},ne=()=>{t.setTransient({start:null,end:null,isDragging:!1,draggingGuideId:null,guidePreview:null}),y=null,b=!1,d.key=``,t.endAction()},re=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&&P()){e.preventDefault(),r(),t.addHeldDistance({...P(),id:Ka()}),t.endAction();return}if(t.current.toolMode===`guides`){e.preventDefault(),r();let i=Ka(),a=_l({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}),R(i),go(e.currentTarget,e.pointerId);return}t.current.selectedGuideIds.length>0&&(r(),t.setSelectedGuideIds([])),b=e.shiftKey,y=e.shiftKey?Hl({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}),go(e.currentTarget,e.pointerId)},ie=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}),te(n),t.current.draggingGuideId){let e=t.current.guides.find(e=>e.id===t.current.draggingGuideId);if(e){let r=_l({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=b?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})},z=e=>{if(!t.current.enabled)return;if(t.current.toolMode===`guides`){L(),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture?.(e.pointerId),ne();return}if(t.current.toolMode!==`select`){ne();return}let n=t.current.start;if(!n){ne();return}let r={x:e.clientX,y:e.clientY};if(t.current.isDragging){let i=za(n,r),a=zl(i,f,d,o,c).map(e=>({...pl(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}),ne();return}let i=y?t.current.selectedMeasurements.find(e=>e.elementRef===y)??null:Hl({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),ne();return}let a=e.shiftKey?kl(r,f,o,c)??Al(r,f,t.current.settings.snapEnabled,o,c):Al(r,f,t.current.settings.snapEnabled,o,c);if(a){let n=pl(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)}else e.shiftKey||(t.checkpoint(),t.setSelectedMeasurements([],null));ne()},ae=()=>{L(),t.current.draggingGuideId||ne(),t.setTransient({guidePreview:null})},oe=(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}),go(n.currentTarget,n.pointerId)}},se=(e,n)=>{n.stopPropagation(),t.setTransient({draggingGuideId:null}),n.currentTarget.hasPointerCapture?.(n.pointerId)&&n.currentTarget.releasePointerCapture?.(n.pointerId)},ce=(e,n,r=null)=>_l({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}),le=(e,n)=>{t.checkpoint();let r=Ka();return t.addGuide({id:r,orientation:e,position:ce(e,n)}),t.setSelectedGuideIds([]),r},ue=(e,n)=>{let r=t.current.guides.find(t=>t.id===e);r&&t.updateGuide(e,{position:ce(r.orientation,n,e)})},de=e=>{t.current.settings.selectNewGuideEnabled&&t.setSelectedGuideIds([e])},fe=e=>t.setGuides(t.current.guides.filter(t=>t.id!==e)),pe=()=>{t.clearWorkspace(),p?.clear(),m?.clearWorkspace()};return Hr(()=>[t.state.toolMode,t.state.enabled],([e,t])=>{p&&(e===`text-inspector`&&t?p.enable():p.disable())}),Hr(()=>t.state.xrayVisible,e=>D.setVisible(e)),Hr(()=>[t.state.settings.highlightColor,t.state.settings.guideColor,t.state.settings.hoverHighlightEnabled,t.state.settings.persistOnReload,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:{...V(()=>e.selectionSpacingStyle)}})}),Hr(()=>[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))}),Kt(()=>{nu(Ru,n.portalTarget),p=Au({portalTarget:n.portalTarget});let e=r.persistence??Vo(s,u,Vu,r.persistKey?void 0:Hu);m=e,e.setErrorHandler?.(r.onPersistenceError);let a=e.load();if(a?.settings){let e=Wu(s,a.settings);t.applyStoredSettings(e),e.selectionSpacingStyle&&i(e.selectionSpacingStyle)}(t.current.settings.persistOnReload||r.persistOnReload)&&a?.workspace&&t.applyStoredWorkspace(a.workspace),h=!0,t.current.toolMode===`text-inspector`&&t.current.enabled&&p.enable();let c=e.subscribe?.((e,n)=>{if(e){if(n?.settings!==!1){let n=Wu(s,e.settings);t.applyStoredSettings(n),n.selectionSpacingStyle&&i(n.selectionSpacingStyle)}n?.workspace!==!1&&e.workspace&&t.current.settings.persistOnReload&&t.applyStoredWorkspace(e.workspace)}}),l=e=>{if(mo(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.setTransient({colorPickerActive:!1});return}t.current.toolMode===`text-inspector`&&p?.clear(),t.clearAll();return}if(e.key===`Alt`){t.setTransient({altPressed:!0});return}if(r&&n===`,`){e.preventDefault(),E(`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.toggleEnabled(!0);return}if(n===`s`){E(`select`);return}if(n===`a`){E(`text-inspector`);return}if(n===`g`){E(`guides`);return}if(n===`p`){E(`color-picker`,!0);return}if(n===`x`){E(`xray`);return}if(n===`r`){E(`rulers`);return}if(n===`h`){T(`guides`)||t.setGuideOrientation(`horizontal`,!0);return}n===`v`&&(T(`guides`)||t.setGuideOrientation(`vertical`,!0))},d=e=>{e.key===`Alt`&&t.setTransient({altPressed:!1})};s.addEventListener(`keydown`,l),s.addEventListener(`keyup`,d);let f=0,v=()=>{f||=s.requestAnimationFrame(()=>{f=0;let e=t.current.selectedMeasurements.filter(e=>e.elementRef?.isConnected).map(e=>({...pl(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=Ia(s);t.current.measurements.length&&t.setMeasurements(t.current.measurements.map(e=>ml(e,n,o))),t.current.activeMeasurement&&t.setActiveMeasurement(ml(t.current.activeMeasurement,n,o)),t.current.heldDistances.length&&t.setHeldDistances(t.current.heldDistances.map(e=>uo(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)}})},y=()=>{let e={x:s.scrollX,y:s.scrollY},n=e.x-C.x,r=e.y-C.y;C=e,(n||r)&&t.setGuides(t.current.guides.map(e=>({...e,position:e.position-(e.orientation===`vertical`?n:r)}))),v()};s.addEventListener(`scroll`,y,!0),s.addEventListener(`resize`,v,!0);let b=e=>{let n=t.current.draggingGuideId;if(!n)return;let r=t.current.guides.find(e=>e.id===n);r&&t.updateGuide(n,{position:ce(r.orientation,r.orientation===`vertical`?e.clientX:e.clientY,n)})},x=()=>t.setTransient({draggingGuideId:null});return s.addEventListener(`pointermove`,b,!0),s.addEventListener(`pointerup`,x,!0),s.addEventListener(`pointercancel`,x,!0),()=>{s.cancelAnimationFrame(f),s.cancelAnimationFrame(_),L(),s.clearTimeout(g),t.current.settings.persistOnReload&&e.saveWorkspace(t.serializeWorkspace()),c?.(),e.setErrorHandler?.(void 0),s.removeEventListener(`keydown`,l),s.removeEventListener(`keyup`,d),s.removeEventListener(`scroll`,y,!0),s.removeEventListener(`resize`,v,!0),s.removeEventListener(`pointermove`,b,!0),s.removeEventListener(`pointerup`,x,!0),s.removeEventListener(`pointercancel`,x,!0),p?.destroy(),p=null,D.dispose(),r.onBuiltinController?.(null)}}),Y(Ci,{get mount(){return n.portalMount},get children(){var n=X(`div`,{class:`mesurer-solid-root`,"data-mesurer-root":`true`});return Qi(()=>e=>{f=e},n),Q(n,Y(K,{get when(){return J(()=>!!t.state.enabled)()?t.state.rulersVisible:t.state.enabled},get children(){return Y(ec,{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:le,onMoveGuide:ue,onFinishGuide:de,onCancelGuide:fe})}}),null),Q(n,Y(Ys,{model:t,get displayedSelectedMeasurements(){return A()},get activeRect(){return O()},get optionPairOverlay(){return P()},get guideDistanceOverlay(){return I()},get optionContainerLines(){return F()},get hoverGuide(){return M()},get selectionSpacingStyle(){return e.selectionSpacingStyle},get interactive(){return J(()=>!!t.state.enabled)()?!t.state.settingsOpen:t.state.enabled},onPointerDown:re,onPointerMove:ie,onPointerUp:z,onPointerLeave:ae,onGuidePointerDown:oe,onGuidePointerUp:se}),null),Q(n,Y(Fa,{model:t,ownerWindow:s}),null),Q(n,Y(Bc,{model:t,ownerWindow:s,onBuiltinAction:E,get pluginTools(){return r.pluginTools},get onPluginTool(){return r.onPluginTool},get onPluginToolMenuItem(){return r.onPluginToolMenuItem},isBuiltinActionDisabled:T,onClearWorkspace:pe,get selectionSpacingStyle(){return e.selectionSpacingStyle},onSelectionSpacingStyleChange:i,onResetSettings:()=>{t.resetSettings(),a(),m?.clearSettings()}}),null),n}})}function qu(e){let t=V(()=>({...vo,...e.selectionSpacingStyle})),[n,r]=G({...t}),i=e=>r(t=>({...t,...e})),a=()=>r({...t}),o=Gl({initialEnabled:!0,initialToolMode:`none`,settings:V(()=>({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,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:{..._o,...e.guideStyle},rulerSettings:{...yo,...e.rulerSettings}}))}),[s,c]=G(null);return Kt(()=>{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(K,{get when(){return s()},children:t=>Y(Ku,{model:o,get env(){return t()},input:e,get selectionSpacingStyle(){return n()},onSelectionSpacingStyleChange:i,onResetSelectionSpacingStyle:a})})}var Ju=`mesurer.arrange`,Yu=`arrange`,Xu=`mesurer.arrange.intents`,Zu=`mesurer.arrange.active`,Qu=`mesurer.arrange.settings`,$u=`runtime:solid`,ed=`builtin.select`,td=`arrange.toggle`,nd=`arrange.commit`,rd=`arrange.clear`,id=`mesurer.arrange.selection-available`,ad=1,od=24,sd=160,cd=500,ld=`#ef4444`,ud={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`]},dd=(e,t)=>({left:e.left+t.x,top:e.top+t.y,width:e.width,height:e.height}),fd=(e,t)=>({left:e.left-t.left,top:e.top-t.top,width:e.width-t.width,height:e.height-t.height}),pd=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}},md=(e,t,n,r)=>Math.max(0,Math.max(e,n)-Math.min(t,r)),hd=(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]},gd=(e,t)=>t===`x`?{start:e.top,end:e.top+e.height}:{start:e.left,end:e.left+e.width},_d=e=>e.kind===`edge`?2:+(e.kind===`guide`),vd=(e,t,n)=>{let r=gd(t,e),i=null;for(let a of n)if(a.axis===e&&!(a.source===`element`&&md(r.start,r.end,a.start,a.end)>sd))for(let n of hd(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||_d(a)>_d(i)))&&(i={...a,delta:e})}return i},yd=e=>{let{origin:t,pathname:n,search:r}=e.location;return`${t}${n}${r}`},bd=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,xd=e=>({tag:e.fingerprintTag,id:e.fingerprintId,testId:e.fingerprintTestId,role:e.fingerprintRole,ariaLabel:e.fingerprintAriaLabel,classes:[...e.fingerprintClasses],text:e.fingerprintText}),Sd=e=>({id:e.id,selector:e.selector,fingerprint:xd(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}}),Cd=e=>({id:e.id,createdAt:e.createdAt,pageUrl:e.pageUrl,targets:e.targets.map(Sd)}),wd=e=>{let{element:t,transform:n}=e;n.value||n.priority?t.style.setProperty(`transform`,n.value,n.priority):t.style.removeProperty(`transform`)},Td=e=>e instanceof Element&&!!e.closest(`input, textarea, select, [contenteditable='true'], [contenteditable='']`),Ed=()=>_a({id:Ju,version:`0.1.0`,requires:[$u,`tool:select`],provides:[`tool:arrange`,`intent:arrange`,`agent:arrange`,`settings:arrange`],setup(e){let t=e.service.get($u);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:Xu,initial:{intents:[]},history:!0,persist:!0}),e.state.register({id:Zu,initial:!1}),e.state.register({id:Qu,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=ld,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=ld,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={intentId:null,state:`desired`},g=null,_=null,v=!1,y=0,b=null,x=()=>e.state.get(`mesurer.arrange.intents`)??{intents:[]},S=()=>e.state.get(`mesurer.arrange.active`)??!1,C=()=>{let t=e.state.get(Qu);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}},w=t=>{e.state.update(Qu,e=>({...e,...t}))},T=()=>yd(r),E=()=>x().intents.filter(e=>e.pageUrl===T()),D=e=>!!e.closest(`[data-mesurer-island='true'], [data-mesurer-inspector-ui='true'], [data-mesurer-root='true']`),O=e=>Zc(e,o)&&!D(e),k=e=>{let t=[];o instanceof c.HTMLElement&&o.matches(e)&&!D(o)&&t.push(o);for(let n of o.querySelectorAll(e))n instanceof c.HTMLElement&&O(n)&&t.push(n);return t},A=e=>{let t=xd(e);if(!tl(t))return null;let n=[];try{n=k(e.selector).filter(e=>nl(e,t))}catch{return null}if(n.length!==1)return null;if(!t.id&&!t.testId){let e=[];try{e=k(t.tag).filter(e=>nl(e,t))}catch{return null}if(e.length!==1||e[0]!==n[0])return null}return n[0]??null},j=()=>{for(let e of p.values())wd(e);p.clear()},M=()=>{u.style.display=`none`,d.style.display=`none`},N=(e,t,n)=>{if(M(),C().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`}}},P=()=>{if(!(m.size>0))for(let e of s.querySelectorAll(`[data-mesurer-measurement='true']`))e instanceof c.HTMLElement&&(m.set(e,{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}),e.style.setProperty(`visibility`,`hidden`,`important`))},F=()=>{for(let[e,t]of m)t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`);m.clear()},I=(e=E())=>{let t=new Map;for(let n of e)for(let e of n.targets){let n=A(e);n&&t.set(n,{x:e.desiredOffsetX,y:e.desiredOffsetY})}return t},ee=()=>{if(h.state===`live`)return new Map;if(!h.intentId)return I();let e=x().intents.find(e=>e.id===h.intentId);if(!e)return I();let t=new Map;for(let n of e.targets){let e=A(n);e&&t.set(e,h.state===`before`?{x:n.beforeOffsetX,y:n.beforeOffsetY}:{x:n.desiredOffsetX,y:n.desiredOffsetY})}return t},te=e=>{j();for(let[t,n]of e){if(!t.isConnected||!O(t)||n.x===0&&n.y===0)continue;let e={value:t.style.getPropertyValue(`transform`),priority:t.style.getPropertyPriority(`transform`)},i=r.getComputedStyle(t).transform,a=i&&i!==`none`?` ${i}`:``;t.style.setProperty(`transform`,`translate3d(${n.x}px, ${n.y}px, 0)${a}`,`important`),p.set(t,{element:t,transform:e})}},L=()=>te(ee()),R=e=>{j();try{return e()}finally{!v&&!g&&L()}},ne=()=>i.currentSelection().elements.filter(e=>e.isConnected&&O(e));e.state.register({id,initial:ne().length>0});let re=()=>e.state.get(id)??!1,ie=()=>{let t=ne().length>0;t!==re()&&e.state.update(id,()=>t)},z=()=>pd(ne().map(e=>qc(e))),ae=e=>{let t=C();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>=cd||a.has(i)||e.some(e=>e.contains(i))||!O(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=qc(i);if(c.width<=0||c.height<=0)return;let d=sd;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>=cd)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},oe=e=>{if(!S()){f.style.display=`none`;return}let t=e===void 0?z():e;if(!t){f.style.display=`none`;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`},se=()=>{h={intentId:null,state:`desired`},L(),M(),S()?P():F()},ce=()=>{h={intentId:null,state:`live`},j(),M(),F()},le=()=>{v||g||(L(),M(),S()?P():F(),oe())},ue=()=>{y||v||(y=r.requestAnimationFrame(()=>{y=0,le()}))},de=async()=>{s.querySelector(`[data-mesurer-builtin='select'] button`)?.getAttribute(`aria-pressed`)!==`true`&&await e.command.execute(ed,void 0,{source:`arrange`})},fe=e=>{if(!S()||e.button!==0)return;let t=ne();if(!t.length)return;e.preventDefault(),e.stopPropagation(),h={intentId:null,state:`desired`},L();let n=I(E());j();let r=t.map((e,t)=>{let r=qc(e),i=n.get(e)??{x:0,y:0},a=dd(r,i),o=el(e);return{element:e,target:{id:`target-${t+1}`,selector:$c(e),fingerprintTag:o.tag,fingerprintId:o.id,fingerprintTestId:o.testId,fingerprintRole:o.role,fingerprintAriaLabel:o.ariaLabel,fingerprintClasses:[...o.classes],fingerprintText:o.text,beforeLeft:a.left,beforeTop:a.top,beforeWidth:a.width,beforeHeight:a.height,desiredLeft:a.left,desiredTop:a.top,desiredWidth:a.width,desiredHeight:a.height,beforeOffsetX:i.x,beforeOffsetY:i.y,desiredOffsetX:i.x,desiredOffsetY:i.y}}}),i=pd(r.map(({target:e})=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight})));if(!i){L();return}L(),P(),M(),g={pointerId:e.pointerId,originX:e.clientX,originY:e.clientY,targets:r,groupBefore:i,snapCandidates:ae(t),dx:0,dy:0},oe(i),f.style.cursor=`grabbing`,f.setPointerCapture?.(e.pointerId)},pe=e=>{if(!g||e.pointerId!==g.pointerId)return;let t=e.clientX-g.originX,n=e.clientY-g.originY,r=null;e.shiftKey&&(Math.abs(t)>=Math.abs(n)?(n=0,r=`x`):(t=0,r=`y`));let i=dd(g.groupBefore,{x:t,y:n}),a=r===`y`?null:vd(`x`,i,g.snapCandidates),o=r===`x`?null:vd(`y`,i,g.snapCandidates);t+=a?.delta??0,n+=o?.delta??0,g.dx=t,g.dy=n;let s=I(E());for(let e of g.targets)s.set(e.element,{x:e.target.beforeOffsetX+t,y:e.target.beforeOffsetY+n});te(s);let c=dd(g.groupBefore,{x:t,y:n});oe(c),N(a,o,c)},me=()=>{if(!g)return;let e=g.pointerId;g=null,f.hasPointerCapture?.(e)&&f.releasePointerCapture(e),f.style.cursor=`grab`,se(),oe()},he=t=>{if(!g||t.pointerId!==g.pointerId)return;t.preventDefault(),t.stopPropagation();let n=g;if(g=null,f.hasPointerCapture?.(t.pointerId)&&f.releasePointerCapture(t.pointerId),f.style.cursor=`grab`,M(),n.dx===0&&n.dy===0){se(),oe();return}_={id:bd(r,`arrange`),createdAt:Date.now(),pageUrl:T(),targets:n.targets.map(({target:e})=>({...e,desiredLeft:e.beforeLeft+n.dx,desiredTop:e.beforeTop+n.dy,desiredOffsetX:e.beforeOffsetX+n.dx,desiredOffsetY:e.beforeOffsetY+n.dy}))},e.command.execute(nd).catch(()=>{_=null,se(),oe()})},ge=e=>{!g||e.pointerId!==g.pointerId||me()},_e=t=>{t.key!==`Escape`||!S()&&!g||Td(t.target)||s.querySelector(`[data-mesurer-tool-menu]`)||(t.preventDefault(),t.stopImmediatePropagation(),g?me():(e.state.update(`mesurer.arrange.active`,()=>!1),ce(),oe()))};f.addEventListener(`pointerdown`,fe),f.addEventListener(`pointermove`,pe),f.addEventListener(`pointerup`,he),f.addEventListener(`pointercancel`,ge),r.addEventListener(`keydown`,_e,!0),r.addEventListener(`resize`,ue),r.addEventListener(`scroll`,ue,!0),o.addEventListener(`scroll`,ue,!0),b=new c.MutationObserver(()=>{ie(),ue()}),b.observe(o,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`]});let ve=i.subscribe(()=>{ie(),ue()}),ye=e.state.subscribe(ue),be=e=>x().intents.find(t=>t.id===e)??null,xe=(e,t)=>{let n=null;if(n=t===`before`?pd(e.targets.map(e=>({left:e.beforeLeft,top:e.beforeTop,width:e.beforeWidth,height:e.beforeHeight}))):t===`desired`?pd(e.targets.map(e=>({left:e.desiredLeft,top:e.desiredTop,width:e.desiredWidth,height:e.desiredHeight}))):R(()=>pd(e.targets.map(e=>A(e)).filter(e=>e!==null).map(e=>qc(e)))),!n)throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);let i=Math.max(0,n.left-od),a=Math.max(0,n.top-od),o=Math.min(r.innerWidth,n.left+n.width+od),s=Math.min(r.innerHeight,n.top+n.height+od);return{left:i,top:a,width:Math.max(0,o-i),height:Math.max(0,s-a)}},Se={active:S,intents:()=>x().intents.map(Cd),intent(e){let t=be(e);return t?Cd(t):null},show(e,t){if(!be(e))throw Error(`Arrange intent not found: ${e}`);h={intentId:e,state:t},le()},showCurrent(){h={intentId:null,state:`desired`},le()},capturePlan(e,t){let n=be(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:xe(n,t)}]}},review:(e,t=ad)=>{let n=be(e);if(!n)throw Error(`Arrange intent not found: ${e}`);let r=R(()=>n.targets.map(e=>{let n=A(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=qc(n),a=fd(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}},clear:()=>e.command.execute(rd)};e.tool.register({id:`arrange`,label:`Arrange`,shortcut:`Shift+A`,order:65,command:td,icon:ud,active:S,menu:{label:`Arrange options`,items:[{id:`snapping`,label:`Snapping`,checked:()=>C().snapping,run:()=>w({snapping:!C().snapping})},{id:`element-edges`,label:`Element edges`,checked:()=>C().elementEdges,disabled:()=>!C().snapping,run:()=>w({elementEdges:!C().elementEdges})},{id:`element-centers`,label:`Element centers`,checked:()=>C().elementCenters,disabled:()=>!C().snapping,run:()=>w({elementCenters:!C().elementCenters})},{id:`guides`,label:`Guides`,checked:()=>C().guides,disabled:()=>!C().snapping,run:()=>w({guides:!C().guides})},{id:`prefer-xray-edges`,label:`Prefer X-ray edges`,checked:()=>C().preferXrayEdges,disabled:()=>!C().snapping||!C().elementEdges,run:()=>w({preferXrayEdges:!C().preferXrayEdges})},{id:`alignment-rulers`,label:`Alignment rulers`,checked:()=>C().snapLines,disabled:()=>!C().snapping,run:()=>w({snapLines:!C().snapLines})}]}}),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:()=>C().snapping,set:e=>w({snapping:e})},{type:`toggle`,id:`element-edges`,label:`Element edges`,description:`Snap left/right and top/bottom edges to nearby elements.`,value:()=>C().elementEdges,set:e=>w({elementEdges:e}),disabled:()=>!C().snapping},{type:`toggle`,id:`element-centers`,label:`Element centers`,description:`Snap center-to-center when X-ray edge preference is not active.`,value:()=>C().elementCenters,set:e=>w({elementCenters:e}),disabled:()=>!C().snapping},{type:`toggle`,id:`guides`,label:`Guides`,description:`Snap to existing Mesurer guides.`,value:()=>C().guides,set:e=>w({guides:e}),disabled:()=>!C().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:()=>C().preferXrayEdges,set:e=>w({preferXrayEdges:e}),disabled:()=>!C().snapping||!C().elementEdges},{type:`toggle`,id:`alignment-rulers`,label:`Alignment rulers`,description:`Show the red alignment ruler while a snap is active.`,value:()=>C().snapLines,set:e=>w({snapLines:e}),disabled:()=>!C().snapping}]}),e.command.register(td,async()=>{let t=!S();if(t&&await de(),e.state.update(`mesurer.arrange.active`,()=>t),!t){g&&me(),ce(),oe();return}se(),oe()}),e.command.register(nd,()=>{let t=_;_=null,t&&(e.state.update(`mesurer.arrange.intents`,e=>({intents:[...e.intents,t].slice(-100)})),se(),oe())}),e.command.register(rd,()=>{e.state.update(Xu,()=>({intents:[]})),h={intentId:null,state:`desired`},j(),M(),S()?P():F(),oe()}),e.service.provide(Yu,Se),L(),oe(),e.lifecycle.onDispose(()=>{v=!0,y&&r.cancelAnimationFrame(y),b?.disconnect(),b=null,f.removeEventListener(`pointerdown`,fe),f.removeEventListener(`pointermove`,pe),f.removeEventListener(`pointerup`,he),f.removeEventListener(`pointercancel`,ge),r.removeEventListener(`keydown`,_e,!0),r.removeEventListener(`resize`,ue),r.removeEventListener(`scroll`,ue,!0),o.removeEventListener(`scroll`,ue,!0),ve(),ye.dispose(),j(),M(),F(),i.dispose(),a.dispose()})}}),Dd=(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}`})}}),Od=()=>Dd(`select`,`Select`,`S`,10),kd=()=>Dd(`xray`,`X-ray`,`X`,20),Ad=()=>Dd(`color-picker`,`Color picker`,`P`,30),jd=()=>Dd(`rulers`,`Rulers`,`R`,40),Md=()=>Dd(`text-inspector`,`Text inspector`,`A`,50),Nd=()=>Dd(`guides`,`Guides`,`G`,60),Pd=()=>Dd(`settings`,`Settings`,`⌘/Ctrl+,`,90),Fd=()=>_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})}}),Id=()=>[Od(),kd(),Ad(),jd(),Md(),Nd(),Fd(),Pd()];function Ld(e=[],t=[]){let n=new Set(t.map(e=>`mesurer.${e}`));return[...Id().filter(e=>!n.has(e.id)),...e]}var Rd=`mesurer:capture-bridge-ping`,zd=`mesurer:capture-bridge-request`,Bd=`mesurer:capture-bridge-response`,Vd=(e,t,n)=>{let r=Math.max(0,Math.min(e.x,t.x,n.width)),i=Math.max(0,Math.min(e.y,t.y,n.height)),a=Math.max(0,Math.min(Math.max(e.x,t.x),n.width)),o=Math.max(0,Math.min(Math.max(e.y,t.y),n.height));return{left:r,top:i,width:Math.max(0,a-r),height:Math.max(0,o-i)}},Hd=async(e,t,n,r)=>{let i=await createImageBitmap(e);try{let e=i.width/n.width,a=i.height/n.height,o=Math.max(0,Math.round(t.left*e)),s=Math.max(0,Math.round(t.top*a)),c=Math.max(1,Math.min(i.width-o,Math.round(t.width*e))),l=Math.max(1,Math.min(i.height-s,Math.round(t.height*a))),u=r.createElement(`canvas`);u.width=c,u.height=l;let d=u.getContext(`2d`);if(!d)throw Error(`Could not crop screenshot`);return d.drawImage(i,o,s,c,l,0,0,c,l),await new Promise((e,t)=>{u.toBlob(n=>{n?e(n):t(Error(`Could not crop screenshot`))},`image/png`)})}finally{i.close()}},Ud=async(e,t)=>{let n=t.navigator.clipboard,r=globalThis.ClipboardItem;if(!n?.write||!r)throw Error(`PNG clipboard copy is not available`);await n.write([new r({"image/png":e})])},Wd=(e=new Date)=>{let t=e=>String(e).padStart(2,`0`);return`mesurer-${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}-${t(e.getHours())}${t(e.getMinutes())}${t(e.getSeconds())}.png`},Gd=(e,t,n,r)=>{let i=globalThis.URL.createObjectURL(e),a=n.createElement(`a`);a.href=i,a.download=t,a.rel=`noopener`,n.documentElement.append(a),a.click(),a.remove(),r.setTimeout(()=>globalThis.URL.revokeObjectURL(i),1e3)},Kd=e=>new Promise(t=>{e.requestAnimationFrame(()=>{e.requestAnimationFrame(()=>t())})}),qd=e=>e.crypto?.randomUUID?.()??`mesurer-${Date.now()}-${Math.random().toString(36).slice(2)}`,Jd=(e,t,n=``)=>`${e}:${t}:${n}`,Yd=(e,t,n)=>{let r=`${t}:${n}:`;return e.startsWith(r)?e.slice(r.length):null},Xd=e=>new Promise(t=>{let n=qd(e),r=e.location.origin,i=o=>{o.source===e&&o.origin===r&&Yd(String(o.data??``),`mesurer:capture-bridge-pong`,n)!==null&&(e.removeEventListener(`message`,i),e.clearTimeout(a),t(!0))},a=e.setTimeout(()=>{e.removeEventListener(`message`,i),t(!1)},80);e.addEventListener(`message`,i),e.postMessage(Jd(Rd,n),r)}),Zd=e=>new Promise((t,n)=>{let r=qd(e),i=e.location.origin,a=s=>{if(s.source!==e||s.origin!==i)return;let c=Yd(String(s.data??``),Bd,r);if(c===null)return;if(e.removeEventListener(`message`,a),e.clearTimeout(o),!c.startsWith(`ok:`)){t(null);return}let l=c.slice(3);if(!l){t(null);return}e.fetch(l).then(e=>e.blob()).then(t,n)},o=e.setTimeout(()=>{e.removeEventListener(`message`,a),t(null)},4e3);e.addEventListener(`message`,a),e.postMessage(Jd(zd,r),i)}),Qd=new WeakMap,$d=e=>{let t=Qd.get(e),n=t?.stream.getVideoTracks()[0];if(!t||!n||n.readyState!==`live`){Qd.delete(e);return}return t},ef=async(e,t)=>{let n=$d(t);if(n)return n;let r=t.navigator.mediaDevices;if(!r?.getDisplayMedia)throw Error(`Screenshot capture is unavailable`);let i=await r.getDisplayMedia({audio:!1,video:!0,preferCurrentTab:!0,selfBrowserSurface:`include`}),a=i.getVideoTracks()[0];if(!a)throw i.getTracks().forEach(e=>e.stop()),Error(`Capture failed`);try{let n=e.createElement(`video`);n.autoplay=!0,n.muted=!0,n.playsInline=!0,n.srcObject=i,await n.play(),(n.videoWidth===0||n.videoHeight===0)&&await new Promise(e=>{n.onloadedmetadata=()=>e()});let r={stream:i,video:n};return Qd.set(t,r),a.addEventListener(`ended`,()=>{Qd.get(t)===r&&Qd.delete(t)},{once:!0}),r}catch(e){throw i.getTracks().forEach(e=>e.stop()),e}},tf=e=>{let t=Qd.get(e);t&&(Qd.delete(e),t.video.pause(),t.video.srcObject=null,t.stream.getTracks().forEach(e=>e.stop()))},nf=async({ownerDocument:e,ownerWindow:t})=>{let{video:n}=await ef(e,t),r=e.createElement(`canvas`);r.width=n.videoWidth,r.height=n.videoHeight;let i=r.getContext(`2d`);if(!i)throw Error(`Capture failed`);return i.drawImage(n,0,0),await new Promise((e,t)=>{r.toBlob(n=>{n?e(n):t(Error(`Capture failed`))},`image/png`)})},rf=async(e,t)=>{await Xd(t)||await ef(e,t)},af=async({ownerDocument:e,ownerWindow:t})=>{if(await Xd(t)){let e=await Zd(t);if(e)return e}return nf({ownerDocument:e,ownerWindow:t})},of=144,sf=96,cf=8,lf=4,uf=1800,df=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},ff=(e,t)=>({left:Math.min(Math.max(cf,e.left),Math.max(cf,t.innerWidth-of-cf)),top:Math.min(Math.max(cf,e.top),Math.max(cf,t.innerHeight-sf-cf))}),pf=(e,t)=>{let n=e.createElement(`button`);return n.type=`button`,n.textContent=t,df(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},mf=({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`,hf=e=>e!==null&&(e.nodeType===1||e.nodeType===11),gf=({ownerDocument:e,ownerWindow:t,root:n,previewDurationMs:r})=>{let i=n.closest(`[data-mesurer-root='true']`)?.parentNode??n.parentNode;if(!hf(i))throw Error(`Screenshot preview requires a mounted Mesurer host.`);let a=e.createElement(`div`);a.dataset.mesurerInspectorUi=`true`,a.dataset.mesurerScreenshotInteractive=`true`,df(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,df(o,{position:`fixed`,display:`none`,"z-index":`96`,width:`${of}px`,height:`${sf}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`,df(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`,df(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`),df(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`,df(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`,df(p,{position:`fixed`,top:`16px`,right:`16px`,display:`flex`,gap:`8px`,"pointer-events":`auto`});let m=pf(e,`Copy`);m.dataset.mesurerScreenshotViewerCopy=`true`,m.setAttribute(`aria-label`,`Copy screenshot`);let h=pf(e,`Save`);h.dataset.mesurerScreenshotViewerSave=`true`,h.setAttribute(`aria-label`,`Save screenshot`);let g=pf(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`),df(_,{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`},uf)},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=()=>ff({left:t.innerWidth-of-cf,top:t.innerHeight-sf-cf},t),M=e=>{let n=ff(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 Ud(Promise.resolve(e),t),D(`Copied screenshot`)}catch{D(`Could not copy screenshot`,!0)}},F=()=>{let n=v;if(n)try{Gd(n,Wd(),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},ee=(e,t)=>{let n=x;if(!n)return;let r=e-n.startX,i=t-n.startY;!n.moved&&Math.hypot(r,i)>=lf&&(n.moved=!0),n.moved&&M({left:n.left+r,top:n.top+i})},te=()=>{let e=x;e&&(x=null,o.style.cursor=`grab`,e.moved||N())},L=()=>{x&&(x=null,o.style.cursor=`grab`)},R=e=>{e.button!==0||!I(e.clientX,e.clientY,null)||e.preventDefault()},ne=e=>{x?.pointerId===null&&ee(e.clientX,e.clientY)},re=e=>{e.button===0&&x?.pointerId===null&&te()},ie=e=>{e.pointerType!==`mouse`&&e.button===0&&I(e.clientX,e.clientY,e.pointerId)&&(o.setPointerCapture?.(e.pointerId),e.preventDefault())},z=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&ee(e.clientX,e.clientY)},ae=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),te())},oe=e=>{let t=x?.pointerId;t!=null&&t===e.pointerId&&(o.hasPointerCapture?.(e.pointerId)&&o.releasePointerCapture(e.pointerId),L())},se=e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),N())},ce=e=>{e.target!==s&&e.preventDefault()},le=e=>{e.target===d&&O()},ue=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`,R),o.addEventListener(`pointerdown`,ie),o.addEventListener(`keydown`,se),o.addEventListener(`contextmenu`,ce),d.addEventListener(`click`,le),m.addEventListener(`click`,()=>{P()}),h.addEventListener(`click`,F),g.addEventListener(`click`,O),t.addEventListener(`mousemove`,ne,!0),t.addEventListener(`mouseup`,re,!0),t.addEventListener(`pointermove`,z,!0),t.addEventListener(`pointerup`,ae,!0),t.addEventListener(`pointercancel`,oe,!0),t.addEventListener(`keydown`,ue,!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(mf(n)),r>0&&(S=t.setTimeout(A,r))},dismiss:A,dispose(){w||(w=!0,T(),E(),A(),t.removeEventListener(`mousemove`,ne,!0),t.removeEventListener(`mouseup`,re,!0),t.removeEventListener(`pointermove`,z,!0),t.removeEventListener(`pointerup`,ae,!0),t.removeEventListener(`pointercancel`,oe,!0),t.removeEventListener(`keydown`,ue,!0),o.removeEventListener(`mousedown`,R),o.removeEventListener(`pointerdown`,ie),o.removeEventListener(`keydown`,se),o.removeEventListener(`contextmenu`,ce),d.removeEventListener(`click`,le),a.remove())}}},_f=`mesurer.screenshot`,vf=`screenshot`,yf=`mesurer.screenshot.settings`,bf=`mesurer.screenshot.active`,xf=`runtime:solid`,Sf=`screenshot.toggle`,Cf=2500,wf=0,Tf=[`[data-mesurer-measurement='true']`,`[data-mesurer-selected-measurement='true']`,`[data-mesurer-selection-spacing-target='true']`,`[data-mesurer-guide='true']`,`[data-mesurer-distance='true']`].join(`,`),Ef={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`]},Df=(e,t)=>{for(let[n,r]of Object.entries(t))e.style.setProperty(n,r)},Of=(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`)}},kf=e=>{let t=e(yf);return{toolEnabled:t?.toolEnabled??!0,copy:t?.copy??!0,download:t?.download??!1,includeMeasurements:t?.includeMeasurements??!1}},Af=e=>({value:e.style.getPropertyValue(`display`),priority:e.style.getPropertyPriority(`display`)}),jf=(e,t)=>{t.value||t.priority?e.style.setProperty(`display`,t.value,t.priority):e.style.removeProperty(`display`)},Mf=(e,t)=>{let n=e;for(;n.parentElement&&n.parentElement!==t;)n=n.parentElement;return n.parentElement===t?n:null},Nf=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=Mf(e,t);r&&n.add(r)}for(let e of t.querySelectorAll(Tf)){let r=Mf(e,t);r&&n.add(r)}let r=[];for(let e of n)e.dataset.mesurerInspectorUi!==`true`&&(r.push({element:e,display:Af(e)}),e.style.setProperty(`display`,`none`,`important`));return()=>{for(let e of r)jf(e.element,e.display)}},Pf=(e={})=>_a({id:_f,version:`0.1.0`,requires:[xf],provides:[`tool:screenshot`,`capture:screenshot`,`settings:screenshot`],setup(t){let n=t.service.get(xf);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.captureVisibleTab??af,c=e.previewDurationMs??wf;t.state.register({id:yf,initial:{toolEnabled:e.toolEnabled??!0,copy:e.copy??!0,download:e.download??!1,includeMeasurements:e.includeMeasurements??!1},persist:!0}),t.state.register({id:bf,initial:!1});let l=o.element;l.dataset.mesurerScreenshot=`true`,Df(l,{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 u=r.createElement(`div`);u.dataset.mesurerScreenshotSelect=`true`,u.setAttribute(`role`,`application`),u.setAttribute(`aria-label`,`Screenshot selection`),Df(u,{position:`fixed`,inset:`0`,display:`none`,"z-index":`85`,cursor:`crosshair`,"pointer-events":`auto`,"user-select":`none`,"touch-action":`none`}),l.append(u);let d=Array.from({length:4},()=>{let e=r.createElement(`div`);return Df(e,{position:`fixed`,"background-color":`rgb(0 0 0 / 40%)`,"pointer-events":`none`}),u.append(e),e}),f=r.createElement(`div`);Df(f,{position:`fixed`,display:`none`,border:`1px solid #0d99ff`,"box-sizing":`border-box`,"pointer-events":`none`}),u.append(f);let p=r.createElement(`div`);Df(p,{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`}),u.append(p);let m=r.createElement(`div`);m.textContent=`Drag to select · Esc to cancel`,Df(m,{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`}),u.append(m);let h=r.createElement(`div`);h.dataset.mesurerScreenshotError=`true`,h.setAttribute(`role`,`status`),h.textContent=`Could not save screenshot`,Df(h,{position:`fixed`,display:`none`,"z-index":`97`,"border-radius":`6px`,padding:`6px 8px`,"background-color":`#b42318`,color:`white`,"font-size":`11px`,"pointer-events":`none`}),l.append(h);let g=null,_=null,v=0,y=0,b=!1,x=!1,S=!1,C=()=>t.state.get(`mesurer.screenshot.active`)??!1,w=()=>kf(t.state.get),T=e=>{t.state.update(yf,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})},E=e=>{C()!==e&&t.state.update(`mesurer.screenshot.active`,()=>e)},D=()=>{if(_)return;let e=n.portalTarget.querySelector(`[data-mesurer-toolbar='true']`);e&&(_={element:e,visibility:{value:e.style.getPropertyValue(`visibility`),priority:e.style.getPropertyPriority(`visibility`)}},e.style.setProperty(`visibility`,`hidden`,`important`))},O=()=>{if(!_)return;let{element:e,visibility:t}=_;_=null,t.value||t.priority?e.style.setProperty(`visibility`,t.value,t.priority):e.style.removeProperty(`visibility`)},k=e=>{let t=i.innerWidth,n=i.innerHeight;if(!e||e.width<=0||e.height<=0){Of(d[0],{left:0,top:0,width:t,height:n});for(let e of d.slice(1))Of(e,{left:0,top:0,width:0,height:0});f.style.display=`none`,p.style.display=`none`;return}Of(d[0],{left:0,top:0,width:t,height:e.top}),Of(d[1],{left:0,top:e.top,width:e.left,height:e.height}),Of(d[2],{left:e.left+e.width,top:e.top,width:Math.max(0,t-e.left-e.width),height:e.height}),Of(d[3],{left:0,top:e.top+e.height,width:t,height:Math.max(0,n-e.top-e.height)}),f.style.display=`block`,Of(f,e),p.style.display=`block`,p.textContent=`${Math.round(e.width)} × ${Math.round(e.height)}`,Of(p,{left:e.left+e.width/2,top:Math.min(n-22,e.top+e.height+6)})},A=()=>n.portalTarget.querySelector(`[data-mesurer-tool-id='screenshot']`)?.getBoundingClientRect()??null,j=gf({ownerDocument:r,ownerWindow:i,root:l,previewDurationMs:c}),M=e=>{let t=A(),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`},N=()=>{v&&i.clearTimeout(v),h.style.display=`block`,M(h),v=i.setTimeout(()=>{v=0,h.style.display=`none`},Cf)},P=()=>{g=null,k(null),u.style.visibility=``,u.style.display=`none`,l.style.pointerEvents=`none`,E(!1),O()},F=()=>{y+=1,P(),tf(i)},I=async e=>{if(b)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.`);b=!0;let o=++y,c=w(),l=c.includeMeasurements?()=>void 0:Nf(n.portalTarget);a.prepareCapture();try{u.style.visibility=`hidden`,await Kd(i);let n=await Hd(await s({ownerDocument:r,ownerWindow:i}),e,{width:i.innerWidth,height:i.innerHeight},r);if(y!==o)throw Error(`Screenshot capture was cancelled.`);let a=!1,l=!1,d=c.copy?Ud(Promise.resolve(n),i).then(()=>{a=!0}):Promise.resolve(),f=c.download?Promise.resolve().then(()=>{Gd(n,Wd(),r,i),l=!0}):Promise.resolve(),p=await Promise.allSettled([d,f]),m=c.copy&&p[0]?.status===`rejected`,h=c.download&&p[1]?.status===`rejected`;if(y!==o)throw Error(`Screenshot capture was cancelled.`);return j.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 y===o&&N(),e}finally{u.style.visibility=``,l(),a.finishCapture(),b=!1}},ee=async()=>{if(w().toolEnabled){if(C()){F();return}if(!x){x=!0,j.dismiss();try{if(e.captureVisibleTab===void 0&&await rf(r,i),S)return;D(),k(null),u.style.visibility=`visible`,l.style.pointerEvents=`auto`,u.style.display=`block`,E(!0)}catch(e){throw e instanceof Error&&e.name===`AbortError`||N(),e}finally{x=!1}}}},te=e=>{!C()||e.button!==0||(e.preventDefault(),e.stopPropagation(),g={x:e.clientX,y:e.clientY},k(Vd(g,g,{width:i.innerWidth,height:i.innerHeight})),u.setPointerCapture?.(e.pointerId))},L=e=>{!C()||!g||k(Vd(g,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight}))},R=e=>{let t=g;if(g=null,!C()||!t)return;u.hasPointerCapture?.(e.pointerId)&&u.releasePointerCapture(e.pointerId);let n=Vd(t,{x:e.clientX,y:e.clientY},{width:i.innerWidth,height:i.innerHeight});if(k(n),n.width<4||n.height<4){k(null);return}I(n).catch(()=>void 0).finally(()=>{C()&&P()})},ne=e=>{g=null,u.hasPointerCapture?.(e.pointerId)&&u.releasePointerCapture(e.pointerId),k(null)},re=e=>{e.key!==`Escape`||!C()||(e.preventDefault(),e.stopImmediatePropagation(),F())};u.addEventListener(`pointerdown`,te),u.addEventListener(`pointermove`,L),u.addEventListener(`pointerup`,R),u.addEventListener(`pointercancel`,ne),i.addEventListener(`keydown`,re,!0);let ie={active:C,settings:w,setSettings:T,start:ee,cancel:F,capture:I};t.tool.register({id:`screenshot`,label:`Screenshot`,shortcut:`Shift+S`,order:70,command:Sf,icon:Ef,active:C,hidden:()=>!w().toolEnabled,menu:{label:`Screenshot options`,items:[{id:`copy`,label:`Auto-copy`,checked:()=>w().copy,run:()=>T({copy:!w().copy})},{id:`download`,label:`Auto-download`,checked:()=>w().download,run:()=>T({download:!w().download})},{id:`measurements`,label:`Include measurements`,checked:()=>w().includeMeasurements,run:()=>T({includeMeasurements:!w().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:()=>w().toolEnabled,set:e=>{T({toolEnabled:e}),!e&&C()&&F()}},{type:`toggle`,id:`copy`,label:`Auto-copy`,description:`Copy each successful capture when the browser allows it.`,value:()=>w().copy,set:e=>T({copy:e})},{type:`toggle`,id:`download`,label:`Auto-download`,description:`Download each successful capture as a PNG.`,value:()=>w().download,set:e=>T({download:e})},{type:`toggle`,id:`measurements`,label:`Include measurements`,description:`Keep selections, measurements, guides, distances, and rulers in the PNG.`,value:()=>w().includeMeasurements,set:e=>T({includeMeasurements:e})}]}),t.command.register(Sf,ee),t.service.provide(vf,ie),t.lifecycle.onDispose(()=>{S=!0,y+=1,u.removeEventListener(`pointerdown`,te),u.removeEventListener(`pointermove`,L),u.removeEventListener(`pointerup`,R),u.removeEventListener(`pointercancel`,ne),i.removeEventListener(`keydown`,re,!0),v&&i.clearTimeout(v),j.dispose(),O(),tf(i),a.finishCapture(),a.dispose(),o.dispose()})}}),Ff=`arrange.toggle`;function If(e,t){let n=t.createWorkspaceRuntime(),r=!1,i=0,a=!1,o=()=>{r||i||(i=t.ownerWindow.requestAnimationFrame(()=>{i=0;let n=t.currentToolMode?.();r||a||n===void 0||n===`select`||(e.state.get(`mesurer.arrange.active`)??!1)&&(a=!0,e.command.execute(Ff,void 0,{source:`select-deactivated`}).catch(()=>void 0).finally(()=>{a=!1}))}))},s=n.subscribe(o);e.state.subscribe(o),o(),e.lifecycle.onDispose(()=>{r=!0,i&&t.ownerWindow.cancelAnimationFrame(i),i=0,s(),n.dispose()})}var Lf=`mesurer.text-edit.intents`,Rf=`text-edit`,zf=`text-edit.commit`,Bf=`text-edit.clear`,Vf=new Set([`HTML`,`BODY`,`SCRIPT`,`STYLE`,`META`,`LINK`,`NOSCRIPT`,`IMG`,`VIDEO`,`AUDIO`,`IFRAME`,`INPUT`,`TEXTAREA`,`SELECT`,`OPTION`]),Hf=e=>{let{origin:t,pathname:n,search:r}=e.location;return`${t}${n}${r}`},Uf=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,Wf=e=>({tag:e.fingerprintTag,id:e.fingerprintId,testId:e.fingerprintTestId,role:e.fingerprintRole,ariaLabel:e.fingerprintAriaLabel,classes:e.fingerprintClasses,text:e.fingerprintText}),Gf=e=>({id:e.id,createdAt:e.createdAt,pageUrl:e.pageUrl,selector:e.selector,nodeIndex:e.nodeIndex,before:e.beforeText,desired:e.desiredText}),Kf=e=>{let t=e.match(/^\s*/)?.[0]??``,n=e.slice(t.length),r=n.match(/\s*$/)?.[0]??``;return{leading:t,trailing:r,value:n.slice(0,Math.max(0,n.length-r.length))}};function qf(e,t){let{ownerDocument:n,ownerWindow:r,pageTarget:i}=t,a=r,o=t.createWorkspaceRuntime(),s=t.createInspectorMount();s.element.dataset.mesurerTextEditRuntime=`true`,s.element.style.position=`fixed`,s.element.style.inset=`0`,s.element.style.zIndex=`2147483646`,s.element.style.pointerEvents=`none`,e.state.register({id:Lf,initial:{edits:[]},history:!0,persist:!0});let c=()=>e.state.get(`mesurer.text-edit.intents`)??{edits:[]},l=new Map,u=new Map,d=new WeakMap,f=null,p=null,m=!1,h=0,g=()=>t.currentToolMode?.()??`none`,_=e=>Zc(e,i)&&!e.closest(`[data-mesurer-root='true'], [data-mesurer-inspector-ui='true']`),v=e=>{let t=[];i instanceof a.HTMLElement&&i.matches(e)&&_(i)&&t.push(i);for(let n of i.querySelectorAll(e))n instanceof a.HTMLElement&&_(n)&&t.push(n);return t},y=e=>{let t=l.get(e.id);if(t?.element.isConnected&&t.node.isConnected&&_(t.element))return t;l.delete(e.id);let n=Wf(e);if(!tl(n))return null;let r=[];try{r=v(e.selector).filter(e=>nl(e,n))}catch{return null}if(r.length!==1)return null;if(!n.id&&!n.testId){let e=[];try{e=v(n.tag).filter(e=>nl(e,n))}catch{return null}if(e.length!==1||e[0]!==r[0])return null}let i=r[0],o=i.childNodes.item(e.nodeIndex);if(!o||o.nodeType!==a.Node.TEXT_NODE)return null;let s={element:i,node:o};return l.set(e.id,s),s},b=(e,t)=>{e.nodeValue!==t&&(d.set(e,(d.get(e)??0)+1),e.nodeValue=t)},x=()=>{for(let e of u.values())e.node.isConnected&&e.node.nodeValue===e.desiredText&&b(e.node,e.beforeText);u.clear()},S=()=>{let e=c().edits.filter(e=>e.pageUrl===Hf(r)),t=new Set(e.map(e=>e.id));for(let[e,n]of u)t.has(e)&&n.node.isConnected||(n.node.isConnected&&n.node.nodeValue===n.desiredText&&b(n.node,n.beforeText),u.delete(e));for(let t of e){let e=y(t);if(!e)continue;let n=e.node.nodeValue??``,r=u.get(t.id);if(r?.node===e.node){if(n===r.desiredText)continue;if(n!==r.beforeText&&n!==t.beforeText){u.delete(t.id);continue}}n!==t.desiredText&&n===t.beforeText&&(b(e.node,t.desiredText),u.set(t.id,{...e,beforeText:t.beforeText,desiredText:t.desiredText}))}},C=()=>{let e=p;if(!e||!e.element.isConnected)return;let t=e.element.getBoundingClientRect(),n=r.getComputedStyle(e.element),i=Math.min(Math.max(120,t.width),Math.max(120,r.innerWidth-16)),a=Math.min(Math.max(8,t.left),Math.max(8,r.innerWidth-i-8)),o=Math.min(Math.max(8,t.top),Math.max(8,r.innerHeight-Math.max(36,t.height)-8));Object.assign(e.editor.style,{left:`${a}px`,top:`${o}px`,width:`${i}px`,minHeight:`${Math.max(36,t.height)}px`,fontFamily:n.fontFamily,fontSize:n.fontSize,fontWeight:n.fontWeight,fontStyle:n.fontStyle,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,color:n.color})},w=()=>{let e=p;e&&(e.editor.remove(),p=null)},T=()=>{let e=p;e&&(b(e.node,e.initialText),w())},E=()=>{let t=p;if(!t)return;let n=`${t.leading}${t.editor.value}${t.trailing}`;if(n===t.initialText){b(t.node,t.initialText),w();return}f={id:t.editId,createdAt:Date.now(),pageUrl:Hf(r),selector:t.selector,nodeIndex:t.nodeIndex,beforeText:t.beforeText,desiredText:n,fingerprintTag:t.fingerprint.tag,fingerprintId:t.fingerprint.id,fingerprintTestId:t.fingerprint.testId,fingerprintRole:t.fingerprint.role,fingerprintAriaLabel:t.fingerprint.ariaLabel,fingerprintClasses:t.fingerprint.classes,fingerprintText:t.fingerprint.text},l.set(t.editId,{element:t.element,node:t.node}),n!==t.beforeText&&u.set(t.editId,{element:t.element,node:t.node,beforeText:t.beforeText,desiredText:n}),b(t.node,n),w(),e.command.execute(zf,void 0,{source:`text-inspector`}).catch(()=>{u.delete(t.editId),t.node.isConnected&&t.node.nodeValue===n&&b(t.node,t.beforeText)})},D=(e,t)=>{for(let r of n.elementsFromPoint(e,t)){if(!(r instanceof a.HTMLElement)||!_(r)||Vf.has(r.tagName)||r.matches(`[contenteditable='true'], [contenteditable=''], [contenteditable='plaintext-only']`))continue;let e=Array.from(r.childNodes).map((e,t)=>({node:e,index:t})).filter(({node:e})=>e.nodeType===a.Node.TEXT_NODE&&!!e.nodeValue?.trim());if(e.length===1)return{element:r,node:e[0].node,nodeIndex:e[0].index}}return null},O=(e,t,n,i)=>{let a=Hf(r);return c().edits.find(r=>{if(r.pageUrl!==a||r.nodeIndex!==i)return!1;let o=y(r);return o?.element===e&&o.node===t||r.selector===n})??null},k=e=>{if(!(e instanceof a.MouseEvent)||g()!==`text-inspector`)return;let t=D(e.clientX,e.clientY);if(!t)return;e.preventDefault(),e.stopImmediatePropagation(),T();let i=$c(t.element),o=el(t.element),c=O(t.element,t.node,i,t.nodeIndex),l=t.node.nodeValue??``,d=c?u.get(c.id)?.node===t.node:!1,f=l,m=l,h=c?.id??Uf(r,`text-edit`);c&&d?(f=c.beforeText,m=c.desiredText,b(t.node,m)):c&&l===c.beforeText?(f=c.beforeText,m=c.desiredText,b(t.node,m),u.set(c.id,{...t,beforeText:f,desiredText:m})):c&&l===c.desiredText&&(f=l,m=l);let _=Kf(m),v=n.createElement(`textarea`);v.dataset.mesurerTextEditor=`true`,v.dataset.mesurerInspectorUi=`true`,v.setAttribute(`aria-label`,`Edit text`),v.value=_.value,Object.assign(v.style,{position:`fixed`,boxSizing:`border-box`,zIndex:`2147483647`,pointerEvents:`auto`,resize:`none`,overflow:`hidden`,border:`1px solid #0d99ff`,borderRadius:`6px`,outline:`none`,padding:`4px 6px`,background:`white`,boxShadow:`0 6px 20px rgba(0,0,0,.16)`}),s.element.append(v),p={element:t.element,node:t.node,editor:v,editId:h,beforeText:f,initialText:m,leading:_.leading,trailing:_.trailing,nodeIndex:t.nodeIndex,selector:i,fingerprint:o},C(),v.addEventListener(`input`,()=>{let e=p;!e||e.editor!==v||(b(e.node,`${e.leading}${v.value}${e.trailing}`),v.style.height=`auto`,v.style.height=`${Math.max(36,v.scrollHeight)}px`)}),v.focus({preventScroll:!0}),v.setSelectionRange(0,v.value.length)},A=()=>{if(h=0,!m){if(g()!==`text-inspector`){p&&T(),x();return}S(),C()}},j=()=>{m||h||(h=r.requestAnimationFrame(A))},M=e=>{let t=p;!t||e.composedPath().includes(t.editor)||E()},N=t=>{if(p){if(t.key===`Escape`){t.preventDefault(),t.stopImmediatePropagation(),T();return}t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),t.stopImmediatePropagation(),E());return}t.key===`Escape`&&g()===`text-inspector`&&e.command.execute(Bf,void 0,{source:`text-inspector-clear`})},P=new a.MutationObserver(e=>{for(let t of e){if(t.type!==`characterData`||!(t.target instanceof a.Text))continue;let e=t.target,n=d.get(e)??0;if(n>0){n===1?d.delete(e):d.set(e,n-1);continue}for(let[t,n]of u)n.node===e&&u.delete(t)}j()});P.observe(i,{childList:!0,subtree:!0,characterData:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`]}),e.command.register(zf,()=>{let t=f;f=null,t&&e.state.update(Lf,e=>{let n=e.edits.filter(e=>e.id!==t.id);return{edits:t.desiredText===t.beforeText?n:[...n,t].slice(-100)}})}),e.command.register(Bf,()=>{f=null,e.state.update(Lf,()=>({edits:[]}))}),e.service.provide(Rf,{intents:()=>c().edits.map(Gf),clear:()=>e.command.execute(Bf)});let F=o.subscribe(j);e.state.subscribe(j),i.addEventListener(`dblclick`,k,!0),r.addEventListener(`pointerdown`,M,!0),r.addEventListener(`keydown`,N,!0),r.addEventListener(`resize`,j),r.addEventListener(`scroll`,j,!0),j(),e.lifecycle.onDispose(()=>{m=!0,h&&r.cancelAnimationFrame(h),h=0,T(),x(),P.disconnect(),F(),i.removeEventListener(`dblclick`,k,!0),r.removeEventListener(`pointerdown`,M,!0),r.removeEventListener(`keydown`,N,!0),r.removeEventListener(`resize`,j),r.removeEventListener(`scroll`,j,!0),l.clear(),o.dispose(),s.dispose()})}var Jf=e=>({...e,anchor:e.anchor.kind===`elements`?{kind:`elements`,region:e.anchor.region?$i(e.anchor.region):null,targets:e.anchor.targets.map(e=>({...e,fingerprint:{...e.fingerprint,classes:[...e.fingerprint.classes]},lastRect:$i(e.lastRect)}))}:{kind:`region`,rect:$i(e.anchor.rect)},baseline:{targets:e.baseline.targets.map(e=>({...e,rect:$i(e.rect)})),guides:e.baseline.guides.map(e=>({...e})),measurements:e.baseline.measurements.map(e=>({...e,rect:$i(e.rect)})),distances:e.baseline.distances.map(e=>({...e,rectA:$i(e.rectA),rectB:$i(e.rectB),horizontal:e.horizontal?{...e.horizontal}:null,vertical:e.vertical?{...e.vertical}:null}))}}),Yf=(e,t)=>`${t}-${e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`,Xf=e=>{let t=new Set,n=[];for(let r of e.current.selectedMeasurements){let e=r.elementRef;!e?.isConnected||t.has(e)||(t.add(e),n.push(e))}let r=e.current.selectedMeasurement?.elementRef;return r?.isConnected&&!t.has(r)&&n.push(r),n};function Zf(e){let{model:t,ownerDocument:n,ownerWindow:r,uiRoot:i}=e,a=r,o=e.pageTarget??n.body??n.documentElement,s=o instanceof a.ShadowRoot?o:o.getRootNode(),c=s instanceof a.ShadowRoot?s:n,l=o,u=[],d=new Set,f=new Map,p=new Map,m=new Map,h=!1,g=0,_=null,v=!1,y=(e,t)=>`${e}:${t}`,b=e=>o===e||o.contains(e),x=e=>{let t=[];o instanceof a.HTMLElement&&o.matches(e)&&t.push(o);for(let n of c.querySelectorAll(e))n instanceof a.HTMLElement&&b(n)&&t.push(n);return t},S=()=>{for(let e of d)e()},C=e=>{if(!tl(e.fingerprint))return null;let t=[];try{t=x(e.selector).filter(t=>nl(t,e.fingerprint))}catch{return null}if(t.length!==1)return null;if(!e.fingerprint.id&&!e.fingerprint.testId){let n=[];try{n=x(e.fingerprint.tag).filter(t=>nl(t,e.fingerprint))}catch{return null}if(n.length!==1||n[0]!==t[0])return null}return t[0]??null},w=(e,t)=>{let n=y(e,t.id),r=p.get(n);if(r?.isConnected&&b(r))return r;r&&p.delete(n);let i=C(t);return i&&p.set(n,i),i},T=()=>{let e=!1;for(let t of u)if(t.anchor.kind===`elements`)for(let n of t.anchor.targets){let r=y(t.id,n.id),i=w(t.id,n),a=!!i;if(m.get(r)!==a&&(m.set(r,a),e=!0),!i)continue;let o=qc(i);(o.left!==n.lastRect.left||o.top!==n.lastRect.top||o.width!==n.lastRect.width||o.height!==n.lastRect.height)&&(n.lastRect=o,e=!0)}e&&S()},E=()=>{g||h||u.length===0||(g=r.requestAnimationFrame(()=>{g=0,T()}))},D=()=>{v||h||u.length===0||(v=!0,_=new a.MutationObserver(E),_.observe(l,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`id`,`class`,`data-testid`,`role`,`aria-label`,`style`]}),r.addEventListener(`resize`,E),r.addEventListener(`scroll`,E,!0),o.addEventListener(`scroll`,E,!0))},O=()=>{v&&(v=!1,_?.disconnect(),_=null,r.removeEventListener(`resize`,E),r.removeEventListener(`scroll`,E,!0),o.removeEventListener(`scroll`,E,!0),g&&r.cancelAnimationFrame(g),g=0)},k=t.subscribe(S),A=()=>({guides:t.current.guides,measurements:t.current.measurements,activeMeasurement:t.current.activeMeasurement,distances:t.current.heldDistances}),j=e=>aa({...e,workspace:A(),guideTolerance:10}),M=(e,t)=>({id:`target-${t+1}`,selector:$c(e),fingerprint:el(e),lastRect:qc(e)}),N=e=>{let n=[...new Set(e.map(e=>e.trim()).filter(Boolean))];if(!n.length)throw Error(`Mesurer select() requires at least one selector.`);let i=n.map(e=>{let t;try{t=x(e)}catch{throw Error(`Invalid Mesurer selection selector: ${e}`)}if(t.length===0)throw Error(`Mesurer selection target not found: ${e}`);if(t.length>1)throw Error(`Mesurer selection target is ambiguous (${t.length} matches): ${e}`);return t[0]});t.checkpoint(),t.setEnabled(!0),t.setToolMode(`select`);let a=i.map(e=>rl(e,r));return t.setSelectedMeasurements(a,a.at(-1)??null),t.setTransient({selectionOriginRect:null}),i},P=(e,t=[])=>(u.push(e),e.anchor.kind===`elements`&&e.anchor.targets.forEach((n,r)=>{let i=t[r],a=y(e.id,n.id);i&&b(i)&&p.set(a,i),m.set(a,!!(i&&b(i)))}),D(),S(),Jf(e)),F=(e,t)=>{let n=e.trim();if(!n)throw Error(`Annotation note cannot be empty.`);let i=$i(t);return P({id:Yf(r,`annotation`),note:n,createdAt:Date.now(),anchor:{kind:`region`,rect:i},baseline:j({targets:[],region:i})})},I=e=>{let n=e.trim();if(!n)throw Error(`Annotation note cannot be empty.`);let i=Xf(t).filter(b),a=t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null;if(!i.length){if(!a)throw Error(`Select a page element or drag a region before adding an annotation.`);return F(n,a)}let o=i.map(M);return P({id:Yf(r,`annotation`),note:n,createdAt:Date.now(),anchor:{kind:`elements`,targets:o,region:a},baseline:j({targets:o,elements:i})},i)},ee=()=>{for(let[e,t]of f)t.value||t.priority?e.style.setProperty(`display`,t.value,t.priority):e.style.removeProperty(`display`);f.clear()};return{snapshot(){return{enabled:t.current.enabled,rulersVisible:t.current.rulersVisible,xrayVisible:t.current.xrayVisible,guideRelevanceTolerance:10,selectedMeasurements:[...t.current.selectedMeasurements],selectionOriginRect:t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null,measurements:[...t.current.measurements],activeMeasurement:t.current.activeMeasurement,heldDistances:[...t.current.heldDistances],guides:t.current.guides.map(e=>({...e})),annotations:u.map(Jf)}},currentSelection(){return{elements:Xf(t).filter(b),region:t.current.selectionOriginRect?$i(t.current.selectionOriginRect):null}},select:N,hoveredElement(){return t.current.hoverElement?.isConnected&&b(t.current.hoverElement)?t.current.hoverElement:null},annotations(){return T(),u.map(Jf)},annotation(e){T();let t=u.find(t=>t.id===e);if(!t)return null;let n=Jf(t),r=[];if(n.anchor.kind===`elements`&&t.anchor.kind===`elements`){let e=t.anchor.targets;r=n.anchor.targets.map((n,r)=>({target:n,element:w(t.id,e[r])}))}return{...n,resolvedTargets:r}},annotationRect(e){let t=u.find(t=>t.id===e);if(!t)return null;if(t.anchor.kind===`region`)return $i(t.anchor.rect);let n=t.anchor.targets.map(e=>w(t.id,e)?.getBoundingClientRect()).filter(e=>e!==void 0);if(!n.length){let e=ta(t.anchor.targets.map(e=>e.lastRect));return e?$i(e):null}return ta(n.map(e=>({left:e.left,top:e.top,width:e.width,height:e.height})))},addSelectionAnnotation:I,addRegionAnnotation:F,removeAnnotation(e){let t=u.findIndex(t=>t.id===e);if(t<0)return;let[n]=u.splice(t,1);if(n.anchor.kind===`elements`)for(let e of n.anchor.targets){let t=y(n.id,e.id);p.delete(t),m.delete(t)}u.length===0&&O(),S()},subscribe(e){return d.add(e),()=>d.delete(e)},prepareCapture(){if(!i)return;let e=[`[data-mesurer-layer='chrome']`,`[data-mesurer-toolbar='true']`,`[data-mesurer-extension-toolbar='true']`,`[data-mesurer-inspector-ui='true']:not([data-mesurer-layer='evidence'])`,`.mesurer-color-picker`].join(`,`);for(let t of i.querySelectorAll(e))f.has(t)||(f.set(t,{value:t.style.getPropertyValue(`display`),priority:t.style.getPropertyPriority(`display`)}),t.style.setProperty(`display`,`none`,`important`))},finishCapture(){ee()},dispose(){h||(h=!0,O(),k(),ee(),p.clear(),m.clear(),u.length=0,d.clear())}}}var Qf=[`select`,`xray`,`color-picker`,`rulers`,`text-inspector`,`guides`,`settings`],$f=`mesurer-plugin-settings`,ep=1,tp=[{id:Ju,label:`Arrange`,order:35,create:Ed,settingsIds:[`arrange`]},{id:_f,label:`Screenshot`,order:40,create:Pf,settingsIds:[`screenshot`],hiddenSettingsControlIds:[`tool`]}],np=e=>(e.startsWith(`mesurer.`)?e.slice(8):e).split(/[.-]/g).filter(Boolean).map(e=>e[0]?.toUpperCase()+e.slice(1)).join(` `)||e,rp=e=>e===`select`||e===`xray`||e===`color-picker`||e===`rulers`||e===`text-inspector`||e===`guides`||e===`distance`||e===`settings`,ip=e=>`builtin.${e}`,ap=(e,t)=>{let n=t.toLowerCase().replaceAll(`cmd`,`meta`).split(`+`).map(e=>e.trim()).filter(Boolean);if(!n.length)return!1;let r=n.at(-1),i=new Set(n.slice(0,-1)),a=i.has(`mod`),o=i.has(`meta`),s=i.has(`ctrl`)||i.has(`control`),c=i.has(`shift`),l=i.has(`alt`)||i.has(`option`);return(a?!(e.metaKey||e.ctrlKey):o!==e.metaKey||s!==e.ctrlKey)||c!==e.shiftKey||l!==e.altKey||!a&&!o&&!s&&(e.metaKey||e.ctrlKey)?!1:e.key.toLowerCase()===r};function op(e){let t=V(()=>e.pluginHost),n=t??ya(),r=!t,i=V(()=>e.version??`0.1.0`),a=t=>e.version&&t.id.startsWith(`mesurer.`)?{...t,version:i}:t,o=new Set(V(()=>e.excludePlugins??[])),s=V(()=>Ld([],e.excludePlugins??[]).map(a)),c=V(()=>[...e.plugins??[]].map(a)),l=new Set(c.map(e=>e.id)),u=new Map;for(let t of[...tp,...V(()=>e.availablePlugins??[])])u.set(t.id,t);for(let[e,t]of c.entries()){let n=u.get(t.id);u.set(t.id,{...n,id:t.id,label:n?.label??np(t.id),order:n?.order??1e3+e,create:()=>t})}let d=new Map([...u.values()].map(e=>[e.id,new Set(e.settingsIds??[])])),f=new Map,p=new Map,m=new Set,h=new Map,g=null,_=null,v=()=>void 0,y=async()=>void 0,[b,x]=G(0),[S,C]=G(!1),w=e=>(b(),n.tools().find(t=>(t.builtin===e||t.id===e)&&t.command!==ip(e))),T=e=>(b(),S()?e===`distance`?n.overlays().some(t=>t.builtin===e||t.id===e):n.tools().some(t=>t.builtin===e||t.id===e):!o.has(e)),E=()=>(b(),n.state.get(`mesurer.arrange.active`)??!1),D=e=>E()&&(e===`color-picker`||e===`text-inspector`||e===`guides`),O=W(()=>(b(),n.tools().filter(e=>e.hidden?.()?!1:!e.builtin||!rp(e.builtin)||e.command!==ip(e.builtin)))),k=W(()=>{b();let e=n.settings();return[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0)).map(t=>{let r=d.get(t.id)??new Set,i=new Set(t.hiddenSettingsControlIds??[]),a=e.filter(e=>r.has(e.id)).map(e=>({...e,controls:(e.controls??[]).filter(e=>!i.has(e.id))})).filter(e=>(e.controls?.length??0)>0);return{id:t.id,label:t.label,enabled:n.has(t.id),busy:m.has(t.id),sections:a}})}),A=()=>{b();let e=[];for(let t of Qf)(!T(t)||w(t))&&e.push(`[data-mesurer-builtin='${t}']{display:none!important}`);return(!T(`guides`)||w(`guides`))&&e.push(`[data-mesurer-builtin='guides-menu']{display:none!important}`),T(`guides`)||e.push(`[data-mesurer-guide='true']{display:none!important}`),T(`distance`)||e.push(`[data-mesurer-distance='true']{display:none!important}`),T(`rulers`)||e.push(`[data-mesurer-rulers='true']{display:none!important}`),T(`color-picker`)||e.push(`.mesurer-color-picker{display:none!important}`),e.join(`
|
|
1300
1300
|
`)},j=async(t,r=`toolbar`)=>{if(!t.disabled?.())try{await n.command.execute(t.command,void 0,{source:r,toolId:t.id})}catch(n){throw e.onPluginError?.(n,t.id),n}},M=(e,t=`toolbar`)=>{j(e,t).catch(()=>void 0)},N=(t,n)=>{n.disabled?.()||Promise.resolve(n.run()).catch(r=>{e.onPluginError?.(r,`${t.id}.${n.id}`)})},P=async(t,n,r)=>{try{await n.set(r)}catch(r){e.onPluginError?.(r,`${t}.${n.id}`)}},F=(e,t,n)=>{P(e,t,n)},I=async e=>{for(let t of n.settings()){if(e&&!e.has(t.id))continue;let n=h.get(t.id);if(n)for(let e of t.controls??[]){let r=n.get(e.id);r!==void 0&&await P(t.id,e,r)}}};return Kt(()=>{let t=!0,o=0,c=!1,b=Promise.resolve(),E=n,k=e,N=k.portalTarget??document.body,P=N.ownerDocument??document,F=P.defaultView??window,ee=k.pageTarget??P.body,te=N,L=()=>{if(!g)throw Error(`Mesurer renderer model is unavailable for runtime bridge setup.`);return g},R=()=>{if(!_)throw Error(`Mesurer built-in controller is unavailable for runtime bridge setup.`);return _},ne=()=>{let e=P.createElement(`div`);e.dataset.mesurerInspectorUi=`true`,(te.querySelector(`[data-mesurer-root='true']`)??N).append(e);let t=!1;return{element:e,dispose(){t||(t=!0,e.remove())}}},re=()=>Zf({model:L(),ownerDocument:P,ownerWindow:F,uiRoot:N,pageTarget:ee}),ie=P.createElement(`style`);ie.dataset.mesurerPluginVisibility=`true`,ie.dataset.mesurerInspectorUi=`true`,ie.textContent=A(),N.append(ie);let z=k.persistKey?`${k.persistKey}:plugins`:$f,ae=`${z}:availability`,oe=new Map;try{let e=F.localStorage.getItem(ae);if(e){let t=JSON.parse(e);if(t?.version===ep){for(let[e,n]of Object.entries(t.enabled??{}))oe.set(e,n);for(let[e,n]of Object.entries(t.state??{}))p.set(e,n)}}}catch(e){k.onPluginError?.(e,`plugin-availability-persistence`)}let se=()=>{let e=Object.fromEntries([...u.keys()].map(e=>[e,E.has(e)])),t=Object.fromEntries(p);try{F.localStorage.setItem(ae,JSON.stringify({version:ep,enabled:e,state:t}))}catch(e){k.onPluginError?.(e,`plugin-availability-persistence`)}},ce=()=>{o=0;try{F.localStorage.setItem(z,JSON.stringify(E.state.serialize(`persist`)))}catch(e){k.onPluginError?.(e,`plugin-persistence`)}},le=()=>{F.clearTimeout(o),o=F.setTimeout(ce,50)},ue=E.subscribe(e=>{if(x(e=>e+1),ie.textContent=A(),(e.reason===`state`||e.reason===`history`||e.reason===`remove`||e.reason===`replace`)&&le(),S()&&!c&&(e.reason===`load`||e.reason===`remove`||e.reason===`replace`)&&se(),e.reason===`remove`&&e.pluginId?.startsWith(`mesurer.`)){let t=e.pluginId.slice(8);rp(t)&&R().deactivate(t)}});k.onPluginHost?.(E);let de=async e=>{if(t)try{await E.load(e)}catch(t){k.onPluginError?.(t,e.id)}},fe=e=>{for(let t of E.settings())!e.has(t.id)||h.has(t.id)||h.set(t.id,new Map((t.controls??[]).map(e=>[e.id,e.value()])))},pe=async e=>{if(!t||E.has(e.id))return E.has(e.id);let n=new Set(E.settings().map(e=>e.id)),r=new Set(E.describe().state.map(e=>e.id));try{let t=a(await e.create());if(t.id!==e.id)throw Error(`Available plugin ${e.id} created mismatched plugin ${t.id}.`);await E.load(t);let i=new Set(d.get(e.id)??e.settingsIds??[]);for(let e of E.settings())n.has(e.id)||i.add(e.id);d.set(e.id,i);let o=new Set(f.get(e.id)??[]);for(let e of E.describe().state)r.has(e.id)||o.add(e.id);f.set(e.id,o),fe(i);let s=p.get(e.id);return s&&(E.state.restore(s,`persist`),p.delete(e.id)),!0}catch(t){return k.onPluginError?.(t,e.id),!1}},me=e=>{let t=f.get(e);if(!t?.size)return;let n=E.state.serialize(`persist`),r={};for(let e of t)Object.prototype.hasOwnProperty.call(n,e)&&(r[e]=n[e]);Object.keys(r).length&&p.set(e,r)},he=async(e,t,n=!0)=>{let r=u.get(e);if(!(!r||m.has(e)||E.has(e)===t)){m.add(e),x(e=>e+1);try{t?await pe(r):(n?me(e):p.delete(e),E.remove(e)),c||se()}finally{m.delete(e),x(e=>e+1)}}},ge=e=>{let t=b.then(e,e);return b=t.catch(()=>void 0),t};v=(e,t)=>{ge(async()=>{await he(e,t)})},y=()=>ge(async()=>{c=!0;try{await I();let e=[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0));for(let t of e)!E.has(t.id)&&!await pe(t)||(await I(d.get(t.id)),l.has(t.id)?p.delete(t.id):(me(t.id),E.remove(t.id)))}finally{c=!1}o&&F.clearTimeout(o),ce(),se()});let _e=async e=>{if(D(e))return;let t=w(e);if(t){await j(t,{source:`builtin-command`,builtin:e});return}T(e)&&await R().run(e)};(async()=>{for(let e of s)await de(e);if(t&&(await de({id:`mesurer.runtime-bridge`,version:i,provides:[`runtime:solid`],setup(e){let t={ownerDocument:P,ownerWindow:F,portalTarget:N,pageTarget:ee,currentToolMode:()=>L().current.toolMode,createWorkspaceRuntime:re,createInspectorMount:ne};e.service.provide(`runtime:solid`,t),If(e,t),qf(e,t);for(let t of Qf)e.command.register(ip(t),()=>_e(t))}}),t)){for(let e of[...u.values()].sort((e,t)=>(e.order??0)-(t.order??0))){let n=oe.has(e.id)?oe.get(e.id)===!0:l.has(e.id);if(E.has(e.id)){n||E.remove(e.id);continue}if(n&&await pe(e),!t)return}h.clear();for(let e of E.settings())h.set(e.id,new Map((e.controls??[]).map(e=>[e.id,e.value()])));try{let e=F.localStorage.getItem(z);if(e){let t=JSON.parse(e);E.state.restore(t,`persist`)}}catch(e){k.onPluginError?.(e,`plugin-persistence`)}t&&(C(!0),ie.textContent=A(),k.onPluginsReady?.(E))}})();let ve=e=>{let t=e.key.toLowerCase(),n=e.metaKey||e.ctrlKey;return n&&!e.shiftKey&&!e.altKey&&t===`,`?`settings`:n||e.shiftKey||e.altKey?null:t===`s`?`select`:t===`a`?`text-inspector`:t===`g`?`guides`:t===`p`?`color-picker`:t===`x`?`xray`:t===`r`?`rulers`:null},ye=e=>{if(mo(e,F))return;let t=ve(e);if(t&&D(t)){e.preventDefault(),e.stopImmediatePropagation();return}let n=t?w(t):void 0;if(t&&n){e.preventDefault(),e.stopImmediatePropagation(),M(n,{source:`builtin-shortcut`,builtin:t});return}let r=e.key.toLowerCase();if((r===`h`||r===`v`)&&D(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}if((r===`h`||r===`v`)&&w(`guides`)){e.preventDefault(),e.stopImmediatePropagation();return}let i=O().find(t=>t.shortcut&&!t.disabled?.()&&ap(e,t.shortcut));if(i){e.preventDefault(),e.stopImmediatePropagation(),M(i);return}let a=e.metaKey||e.ctrlKey;if(a&&r===`z`&&(e.shiftKey?E.redo():E.undo())){e.preventDefault(),e.stopImmediatePropagation();return}(a&&r===`,`&&!T(`settings`)||r===`s`&&!T(`select`)||r===`a`&&!T(`text-inspector`)||r===`g`&&!T(`guides`)||(r===`h`||r===`v`)&&!T(`guides`)||r===`p`&&!T(`color-picker`)||r===`x`&&!T(`xray`)||r===`r`&&!T(`rulers`)||e.key===`Alt`&&!T(`distance`))&&(e.preventDefault(),e.stopImmediatePropagation())};return F.addEventListener(`keydown`,ye,!0),()=>{t=!1,o&&(F.clearTimeout(o),ce()),F.removeEventListener(`keydown`,ye,!0),ue(),ie.remove(),g=null,_=null,v=()=>void 0,y=async()=>void 0,r&&E.dispose()}}),Y(sc,{runtime:{plugins:k,version:()=>i,setEnabled:(e,t)=>v(e,t),update:F,reset:async()=>{await y()}},get children(){return Y(Wl,{value:e=>{g=e},get children(){return Y(qu,Xi(e,{get pluginTools(){return O()},onPluginTool:e=>M(e),onPluginToolMenuItem:N,isBuiltinActionDisabled:D,onBuiltinController:e=>{_=e}}))}})}})}var sp=(e,t,n)=>Math.min(Math.max(e,t),Math.max(t,n)),cp=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}},lp=(e,t,n,r,i=8)=>{let a=r.innerWidth-t-8,o=r.innerHeight-n-8,s=e.left+e.width+i,c=e.left-t-i;return{left:s+t<=r.innerWidth-8?s:c>=8?c:sp(e.left+e.width-t,8,a),top:sp(e.top,8,o)}};function up(e){let[t,n]=G(0),[r,i]=G(null),[a,o]=G({}),[s,c]=G(null),[l,u]=G(!1),[d,f]=G(``),[p,m]=G(null),[h,g]=G(!1),[_,v]=G(null),[y,b]=G(null),x=null,S=null,C,w=()=>C?.ownerDocument.defaultView??window;zt(e.runtime.subscribe(()=>n(e=>e+1)));let T=W(()=>(t(),e.runtime.currentSelection())),E=W(()=>(t(),e.runtime.annotations())),D=W(()=>{let e=r();return e?E().find(t=>t.id===e)??null:null}),O=()=>T().elements.length>0||T().region!==null,k=W(()=>{let e=T();return cp(e.elements.filter(e=>e.isConnected).map(e=>{let t=e.getBoundingClientRect();return{left:t.left,top:t.top,width:t.width,height:t.height}}))??e.region}),A=()=>{let e=T().elements.length;return e>1?`${e} selected elements`:e===1?`Selected element`:`Selected region`},j=e=>e.anchor.kind===`elements`?`${e.anchor.targets.length} selected ${e.anchor.targets.length===1?`element`:`elements`}`:`Selected region`,M=()=>{let t=T().elements;if(!t.length)return null;let n=e.runtime.hoveredElement();return t.find(e=>e===n)??t.find(e=>n&&e.contains(n))??t[0]},N=()=>{let e=M();if(!e?.isConnected)return null;let t=e.getBoundingClientRect(),n={left:t.left,top:t.top,width:t.width,height:t.height},r=w(),i=n.left+n.width,a=n.top+n.height,o=[{space:r.innerWidth-i,points:[{left:i+6,top:n.top},{left:i+6,top:a-24}]},{space:n.left,points:[{left:n.left-24-6,top:n.top},{left:n.left-24-6,top:a-24}]},{space:r.innerHeight-a,points:[{left:i-24,top:a+6},{left:n.left,top:a+6}]},{space:n.top,points:[{left:i-24,top:n.top-24-6},{left:n.left,top:n.top-24-6}]}].sort((e,t)=>t.space-e.space).flatMap(e=>e.points).find(e=>e.left>=4&&e.top>=4&&e.left+24<=r.innerWidth-4&&e.top+24<=r.innerHeight-4),s={left:i+6,top:n.top};return{left:sp((o??s).left,4,r.innerWidth-24-4),top:sp((o??s).top,4,r.innerHeight-24-4)}},P=t=>{let n=e.runtime.annotationRect(t);if(!n)return null;let r=w(),i=n.left+n.width+6,o=i+24+8,s=n.left-6-24,c=s-8-272,l=o+272<=r.innerWidth-8,u=c>=8,d=l?i:u?s:sp(i,8,r.innerWidth-24-8),f=l?o:u?c:lp(n,272,176,r).left,p=a()[t];return{marker:{left:d,top:sp(n.top-12,4,r.innerHeight-24-4)},panel:{left:p?sp(p.left,8,r.innerWidth-272-8):f,top:sp(p?p.top:n.top,8,r.innerHeight-176-8)}}},F=e=>P(e)?.marker??null,I=()=>{let e=k(),t=w(),n=s();return n?{left:sp(n.left,8,t.innerWidth-272-8),top:sp(n.top,8,t.innerHeight-154-8)}:e?lp(e,272,154,t):{left:8,top:8}},ee=e=>P(e)?.panel??{left:8,top:8},te=e=>{u(!1),i(e),v(null)},L=(e,t)=>{let n=e.currentTarget.ownerDocument.defaultView?.Element,r=e.target;if(e.button!==0||n&&r instanceof n&&r.closest(`button`))return;let i=e.currentTarget.parentElement;if(!i)return;let a=i.getBoundingClientRect(),s=w(),l=s.document.documentElement,u=l.style.userSelect;l.style.setProperty(`user-select`,`none`,`important`),x={surfaceId:t,pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,originLeft:a.left,originTop:a.top,width:a.width,height:a.height},b(t),e.preventDefault(),e.stopPropagation();let d=e=>{if(!x||e.pointerId!==x.pointerId)return;let n=x,r=Math.max(8,s.innerWidth-n.width-8),i=Math.max(8,s.innerHeight-n.height-8),a={left:sp(n.originLeft+e.clientX-n.startX,8,r),top:sp(n.originTop+e.clientY-n.startY,8,i)};t===`composer`?c(a):o(e=>({...e,[t]:a}))},f=e=>{!x||e.pointerId!==x.pointerId||(l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),x=null,b(null),S=null)};s.addEventListener(`pointermove`,d),s.addEventListener(`pointerup`,f),s.addEventListener(`pointercancel`,f),S=()=>{l.style.userSelect=u,s.removeEventListener(`pointermove`,d),s.removeEventListener(`pointerup`,f),s.removeEventListener(`pointercancel`,f),b(null)}};zt(()=>{S?.(),S=null,x=null});let R=async(e,t)=>{if(!h()){g(!0),v(null);try{await e(),v(t)}catch(e){v(e instanceof Error?e.message:String(e))}finally{g(!1)}}},ne=()=>{O()&&(m(null),v(null),i(null),c(null),u(!0))},re=()=>{u(!1),m(null),c(null)},ie=()=>{try{let t=e.runtime.addSelectionAnnotation(d());f(``),m(null),u(!1),c(null),i(t.id)}catch(e){m(e instanceof Error?e.message:String(e))}};return Kt(()=>(e.onController?.({openNoteComposer:ne}),()=>e.onController?.(null))),[(()=>{var e=X(`span`,{"aria-hidden":`true`,style:{display:`none`}});return Qi(()=>e=>{C=e},e),e})(),Y(K,{get when(){return J(()=>T().elements.length>0&&!l())()?!D():T().elements.length>0&&!l()},get children(){return Y(K,{get when(){return N()},children:e=>(()=>{var t=X(`button`,{type:`button`,"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-trigger":`true`,"aria-label":`Annotate selection`,title:`Annotate selection`,class:`msr:pointer-events-auto msr:fixed msr:z-[95] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]`,onPointerDown:e=>e.stopPropagation(),onClick:e=>{e.stopPropagation(),ne()}});return Q(t,Y(xc,{size:14})),q(()=>({left:`${e().left}px`,top:`${e().top}px`}),(e,n)=>{$(t,`style`,e,n)}),t})()})}}),Y(K,{get when(){return J(()=>!!l())()?k():l()},get children(){var e=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-composer":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-w-[calc(100vw-16px)] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),t=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag note composer`,onPointerDown:e=>L(e,`composer`)}),n=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),r=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-900`}),i=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),a=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close note composer`,title:`Close`,onClick:re}),o=X(`textarea`,{autofocus:!0,placeholder:`Describe what should change…`,onInput:e=>{f(e.currentTarget.value),m(null)},onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),ie()),e.key===`Escape`&&(e.preventDefault(),re())},class:`msr:box-border msr:mt-1 msr:h-20 msr:w-full msr:resize-none msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:p-2 msr:text-[12px] msr:leading-[1.4] msr:text-black msr:outline-none msr:placeholder:text-ink-400 msr:focus:border-[#0d99ff]`}),s=X(`div`,{class:`msr:mt-1.5 msr:flex msr:h-7 msr:items-center msr:justify-between msr:gap-2 msr:px-1`}),c=X(`span`,{class:`msr:text-[9px] msr:text-ink-400`}),l=X(`div`,{class:`msr:flex msr:gap-1`}),u=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:px-2 msr:text-[11px] msr:text-ink-700 msr:hover:bg-black/4`,onClick:re}),h=X(`button`,{type:`button`,class:`msr:h-7 msr:rounded-[7px] msr:border-0 msr:bg-[#0d99ff] msr:px-2.5 msr:text-[11px] msr:font-medium msr:text-white msr:hover:bg-[#0b8eea]`,onClick:ie});return Z(e,t),Z(e,o),Z(e,s),Z(t,n),Z(t,a),Q(t,Y(xc,{size:14,class:`msr:text-ink-700`}),n),Z(n,r),Z(n,i),Z(r,Ji(`Add note`)),Q(i,A),Q(a,Y(Cc,{size:14})),Q(e,Y(K,{get when(){return p()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-red-600`});return Q(t,e),t})()}),s),Z(s,c),Z(s,l),Z(c,Ji(`⌘/Ctrl ↵`)),Z(l,u),Z(l,h),Z(u,Ji(`Cancel`)),Z(h,Ji(`Add note`)),q(()=>({e:{left:`${I().left}px`,top:`${I().top}px`},t:{cursor:y()===`composer`?`grabbing`:`grab`},a:d()}),({e:n,t:r,a:i},a)=>{n!==a?.e&&$(e,`style`,n,a?.e),r!==a?.t&&$(t,`style`,r,a?.t),i!==a?.a&&$(o,`value`,i,a?.a)}),e}}),Y(Gr,{get each(){return E()},children:(e,t)=>{let n=()=>F(e.id);return Y(K,{get when(){return n()},children:n=>(()=>{var i=X(`button`,{type:`button`,"data-mesurer-layer":`evidence`,"data-mesurer-annotation-marker":`true`,onPointerDown:t=>{t.preventDefault(),t.stopPropagation(),te(e.id)},onPointerUp:e=>e.stopPropagation(),onClick:t=>{t.preventDefault(),t.stopPropagation(),te(e.id)},class:`msr:pointer-events-auto msr:fixed msr:z-[94] msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-[#0d99ff] msr:bg-white msr:text-[#0d99ff] msr:outline-none msr:hover:bg-[#0d99ff]/8`});return Q(i,Y(xc,{size:14})),q(()=>({e:`Mesurer annotation ${t()+1}: ${e.note}`,t:e.note,a:r()===e.id?`true`:`false`,o:{left:`${n().left}px`,top:`${n().top}px`}}),({e,t,a:n,o:r},a)=>{e!==a?.e&&$(i,`aria-label`,e,a?.e),t!==a?.t&&$(i,`title`,t,a?.t),n!==a?.a&&$(i,`aria-expanded`,n,a?.a),r!==a?.o&&$(i,`style`,r,a?.o)}),i})()})}}),Y(K,{get when(){return D()},children:t=>{let n=()=>ee(t().id);var r=X(`div`,{"data-mesurer-layer":`chrome`,"data-mesurer-inspector-ui":`true`,"data-mesurer-annotation-panel":`true`,class:`mesurer-menu-surface msr:pointer-events-auto msr:fixed msr:z-[95] msr:w-[272px] msr:max-h-[220px] msr:rounded-[10px] msr:border msr:border-ink-200 msr:bg-white msr:p-1.5 msr:text-black`,onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation()}),a=X(`div`,{class:`msr:flex msr:h-7 msr:items-center msr:gap-1.5 msr:px-1`,"aria-label":`Drag annotation panel`,onPointerDown:e=>L(e,t().id)}),s=X(`div`,{class:`msr:min-w-0 msr:flex-1`}),c=X(`div`,{class:`msr:text-[11px] msr:font-medium msr:text-ink-700`}),l=Ji(`Note `),u=X(`div`,{class:`msr:text-[9px] msr:text-ink-500`}),d=X(`div`,{class:`msr:flex msr:items-center msr:gap-0.5`}),f=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Copy annotation context`,title:`Copy context`,onClick:()=>void R(()=>e.onCopy({annotation:t().id}),`Copied`)}),p=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Delete annotation`,title:`Delete`,onClick:()=>{e.runtime.removeAnnotation(t().id),o(e=>{let n={...e};return delete n[t().id],n}),i(null),v(null)}}),m=X(`button`,{type:`button`,class:`msr:flex msr:w-6 msr:h-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border-0 msr:bg-transparent msr:text-black msr:outline-none msr:hover:bg-black/4 msr:disabled:cursor-default msr:disabled:opacity-40`,"aria-label":`Close annotation`,title:`Close`,onClick:()=>{i(null),v(null)}}),g=X(`div`,{class:`msr:mx-1 msr:mt-1 msr:max-h-36 msr:overflow-auto msr:whitespace-pre-wrap msr:rounded-[7px] msr:bg-ink-50 msr:px-2 msr:py-2 msr:text-[12px] msr:leading-[1.45] msr:text-ink-800`});return Z(r,a),Z(r,g),Z(a,s),Z(a,d),Q(a,Y(xc,{size:14,class:`msr:text-[#0d99ff]`}),s),Z(s,c),Z(s,u),Z(c,l),Q(c,()=>E().findIndex(e=>e.id===t().id)+1,null),Q(u,()=>j(t())),Z(d,f),Z(d,p),Z(d,m),Q(f,Y(bc,{size:14})),Q(p,Y(Sc,{size:14})),Q(m,Y(Cc,{size:14})),Q(g,()=>t().note),Q(r,Y(K,{get when(){return _()},children:e=>(()=>{var t=X(`div`,{class:`msr:mt-1.5 msr:px-1 msr:text-[10px] msr:text-ink-500`,role:`status`});return Q(t,e),t})()}),null),q(()=>({e:{left:`${n().left}px`,top:`${n().top}px`},t:{cursor:y()===t().id?`grabbing`:`grab`},a:h()}),({e,t,a:n},i)=>{e!==i?.e&&$(r,`style`,e,i?.e),t!==i?.t&&$(a,`style`,t,i?.t),n!==i?.a&&$(f,`disabled`,n,i?.a)}),r}})]}var dp=e=>Number.parseFloat(e)||0,fp=0,pp=(e,t)=>{let n=t.CSS;return n?.escape?n.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`)},mp=e=>e.nodeType===9,hp=e=>e.nodeType===11;function gp(e){let t=e.getRootNode();return hp(t)?t:e.ownerDocument}var _p=(e,t)=>{if(mp(e)||hp(e))return e;let n=gp(e);return hp(n)?n:t};function vp(e,t,n=mp(t)?t:t.ownerDocument??document){let r=_p(t,n).elementFromPoint(e.x,e.y);for(;r?.shadowRoot;){let t=r.shadowRoot.elementFromPoint(e.x,e.y);if(!t||t===r)break;r=t}return r}function yp(e,t){if(mp(t))return!0;let n=e;for(;n;){if(t===n||t.contains(n))return!0;let e=n.getRootNode();if(!hp(e))return!1;n=e.host}return!1}function bp(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 xp(e){let t=e.ownerDocument.defaultView??window;if(e.id)return`#${pp(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 Sp(e,t,n=`dom-inspection-${++fp}`){let r=e.getBoundingClientRect(),i=t.getComputedStyle(e),a={top:dp(i.paddingTop),right:dp(i.paddingRight),bottom:dp(i.paddingBottom),left:dp(i.paddingLeft)},o={top:dp(i.marginTop),right:dp(i.marginRight),bottom:dp(i.marginBottom),left:dp(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 Cp(e){let t=e.ownerDocument.defaultView??window,n=t.getComputedStyle(e),r=e instanceof t.HTMLElement?e:null,i=e.getBoundingClientRect(),a=r?Sp(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:xp(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 wp=e=>Cp(e);function Tp(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||yp(n,t),a=()=>{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}},o=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 o()},async describe(){return(await e.waitForPluginHost()).describe()},inspect(e,t=0){let n=r(e,t);return n?wp(n):null},inspectAll(e,n=50){return[...t.querySelectorAll(e)].slice(0,Math.max(0,n)).map(wp)},at(n,r){let a=t.querySelector?.(`[data-mesurer-island]`)??null;return bp(a?.shadowRoot?.querySelector(`[data-mesurer-root='true']`)??a,()=>{let a=vp({x:n,y:r},t,e.ownerDocument);return a&&i(a)?wp(a):null})},distance(e,t){let n=r(e),i=r(t);if(!n||!i)return null;let a=wp(n),o=wp(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:a,async feedback(n=[]){await o();let r=e.getPluginHost()??await e.waitForPluginHost();return{viewport:a(),elements:n.flatMap(e=>[...t.querySelectorAll(e)].slice(0,50).map(wp)),plugins:r.describe(),pluginState:r.state.serialize(`all`)}},async command(t,n){await(e.getPluginHost()??await e.waitForPluginHost()).command.execute(t,n,{source:`agent-harness`}),await o(1)},async state(){return(e.getPluginHost()??await e.waitForPluginHost()).state.serialize(`all`)},stable:o}}var Ep=(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,Dp=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}},Op=(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),kp=e=>[...e.measurements,...e.activeMeasurement&&!e.measurements.some(t=>t.id===e.activeMeasurement?.id)?[e.activeMeasurement]:[]];function Ap(e){let{workspace:t,scope:n,guideTolerance:r}=e;if(n.kind===`workspace`)return{guides:t.guides.map(e=>({...e})),measurements:kp(t),distances:[...t.distances]};let i=new Set(n.elements),a=e=>e!=null&&i.has(e),o=e=>n.regions.some(t=>Ep(e,t));return{guides:t.guides.filter(e=>Op(e,n.regions,r)).map(e=>({...e})),measurements:kp(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 jp={opacity:1,width:1,pattern:`solid`,dashLength:6,gap:4},Mp={opacity:1,edgeReveal:!1};({...jp}),{...Mp};var Np=10,Pp=e=>({left:e.left,top:e.top,width:e.width,height:e.height}),Fp=e=>{let t=new Set,n=[];for(let r of e)!r?.isConnected||t.has(r)||(t.add(r),n.push(r));return n},Ip=e=>e.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`;function Lp(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=Fp(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=Fp(e.elements),!o.length&&!e.region)throw Error(`Mesurer has no current selection.`);s=e.region?[e.region]:o.map(e=>Pp(e.getBoundingClientRect())),c={kind:`selection`}}else o=Fp([...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=>Pp(e.getBoundingClientRect())),d=Ap({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??Np}),f=d.measurements,p=d.distances,m=d.guides,h=Fp([...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:Cp(e)}}),x=f.map(e=>{let t={id:e.id,rect:Pp(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:Pp(e.rectA),rectB:Pp(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:Ip(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(Pp),visualState:{rulersVisible:a.rulersVisible,xrayVisible:a.xrayVisible},targets:b,visualContext:{guides:m,measurements:x,distances:S}}}var Rp=e=>`${Math.round(e*100)/100}px`,zp=e=>`x=${Rp(e.left)} y=${Rp(e.top)} w=${Rp(e.width)} h=${Rp(e.height)}`;function Bp(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}: ${zp(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: ${zp(e.rect)}`,` margin: ${Rp(e.margin.top)} ${Rp(e.margin.right)} ${Rp(e.margin.bottom)} ${Rp(e.margin.left)}`,` padding: ${Rp(e.padding.top)} ${Rp(e.padding.right)} ${Rp(e.padding.bottom)} ${Rp(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`}=${Rp(n.position)}`)}if(e.visualContext.measurements.length){t.push(``,`Relevant measurements`);for(let n of e.visualContext.measurements)t.push(`- ${n.targetRef?`${n.targetRef}: `:``}${zp(n.rect)}; delta=${Rp(n.deltaX)} × ${Rp(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=${Rp(n.horizontal.value)}`:null,n.vertical?`vertical=${Rp(n.vertical.value)}`:null].filter(Boolean).join(`; `);t.push(`- ${e?`${e}: `:``}${r||`overlapping`}`)}}return t.join(`
|
|
1301
|
-
`).trimEnd()}function Vp(e){let t=Dp([...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 Hp=(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`})},Up=(e,t,n,r)=>e.push({kind:`missing`,evidence:t,id:n,label:r});function Wp(e){let t=e.runtime.annotation(e.annotationId);if(!t)throw Error(`Mesurer annotation not found: ${e.annotationId}`);let n=Lp({runtime:e.runtime,ownerDocument:e.ownerDocument,ownerWindow:e.ownerWindow,request:{annotation:e.annotationId}});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=kp({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){Up(a,`target`,e.id,e.selector);continue}Hp(a,`target-rect`,`${t.inspection.selector} left`,e.rect.left,t.inspection.rect.left),Hp(a,`target-rect`,`${t.inspection.selector} top`,e.rect.top,t.inspection.rect.top),Hp(a,`target-rect`,`${t.inspection.selector} width`,e.rect.width,t.inspection.rect.width),Hp(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){Up(a,`guide`,e.id,`${e.orientation} guide ${e.id}`);continue}Hp(a,`guide`,`${e.orientation} guide ${e.id}`,e.position,t.position)}for(let e of t.baseline.measurements){let t=n.visualContext.measurements.find(t=>t.id===e.id)??i.find(t=>t.id===e.id);if(!t){Up(a,`measurement`,e.id,e.id);continue}Hp(a,`measurement`,`${e.id} width`,e.rect.width,t.rect.width),Hp(a,`measurement`,`${e.id} height`,e.rect.height,t.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){Up(a,`distance`,e.id,e.id);continue}e.horizontal&&t.horizontal?Hp(a,`distance`,`${e.id} horizontal`,e.horizontal.value,t.horizontal.value):e.horizontal&&!t.horizontal&&Up(a,`distance`,e.id,`${e.id} horizontal`),e.vertical&&t.vertical?Hp(a,`distance`,`${e.id} vertical`,e.vertical.value,t.vertical.value):e.vertical&&!t.vertical&&Up(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 Gp(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 Kp=`0.1.4`,qp=`mesurer.context`,Jp=`context:v1`,Yp=`mesurer.context.settings`,Xp=`context.ui`,Zp={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`]},Qp={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`]},$p={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`]},em=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()))},tm=(e,t,n)=>{let r=async r=>Lp({runtime:e,ownerDocument:t,ownerWindow:n,request:r}),i=async e=>Bp(await r(e));return{context:r,contextText:i,copyContext:async e=>Gp(t,n,await i(e)),select:async i=>(e.select(Array.isArray(i)?i:[i]),await em(t,n),r({scope:`selection`})),annotations:async()=>e.annotations(),review:async r=>(await em(t,n),r?Wp({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r}):e.annotations().map(r=>Wp({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r.id}))),capturePlan:async e=>Vp(await r(e)),prepareCapture:async()=>{e.prepareCapture(),await em(t,n)},finishCapture:async()=>{e.finishCapture(),await em(t,n)}}},nm=e=>{let t=e.currentSelection();return t.elements.length>0||t.region!==null};function rm(e={}){return{id:qp,version:Kp,requires:[`runtime:solid`],provides:[Jp],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(),i=tm(r,n.ownerDocument,n.ownerWindow);t.service.provide(Jp,i),t.state.register({id:Yp,initial:{ui:e.ui??!0},persist:!0}),t.state.register({id:Xp,initial:{hasSelection:nm(r)}});let a=()=>t.state.get(`mesurer.context.settings`)?.ui??!0,o=()=>t.state.get(Xp)?.hasSelection===!0,s=e=>{t.state.update(Yp,t=>({...t,ui:e}))},c=r.subscribe(()=>{let e=nm(r);e!==(t.state.get(Xp)?.hasSelection??!1)&&t.state.update(Xp,()=>({hasSelection:e}))});t.command.register(`context.copy`,()=>i.copyContext()),t.command.register(`context.copy-selection`,()=>i.copyContext({scope:`selection`}));let l=null,u=null,d=null,f=()=>{l=null,u?.(),u=null,d?.dispose(),d=null},p=()=>{if(d)return;d=n.createInspectorMount(),d.element.dataset.mesurerLayer=`evidence`;let e={runtime:r,onCopy:i.copyContext,onController:e=>{l=e}};u=Si(()=>Ur(up,e),d.element)},m=()=>{a()?p():f()};m(),t.state.subscribe(m),t.command.register(`context.add-note`,()=>l?.openNoteComposer()),t.tool.register({id:`context.copy`,label:`Copy context`,shortcut:`C`,command:`context.copy`,order:70,icon:Zp,hidden:()=>!a()}),t.tool.register({id:`context.copy-selection`,label:`Copy selection`,shortcut:`Shift+C`,command:`context.copy-selection`,order:71,icon:Qp,hidden:()=>!a(),disabled:()=>!o()}),t.tool.register({id:`context.add-note`,label:`Add note`,shortcut:`N`,command:`context.add-note`,order:72,icon:$p,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(()=>{c(),f(),r.dispose()})}}}var im={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 am(e){for(let[t,n]of Object.entries(im))e.style.setProperty(t,n,`important`)}function om(e){return`popover`in e&&`showPopover`in e&&typeof e.showPopover==`function`&&`hidePopover`in e&&typeof e.hidePopover==`function`}var sm=e=>`newState`in e,cm=e=>e.localName===`dialog`;function lm(e){if(!cm(e)||!e.open)return!1;try{return e.matches(`:modal`)}catch{return!1}}function um(e,t,n=!0){am(e);let r=e.ownerDocument,i=r.defaultView??window,a=t,o=!1,s=`fixed`,c=!1,l=0,u=[];if(n&&om(e)&&(e.popover=`manual`),t.append(e),n&&om(e))try{e.showPopover(),c=e.matches(`:popover-open`),c&&(s=`top-layer`)}catch{e.removeAttribute(`popover`)}let d=()=>{if(!(!c||!om(e)))try{e.matches(`:popover-open`)||e.showPopover()}catch{}},f=t=>{if(e.parentNode===t)return;let n=c&&om(e)&&e.matches(`:popover-open`);if(n&&om(e))try{e.hidePopover()}catch{}t.append(e),am(e),n&&d()},p=()=>{u=u.filter(e=>e.isConnected&&lm(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||!om(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=sm(t)?t.newState:void 0,r=t.target;if(r instanceof i.Element){if(cm(r)){n===`open`&&lm(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&&cm(t)&&h(t)},b=()=>{r.fullscreenElement&&_()},x=e=>{lm(e)&&m(e);for(let t of e.querySelectorAll(`dialog`))lm(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&&cm(e)&&(lm(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&&om(e)&&e.matches(`:popover-open`))try{e.hidePopover()}catch{}u=[]}}}}var dm=`arrange`,fm=()=>[{id:qp,label:`Context`,order:30,create:()=>rm(),settingsIds:[`context`],hiddenSettingsControlIds:[`ui`]}];function pm(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,onPluginHost:o,onPluginsReady:s,availablePlugins:c=[],...l}=e,u=t.ownerDocument??document,d=u.defaultView??window,f=u.createElement(`div`);f.dataset.mesurerIsland=`true`;let p=um(f,t,i),m=f,h=f,g=f;if(n){let e=f.attachShadow({mode:r});h=u.createElement(`div`),h.dataset.mesurerIslandMount=`true`,e.append(h),m=e,g=e}let _,v,y,b=!1,x=new Promise(e=>{v=e}),S=new Promise(e=>{y=e}),C=async()=>(await(_?Promise.resolve(_):x),S),w=a===!0?{}:a===!1?null:a,T=Tp({ownerDocument:u,root:w?.root??(t.nodeType===11?t:u),getPluginHost:()=>_,waitForPluginHost:C}),E=async()=>{await T.ready();let e=_?.service.get(Jp);if(!e)throw Error(`Mesurer context plugin is not loaded. Add contextPlugin() to the plugins array.`);return e},D=async()=>{await T.ready();let e=_?.service.get(dm);if(!e)throw Error(`Mesurer Arrange plugin is not loaded. Add arrangePlugin() from mesurer-solid/arrange.`);return e},O=async e=>(await E()).context(e),k=async e=>(await E()).contextText(e),A=async e=>(await E()).copyContext(e),j=async e=>(await E()).select(e),M=async()=>(await E()).annotations(),N=async e=>(await E()).review(e),P=async e=>(await E()).capturePlan(e),F=async()=>(await E()).prepareCapture(),I=async()=>(await E()).finishCapture(),ee=async()=>(await D()).intents(),te=async e=>{let t=(await D()).intent(e);if(!t)throw Error(`Arrange intent not found: ${e}`);return t},L=async(e,t)=>{(await D()).show(e,t)},R=async(e,t)=>(await D()).capturePlan(e,t),ne=async(e,t)=>(await D()).review(e,t),re=Object.assign(T,{capabilities:()=>{let e=!!_?.service.get(Jp);return{protocol:`mesurer.agent/v1`,contextSchema:`mesurer.context/v1`,capabilities:{context:e,select:e,annotations:e,review:e,capturePlan:e,arrange:!!_?.service.get(dm)}}},context:O,contextText:k,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:ee,arrange:te,showArrange:L,arrangeCapturePlan:R,reviewArrange:ne}),ie={...l,version:Kp,availablePlugins:[...fm(),...c]},z=Si(()=>Ur(op,xi(ie,{portalTarget:g,pageTarget:t,onPluginHost:e=>{_||v(e),_=e,o?.(e)},onPluginsReady:e=>{_=e,b||(b=!0,y(e)),s?.(e)}})),h),ae=re.ready(),oe=null;if(w){let e=w.globalName??`__MESURER__`,t=Object.getOwnPropertyDescriptor(d,e);Reflect.set(d,e,re),oe=()=>{Object.getOwnPropertyDescriptor(d,e)?.value===re&&(t?Object.defineProperty(d,e,t):Reflect.deleteProperty(d,e))}}let se=!1;return{element:f,root:m,hostLayer:p.mode,get pluginHost(){return _},ready:ae,agent:re,context:O,contextText:k,copyContext:A,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:ee,arrange:te,showArrange:L,arrangeCapturePlan:R,reviewArrange:ne,bringToFront:p.bringToFront,describe:()=>_?.describe(),dispose(){se||(se=!0,oe?.(),z(),p.dispose(),f.remove())}}}var mm=(e={})=>({...Pf(e),version:Kp}),{target:hm,globalName:gm=`__MESURER__`,context:_m=!0,screenshot:vm=!1,plugins:ym=[],reuseExisting:bm=!0,...xm}=globalThis.__MESURER_CONFIG__??{},Sm=globalThis.__MESURER_INSTANCE__,Cm=bm&&Sm?.element.isConnected?Sm:void 0;if(Cm)Cm.ready.catch(e=>{queueMicrotask(()=>{throw e})});else{let e=hm?document.querySelector(hm):document.body;if(!e)throw Error(`Mesurer injection target not found: ${hm}`);let t=[..._m===!1?[]:[rm(_m===!0?{}:_m)],...vm===!1?[]:[mm(vm===!0?{}:vm)],...ym];Sm?.dispose();let n=pm({...xm,plugins:t,target:e,agent:{globalName:gm,root:document}});globalThis.__MESURER_INSTANCE__=n,n.ready.catch(e=>{queueMicrotask(()=>{throw e})})}})();
|
|
1301
|
+
`).trimEnd()}function Vp(e){let t=Dp([...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 Hp=(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`})},Up=(e,t,n,r)=>e.push({kind:`missing`,evidence:t,id:n,label:r});function Wp(e){let t=e.runtime.annotation(e.annotationId);if(!t)throw Error(`Mesurer annotation not found: ${e.annotationId}`);let n=Lp({runtime:e.runtime,ownerDocument:e.ownerDocument,ownerWindow:e.ownerWindow,request:{annotation:e.annotationId}});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=kp({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){Up(a,`target`,e.id,e.selector);continue}Hp(a,`target-rect`,`${t.inspection.selector} left`,e.rect.left,t.inspection.rect.left),Hp(a,`target-rect`,`${t.inspection.selector} top`,e.rect.top,t.inspection.rect.top),Hp(a,`target-rect`,`${t.inspection.selector} width`,e.rect.width,t.inspection.rect.width),Hp(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){Up(a,`guide`,e.id,`${e.orientation} guide ${e.id}`);continue}Hp(a,`guide`,`${e.orientation} guide ${e.id}`,e.position,t.position)}for(let e of t.baseline.measurements){let t=n.visualContext.measurements.find(t=>t.id===e.id)??i.find(t=>t.id===e.id);if(!t){Up(a,`measurement`,e.id,e.id);continue}Hp(a,`measurement`,`${e.id} width`,e.rect.width,t.rect.width),Hp(a,`measurement`,`${e.id} height`,e.rect.height,t.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){Up(a,`distance`,e.id,e.id);continue}e.horizontal&&t.horizontal?Hp(a,`distance`,`${e.id} horizontal`,e.horizontal.value,t.horizontal.value):e.horizontal&&!t.horizontal&&Up(a,`distance`,e.id,`${e.id} horizontal`),e.vertical&&t.vertical?Hp(a,`distance`,`${e.id} vertical`,e.vertical.value,t.vertical.value):e.vertical&&!t.vertical&&Up(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 Gp(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 Kp=`0.1.5`,qp=`mesurer.context`,Jp=`context:v1`,Yp=`mesurer.context.settings`,Xp=`context.ui`,Zp={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`]},Qp={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`]},$p={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`]},em=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()))},tm=(e,t,n)=>{let r=async r=>Lp({runtime:e,ownerDocument:t,ownerWindow:n,request:r}),i=async e=>Bp(await r(e));return{context:r,contextText:i,copyContext:async e=>Gp(t,n,await i(e)),select:async i=>(e.select(Array.isArray(i)?i:[i]),await em(t,n),r({scope:`selection`})),annotations:async()=>e.annotations(),review:async r=>(await em(t,n),r?Wp({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r}):e.annotations().map(r=>Wp({runtime:e,ownerDocument:t,ownerWindow:n,annotationId:r.id}))),capturePlan:async e=>Vp(await r(e)),prepareCapture:async()=>{e.prepareCapture(),await em(t,n)},finishCapture:async()=>{e.finishCapture(),await em(t,n)}}},nm=e=>{let t=e.currentSelection();return t.elements.length>0||t.region!==null};function rm(e={}){return{id:qp,version:Kp,requires:[`runtime:solid`],provides:[Jp],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(),i=tm(r,n.ownerDocument,n.ownerWindow);t.service.provide(Jp,i),t.state.register({id:Yp,initial:{ui:e.ui??!0},persist:!0}),t.state.register({id:Xp,initial:{hasSelection:nm(r)}});let a=()=>t.state.get(`mesurer.context.settings`)?.ui??!0,o=()=>t.state.get(Xp)?.hasSelection===!0,s=e=>{t.state.update(Yp,t=>({...t,ui:e}))},c=r.subscribe(()=>{let e=nm(r);e!==(t.state.get(Xp)?.hasSelection??!1)&&t.state.update(Xp,()=>({hasSelection:e}))});t.command.register(`context.copy`,()=>i.copyContext()),t.command.register(`context.copy-selection`,()=>i.copyContext({scope:`selection`}));let l=null,u=null,d=null,f=()=>{l=null,u?.(),u=null,d?.dispose(),d=null},p=()=>{if(d)return;d=n.createInspectorMount(),d.element.dataset.mesurerLayer=`evidence`;let e={runtime:r,onCopy:i.copyContext,onController:e=>{l=e}};u=Si(()=>Ur(up,e),d.element)},m=()=>{a()?p():f()};m(),t.state.subscribe(m),t.command.register(`context.add-note`,()=>l?.openNoteComposer()),t.tool.register({id:`context.copy`,label:`Copy context`,shortcut:`C`,command:`context.copy`,order:70,icon:Zp,hidden:()=>!a()}),t.tool.register({id:`context.copy-selection`,label:`Copy selection`,shortcut:`Shift+C`,command:`context.copy-selection`,order:71,icon:Qp,hidden:()=>!a(),disabled:()=>!o()}),t.tool.register({id:`context.add-note`,label:`Add note`,shortcut:`N`,command:`context.add-note`,order:72,icon:$p,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(()=>{c(),f(),r.dispose()})}}}var im={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 am(e){for(let[t,n]of Object.entries(im))e.style.setProperty(t,n,`important`)}function om(e){return`popover`in e&&`showPopover`in e&&typeof e.showPopover==`function`&&`hidePopover`in e&&typeof e.hidePopover==`function`}var sm=e=>`newState`in e,cm=e=>e.localName===`dialog`;function lm(e){if(!cm(e)||!e.open)return!1;try{return e.matches(`:modal`)}catch{return!1}}function um(e,t,n=!0){am(e);let r=e.ownerDocument,i=r.defaultView??window,a=t,o=!1,s=`fixed`,c=!1,l=0,u=[];if(n&&om(e)&&(e.popover=`manual`),t.append(e),n&&om(e))try{e.showPopover(),c=e.matches(`:popover-open`),c&&(s=`top-layer`)}catch{e.removeAttribute(`popover`)}let d=()=>{if(!(!c||!om(e)))try{e.matches(`:popover-open`)||e.showPopover()}catch{}},f=t=>{if(e.parentNode===t)return;let n=c&&om(e)&&e.matches(`:popover-open`);if(n&&om(e))try{e.hidePopover()}catch{}t.append(e),am(e),n&&d()},p=()=>{u=u.filter(e=>e.isConnected&&lm(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||!om(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=sm(t)?t.newState:void 0,r=t.target;if(r instanceof i.Element){if(cm(r)){n===`open`&&lm(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&&cm(t)&&h(t)},b=()=>{r.fullscreenElement&&_()},x=e=>{lm(e)&&m(e);for(let t of e.querySelectorAll(`dialog`))lm(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&&cm(e)&&(lm(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&&om(e)&&e.matches(`:popover-open`))try{e.hidePopover()}catch{}u=[]}}}}var dm=`arrange`,fm=()=>[{id:qp,label:`Context`,order:30,create:()=>rm(),settingsIds:[`context`],hiddenSettingsControlIds:[`ui`]}];function pm(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,onPluginHost:o,onPluginsReady:s,availablePlugins:c=[],...l}=e,u=t.ownerDocument??document,d=u.defaultView??window,f=u.createElement(`div`);f.dataset.mesurerIsland=`true`;let p=um(f,t,i),m=f,h=f,g=f;if(n){let e=f.attachShadow({mode:r});h=u.createElement(`div`),h.dataset.mesurerIslandMount=`true`,e.append(h),m=e,g=e}let _,v,y,b=!1,x=new Promise(e=>{v=e}),S=new Promise(e=>{y=e}),C=async()=>(await(_?Promise.resolve(_):x),S),w=a===!0?{}:a===!1?null:a,T=Tp({ownerDocument:u,root:w?.root??(t.nodeType===11?t:u),getPluginHost:()=>_,waitForPluginHost:C}),E=async()=>{await T.ready();let e=_?.service.get(Jp);if(!e)throw Error(`Mesurer context plugin is not loaded. Add contextPlugin() to the plugins array.`);return e},D=async()=>{await T.ready();let e=_?.service.get(dm);if(!e)throw Error(`Mesurer Arrange plugin is not loaded. Add arrangePlugin() from mesurer-solid/arrange.`);return e},O=async e=>(await E()).context(e),k=async e=>(await E()).contextText(e),A=async e=>(await E()).copyContext(e),j=async e=>(await E()).select(e),M=async()=>(await E()).annotations(),N=async e=>(await E()).review(e),P=async e=>(await E()).capturePlan(e),F=async()=>(await E()).prepareCapture(),I=async()=>(await E()).finishCapture(),ee=async()=>(await D()).intents(),te=async e=>{let t=(await D()).intent(e);if(!t)throw Error(`Arrange intent not found: ${e}`);return t},L=async(e,t)=>{(await D()).show(e,t)},R=async(e,t)=>(await D()).capturePlan(e,t),ne=async(e,t)=>(await D()).review(e,t),re=Object.assign(T,{capabilities:()=>{let e=!!_?.service.get(Jp);return{protocol:`mesurer.agent/v1`,contextSchema:`mesurer.context/v1`,capabilities:{context:e,select:e,annotations:e,review:e,capturePlan:e,arrange:!!_?.service.get(dm)}}},context:O,contextText:k,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:ee,arrange:te,showArrange:L,arrangeCapturePlan:R,reviewArrange:ne}),ie={...l,version:Kp,availablePlugins:[...fm(),...c]},z=Si(()=>Ur(op,xi(ie,{portalTarget:g,pageTarget:t,onPluginHost:e=>{_||v(e),_=e,o?.(e)},onPluginsReady:e=>{_=e,b||(b=!0,y(e)),s?.(e)}})),h),ae=re.ready(),oe=null;if(w){let e=w.globalName??`__MESURER__`,t=Object.getOwnPropertyDescriptor(d,e);Reflect.set(d,e,re),oe=()=>{Object.getOwnPropertyDescriptor(d,e)?.value===re&&(t?Object.defineProperty(d,e,t):Reflect.deleteProperty(d,e))}}let se=!1;return{element:f,root:m,hostLayer:p.mode,get pluginHost(){return _},ready:ae,agent:re,context:O,contextText:k,copyContext:A,select:j,annotations:M,review:N,capturePlan:P,prepareCapture:F,finishCapture:I,arrangements:ee,arrange:te,showArrange:L,arrangeCapturePlan:R,reviewArrange:ne,bringToFront:p.bringToFront,describe:()=>_?.describe(),dispose(){se||(se=!0,oe?.(),z(),p.dispose(),f.remove())}}}var mm=(e={})=>({...Pf(e),version:Kp}),{target:hm,globalName:gm=`__MESURER__`,context:_m=!0,screenshot:vm=!1,plugins:ym=[],reuseExisting:bm=!0,...xm}=globalThis.__MESURER_CONFIG__??{},Sm=globalThis.__MESURER_INSTANCE__,Cm=bm&&Sm?.element.isConnected?Sm:void 0;if(Cm)Cm.ready.catch(e=>{queueMicrotask(()=>{throw e})});else{let e=hm?document.querySelector(hm):document.body;if(!e)throw Error(`Mesurer injection target not found: ${hm}`);let t=[..._m===!1?[]:[rm(_m===!0?{}:_m)],...vm===!1?[]:[mm(vm===!0?{}:vm)],...ym];Sm?.dispose();let n=pm({...xm,plugins:t,target:e,agent:{globalName:gm,root:document}});globalThis.__MESURER_INSTANCE__=n,n.ready.catch(e=>{queueMicrotask(()=>{throw e})})}})();
|
package/dist/inject.js
CHANGED
|
@@ -12496,7 +12496,7 @@ async function Vp(e, t, n) {
|
|
|
12496
12496
|
}
|
|
12497
12497
|
//#endregion
|
|
12498
12498
|
//#region src/version.ts
|
|
12499
|
-
var Hp = "0.1.
|
|
12499
|
+
var Hp = "0.1.5", Up = "mesurer.context", Wp = "context:v1", Gp = "mesurer.context.settings", Kp = "context.ui", qp = {
|
|
12500
12500
|
viewBox: "0 0 256 256",
|
|
12501
12501
|
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"]
|
|
12502
12502
|
}, Jp = {
|
package/dist/screenshot.js
CHANGED
|
@@ -2911,7 +2911,7 @@ var Gn = "mesurer:capture-bridge-ping", Kn = "mesurer:capture-bridge-request", q
|
|
|
2911
2911
|
S = !0, y += 1, u.removeEventListener("pointerdown", L), u.removeEventListener("pointermove", R), u.removeEventListener("pointerup", z), u.removeEventListener("pointercancel", B), i.removeEventListener("keydown", V, !0), v && i.clearTimeout(v), ee.dispose(), O(), cr(i), a.finishCapture(), a.dispose(), o.dispose();
|
|
2912
2912
|
});
|
|
2913
2913
|
}
|
|
2914
|
-
}), Rr = "0.1.
|
|
2914
|
+
}), Rr = "0.1.5", zr = wr, Br = xr, Vr = Sr, Hr = Cr, Ur = 4, Wr = dr, Gr = (e, t) => Xn(e, t), Kr = (e = /* @__PURE__ */ new Date()) => Zn(e), qr = (e, t, n, r) => Yn(e, t, n, r), Jr = (e, t, n) => Jn(e, t, n), Yr = (e, t) => ur(e, t), Xr = (e) => cr(e), Zr = (e = {}) => ({
|
|
2915
2915
|
...Lr(e),
|
|
2916
2916
|
version: Rr
|
|
2917
2917
|
}), Qr = (e) => $n(e);
|