nudge-ui 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +4 -29
  3. package/dist/client.mjs +987 -221
  4. package/dist/compiler/ast.d.ts +0 -6
  5. package/dist/compiler/ast.js +0 -5
  6. package/dist/compiler/componentContractTypes.d.ts +11 -5
  7. package/dist/compiler/componentContracts.js +3 -9
  8. package/dist/compiler/componentInstrumentation.d.ts +2 -13
  9. package/dist/compiler/componentInstrumentation.js +3 -12
  10. package/dist/compiler/componentPolicyResolution.d.ts +3 -22
  11. package/dist/compiler/componentPolicyResolution.js +6 -38
  12. package/dist/compiler/identityAttributes.d.ts +2 -0
  13. package/dist/compiler/identityAttributes.js +2 -0
  14. package/dist/compiler/index.d.ts +0 -1
  15. package/dist/compiler/index.js +0 -1
  16. package/dist/compiler/packageComponentContracts.d.ts +10 -19
  17. package/dist/compiler/packageComponentContracts.js +60 -43
  18. package/dist/compiler/reactComponentProtocols.d.ts +0 -7
  19. package/dist/compiler/reactComponentProtocols.js +0 -7
  20. package/dist/compiler/reactIdentity.d.ts +2 -2
  21. package/dist/compiler/reactIdentity.js +41 -43
  22. package/dist/compiler/sourcePaths.d.ts +4 -8
  23. package/dist/compiler/sourcePaths.js +6 -8
  24. package/dist/css/dialects/index.d.ts +2 -21
  25. package/dist/css/dialects/index.js +2 -9
  26. package/dist/css/dialects/tailwind.d.ts +2 -16
  27. package/dist/css/dialects/tailwind.js +2 -25
  28. package/dist/css/dialects/vanillaExtract.d.ts +1 -9
  29. package/dist/css/dialects/vanillaExtract.js +0 -1
  30. package/dist/css/index.d.ts +0 -8
  31. package/dist/css/index.js +0 -8
  32. package/dist/css/model/index.d.ts +6 -38
  33. package/dist/css/model/index.js +0 -9
  34. package/dist/css/token-inventory/index.d.ts +0 -23
  35. package/dist/css/token-inventory/index.js +0 -23
  36. package/dist/css/token-inventory/inventory.js +4 -16
  37. package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
  38. package/dist/css/token-inventory/parseStylesheet.js +5 -42
  39. package/dist/css/token-inventory/policy.d.ts +2 -39
  40. package/dist/css/token-inventory/policy.js +2 -39
  41. package/dist/css/token-inventory/types.d.ts +2 -15
  42. package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
  43. package/dist/css/value-semantics/borderSemantics.js +5 -23
  44. package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
  45. package/dist/css/value-semantics/boxSemantics.js +1 -7
  46. package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
  47. package/dist/css/value-semantics/colorSemantics.js +9 -40
  48. package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
  49. package/dist/css/value-semantics/cssSyntax.js +39 -11
  50. package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
  51. package/dist/css/value-semantics/fontSemantics.js +7 -25
  52. package/dist/css/value-semantics/index.d.ts +1 -12
  53. package/dist/css/value-semantics/index.js +1 -12
  54. package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
  55. package/dist/css/value-semantics/propertyPolicy.js +47 -59
  56. package/dist/css/value-semantics/stringMaps.d.ts +0 -1
  57. package/dist/css/value-semantics/structuredValues.d.ts +3 -37
  58. package/dist/css/value-semantics/structuredValues.js +6 -17
  59. package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
  60. package/dist/css/value-semantics/tokenInterpretation.js +7 -21
  61. package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
  62. package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
  63. package/dist/hosts/astro/clientAsset.d.ts +1 -5
  64. package/dist/hosts/astro/clientAsset.js +1 -5
  65. package/dist/hosts/astro/clientTransport.d.ts +0 -1
  66. package/dist/hosts/astro/clientTransport.js +4 -9
  67. package/dist/hosts/astro/integration.d.ts +2 -28
  68. package/dist/hosts/astro/integration.js +7 -36
  69. package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
  70. package/dist/hosts/astro/markdownIdentity.js +0 -3
  71. package/dist/hosts/astro/middleware.d.ts +1 -12
  72. package/dist/hosts/astro/middleware.js +1 -12
  73. package/dist/hosts/astro/projectContext.d.ts +1 -9
  74. package/dist/hosts/astro/projectContext.js +2 -11
  75. package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
  76. package/dist/hosts/astro/responseInstrumentation.js +5 -34
  77. package/dist/hosts/environment.d.ts +0 -8
  78. package/dist/hosts/environment.js +0 -1
  79. package/dist/hosts/next/index.js +1 -3
  80. package/dist/hosts/next/loader.d.ts +5 -44
  81. package/dist/hosts/next/loader.js +22 -103
  82. package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
  83. package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
  84. package/dist/hosts/next/manifest.d.ts +2 -16
  85. package/dist/hosts/next/manifest.js +18 -20
  86. package/dist/hosts/next/mount.d.ts +1 -11
  87. package/dist/hosts/next/mount.js +1 -11
  88. package/dist/hosts/next/repositoryScope.d.ts +2 -17
  89. package/dist/hosts/next/repositoryScope.js +2 -17
  90. package/dist/hosts/next/sidecar.d.ts +0 -13
  91. package/dist/hosts/next/sidecar.js +25 -110
  92. package/dist/hosts/next/wrapper.d.ts +0 -31
  93. package/dist/hosts/next/wrapper.js +14 -71
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +3 -19
  96. package/dist/hosts/reactRendererCapture.d.ts +2 -0
  97. package/dist/hosts/reactRendererCapture.js +12 -0
  98. package/dist/hosts/static/cli.d.ts +0 -4
  99. package/dist/hosts/static/cli.js +0 -3
  100. package/dist/hosts/static/html/bootstrap.d.ts +1 -18
  101. package/dist/hosts/static/html/bootstrap.js +2 -14
  102. package/dist/hosts/static/manifest.d.ts +2 -15
  103. package/dist/hosts/static/manifest.js +5 -18
  104. package/dist/hosts/static/server.d.ts +4 -38
  105. package/dist/hosts/static/server.js +17 -67
  106. package/dist/hosts/vite/index.d.ts +0 -10
  107. package/dist/hosts/vite/index.js +0 -10
  108. package/dist/hosts/vite/react.d.ts +4 -17
  109. package/dist/hosts/vite/react.js +18 -35
  110. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
  111. package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
  112. package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
  113. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
  114. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
  115. package/dist/hosts/vite/vite.d.ts +5 -26
  116. package/dist/hosts/vite/vite.js +44 -80
  117. package/dist/html/dom.d.ts +0 -1
  118. package/dist/html/dom.js +0 -1
  119. package/dist/html/identity.d.ts +1 -15
  120. package/dist/html/identity.js +1 -8
  121. package/dist/html/insertions.d.ts +2 -8
  122. package/dist/html/insertions.js +1 -1
  123. package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
  124. package/dist/inspector/agent/McpConnectionDialog.js +8 -9
  125. package/dist/inspector/agent/activity.d.ts +2 -2
  126. package/dist/inspector/agent/activity.js +4 -3
  127. package/dist/inspector/agent/client.d.ts +3 -27
  128. package/dist/inspector/agent/client.js +43 -91
  129. package/dist/inspector/agent/connectionStatus.d.ts +3 -2
  130. package/dist/inspector/agent/connectionStatus.js +25 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +42 -176
  133. package/dist/inspector/agent/protocol.d.ts +1 -10
  134. package/dist/inspector/agent/protocol.js +1 -9
  135. package/dist/inspector/agent/verification.d.ts +3 -20
  136. package/dist/inspector/agent/verification.js +10 -43
  137. package/dist/inspector/boot.d.ts +5 -0
  138. package/dist/inspector/boot.js +289 -0
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
  141. package/dist/inspector/canvas/CanvasCard.js +26 -24
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
  143. package/dist/inspector/canvas/CanvasToolbar.js +2 -1
  144. package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
  145. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
  146. package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
  147. package/dist/inspector/canvas/PageCard.d.ts +9 -0
  148. package/dist/inspector/canvas/PageCard.js +50 -0
  149. package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
  150. package/dist/inspector/canvas/SketchToolOptions.js +80 -0
  151. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
  152. package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
  153. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
  154. package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
  155. package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
  156. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  157. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  158. package/dist/inspector/canvas/agentPresentation.js +3 -14
  159. package/dist/inspector/canvas/assets/eraser.svg +28 -0
  160. package/dist/inspector/canvas/assets/pen.svg +25 -0
  161. package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
  162. package/dist/inspector/canvas/canvasFrame.js +9 -0
  163. package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
  164. package/dist/inspector/canvas/canvasGestures.js +0 -6
  165. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  166. package/dist/inspector/canvas/canvasResize.js +1 -6
  167. package/dist/inspector/canvas/canvasStore.d.ts +5 -7
  168. package/dist/inspector/canvas/canvasStore.js +42 -21
  169. package/dist/inspector/canvas/frameConnection.d.ts +42 -0
  170. package/dist/inspector/canvas/frameConnection.js +73 -0
  171. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  172. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  173. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  174. package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
  175. package/dist/inspector/canvas/frameProtocol.js +37 -24
  176. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  177. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  178. package/dist/inspector/canvas/layout.d.ts +10 -22
  179. package/dist/inspector/canvas/layout.js +0 -3
  180. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  181. package/dist/inspector/canvas/pageSurface.d.ts +6 -0
  182. package/dist/inspector/canvas/pageSurface.js +29 -0
  183. package/dist/inspector/canvas/projection.d.ts +14 -25
  184. package/dist/inspector/canvas/projection.js +64 -87
  185. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  186. package/dist/inspector/canvas/rendererBootstrap.js +10 -15
  187. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  188. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  189. package/dist/inspector/canvas/rendererElementSelector.js +38 -28
  190. package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
  191. package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
  192. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
  193. package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
  194. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  195. package/dist/inspector/canvas/rendererStylesheet.js +23 -1
  196. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  197. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  198. package/dist/inspector/canvas/sessionStore.d.ts +3 -9
  199. package/dist/inspector/canvas/sessionStore.js +33 -43
  200. package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
  201. package/dist/inspector/canvas/staleChangeDetector.js +11 -26
  202. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  203. package/dist/inspector/canvas/toolbarScale.js +1 -4
  204. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  205. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  206. package/dist/inspector/canvas/viewStore.js +1 -1
  207. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  208. package/dist/inspector/canvas/wheelPan.js +1 -1
  209. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  210. package/dist/inspector/canvas/workspaceLease.js +1 -7
  211. package/dist/inspector/changes/codecs.d.ts +1 -0
  212. package/dist/inspector/changes/codecs.js +21 -5
  213. package/dist/inspector/changes/draftPreview.d.ts +7 -0
  214. package/dist/inspector/changes/draftPreview.js +118 -0
  215. package/dist/inspector/changes/editModel.d.ts +11 -13
  216. package/dist/inspector/changes/editModel.js +9 -4
  217. package/dist/inspector/changes/managedStyleProjection.js +6 -15
  218. package/dist/inspector/changes/model.d.ts +0 -5
  219. package/dist/inspector/changes/model.js +1 -8
  220. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  221. package/dist/inspector/changes/previewDiagnostics.js +5 -21
  222. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  223. package/dist/inspector/changes/previewVerification.js +34 -0
  224. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  225. package/dist/inspector/changes/types.d.ts +11 -8
  226. package/dist/inspector/clientManifest.d.ts +17 -6
  227. package/dist/inspector/clientManifest.js +16 -3
  228. package/dist/inspector/comments/CommentsOverlay.js +66 -23
  229. package/dist/inspector/comments/element.d.ts +1 -2
  230. package/dist/inspector/comments/element.js +1 -2
  231. package/dist/inspector/comments/store.d.ts +1 -1
  232. package/dist/inspector/comments/store.js +4 -3
  233. package/dist/inspector/comments/verification.d.ts +8 -2
  234. package/dist/inspector/comments/verification.js +19 -11
  235. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  236. package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
  237. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  238. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  239. package/dist/inspector/componentSemantics/changeAction.js +1 -1
  240. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  241. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  242. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  243. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  244. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  245. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  246. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  247. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  248. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  249. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  250. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  251. package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
  252. package/dist/inspector/componentSemantics/textBinding.js +20 -87
  253. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  254. package/dist/inspector/componentSemantics/types.js +0 -1
  255. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  256. package/dist/inspector/conformance/borderCases.js +0 -5
  257. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  258. package/dist/inspector/conformance/colorCases.js +0 -6
  259. package/dist/inspector/conformance/fixture.d.ts +1 -5
  260. package/dist/inspector/conformance/fixture.js +1 -5
  261. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  262. package/dist/inspector/conformance/spacingCases.js +0 -4
  263. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  264. package/dist/inspector/conformance/typographyCases.js +0 -5
  265. package/dist/inspector/drafts/draftStore.d.ts +95 -0
  266. package/dist/inspector/drafts/draftStore.js +461 -0
  267. package/dist/inspector/drafts/model.d.ts +14 -14
  268. package/dist/inspector/drafts/model.js +4 -2
  269. package/dist/inspector/drafts/store.d.ts +47 -16
  270. package/dist/inspector/drafts/store.js +137 -170
  271. package/dist/inspector/editScope.d.ts +0 -1
  272. package/dist/inspector/editScope.js +0 -1
  273. package/dist/inspector/index.d.ts +2 -4
  274. package/dist/inspector/index.js +2 -264
  275. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  276. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  277. package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
  278. package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
  279. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  280. package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
  281. package/dist/inspector/inspection/bridge.d.ts +3 -7
  282. package/dist/inspector/inspection/bridge.js +6 -13
  283. package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
  284. package/dist/inspector/inspection/browserCssInspection.js +32 -14
  285. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  286. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  287. package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
  288. package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
  289. package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
  290. package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
  291. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  292. package/dist/inspector/inspection/selectionProperty.js +1 -5
  293. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  294. package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
  295. package/dist/inspector/iterations/capture.d.ts +2 -2
  296. package/dist/inspector/iterations/capture.js +4 -9
  297. package/dist/inspector/iterations/client.d.ts +2 -2
  298. package/dist/inspector/iterations/client.js +0 -1
  299. package/dist/inspector/iterations/coordinator.d.ts +4 -4
  300. package/dist/inspector/iterations/coordinator.js +5 -4
  301. package/dist/inspector/iterations/prompt.d.ts +0 -1
  302. package/dist/inspector/iterations/prompt.js +9 -9
  303. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  304. package/dist/inspector/overlay/DomNavigator.js +39 -15
  305. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  306. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  307. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  308. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  309. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  310. package/dist/inspector/overlay/clickPolicy.js +3 -14
  311. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  312. package/dist/inspector/overlay/dropGuide.js +0 -3
  313. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  314. package/dist/inspector/overlay/frameThrottle.js +0 -1
  315. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  316. package/dist/inspector/overlay/interactionStyles.js +19 -8
  317. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  318. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  319. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  320. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  321. package/dist/inspector/overlay/spacingGestures.js +151 -31
  322. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  323. package/dist/inspector/overlay/structuralGestures.js +1 -4
  324. package/dist/inspector/pageInspector.d.ts +33 -0
  325. package/dist/inspector/pageInspector.js +335 -0
  326. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  327. package/dist/inspector/projection/cssEscapes.js +2 -4
  328. package/dist/inspector/projection/draftProjection.d.ts +6 -10
  329. package/dist/inspector/projection/draftProjection.js +8 -7
  330. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  331. package/dist/inspector/projection/managedStylesheet.js +28 -26
  332. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  333. package/dist/inspector/projection/renderedInstance.js +13 -33
  334. package/dist/inspector/projection/structuralProjection.d.ts +7 -48
  335. package/dist/inspector/projection/structuralProjection.js +31 -96
  336. package/dist/inspector/projection/textProjection.d.ts +7 -13
  337. package/dist/inspector/projection/textProjection.js +35 -80
  338. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  339. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  340. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
  341. package/dist/inspector/prompt/clipboardHandoff.js +34 -16
  342. package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
  343. package/dist/inspector/prompt/generatePrompt.js +247 -166
  344. package/dist/inspector/prompt/promptDocument.d.ts +3 -0
  345. package/dist/inspector/prompt/promptDocument.js +8 -0
  346. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  347. package/dist/inspector/prompt/promptSettings.js +7 -8
  348. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  349. package/dist/inspector/runtime/devFlag.js +4 -31
  350. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  351. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  352. package/dist/inspector/runtime/editorShell.js +0 -1
  353. package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
  354. package/dist/inspector/runtime/inspectorStorage.js +37 -0
  355. package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
  356. package/dist/inspector/runtime/ownedStylesheets.js +66 -0
  357. package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
  358. package/dist/inspector/runtime/runtimeConfig.js +18 -50
  359. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
  360. package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
  361. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
  362. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
  363. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  364. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  365. package/dist/inspector/selection/editScope.d.ts +2 -7
  366. package/dist/inspector/selection/editScope.js +15 -14
  367. package/dist/inspector/selection/editTarget.d.ts +1 -5
  368. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  369. package/dist/inspector/selection/hierarchy.js +42 -24
  370. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  371. package/dist/inspector/selection/selectionStore.js +5 -16
  372. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  373. package/dist/inspector/selection/sourceSite.js +2 -8
  374. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  375. package/dist/inspector/selection/styleSelection.js +1 -5
  376. package/dist/inspector/session/lifecycle.d.ts +1 -9
  377. package/dist/inspector/session/lifecycle.js +0 -1
  378. package/dist/inspector/session/sessionContext.d.ts +0 -4
  379. package/dist/inspector/session/sessionContext.js +0 -4
  380. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  381. package/dist/inspector/session/sessionFactory.js +0 -6
  382. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  383. package/dist/inspector/settings/SettingsDialog.js +5 -3
  384. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  385. package/dist/inspector/shell/AgentStatusButton.js +7 -7
  386. package/dist/inspector/shell/AppShell.js +6 -2
  387. package/dist/inspector/shell/ChangesLog.js +29 -12
  388. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  389. package/dist/inspector/shell/CopyPromptButton.js +62 -55
  390. package/dist/inspector/shell/EmptyState.js +3 -3
  391. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  392. package/dist/inspector/shell/InspectorEditors.js +14 -0
  393. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  394. package/dist/inspector/shell/InspectorPanel.js +8 -0
  395. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  396. package/dist/inspector/shell/InspectorSelection.js +20 -0
  397. package/dist/inspector/shell/InspectorShell.d.ts +0 -3
  398. package/dist/inspector/shell/InspectorShell.js +44 -58
  399. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  400. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  401. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  402. package/dist/inspector/shell/PeekOriginalButton.js +3 -8
  403. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  404. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  405. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  406. package/dist/inspector/shell/PromptActionButton.js +14 -0
  407. package/dist/inspector/shell/elementName.d.ts +5 -0
  408. package/dist/inspector/shell/elementName.js +29 -0
  409. package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
  410. package/dist/inspector/shell/interactionStatePreview.js +107 -0
  411. package/dist/inspector/shell/originalPreview.d.ts +1 -5
  412. package/dist/inspector/shell/originalPreview.js +5 -37
  413. package/dist/inspector/shell/stateValue.d.ts +1 -2
  414. package/dist/inspector/shell/stateValue.js +4 -8
  415. package/dist/inspector/shell/styleState.d.ts +1 -2
  416. package/dist/inspector/shell/styleState.js +1 -2
  417. package/dist/inspector/sketch/SketchEditor.js +5 -5
  418. package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
  419. package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
  420. package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
  421. package/dist/inspector/sketch/SketchOverlay.js +138 -263
  422. package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
  423. package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
  424. package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
  425. package/dist/inspector/sketch/SketchThumbnail.js +18 -0
  426. package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
  427. package/dist/inspector/sketch/SketchWorkspace.js +70 -37
  428. package/dist/inspector/sketch/capture.d.ts +12 -3
  429. package/dist/inspector/sketch/capture.js +31 -14
  430. package/dist/inspector/sketch/copySketch.d.ts +4 -0
  431. package/dist/inspector/sketch/copySketch.js +43 -0
  432. package/dist/inspector/sketch/drawingTools.d.ts +15 -0
  433. package/dist/inspector/sketch/drawingTools.js +46 -0
  434. package/dist/inspector/sketch/frameHeading.d.ts +3 -0
  435. package/dist/inspector/sketch/frameHeading.js +23 -0
  436. package/dist/inspector/sketch/freehand.d.ts +0 -1
  437. package/dist/inspector/sketch/freehand.js +3 -4
  438. package/dist/inspector/sketch/geometry.d.ts +2 -1
  439. package/dist/inspector/sketch/geometry.js +15 -1
  440. package/dist/inspector/sketch/handoff.js +0 -1
  441. package/dist/inspector/sketch/history.d.ts +26 -0
  442. package/dist/inspector/sketch/history.js +55 -0
  443. package/dist/inspector/sketch/interaction.d.ts +3 -5
  444. package/dist/inspector/sketch/interaction.js +8 -11
  445. package/dist/inspector/sketch/model.d.ts +33 -6
  446. package/dist/inspector/sketch/model.js +101 -63
  447. package/dist/inspector/sketch/persistence.d.ts +14 -1
  448. package/dist/inspector/sketch/persistence.js +64 -8
  449. package/dist/inspector/sketch/raster.d.ts +3 -2
  450. package/dist/inspector/sketch/raster.js +40 -20
  451. package/dist/inspector/sketch/store.d.ts +1 -1
  452. package/dist/inspector/sketch/store.js +3 -4
  453. package/dist/inspector/sketch/videoFrames.d.ts +6 -0
  454. package/dist/inspector/sketch/videoFrames.js +80 -0
  455. package/dist/inspector/spacing/projection.d.ts +0 -8
  456. package/dist/inspector/spacing/projection.js +38 -20
  457. package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
  458. package/dist/inspector/styleEditors/BorderEditor.js +30 -135
  459. package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
  460. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  461. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  462. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  463. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  464. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  465. package/dist/inspector/styleEditors/GapField.js +3 -4
  466. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  467. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  468. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  469. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  470. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  471. package/dist/inspector/styleEditors/GridSection.js +22 -9
  472. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  473. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  474. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  475. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
  476. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  477. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  478. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  479. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  480. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  481. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  482. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  483. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  484. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  485. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  486. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  487. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  488. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  489. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  490. package/dist/inspector/styleEditors/Typography.js +2 -4
  491. package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
  492. package/dist/inspector/styleEditors/borderModel.js +105 -0
  493. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  494. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  495. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  496. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  497. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  498. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  499. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  500. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  501. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  502. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  503. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  504. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  505. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  506. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  507. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  508. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  509. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  510. package/dist/inspector/styleEditors/layoutValue.js +6 -15
  511. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  512. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  513. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  514. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  515. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  516. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  517. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  518. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  519. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  520. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  521. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  522. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  523. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  524. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  525. package/dist/inspector/testing.d.ts +1 -4
  526. package/dist/inspector/testing.js +1 -4
  527. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  528. package/dist/inspector/tokens/TokenChip.js +1 -4
  529. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  530. package/dist/inspector/tokens/TokenField.js +53 -32
  531. package/dist/inspector/tokens/TokensPanel.js +2 -1
  532. package/dist/inspector/tokens/catalog.d.ts +2 -10
  533. package/dist/inspector/tokens/catalog.js +5 -12
  534. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  535. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  536. package/dist/inspector/tokens/editActions.d.ts +4 -4
  537. package/dist/inspector/tokens/editActions.js +11 -7
  538. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  539. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  540. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
  541. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
  542. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  543. package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
  544. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
  545. package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
  546. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  547. package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
  548. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  549. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  550. package/dist/inspector/tokens/resolution.d.ts +11 -27
  551. package/dist/inspector/tokens/resolution.js +105 -181
  552. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  553. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  554. package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
  555. package/dist/inspector/tokens/tokenEdits.js +1 -1
  556. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  557. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  558. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  559. package/dist/inspector/ui/AtRuleContext.js +8 -6
  560. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  561. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  562. package/dist/inspector/ui/Disclosure.js +0 -4
  563. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  564. package/dist/inspector/ui/InlineStyleWarning.js +2 -2
  565. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  566. package/dist/inspector/ui/InspectorPopover.js +1 -5
  567. package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
  568. package/dist/inspector/ui/InspectorStyle.js +26 -0
  569. package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
  570. package/dist/inspector/ui/PopoverListbox.js +3 -3
  571. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  572. package/dist/inspector/ui/SegmentedControl.js +6 -4
  573. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  574. package/dist/inspector/ui/SideValuesField.js +2 -8
  575. package/dist/inspector/ui/Toast.d.ts +10 -0
  576. package/dist/inspector/ui/Toast.js +26 -0
  577. package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
  578. package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
  579. package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
  580. package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
  581. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  582. package/dist/inspector/ui/atRuleSegments.js +34 -0
  583. package/dist/inspector/ui/classNames.d.ts +0 -1
  584. package/dist/inspector/ui/classNames.js +0 -1
  585. package/dist/inspector/ui/customCursors.d.ts +11 -0
  586. package/dist/inspector/ui/customCursors.js +29 -7
  587. package/dist/inspector/ui/styles.js +25 -25
  588. package/dist/inspector/workspace/commands.js +1 -2
  589. package/dist/inspector/workspace/controller.js +20 -2
  590. package/dist/inspector/workspace/handoff.d.ts +1 -5
  591. package/dist/inspector/workspace/handoff.js +4 -7
  592. package/dist/inspector/workspace/sentItems.d.ts +3 -6
  593. package/dist/inspector/workspace/sentItems.js +6 -24
  594. package/dist/inspector/workspace/timeline.d.ts +28 -11
  595. package/dist/inspector/workspace/timeline.js +117 -96
  596. package/dist/internal/agent-protocol.d.ts +53 -38
  597. package/dist/internal/agent-protocol.js +151 -42
  598. package/dist/nudge-ui.mjs +155 -92
  599. package/dist/project/artifacts.js +24 -21
  600. package/dist/project/files.d.ts +0 -1
  601. package/dist/project/files.js +2 -9
  602. package/dist/project/identity.d.ts +1 -5
  603. package/dist/project/identity.js +1 -5
  604. package/dist/project/mcpPackage.d.ts +3 -0
  605. package/dist/project/mcpPackage.js +55 -0
  606. package/dist/project/pathPolicy.d.ts +1 -6
  607. package/dist/project/pathPolicy.js +1 -6
  608. package/dist/project/tokens.d.ts +2 -12
  609. package/dist/project/tokens.js +4 -15
  610. package/dist/transport/editor.d.ts +1 -12
  611. package/dist/transport/editor.js +2 -13
  612. package/dist/transport/index.d.ts +0 -5
  613. package/dist/transport/index.js +0 -5
  614. package/dist/transport/routes.d.ts +0 -5
  615. package/dist/transport/routes.js +0 -5
  616. package/package.json +16 -5
  617. package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
  618. package/dist/inspector/canvas/measurementProjection.js +0 -16
  619. package/dist/inspector/changes/changesLog.d.ts +0 -49
  620. package/dist/inspector/changes/changesLog.js +0 -255
  621. package/dist/inspector/changes/draftChanges.d.ts +0 -58
  622. package/dist/inspector/changes/draftChanges.js +0 -304
  623. package/dist/inspector/conformance/projection.d.ts +0 -2
  624. package/dist/inspector/conformance/projection.js +0 -3
  625. package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
  626. package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
  627. package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
  628. package/dist/inspector/overlay/InspectorOverlay.js +0 -332
  629. package/dist/inspector/overlay/elementSelector.d.ts +0 -1
  630. package/dist/inspector/overlay/elementSelector.js +0 -111
  631. package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
  632. package/dist/inspector/sketch/SketchChanges.js +0 -72
  633. package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
  634. package/dist/inspector/sketch/SketchEntryButton.js +0 -11
  635. package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
  636. package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
  637. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  638. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  639. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  640. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  641. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  642. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -1,15 +1,15 @@
1
+ import { type CanvasFrame } from "../canvas/canvasFrame.js";
1
2
  import type { HtmlArtifactRevision } from "../../transport/artifacts.js";
2
- import { type DraftContents } from "../changes/draftChanges.js";
3
+ import type { DraftContents } from "../drafts/model.js";
3
4
  /** Owned transport; tests use a working in-memory artifact store. */
4
5
  export interface HtmlIterationStorage {
5
6
  readRevision(id: string): Promise<HtmlArtifactRevision>;
6
7
  commit(id: string, expected: HtmlArtifactRevision, html?: string): Promise<HtmlArtifactRevision>;
7
8
  }
8
- /** Owns save ordering, draft settlement, and external document promotion. */
9
9
  export declare function createHtmlIterationCoordinator(storage: HtmlIterationStorage): {
10
10
  prepare(cardId: string, artifactId: string, baseRevision: string, capture: () => Promise<string>): Promise<DraftContents>;
11
11
  refresh(cardId: string, artifactId: string, baseRevision: string, available: () => boolean): Promise<boolean>;
12
12
  };
13
13
  /** Materializes pending intent before the agent can start editing document.html. */
14
- export declare function prepareHtmlIterationHandoff(cardId: string, artifactId: string, frame: HTMLIFrameElement): Promise<DraftContents>;
15
- export declare function refreshHtmlIteration(cardId: string, artifactId: string, frame: HTMLIFrameElement): Promise<boolean>;
14
+ export declare function prepareHtmlIterationHandoff(cardId: string, artifactId: string, frame: CanvasFrame): Promise<DraftContents>;
15
+ export declare function refreshHtmlIteration(cardId: string, artifactId: string, frame: CanvasFrame): Promise<boolean>;
@@ -1,12 +1,11 @@
1
+ import { canvasFrameElement } from "../canvas/canvasFrame.js";
1
2
  import { HTML_ARTIFACT_REVISION_ATTRIBUTE } from "../../transport/artifacts.js";
2
- import { getDraftForCard, getDraftContentsForCard, clearSavedIterationDraft } from "../drafts/store.js";
3
- import { lockDraft } from "../changes/draftChanges.js";
3
+ import { getDraftForCard, getDraftContentsForCard, clearSavedIterationDraft, lockDraft } from "../drafts/store.js";
4
4
  import { canWriteWorkspace } from "../canvas/workspaceLease.js";
5
5
  import { projectDraftToDocument, isCanvasProjectionRevisionCurrent, projectToAllReadyCards } from "../canvas/projection.js";
6
6
  import { isInlineTextEditingActive } from "../inline-text/inlineTextEditor.js";
7
7
  import { captureHtmlIteration } from "./capture.js";
8
8
  import { artifactDocumentUrl, commitHtmlArtifact, readHtmlArtifactRevision } from "./client.js";
9
- /** Owns save ordering, draft settlement, and external document promotion. */
10
9
  export function createHtmlIterationCoordinator(storage) {
11
10
  const operations = new Map();
12
11
  async function serialize(id, operation) {
@@ -117,7 +116,9 @@ export async function prepareHtmlIterationHandoff(cardId, artifactId, frame) {
117
116
  }
118
117
  return html;
119
118
  });
120
- frame.src = `${artifactDocumentUrl(artifactId)}?revision=${Date.now()}`;
119
+ const element = canvasFrameElement(frame);
120
+ if (element)
121
+ element.src = `${artifactDocumentUrl(artifactId)}?revision=${Date.now()}`;
121
122
  return workspace;
122
123
  }
123
124
  finally {
@@ -1,3 +1,2 @@
1
- /** Defines the edit destination for every HTML-iteration handoff, including fallback copies. */
2
1
  export declare function htmlIterationPrompt(id: string, changes: string, noInspectorChanges: boolean, hasSketches: boolean, customInstructions?: string): string;
3
2
  export declare function htmlIterationImplementationPrompt(id: string, label: string, page: string, changes: string): string;
@@ -1,26 +1,26 @@
1
- /** Defines the edit destination for every HTML-iteration handoff, including fallback copies. */
1
+ import { withPromptContext } from "../prompt/promptDocument.js";
2
2
  export function htmlIterationPrompt(id, changes, noInspectorChanges, hasSketches, customInstructions = "") {
3
3
  const directory = `.nudge/artifacts/${id}`;
4
- return [
5
- "# Edit this HTML iteration",
4
+ return withPromptContext([
5
+ "## Edit this HTML iteration",
6
6
  "",
7
7
  `Edit only \`${directory}/document.html\`. This is the standalone HTML and CSS shown in the selected Nudge iteration frame.`,
8
8
  "Preserve its responsive CSS and existing design edits. Keep application source files unchanged. Any original source locations below identify captured elements; they are not files to edit.",
9
9
  `Keep \`${directory}/baseline.html\`, \`${directory}/preview.html\`, and metadata unchanged. Nudge will reload the iteration from your updated document.`,
10
10
  ...(hasSketches ? ["Implement the attached sketch notes in this iteration's HTML and CSS. Match numbered notes to their marks in the image."] : []),
11
11
  "",
12
- ...(noInspectorChanges ? ["Use the current iteration as the editing base. Existing visual edits are already saved in its markup and styles.", ...(customInstructions.trim() ? ["", "## Custom instructions", "", customInstructions.trim()] : [])] : [changes]),
13
- ].join("\n");
12
+ ], noInspectorChanges
13
+ ? ["Use the current iteration as the editing base. Existing visual edits are already saved in its markup and styles.", ...(customInstructions.trim() ? ["", "## Custom instructions", "", customInstructions.trim()] : [])].join("\n")
14
+ : changes);
14
15
  }
15
16
  export function htmlIterationImplementationPrompt(id, label, page, changes) {
16
17
  const directory = `.nudge/artifacts/${id}`;
17
- return [
18
- `# Implement ${label} in the live app`,
18
+ return withPromptContext([
19
+ `## Implement ${label} in the live app`,
19
20
  "",
20
21
  `Page: ${page}`,
21
22
  `Use \`${directory}/document.html\` as the design reference, including all saved visual edits.`,
22
23
  "Update application source for this page to match it. Reuse existing components and styles, and preserve app behavior and data.",
23
24
  "Keep iteration files unchanged; captured source locations below are hints for finding app code.",
24
- ...(changes.trim() ? ["", changes] : []),
25
- ].join("\n");
25
+ ], changes);
26
26
  }
@@ -6,5 +6,7 @@ export interface DomNavigatorProps {
6
6
  hierarchy: HTMLElement[];
7
7
  anchor: Rect;
8
8
  project: (element: HTMLElement) => Rect | null;
9
+ /** The selection is a component or shares its source with other elements. */
10
+ linked?: boolean;
9
11
  }
10
- export declare function DomNavigator({ selected, hierarchy, anchor, project }: DomNavigatorProps): ReactElement | null;
12
+ export declare function DomNavigator({ selected, hierarchy, anchor, project, linked }: DomNavigatorProps): ReactElement | null;
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { IconMenu2 } from "@tabler/icons-react";
3
+ import { IconChevronDown, IconChevronRight, IconMenu2 } from "@tabler/icons-react";
4
4
  import { Popover as BasePopover } from "@base-ui/react/popover";
5
5
  import { setSelectedElement } from "../selection/selectionStore.js";
6
- import { computeNavigationNodes } from "../selection/hierarchy.js";
6
+ import { computeNavigationParents, computeTrackedChildren, hasTrackedChildren } from "../selection/hierarchy.js";
7
7
  import { resolveSelectionFromElement } from "../selection/resolveSelection.js";
8
8
  import { portalContainer } from "../ui/portalContainer.js";
9
9
  import { cx } from "../ui/classNames.js";
@@ -19,28 +19,52 @@ function selectNode(node) {
19
19
  if (resolved)
20
20
  setSelectedElement(resolved);
21
21
  }
22
- export function DomNavigator({ selected, hierarchy, anchor, project }) {
23
- const nodes = computeNavigationNodes(selected.domElement, hierarchy);
24
- const parents = nodes.filter((node) => node.direction === "up");
25
- const children = nodes.filter((node) => node.direction === "down");
22
+ export function DomNavigator({ selected, hierarchy, anchor, project, linked = false }) {
23
+ const children = computeTrackedChildren(selected.domElement);
24
+ const parents = computeNavigationParents(hierarchy, children.elements.length > 0);
26
25
  const [expanded, setExpanded] = useState(false);
27
26
  const [hovered, setHovered] = useState(null);
28
- if (nodes.length === 0)
27
+ const [opened, setOpened] = useState(new Set());
28
+ if (parents.length === 0 && children.elements.length === 0)
29
29
  return null;
30
30
  const preview = hovered ? project(hovered) : null;
31
31
  const setOpen = (next) => {
32
32
  setExpanded(next);
33
- if (!next)
33
+ if (!next) {
34
34
  setHovered(null);
35
+ setOpened(new Set());
36
+ }
35
37
  };
36
- const renderItem = (node, depth) => {
37
- const current = node === null;
38
- const element = current ? selected.domElement : node.element;
39
- return (_jsx("button", { type: "button", className: cx("dom-navigator__item", current && "dom-navigator__item--selected"), "data-test": "dom-navigator-item", "data-current": current ? "true" : undefined, "data-direction": node?.direction, "data-depth": depth, "data-cid": element.getAttribute("data-cid") ?? undefined, style: { paddingLeft: `calc(var(--space-8) + ${depth * 16}px)` }, role: "menuitem", "aria-current": current ? "true" : undefined, onMouseEnter: () => setHovered(current ? null : element), onClick: () => {
38
+ const toggleOpened = (element) => {
39
+ setOpened((current) => {
40
+ const next = new Set(current);
41
+ if (!next.delete(element))
42
+ next.add(element);
43
+ return next;
44
+ });
45
+ };
46
+ const renderItem = (key, element, depth) => {
47
+ const current = element === null;
48
+ const target = element ?? selected.domElement;
49
+ return (_jsx("button", { type: "button", className: cx("dom-navigator__item", current && "dom-navigator__item--selected"), "data-test": "dom-navigator-item", "data-current": current ? "true" : undefined, "data-depth": depth, "data-cid": target.getAttribute("data-cid") ?? undefined, style: { paddingLeft: `calc(var(--space-8) + ${depth * 16}px)` }, role: "menuitem", "aria-current": current ? "true" : undefined, onMouseEnter: () => setHovered(current ? null : target), onClick: () => {
40
50
  if (!current)
41
- selectNode(element);
51
+ selectNode(target);
42
52
  setOpen(false);
43
- }, children: _jsx("span", { children: nodeDescription(element) }) }, current ? "current" : `${node.direction}-${node.depth}-${element.getAttribute("data-cid") ?? element.localName}`));
53
+ }, children: _jsx("span", { children: nodeDescription(target) }) }, key));
44
54
  };
45
- return (_jsxs(_Fragment, { children: [preview ? _jsx("div", { className: "dom-navigator-preview", "data-test": "dom-navigator-preview", style: preview, "aria-hidden": "true" }) : null, _jsx("div", { className: "dom-navigator", "data-test": "dom-navigator", "aria-label": "DOM navigator", style: { left: Math.max(4, anchor.left), top: Math.max(4, anchor.top - 28) }, children: _jsxs(BasePopover.Root, { open: expanded, onOpenChange: setOpen, children: [_jsx(BasePopover.Trigger, { render: _jsx("button", { type: "button", className: "dom-navigator__trigger", "data-test": "dom-navigator-trigger", "aria-label": "Open DOM navigator", "aria-haspopup": "menu", "aria-expanded": expanded, onMouseEnter: () => setHovered(null) }), children: _jsx(IconMenu2, { size: 14, "aria-hidden": "true" }) }), _jsx("span", { className: "dom-navigator__label", children: nodeDescription(selected.domElement) }), _jsx(BasePopover.Portal, { container: portalContainer(), children: _jsx(BasePopover.Positioner, { className: "dom-navigator__positioner", side: "top", align: "start", sideOffset: 4, children: _jsxs(BasePopover.Popup, { className: "dom-navigator__menu", role: "menu", "aria-label": "DOM navigator", onMouseLeave: () => setHovered(null), children: [parents.slice().reverse().map((node) => renderItem(node, parents.length - node.depth)), renderItem(null, parents.length), children.map((node) => renderItem(node, parents.length + node.depth))] }) }) })] }) })] }));
55
+ const renderChildren = (list, depth, path) => [
56
+ ...list.elements.flatMap((element, index) => {
57
+ const key = `${path}/${index}`;
58
+ const nested = opened.has(element) ? computeTrackedChildren(element) : null;
59
+ const expandable = hasTrackedChildren(element);
60
+ return [
61
+ _jsxs("div", { className: "dom-navigator__row", "data-test": "dom-navigator-row", children: [expandable ? (_jsx("button", { type: "button", className: "dom-navigator__expander", "data-test": "dom-navigator-expander", "aria-label": `${nested ? "Collapse" : "Expand"} ${nodeDescription(element)}`, "aria-expanded": nested !== null, style: { left: `calc(var(--space-4) + ${(depth - 1) * 16}px)` }, onMouseEnter: () => setHovered(null), onClick: () => toggleOpened(element), children: nested ? _jsx(IconChevronDown, { size: 12, "aria-hidden": "true" }) : _jsx(IconChevronRight, { size: 12, "aria-hidden": "true" }) })) : null, renderItem(key, element, depth)] }, key),
62
+ ...(nested ? renderChildren(nested, depth + 1, key) : []),
63
+ ];
64
+ }),
65
+ ...(list.hidden > 0
66
+ ? [(_jsxs("div", { className: "dom-navigator__more", "data-test": "dom-navigator-more", style: { paddingLeft: `calc(var(--space-8) + ${depth * 16}px)` }, children: ["+", list.hidden, " more"] }, `${path}/more`))]
67
+ : []),
68
+ ];
69
+ return (_jsxs(_Fragment, { children: [preview ? _jsx("div", { className: "dom-navigator-preview", "data-test": "dom-navigator-preview", style: preview, "aria-hidden": "true" }) : null, _jsx("div", { className: "dom-navigator", "data-test": "dom-navigator", "data-linked": linked ? "true" : undefined, "aria-label": "DOM navigator", style: { left: Math.max(4, anchor.left), top: Math.max(4, anchor.top - 28) }, children: _jsxs(BasePopover.Root, { open: expanded, onOpenChange: setOpen, children: [_jsx(BasePopover.Trigger, { render: _jsx("button", { type: "button", className: "dom-navigator__trigger", "data-test": "dom-navigator-trigger", "aria-label": "Open DOM navigator", "aria-haspopup": "menu", "aria-expanded": expanded, onMouseEnter: () => setHovered(null) }), children: _jsx(IconMenu2, { size: 14, "aria-hidden": "true" }) }), _jsx("span", { className: "dom-navigator__label", children: nodeDescription(selected.domElement) }), _jsx(BasePopover.Portal, { container: portalContainer(), children: _jsx(BasePopover.Positioner, { className: "dom-navigator__positioner", side: "top", align: "start", sideOffset: 4, children: _jsxs(BasePopover.Popup, { className: "dom-navigator__menu", role: "menu", "aria-label": "DOM navigator", onMouseLeave: () => setHovered(null), children: [parents.slice().reverse().map((element, index) => renderItem(`up-${index}`, element, index)), renderItem("current", null, parents.length), renderChildren(children, parents.length + 1, "down")] }) }) })] }) })] }));
46
70
  }
@@ -12,6 +12,5 @@ interface DropGuideOverlayProps {
12
12
  targetClassName?: string;
13
13
  targetTestId?: string;
14
14
  }
15
- /** Shared visual wrapper; each view only supplies its projected viewport geometry. */
16
15
  export declare function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }: DropGuideOverlayProps): ReactElement | null;
17
16
  export {};
@@ -9,7 +9,6 @@ function fixedRect(rect) {
9
9
  pointerEvents: "none",
10
10
  };
11
11
  }
12
- /** Shared visual wrapper; each view only supplies its projected viewport geometry. */
13
12
  export function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }) {
14
13
  if (!guide)
15
14
  return null;
@@ -2,18 +2,11 @@ import { type ReactElement } from "react";
2
2
  import type { Rect } from "./overlayGeometry.js";
3
3
  import type { MeasurementSegment } from "./measurementGeometry.js";
4
4
  interface MeasurementGuideOverlayProps {
5
- /** The selected element in the overlay's screen coordinate system. */
6
5
  selectedRect: Rect;
7
- /** The viewport that alignment guides should span. */
8
6
  guideViewport?: Rect;
9
- /** Measurement geometry in the overlay's screen coordinate system. */
10
7
  segments: MeasurementSegment[];
11
8
  testId?: string;
12
9
  }
13
- /**
14
- * Renders measurement geometry over a viewport. The Inspect surface passes
15
- * browser coordinates directly; Canvas projects iframe-local coordinates into
16
- * the same screen coordinate system before rendering here.
17
- */
10
+ /** Geometry arrives in the overlay's screen coordinates; Canvas projects iframe-local coordinates before rendering here. */
18
11
  export declare function MeasurementGuideOverlay({ selectedRect, guideViewport, segments, testId, }: MeasurementGuideOverlayProps): ReactElement;
19
12
  export {};
@@ -1,10 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from "react";
3
- /**
4
- * Renders measurement geometry over a viewport. The Inspect surface passes
5
- * browser coordinates directly; Canvas projects iframe-local coordinates into
6
- * the same screen coordinate system before rendering here.
7
- */
3
+ /** Geometry arrives in the overlay's screen coordinates; Canvas projects iframe-local coordinates before rendering here. */
8
4
  export function MeasurementGuideOverlay({ selectedRect, guideViewport, segments, testId = "measurement-overlay", }) {
9
5
  const [windowViewport, setWindowViewport] = useState(() => ({
10
6
  width: window.innerWidth,
@@ -1,23 +1,12 @@
1
1
  export type ClickModifiers = Pick<MouseEvent, "ctrlKey" | "metaKey" | "shiftKey">;
2
- /**
3
- * Press and release gestures that application widgets use to open menus,
4
- * dialogs, and popovers before any `click` fires. The Design tool keeps them
5
- * from reaching the application.
6
- */
2
+ /** Press/release gestures widgets use to open menus and popovers before any `click` fires. */
7
3
  export declare const APPLICATION_GESTURE_EVENTS: readonly ["pointerdown", "pointerup", "mousedown", "mouseup", "touchstart", "touchend", "auxclick", "contextmenu"];
8
4
  /** Command/Ctrl-click selects the deepest tracked element unless Shift is held. */
9
5
  export declare function isDeepSelectionClick(event: ClickModifiers): boolean;
10
- /**
11
- * Only input from a person becomes inspector selection. Script events such
12
- * as `element.click()` keep reaching the application.
13
- */
6
+ /** Synthetic events like `element.click()` keep reaching the application. */
14
7
  export declare function isUserClick(event: Pick<Event, "isTrusted">): boolean;
15
8
  /** The active inline text editor needs native press events for caret placement. */
16
9
  export declare function isInlineEditorTarget(target: EventTarget | null): boolean;
17
- /**
18
- * Keeps an application press gesture from reaching application listeners.
19
- * Listeners on the document itself, including the inspector's own, still run.
20
- */
10
+ /** Document-level listeners, including the inspector's own, still run. */
21
11
  export declare function blockApplicationGesture(event: Event): void;
22
- /** Prevent an inspected application click from reaching the host application. */
23
12
  export declare function blockApplicationClick(event: MouseEvent): void;
@@ -1,8 +1,4 @@
1
- /**
2
- * Press and release gestures that application widgets use to open menus,
3
- * dialogs, and popovers before any `click` fires. The Design tool keeps them
4
- * from reaching the application.
5
- */
1
+ /** Press/release gestures widgets use to open menus and popovers before any `click` fires. */
6
2
  export const APPLICATION_GESTURE_EVENTS = [
7
3
  "pointerdown",
8
4
  "pointerup",
@@ -17,10 +13,7 @@ export const APPLICATION_GESTURE_EVENTS = [
17
13
  export function isDeepSelectionClick(event) {
18
14
  return (event.ctrlKey || event.metaKey) && !event.shiftKey;
19
15
  }
20
- /**
21
- * Only input from a person becomes inspector selection. Script events such
22
- * as `element.click()` keep reaching the application.
23
- */
16
+ /** Synthetic events like `element.click()` keep reaching the application. */
24
17
  export function isUserClick(event) {
25
18
  return event.isTrusted;
26
19
  }
@@ -30,14 +23,10 @@ export function isInlineEditorTarget(target) {
30
23
  && target instanceof Element
31
24
  && target.closest('[data-inline-editor="true"]') !== null;
32
25
  }
33
- /**
34
- * Keeps an application press gesture from reaching application listeners.
35
- * Listeners on the document itself, including the inspector's own, still run.
36
- */
26
+ /** Document-level listeners, including the inspector's own, still run. */
37
27
  export function blockApplicationGesture(event) {
38
28
  event.stopPropagation();
39
29
  }
40
- /** Prevent an inspected application click from reaching the host application. */
41
30
  export function blockApplicationClick(event) {
42
31
  event.preventDefault();
43
32
  event.stopPropagation();
@@ -14,9 +14,6 @@ export interface DropGuide {
14
14
  line: DropGuideRect;
15
15
  target: DropGuideRect;
16
16
  }
17
- /** Publishes one guide model from a DOM insertion location. */
18
17
  export declare function showDropGuide(owner: DropGuideOwner, document: Document, drop: DropLocation): void;
19
- /** Clears only the guide belonging to the caller, preserving another active view. */
20
18
  export declare function clearDropGuide(owner: DropGuideOwner): void;
21
- /** Subscribes a visual adapter to its guide without exposing shared mutable state. */
22
19
  export declare function useDropGuide(owner: DropGuideOwner): DropGuide | null;
@@ -17,7 +17,6 @@ function sameRect(left, right) {
17
17
  && left.width === right.width
18
18
  && left.height === right.height;
19
19
  }
20
- /** Publishes one guide model from a DOM insertion location. */
21
20
  export function showDropGuide(owner, document, drop) {
22
21
  const target = drop.parent.getBoundingClientRect();
23
22
  const nextGuide = {
@@ -35,14 +34,12 @@ export function showDropGuide(owner, document, drop) {
35
34
  currentGuide = nextGuide;
36
35
  notify();
37
36
  }
38
- /** Clears only the guide belonging to the caller, preserving another active view. */
39
37
  export function clearDropGuide(owner) {
40
38
  if (currentGuide?.owner !== owner)
41
39
  return;
42
40
  currentGuide = null;
43
41
  notify();
44
42
  }
45
- /** Subscribes a visual adapter to its guide without exposing shared mutable state. */
46
43
  export function useDropGuide(owner) {
47
44
  return useSyncExternalStore(subscribe, () => snapshotFor(owner), () => null);
48
45
  }
@@ -2,7 +2,6 @@ export interface FrameScheduler {
2
2
  request(callback: FrameRequestCallback): number;
3
3
  cancel(handle: number): void;
4
4
  }
5
- /** Retains only the newest value and performs at most one update per frame. */
6
5
  export declare function createFrameThrottle<T>(run: (value: T) => void, scheduler?: FrameScheduler): {
7
6
  schedule(value: T): void;
8
7
  flush: () => void;
@@ -2,7 +2,6 @@ const browserScheduler = {
2
2
  request: (callback) => requestAnimationFrame(callback),
3
3
  cancel: (handle) => cancelAnimationFrame(handle),
4
4
  };
5
- /** Retains only the newest value and performs at most one update per frame. */
6
5
  export function createFrameThrottle(run, scheduler = browserScheduler) {
7
6
  let handle = 0;
8
7
  let latest = null;
@@ -1,3 +1,3 @@
1
1
  export declare function isInteractionStylesInstalled(doc?: Document): boolean;
2
- /** Installs temporary interaction affordances without mutating tracked nodes. */
2
+ /** Installs affordances via a stylesheet, leaving tracked nodes untouched. */
3
3
  export declare function installInteractionStyles(doc?: Document): () => void;
@@ -1,4 +1,5 @@
1
1
  import { DESIGN_SELECT_CURSOR, INTERACTION_CURSOR_PROPERTY } from "../ui/customCursors.js";
2
+ import { adoptStylesheet, allowsStyleElements, releaseAdoptedStylesheet } from "../runtime/ownedStylesheets.js";
2
3
  const INTERACTION_STYLE_ID = "nudge-ui-interaction-styles";
3
4
  const interactionStyleDocuments = new Set();
4
5
  const INTERACTION_CSS = `
@@ -19,13 +20,7 @@ const INTERACTION_CSS = `
19
20
  outline: 0 !important;
20
21
  }
21
22
 
22
- /*
23
- * An empty rendered-text projection has no glyph for the browser to hit
24
- * test. The projection module inserts this inspector-owned slot beside the
25
- * original empty Text node. It is intentionally borderless: the blue fill
26
- * is the affordance, while the normal selected-element outline remains a
27
- * separate overlay.
28
- */
23
+ /* Inspector-owned hit target for empty text projections, which have no glyph to hit test. */
29
24
  [data-empty-text] {
30
25
  display: inline-block !important;
31
26
  width: 0.75em !important;
@@ -45,8 +40,10 @@ const INTERACTION_CSS = `
45
40
  export function isInteractionStylesInstalled(doc = document) {
46
41
  return interactionStyleDocuments.has(doc);
47
42
  }
48
- /** Installs temporary interaction affordances without mutating tracked nodes. */
43
+ /** Installs affordances via a stylesheet, leaving tracked nodes untouched. */
49
44
  export function installInteractionStyles(doc = document) {
45
+ if (!allowsStyleElements(doc))
46
+ return installAdoptedInteractionStyles(doc);
50
47
  // SAFETY: getElementById returns an Element; the style element is created as HTMLStyleElement below when missing.
51
48
  let style = doc.getElementById(INTERACTION_STYLE_ID);
52
49
  let created = false;
@@ -70,3 +67,17 @@ export function installInteractionStyles(doc = document) {
70
67
  style?.remove();
71
68
  };
72
69
  }
70
+ function installAdoptedInteractionStyles(doc) {
71
+ adoptStylesheet(doc, INTERACTION_STYLE_ID, INTERACTION_CSS);
72
+ interactionStyleDocuments.add(doc);
73
+ for (const slot of Array.from(doc.querySelectorAll("[data-empty-text]"))) {
74
+ slot.hidden = false;
75
+ }
76
+ return () => {
77
+ interactionStyleDocuments.delete(doc);
78
+ for (const slot of Array.from(doc.querySelectorAll("[data-empty-text]"))) {
79
+ slot.hidden = true;
80
+ }
81
+ releaseAdoptedStylesheet(doc, INTERACTION_STYLE_ID);
82
+ };
83
+ }
@@ -22,11 +22,7 @@ function centerFromBounds(range) {
22
22
  function hasLength(from, to) {
23
23
  return Math.abs(to - from) > EPSILON;
24
24
  }
25
- /**
26
- * Finds the labelled ruler(s) for one axis. A positive gap gets a single
27
- * nearest-edge ruler. On overlap, the measurement changes to the hovered
28
- * element's far edge; containment has two meaningful inset measurements.
29
- */
25
+ /** On overlap the ruler switches to the hovered element's far edge; containment gets two inset measurements. */
30
26
  function getAxisRulers(selected, hovered, selectedInner, hoveredInner) {
31
27
  if (selected.max < hovered.min - EPSILON) {
32
28
  return [{ selectedEdge: selected.max, hoveredEdge: hovered.min }];
@@ -56,8 +52,8 @@ function getAxisRulers(selected, hovered, selectedInner, hoveredInner) {
56
52
  { selectedEdge: selected.max, hoveredEdge: hoveredInner.max },
57
53
  ].filter((ruler) => hasLength(ruler.selectedEdge, ruler.hoveredEdge));
58
54
  }
59
- // The boxes partially overlap. Measure from the selected outside edge to
60
- // the hover's far edge rather than rendering a zero or negative gap.
55
+ // Partially overlapping boxes measure from the selected outside edge to the
56
+ // hover's far edge rather than a zero or negative gap.
61
57
  if (centerFromBounds(selected) >= centerFromBounds(hovered)) {
62
58
  return [{ selectedEdge: selected.min, hoveredEdge: hovered.min }];
63
59
  }
@@ -74,11 +70,7 @@ function createSegment(id, kind, axis, from, to, cross) {
74
70
  ...(kind === "ruler" ? { distance: Math.abs(to - from) } : {}),
75
71
  };
76
72
  }
77
- /**
78
- * Solid rulers always run through the selected element's centerline. If the
79
- * centerline does not meet the hovered edge, a perpendicular dotted extension
80
- * starts at that hovered edge and joins the ruler.
81
- */
73
+ /** A perpendicular dotted extension joins the centerline ruler when it misses the hovered edge. */
82
74
  function appendPrimaryRulers(segments, selected, hovered, axis, options) {
83
75
  const crossAxis = axis === "horizontal" ? "vertical" : "horizontal";
84
76
  const cross = center(selected, crossAxis);
@@ -1,7 +1,2 @@
1
- /**
2
- * Watches the small set of browser events that can change a selected element's
3
- * viewport rect without changing its selection identity. Structural gestures
4
- * can move a selected element between containers, so the child-list observer
5
- * follows the element's current parent after each mutation.
6
- */
1
+ /** Follows the element's current parent after mutations, since gestures can move it between containers. */
7
2
  export declare function observeSelectedGeometry(element: HTMLElement, onChange: () => void): () => void;
@@ -1,14 +1,7 @@
1
1
  import { getElementWindow } from "../runtime/domRealm.js";
2
- /**
3
- * Watches the small set of browser events that can change a selected element's
4
- * viewport rect without changing its selection identity. Structural gestures
5
- * can move a selected element between containers, so the child-list observer
6
- * follows the element's current parent after each mutation.
7
- */
2
+ /** Follows the element's current parent after mutations, since gestures can move it between containers. */
8
3
  export function observeSelectedGeometry(element, onChange) {
9
4
  const view = getElementWindow(element);
10
- // getElementWindow returns the cross-realm Window interface, while the
11
- // project-wide browser global also carries the observer constructors.
12
5
  // SAFETY: view is a same-realm Window, and the runtime realm exposes the observer constructors as project-wide globals.
13
6
  const { ResizeObserver: ResizeObserverCtor, MutationObserver: MutationObserverCtor } = view;
14
7
  let frame = null;
@@ -1,13 +1,13 @@
1
1
  import type { Rect } from "./overlayGeometry.js";
2
- export type PaddingSide = "top" | "right" | "bottom" | "left";
3
- export type SpacingKind = "padding" | "gap";
2
+ export type BoxSide = "top" | "right" | "bottom" | "left";
3
+ export type SpacingKind = "padding" | "margin" | "gap";
4
4
  export type SpacingAxis = "horizontal" | "vertical";
5
5
  export type SpacingDragAxis = "x" | "y";
6
- export type SpacingProperty = `padding-${PaddingSide}` | "row-gap" | "column-gap";
6
+ export type SpacingProperty = `padding-${BoxSide}` | `margin-${BoxSide}` | "row-gap" | "column-gap";
7
7
  export interface SpacingGuideData {
8
8
  kind: SpacingKind;
9
9
  property: SpacingProperty;
10
- side: PaddingSide | null;
10
+ side: BoxSide | null;
11
11
  axis: SpacingAxis;
12
12
  dragAxis: SpacingDragAxis;
13
13
  value: number;
@@ -16,7 +16,7 @@ export interface SpacingGuideData {
16
16
  guide: Rect;
17
17
  affectedGuides: Rect[];
18
18
  affectedAreas: Rect[];
19
- /** A 16px-thick pointer target centred on the visible, up-to-40px guide handle. */
19
+ /** Pointer target centred on the visible guide handle. */
20
20
  hit: Rect;
21
21
  }
22
22
  export interface SpacingAffordance extends SpacingGuideData {
@@ -25,26 +25,19 @@ export interface SpacingAffordance extends SpacingGuideData {
25
25
  export interface SpacingDescriptor {
26
26
  kind: SpacingKind;
27
27
  property: SpacingProperty;
28
- side: PaddingSide | null;
28
+ side: BoxSide | null;
29
29
  }
30
30
  export declare const SPACING_GUIDE_HANDLE_LENGTH = 40;
31
- /** Finds the spacing target under a document-local pointer location. */
32
31
  export declare function getSpacingAffordanceAtPoint(doc: Document, x: number, y: number): SpacingAffordance | null;
33
- /** Finds the spacing target whose visible padding or gap area contains the
34
- * pointer, even when the pointer is outside the drag handle. Hover previews use
35
- * this; drags and the resize cursor still require the handle hit from
36
- * getSpacingAffordanceAtPoint. */
32
+ /** Hover previews use this; drags and the resize cursor require the handle from getSpacingAffordanceAtPoint. */
37
33
  export declare function getSpacingHoverAtPoint(doc: Document, x: number, y: number): SpacingAffordance | null;
38
- /** Re-resolves a renderer-reported spacing descriptor in its owner document. */
34
+ export declare function getElementSpacingHandleAtPoint(doc: Document, element: HTMLElement, x: number, y: number): SpacingAffordance | null;
35
+ export declare function getElementSpacingAtPoint(doc: Document, element: HTMLElement, x: number, y: number): {
36
+ handle: SpacingAffordance | null;
37
+ area: SpacingAffordance | null;
38
+ };
39
39
  export declare function getSpacingAffordanceForDescriptor(element: HTMLElement, descriptor: SpacingDescriptor): SpacingAffordance | null;
40
- /**
41
- * Calculates a direct-manipulation value, optionally stepping changes by 8px.
42
- * While Shift is held the value snaps to a step anchor: the first displacement
43
- * picks the nearest multiple of 8 from the authored value in the drag
44
- * direction (ties resolve upward), and further movement adds whole 8px steps
45
- * from that anchor, so the result is always a multiple of 8 once the drag
46
- * moves. At the exact start point the authored value is preserved.
47
- */
40
+ /** With Shift, snaps to a multiple of 8 from the authored value in the drag direction. */
48
41
  export declare function spacingValueForDrag(affordance: Pick<SpacingAffordance, "dragAxis" | "direction" | "value">, start: {
49
42
  x: number;
50
43
  y: number;
@@ -53,5 +46,5 @@ export declare function spacingValueForDrag(affordance: Pick<SpacingAffordance,
53
46
  y: number;
54
47
  }, shiftKey?: boolean): number;
55
48
  export declare function spacingValueCss(value: number): string;
56
- /** Serializes the stable part of an affordance for renderer-to-controller messages. */
49
+ /** The stable subset sent across the renderer boundary. */
57
50
  export declare function toSpacingDescriptor(affordance: SpacingAffordance): SpacingDescriptor;