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,5 +1,5 @@
1
1
  import type { TokenDefinition, TokenEntry } from "../../css/model/index.js";
2
- import { getChangesList, getPendingRules } from "../changes/changesLog.js";
2
+ import { getChangesList, getPendingRules } from "../drafts/store.js";
3
3
  import type { InspectorProjection } from "../spacing/projection.js";
4
4
  import type { ResolvedProperty } from "../../css/model/index.js";
5
5
  export declare const NUDGE_UI_INSPECTION_VERSION: 1;
@@ -53,11 +53,7 @@ export interface InspectElementOptions {
53
53
  catalog?: readonly TokenDefinition[];
54
54
  tokens?: readonly TokenEntry[];
55
55
  }
56
- /**
57
- * Returns the inspector's stable, read-only facts for one rendered element.
58
- * Compatibility tests and the React UI cross the same resolver/projection seam;
59
- * this function deliberately performs no selection or edit side effects.
60
- */
56
+ /** Deliberately performs no selection or edit side effects. */
61
57
  export declare function inspectElement(element: HTMLElement, options?: InspectElementOptions): ElementInspection;
62
58
  export interface NudgeUiInspectionBridge {
63
59
  version: typeof NUDGE_UI_INSPECTION_VERSION;
@@ -68,5 +64,5 @@ declare global {
68
64
  __nudgeUi?: NudgeUiInspectionBridge;
69
65
  }
70
66
  }
71
- /** Installs the dev-only browser seam used by compatibility applications. */
67
+ /** Dev-only seam used by compatibility applications. */
72
68
  export declare function installInspectionBridge(target?: Window): () => void;
@@ -1,4 +1,5 @@
1
- import { getChangesList, getPendingRules, isPreviewableChange } from "../changes/changesLog.js";
1
+ import { getChangesList, getPendingRules } from "../drafts/store.js";
2
+ import { isPreviewableChange } from "../changes/types.js";
2
3
  import { changeKey } from "../changes/model.js";
3
4
  import { getAnyPreviewDiagnostic } from "../changes/previewDiagnostics.js";
4
5
  import { detectFramework } from "../prompt/detectFramework.js";
@@ -20,9 +21,7 @@ function inspectBrowserFacts(element, definitions, entries) {
20
21
  tokens: session.inspectTokens(element),
21
22
  };
22
23
  }
23
- // Compatibility callers may provide a fixture-local catalog. Keep that
24
- // Adapter isolated from the document registry so one caller cannot replace
25
- // the token knowledge used by the live inspector session.
24
+ // Fixture-local catalogs stay out of the document registry so they cannot replace the live session's token knowledge.
26
25
  const session = createBrowserCssInspection({
27
26
  document: doc,
28
27
  tokenKnowledge: { definitions, entries, generation: "compatibility" },
@@ -52,11 +51,7 @@ function catalogEntry(definition) {
52
51
  })),
53
52
  };
54
53
  }
55
- /**
56
- * Returns the inspector's stable, read-only facts for one rendered element.
57
- * Compatibility tests and the React UI cross the same resolver/projection seam;
58
- * this function deliberately performs no selection or edit side effects.
59
- */
54
+ /** Deliberately performs no selection or edit side effects. */
60
55
  export function inspectElement(element, options = {}) {
61
56
  const runtimeConfig = getNudgeUiRuntimeConfig();
62
57
  const definitions = options.catalog ?? runtimeConfig.tokenCatalog;
@@ -81,9 +76,7 @@ export function inspectElement(element, options = {}) {
81
76
  return diagnostic ? [{ property: change.property, ...diagnostic.result }] : [];
82
77
  }),
83
78
  };
84
- // Local vanilla-extract themes attach contract variables to a theme class,
85
- // not necessarily :root. The selected element is therefore the correct
86
- // availability context for an element inspection.
79
+ // vanilla-extract themes attach contract variables to a theme class, not :root, so the element is the availability context.
87
80
  const controls = properties
88
81
  .filter((property) => !property.property.startsWith("--"))
89
82
  .map((property) => ({
@@ -117,7 +110,7 @@ export function inspectElement(element, options = {}) {
117
110
  : null,
118
111
  };
119
112
  }
120
- /** Installs the dev-only browser seam used by compatibility applications. */
113
+ /** Dev-only seam used by compatibility applications. */
121
114
  export function installInspectionBridge(target = window) {
122
115
  const bridge = {
123
116
  version: NUDGE_UI_INSPECTION_VERSION,
@@ -1,3 +1,4 @@
1
+ import { type ContainerQueryEvaluator } from "../tokens/resolution/containerQueryEvaluator.js";
1
2
  import type { TokenDefinition, TokenEntry } from "../../css/model/index.js";
2
3
  import type { ResolvedProperty } from "../../css/model/index.js";
3
4
  import type { InteractionState } from "../shell/styleState.js";
@@ -5,8 +6,7 @@ import { type TokenCatalogRow } from "../tokens/catalog.js";
5
6
  export interface BrowserTokenKnowledge {
6
7
  /** Build-time definitions normalized by a build-tool Adapter. */
7
8
  definitions: readonly TokenDefinition[];
8
- /** Optional compiler entries used to resolve authored references that are
9
- * intentionally not mounted as custom properties in the current document. */
9
+ /** Compiler entries for authored references intentionally not mounted as custom properties. */
10
10
  entries?: readonly TokenEntry[];
11
11
  /** Changes whenever the Adapter publishes a new token inventory. */
12
12
  generation: string | number;
@@ -15,16 +15,13 @@ export interface BrowserCssInspectionConfig {
15
15
  document: Document;
16
16
  tokenKnowledge: BrowserTokenKnowledge;
17
17
  }
18
- /**
19
- * Cascade transform owned exclusively by this module:
20
- * - authored: interaction-state attribution (default; state defaults to base)
21
- * - live: raw CSSOM matching as currently painted
22
- * - stable: drops transient pseudo-class rules for editor token linking
23
- */
18
+ /** authored: interaction-state attribution; live: raw CSSOM as painted; stable: drops transient pseudo-class rules for token linking. */
24
19
  export type InspectionCascade = "authored" | "live" | "stable";
25
20
  export interface BrowserCssInspectionOptions {
26
21
  state?: InteractionState;
27
22
  cascade?: InspectionCascade;
23
+ /** Shared only within one synchronous refresh. */
24
+ containerQueries?: ContainerQueryEvaluator;
28
25
  }
29
26
  export type InspectionTargetStatus = "attached" | "detached" | "foreign-document" | "unsupported" | "disabled" | "disposed";
30
27
  export type InspectionDiagnosticCode = "target-document-mismatch" | "target-detached" | "target-unsupported" | "state-unavailable" | "inspection-failed" | "production-disabled" | "session-disposed";
@@ -62,12 +59,16 @@ export interface DocumentTokenInspectionSnapshot {
62
59
  }
63
60
  export interface BrowserCssInspection {
64
61
  inspect(element: HTMLElement, options?: BrowserCssInspectionOptions): InspectionSnapshot;
62
+ /** Resolves one selection with a shared, short-lived container evaluator. */
63
+ refresh?(elements: readonly HTMLElement[], state: InteractionState): {
64
+ elements: readonly InspectionSnapshot[];
65
+ stableProperties: readonly ResolvedProperty[];
66
+ };
65
67
  inspectTokens(root?: HTMLElement): DocumentTokenInspectionSnapshot;
66
68
  subscribe(listener: (revision: InspectionRevision) => void): () => void;
67
- /** Integration hook for managed CSSOM writes. */
69
+ /** Integration hook for writes to the inspector's own managed stylesheets. */
68
70
  notifyStylesheetChange(): void;
69
- /** Optional: warms the CSSOM rule snapshot so the next inspect does not pay
70
- * the stylesheet walk inside its own budget. Cheap when already warm. */
71
+ /** Warms the CSSOM rule snapshot so the next inspect does not pay the stylesheet walk. */
71
72
  prewarmRules?(): void;
72
73
  dispose(): void;
73
74
  }
@@ -1,7 +1,9 @@
1
+ import { createContainerQueryEvaluator } from "../tokens/resolution/containerQueryEvaluator.js";
1
2
  import { isNudgeUiDev } from "../runtime/devFlag.js";
2
- import { buildTokenTable, getAvailableInteractionStates, getAvailableTokenCatalog, getAvailableTokenEntriesForElement, getResolvedProperties, getResolvedPropertiesForState, getResolvedPropertiesStable, invalidateStyleResolutionCache, prewarmCssomRuleSnapshot, } from "../tokens/resolution.js";
3
+ import { countInspectionWork } from "./performanceDiagnostics.js";
4
+ import { buildTokenTable, getAvailableInteractionStates, getAvailableTokenCatalog, getAvailableTokenEntriesForElement, getResolvedProperties, getResolvedPropertiesForState, getResolvedPropertiesStable, invalidateStyleResolutionCache, prewarmCssomRuleSnapshot, prefetchContainerQueries, } from "../tokens/resolution.js";
3
5
  import { buildTokenCatalogRows } from "../tokens/catalog.js";
4
- import { documentRevisions, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
6
+ import { documentRevisions, invalidateOwnedStyleResolution, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
5
7
  function revisionSnapshot(revisions, tokenGeneration) {
6
8
  return {
7
9
  element: revisions.element,
@@ -119,12 +121,12 @@ function disabledInspection(config) {
119
121
  function notifyRevision(listener, revisions, tokenGeneration) {
120
122
  listener(revisionSnapshot(revisions, tokenGeneration));
121
123
  }
122
- function resolveCascadeProperties(element, table, cascade, state) {
124
+ function resolveCascadeProperties(element, table, cascade, state, evaluator) {
123
125
  if (cascade === "live")
124
- return getResolvedProperties(element, table);
126
+ return getResolvedProperties(element, table, evaluator);
125
127
  if (cascade === "stable")
126
- return getResolvedPropertiesStable(element, table);
127
- return getResolvedPropertiesForState(element, table, state);
128
+ return getResolvedPropertiesStable(element, table, evaluator);
129
+ return getResolvedPropertiesForState(element, table, state, evaluator);
128
130
  }
129
131
  export function createBrowserCssInspection(config) {
130
132
  if (!isNudgeUiDev())
@@ -136,8 +138,7 @@ export function createBrowserCssInspection(config) {
136
138
  const releaseDocumentResolution = retainDocumentResolution(config.document);
137
139
  const revisionUnsubscribers = new Set();
138
140
  const elementTables = new WeakMap();
139
- // When compiler entries are merged ahead of runtime availability, keep one
140
- // table per availableTokens identity so resolver caches stay warm.
141
+ // When compiler entries are merged ahead of runtime availability, keep one table per availableTokens identity so resolver caches stay warm.
141
142
  const mergedTables = new WeakMap();
142
143
  const mediaCleanup = [];
143
144
  const mediaQueries = new Set(definitions.flatMap((definition) => definition.declarations.flatMap((declaration) => (declaration.context.wrappers ?? [])
@@ -197,6 +198,7 @@ export function createBrowserCssInspection(config) {
197
198
  }
198
199
  const session = {
199
200
  inspect(element, options = {}) {
201
+ countInspectionWork(config.document, "inspections");
200
202
  const state = options.state ?? "base";
201
203
  const cascade = options.cascade ?? "authored";
202
204
  const status = disposed ? "disposed" : targetStatus(element, config.document);
@@ -214,10 +216,7 @@ export function createBrowserCssInspection(config) {
214
216
  }
215
217
  try {
216
218
  const { availableTokens, table } = tokenTableFor(element);
217
- // Only the authored cascade reports which interaction states have
218
- // authored rules (the panel's state selector reads it there). Stable
219
- // and live consumers project properties only, so skip the O(rules)
220
- // per-state matching sweep for them.
219
+ // Only the authored cascade reports authored interaction states; the O(rules) per-state sweep is skipped elsewhere.
221
220
  const availableStates = cascade === "stable"
222
221
  ? ["base"]
223
222
  : getAvailableInteractionStates(element);
@@ -227,7 +226,7 @@ export function createBrowserCssInspection(config) {
227
226
  message: `The ${state} interaction state has no matching authored rule for this element.`,
228
227
  });
229
228
  }
230
- const properties = resolveCascadeProperties(element, table, cascade, state);
229
+ const properties = resolveCascadeProperties(element, table, cascade, state, options.containerQueries ?? createContainerQueryEvaluator(config.document));
231
230
  return {
232
231
  target: { status },
233
232
  cascade,
@@ -249,6 +248,25 @@ export function createBrowserCssInspection(config) {
249
248
  return emptySnapshot(status, cascade, state, revision, diagnostics);
250
249
  }
251
250
  },
251
+ refresh(elements, state) {
252
+ const containerQueries = createContainerQueryEvaluator(config.document);
253
+ const targets = elements.filter((element) => element.ownerDocument === config.document);
254
+ try {
255
+ if (!disposed)
256
+ prefetchContainerQueries(targets, state, containerQueries);
257
+ }
258
+ catch (error) {
259
+ return {
260
+ elements: elements.map((element) => emptySnapshot(targetStatus(element, config.document), "authored", state, currentRevision(), [{ code: "inspection-failed", message: error instanceof Error ? error.message : "Container query evaluation failed." }])),
261
+ stableProperties: [],
262
+ };
263
+ }
264
+ return {
265
+ elements: elements.map((element) => session.inspect(element, { state, containerQueries })),
266
+ stableProperties: elements[0] && state === "base"
267
+ ? session.inspect(elements[0], { cascade: "stable", containerQueries }).properties : [],
268
+ };
269
+ },
252
270
  inspectTokens(root = config.document.documentElement) {
253
271
  const diagnostics = [];
254
272
  const revision = currentRevision();
@@ -296,7 +314,7 @@ export function createBrowserCssInspection(config) {
296
314
  },
297
315
  notifyStylesheetChange() {
298
316
  if (!disposed)
299
- invalidateStyleResolutionCache(config.document);
317
+ invalidateOwnedStyleResolution(config.document);
300
318
  },
301
319
  prewarmRules() {
302
320
  if (!disposed)
@@ -1,12 +1,5 @@
1
1
  import { type BrowserCssInspection, type BrowserTokenKnowledge } from "./browserCssInspection.js";
2
- /**
3
- * Binds a document to token knowledge. When generation changes, the previous
4
- * session is disposed and replaced so callers never keep a stale catalog.
5
- */
6
2
  export declare function bindBrowserCssInspection(doc: Document, knowledge: BrowserTokenKnowledge): BrowserCssInspection;
7
- /** Returns the one browser inspection session owned by a document. */
8
3
  export declare function getBrowserCssInspection(doc?: Document): BrowserCssInspection;
9
- /** Invalidates every browser-inspection snapshot affected by a CSSOM write. */
10
4
  export declare function notifyBrowserStylesheetChange(doc?: Document): void;
11
- /** Releases a document session when its inspector/Canvas lifecycle ends. */
12
5
  export declare function disposeBrowserCssInspection(doc: Document): void;
@@ -6,15 +6,7 @@ let catalogSignature = "";
6
6
  let catalogRevision = 0;
7
7
  function currentTokenKnowledge() {
8
8
  const { tokenCatalog, tokenGeneration } = getNudgeUiRuntimeConfig();
9
- // The inventory snapshot generation is the authoritative fingerprint: when
10
- // observable inventory facts change, the virtual module re-evaluates and
11
- // `tokenGeneration` carries a new value, so document sessions recreate with
12
- // the new definitions instead of freezing the first catalog snapshot.
13
- //
14
- // A catalog signature supplements the inventory generation because S2-B
15
- // still has temporary post-snapshot Tailwind/vanilla-extract enrichment.
16
- // It advances only when those observable transport definitions change, not
17
- // for a no-op virtual-module replacement.
9
+ // The inventory generation recreates document sessions with new definitions; the catalog signature supplements it for post-snapshot enrichment.
18
10
  if (catalogReference !== tokenCatalog) {
19
11
  catalogReference = tokenCatalog;
20
12
  const nextSignature = JSON.stringify(tokenCatalog);
@@ -28,10 +20,6 @@ function currentTokenKnowledge() {
28
20
  : catalogRevision === 0 ? tokenGeneration : `${tokenGeneration}:${catalogRevision}`;
29
21
  return { definitions: tokenCatalog, generation };
30
22
  }
31
- /**
32
- * Binds a document to token knowledge. When generation changes, the previous
33
- * session is disposed and replaced so callers never keep a stale catalog.
34
- */
35
23
  export function bindBrowserCssInspection(doc, knowledge) {
36
24
  const existing = sessions.get(doc);
37
25
  if (existing && existing.generation === knowledge.generation) {
@@ -48,15 +36,12 @@ export function bindBrowserCssInspection(doc, knowledge) {
48
36
  sessions.set(doc, { session, generation: knowledge.generation });
49
37
  return session;
50
38
  }
51
- /** Returns the one browser inspection session owned by a document. */
52
39
  export function getBrowserCssInspection(doc = document) {
53
40
  return bindBrowserCssInspection(doc, currentTokenKnowledge());
54
41
  }
55
- /** Invalidates every browser-inspection snapshot affected by a CSSOM write. */
56
42
  export function notifyBrowserStylesheetChange(doc = document) {
57
43
  getBrowserCssInspection(doc).notifyStylesheetChange();
58
44
  }
59
- /** Releases a document session when its inspector/Canvas lifecycle ends. */
60
45
  export function disposeBrowserCssInspection(doc) {
61
46
  const entry = sessions.get(doc);
62
47
  if (!entry)
@@ -0,0 +1,6 @@
1
+ import type { InteractionState } from "../shell/styleState.js";
2
+ import type { InspectionSnapshot } from "./browserCssInspection.js";
3
+ /** Publishes the hook's completed refresh before its controls render. */
4
+ export declare function publishInspectionSnapshot(element: HTMLElement, snapshot: InspectionSnapshot): void;
5
+ /** Reads the current view without starting another cascade inspection. */
6
+ export declare function readInspectionSnapshot(element: HTMLElement, state: InteractionState): InspectionSnapshot | undefined;
@@ -0,0 +1,10 @@
1
+ const snapshots = new WeakMap();
2
+ /** Publishes the hook's completed refresh before its controls render. */
3
+ export function publishInspectionSnapshot(element, snapshot) {
4
+ snapshots.set(element, snapshot);
5
+ }
6
+ /** Reads the current view without starting another cascade inspection. */
7
+ export function readInspectionSnapshot(element, state) {
8
+ const snapshot = snapshots.get(element);
9
+ return snapshot?.requestedState === state ? snapshot : undefined;
10
+ }
@@ -0,0 +1,18 @@
1
+ type Interaction = "selection" | "hover" | "drag" | "idle";
2
+ type Counter = "inspections" | "refreshes" | "containerChecks" | "probePairs" | "probeBatches";
3
+ type Counts = Record<Counter, number>;
4
+ interface InspectionPerformanceDiagnostics {
5
+ read(): Record<Interaction, Counts>;
6
+ reset(): void;
7
+ dispose(): void;
8
+ }
9
+ declare global {
10
+ interface Window {
11
+ __nudgeUiPerformance?: InspectionPerformanceDiagnostics;
12
+ }
13
+ }
14
+ /** Records work only when diagnostics are explicitly enabled for a document. */
15
+ export declare function countInspectionWork(doc: Document, counter: Counter, count?: number): void;
16
+ /** Groups asynchronous inspection work by the most recent pointer gesture. */
17
+ export declare function enableInspectionPerformanceDiagnostics(doc: Document): void;
18
+ export {};
@@ -0,0 +1,31 @@
1
+ const counters = new WeakMap();
2
+ /** Records work only when diagnostics are explicitly enabled for a document. */
3
+ export function countInspectionWork(doc, counter, count = 1) {
4
+ counters.get(doc)?.(counter, count);
5
+ }
6
+ /** Groups asynchronous inspection work by the most recent pointer gesture. */
7
+ export function enableInspectionPerformanceDiagnostics(doc) {
8
+ const view = doc.defaultView;
9
+ if (!view || view.__nudgeUiPerformance)
10
+ return;
11
+ let interaction = "idle";
12
+ const empty = () => ({ inspections: 0, refreshes: 0, containerChecks: 0, probePairs: 0, probeBatches: 0 });
13
+ let counts = { idle: empty(), selection: empty(), hover: empty(), drag: empty() };
14
+ const move = (event) => { interaction = event.buttons ? "drag" : "hover"; };
15
+ const select = () => { interaction = "selection"; };
16
+ doc.addEventListener("pointermove", move, true);
17
+ doc.addEventListener("pointerdown", select, true);
18
+ doc.addEventListener("click", select, true);
19
+ counters.set(doc, (counter, count) => { counts[interaction][counter] += count; });
20
+ view.__nudgeUiPerformance = {
21
+ read: () => structuredClone(counts),
22
+ reset() { counts = { idle: empty(), selection: empty(), hover: empty(), drag: empty() }; },
23
+ dispose() {
24
+ doc.removeEventListener("pointermove", move, true);
25
+ doc.removeEventListener("pointerdown", select, true);
26
+ doc.removeEventListener("click", select, true);
27
+ counters.delete(doc);
28
+ delete view.__nudgeUiPerformance;
29
+ },
30
+ };
31
+ }
@@ -13,7 +13,6 @@ export type SelectionToken = {
13
13
  } | {
14
14
  kind: "mixed";
15
15
  };
16
- /** One CSS property projected across every element in the current selection. */
17
16
  export interface SelectionProperty {
18
17
  property: string;
19
18
  value: SelectionValue;
@@ -21,12 +20,8 @@ export interface SelectionProperty {
21
20
  primaryRow: ResolvedProperty | null;
22
21
  rows: readonly (ResolvedProperty | null)[];
23
22
  }
24
- /**
25
- * Projects browser values and authored inspection rows into group-safe facts.
26
- * The returned type cannot masquerade as an authored CSS row.
27
- */
23
+ /** The result cannot masquerade as an authored CSS row. */
28
24
  export declare function projectSelectionProperty(property: string, rows: readonly (ResolvedProperty | null)[], values: readonly string[], primaryIndex: number): SelectionProperty | null;
29
- /** Returns the token entries available to every inspected target. */
30
25
  export declare function intersectTokenEntries<T extends {
31
26
  name: string;
32
27
  value: string;
@@ -7,10 +7,7 @@ function tokenFor(rows) {
7
7
  ? { kind: "common", name: first }
8
8
  : { kind: "mixed" };
9
9
  }
10
- /**
11
- * Projects browser values and authored inspection rows into group-safe facts.
12
- * The returned type cannot masquerade as an authored CSS row.
13
- */
10
+ /** The result cannot masquerade as an authored CSS row. */
14
11
  export function projectSelectionProperty(property, rows, values, primaryIndex) {
15
12
  if (values.length === 0 || rows.length !== values.length)
16
13
  return null;
@@ -25,7 +22,6 @@ export function projectSelectionProperty(property, rows, values, primaryIndex) {
25
22
  rows,
26
23
  };
27
24
  }
28
- /** Returns the token entries available to every inspected target. */
29
25
  export function intersectTokenEntries(entries) {
30
26
  const first = entries[0];
31
27
  if (!first)
@@ -12,9 +12,5 @@ export interface BrowserCssInspectionViewOptions {
12
12
  includeDocumentTokens?: boolean;
13
13
  session?: BrowserCssInspection;
14
14
  }
15
- /**
16
- * React Adapter for one revision-aware browser inspection view. This is the
17
- * sole owner of subscription and scheduling policy; UI callers only project
18
- * the returned snapshots.
19
- */
15
+ /** Sole owner of subscription and scheduling policy; callers only project the returned snapshots. */
20
16
  export declare function useBrowserCssInspection(selected: SelectedElement | readonly SelectedElement[] | null, state?: InteractionState, options?: BrowserCssInspectionViewOptions): BrowserCssInspectionView;
@@ -1,5 +1,7 @@
1
+ import { publishInspectionSnapshot } from "./inspectionSnapshot.js";
1
2
  import { useEffect, useMemo, useRef, useState } from "react";
2
3
  import { getBrowserCssInspection } from "./browserCssInspectionRegistry.js";
4
+ import { countInspectionWork } from "./performanceDiagnostics.js";
3
5
  const SELECTION_DEBOUNCE_MS = 8;
4
6
  const EMPTY_SELECTION = [];
5
7
  function isSelectedElementList(selected) {
@@ -18,30 +20,19 @@ function normalizeSelection(selected) {
18
20
  return selected;
19
21
  return [selected];
20
22
  }
21
- function inspectAuthoredElements(session, selected, state) {
22
- return selected.map((element) => session.inspect(element.domElement, { state, cascade: "authored" }));
23
- }
24
- function inspectStableView(session, selected, state, includeDocumentTokens, elements) {
25
- const primary = elements[0] ?? null;
26
- const stableProperties = selected[0] && state === "base"
27
- ? session.inspect(selected[0].domElement, { cascade: "stable" }).properties
28
- : [];
29
- const documentTokens = includeDocumentTokens ? session.inspectTokens() : null;
23
+ function inspectView(session, selected, state, includeDocumentTokens) {
24
+ const result = session.refresh?.(selected.map((element) => element.domElement), state);
25
+ const elements = result?.elements ?? selected.map((element) => session.inspect(element.domElement, { state, cascade: "authored" }));
26
+ const stableProperties = result?.stableProperties ?? (selected[0] && state === "base"
27
+ ? session.inspect(selected[0].domElement, { cascade: "stable" }).properties : []);
28
+ elements.forEach((snapshot, index) => publishInspectionSnapshot(selected[index].domElement, snapshot));
30
29
  return {
31
- selection: selected,
32
- state,
33
- session,
34
- element: primary,
35
- elements,
36
- stableProperties,
37
- documentTokens,
30
+ selection: selected, state, session,
31
+ element: elements[0] ?? null, elements, stableProperties,
32
+ documentTokens: includeDocumentTokens ? session.inspectTokens() : null,
38
33
  };
39
34
  }
40
- /**
41
- * React Adapter for one revision-aware browser inspection view. This is the
42
- * sole owner of subscription and scheduling policy; UI callers only project
43
- * the returned snapshots.
44
- */
35
+ /** Sole owner of subscription and scheduling policy; callers only project the returned snapshots. */
45
36
  export function useBrowserCssInspection(selected, state = "base", options = {}) {
46
37
  const selectedElements = useMemo(() => normalizeSelection(selected), [selected]);
47
38
  const selectedDocument = selectedElements[0]?.domElement.ownerDocument ?? document;
@@ -49,14 +40,15 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
49
40
  const includeDocumentTokens = options.includeDocumentTokens ?? false;
50
41
  const latest = useRef({ selected: selectedElements, state, session, includeDocumentTokens });
51
42
  latest.current = { selected: selectedElements, state, session, includeDocumentTokens };
52
- const [view, setView] = useState(() => inspectStableView(session, selectedElements, state, includeDocumentTokens, inspectAuthoredElements(session, selectedElements, state)));
43
+ const [view, setView] = useState(() => ({
44
+ ...EMPTY_VIEW, selection: EMPTY_SELECTION, state, session,
45
+ }));
53
46
  const timerRef = useRef(null);
54
47
  const lastSelectionResolveAtRef = useRef(0);
55
48
  const revisionFrameRef = useRef(null);
56
49
  const revisionSecondFrameRef = useRef(null);
57
50
  const revisionThirdFrameRef = useRef(null);
58
51
  const revisionWarmFrameRef = useRef(null);
59
- const stableFrameRef = useRef(null);
60
52
  const cancelScheduledInspection = () => {
61
53
  if (timerRef.current !== null) {
62
54
  clearTimeout(timerRef.current);
@@ -78,36 +70,16 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
78
70
  cancelAnimationFrame(revisionWarmFrameRef.current);
79
71
  revisionWarmFrameRef.current = null;
80
72
  }
81
- if (stableFrameRef.current !== null) {
82
- cancelAnimationFrame(stableFrameRef.current);
83
- stableFrameRef.current = null;
84
- }
85
73
  };
86
74
  const resolveSync = () => {
87
75
  const current = latest.current;
76
+ countInspectionWork(selectedDocument, "refreshes");
88
77
  lastSelectionResolveAtRef.current = performance.now();
89
- setView(inspectStableView(current.session, current.selected, current.state, current.includeDocumentTokens, inspectAuthoredElements(current.session, current.selected, current.state)));
90
- };
91
- const resolveSplit = () => {
92
- const current = latest.current;
93
- // Post-commit refresh: the authored cascade resolves in this task and the
94
- // secondary stable cascade continues one frame later. Rapid successive
95
- // edits therefore cancel the pending refresh (revision bumps reschedule)
96
- // instead of finding a long blocking task already running, and the two
97
- // resolution sweeps never block one task for their combined duration.
98
- // The view still commits once, with the same data and ordering.
99
- const elements = inspectAuthoredElements(current.session, current.selected, current.state);
100
- stableFrameRef.current = requestAnimationFrame(() => {
101
- stableFrameRef.current = null;
102
- setView(inspectStableView(current.session, current.selected, current.state, current.includeDocumentTokens, elements));
103
- });
78
+ setView(inspectView(current.session, current.selected, current.state, current.includeDocumentTokens));
104
79
  };
105
80
  const scheduleSelectionInspection = () => {
106
81
  cancelScheduledInspection();
107
- // Leading-edge resolve: a selection change resolves immediately instead
108
- // of always waiting out the debounce. Rapid re-selections inside the
109
- // trailing window still coalesce onto one trailing resolve, so the final
110
- // view is identical and repeated selections cannot stack full sweeps.
82
+ // Leading-edge resolve: a selection change resolves immediately, and rapid re-selections coalesce onto one trailing resolve.
111
83
  const sinceLast = performance.now() - lastSelectionResolveAtRef.current;
112
84
  if (sinceLast >= SELECTION_DEBOUNCE_MS) {
113
85
  resolveSync();
@@ -120,12 +92,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
120
92
  };
121
93
  const scheduleRevisionInspection = () => {
122
94
  cancelScheduledInspection();
123
- // Let the host commit and paint before refreshing the inspector
124
- // projection. The extra frames keep the refresh start past the gap
125
- // between rapid successive edits, so a new revision cancels the pending
126
- // refresh instead of colliding with a running one, and they give the
127
- // stylesheet walk its own frame so no single refresh task blocks for the
128
- // combined duration of the walk plus a cascade sweep.
95
+ // Let the host commit and paint: the extra frames let a new revision cancel the pending refresh and give the stylesheet walk its own frame.
129
96
  revisionFrameRef.current = requestAnimationFrame(() => {
130
97
  revisionFrameRef.current = null;
131
98
  revisionSecondFrameRef.current = requestAnimationFrame(() => {
@@ -135,7 +102,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
135
102
  latest.current.session.prewarmRules?.();
136
103
  revisionWarmFrameRef.current = requestAnimationFrame(() => {
137
104
  revisionWarmFrameRef.current = null;
138
- resolveSplit();
105
+ resolveSync();
139
106
  });
140
107
  });
141
108
  });
@@ -146,10 +113,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
146
113
  return cancelScheduledInspection;
147
114
  }, [includeDocumentTokens, selectedElements, state, session]);
148
115
  useEffect(() => session.subscribe(scheduleRevisionInspection), [session]);
149
- // Warm the CSSOM rule snapshot during idle time so the first selection does
150
- // not pay the stylesheet walk inside its own interaction. The idle timeout
151
- // bounds the wait without competing with page-load paint; the walk is
152
- // idempotent per stylesheet revision, so this is a no-op once warm.
116
+ // Warm during idle so the first selection does not pay the stylesheet walk; the walk is idempotent per stylesheet revision.
153
117
  const prewarmedSessionRef = useRef(null);
154
118
  useEffect(() => {
155
119
  if (prewarmedSessionRef.current === session)
@@ -164,8 +128,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
164
128
  const timeoutId = setTimeout(warm, 200);
165
129
  return () => clearTimeout(timeoutId);
166
130
  }, [session, selectedDocument]);
167
- // Selection effects run after children render. Never expose the previous
168
- // element's authored rows while the new selection is waiting for inspection.
131
+ // Selection effects run after children render; never expose the previous element's rows while inspection is pending.
169
132
  const matchesSelection = view.session === session && view.state === state
170
133
  && view.selection.length === selectedElements.length
171
134
  && view.selection.every((element, index) => element.domElement === selectedElements[index]?.domElement);
@@ -1,2 +1,2 @@
1
- /** Captures the visible DOM of a same-origin frame as a script-free HTML iteration. */
2
- export declare function captureHtmlIteration(frame: HTMLIFrameElement): Promise<string>;
1
+ import type { CanvasFrame } from "../canvas/canvasFrame.js";
2
+ export declare function captureHtmlIteration(frame: CanvasFrame): Promise<string>;
@@ -1,6 +1,5 @@
1
1
  import { HTML_ARTIFACT_REVISION_ATTRIBUTE } from "../../transport/artifacts.js";
2
2
  import { FRAME_SCROLLBAR_STYLE_ID } from "../canvas/frameScrollbarStyles.js";
3
- /** Captures the visible DOM of a same-origin frame as a script-free HTML iteration. */
4
3
  export async function captureHtmlIteration(frame) {
5
4
  const source = frame.contentDocument;
6
5
  const view = frame.contentWindow;
@@ -19,11 +18,9 @@ export async function captureHtmlIteration(frame) {
19
18
  const copied = copiedElements[index];
20
19
  if (sourceElement.nodeType !== 1 || copied.nodeType !== 1)
21
20
  continue;
22
- // Renderer IDs belong to the source iframe's node registry. The iteration's
23
- // fresh registry can reuse those values for different nodes.
21
+ // Renderer IDs belong to the source iframe's registry; the iteration's fresh registry can reuse them for different nodes.
24
22
  copied.removeAttribute("data-renderer-id");
25
- // Preserve authored inline values (percentages, variables, and calc), rather
26
- // than replacing them with computed dimensions at the capture viewport.
23
+ // Keep authored inline values (percentages, variables, calc) instead of computed dimensions.
27
24
  const inline = copied.getAttribute("style");
28
25
  if (inline)
29
26
  copied.setAttribute("style", await resolveCssUrls(inline, source.baseURI, assets));
@@ -100,8 +97,7 @@ async function captureStylesheets(document, copy, sourceElements, copiedElements
100
97
  css = await response.text();
101
98
  }
102
99
  catch {
103
- // Keep the stylesheet link when CORS prevents embedding it. Its URL
104
- // still resolves against the original base and retains responsiveness.
100
+ // Keep the stylesheet link when CORS prevents embedding it; its URL still resolves against the original base.
105
101
  continue;
106
102
  }
107
103
  }
@@ -112,8 +108,7 @@ async function captureStylesheets(document, copy, sourceElements, copiedElements
112
108
  }
113
109
  }
114
110
  style.textContent = await resolveCssUrls(css, sheet.href ?? document.baseURI, assets);
115
- // Captured edits become the iteration's base. The renderer must create its own
116
- // managed stylesheet for new edits instead of clearing these captured rules.
111
+ // Captured edits become the iteration's base; the renderer must create its own managed stylesheet for new edits.
117
112
  if (style.id === "nudge-ui-styles") {
118
113
  style.removeAttribute("id");
119
114
  style.removeAttribute("data-nudge-ui");
@@ -1,7 +1,7 @@
1
+ import type { CanvasFrame } from "../canvas/canvasFrame.js";
1
2
  import { type HtmlArtifactRevision } from "../../transport/artifacts.js";
2
3
  export declare function artifactDocumentUrl(id: string): string;
3
4
  export declare function readHtmlArtifactRevision(id: string): Promise<HtmlArtifactRevision>;
4
- /** Checks the editing base before saving and promoting a captured document. */
5
5
  export declare function commitHtmlArtifact(id: string, expected: HtmlArtifactRevision, html?: string): Promise<HtmlArtifactRevision>;
6
- export declare function createHtmlArtifact(frame: HTMLIFrameElement, sourceUrl: string, title: string, capturedHtml?: string): Promise<string>;
6
+ export declare function createHtmlArtifact(frame: CanvasFrame, sourceUrl: string, title: string, capturedHtml?: string): Promise<string>;
7
7
  export declare function removeHtmlArtifact(id: string): Promise<void>;
@@ -13,7 +13,6 @@ export async function readHtmlArtifactRevision(id) {
13
13
  throw new Error("The HTML iteration returned an invalid revision.");
14
14
  return revision;
15
15
  }
16
- /** Checks the editing base before saving and promoting a captured document. */
17
16
  export async function commitHtmlArtifact(id, expected, html) {
18
17
  const response = await fetch(`${NUDGE_UI_ARTIFACTS_PATH}/${id}/commit`, {
19
18
  method: "POST",