nudge-ui 0.2.5 → 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 (575) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +0 -1
  3. package/dist/client.mjs +238 -122
  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 +13 -64
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +0 -2
  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 +1 -6
  125. package/dist/inspector/agent/activity.d.ts +1 -1
  126. package/dist/inspector/agent/activity.js +1 -1
  127. package/dist/inspector/agent/client.d.ts +2 -26
  128. package/dist/inspector/agent/client.js +17 -64
  129. package/dist/inspector/agent/connectionStatus.d.ts +0 -1
  130. package/dist/inspector/agent/connectionStatus.js +0 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +21 -39
  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 +2 -19
  136. package/dist/inspector/agent/verification.js +7 -43
  137. package/dist/inspector/boot.d.ts +3 -1
  138. package/dist/inspector/boot.js +12 -20
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
  141. package/dist/inspector/canvas/CanvasCard.js +7 -14
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
  143. package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
  144. package/dist/inspector/canvas/PageCard.d.ts +0 -1
  145. package/dist/inspector/canvas/PageCard.js +0 -1
  146. package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
  147. package/dist/inspector/canvas/SketchToolOptions.js +0 -6
  148. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
  149. package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
  150. package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
  151. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  152. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  153. package/dist/inspector/canvas/agentPresentation.js +3 -14
  154. package/dist/inspector/canvas/canvasFrame.d.ts +2 -6
  155. package/dist/inspector/canvas/canvasFrame.js +1 -2
  156. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  157. package/dist/inspector/canvas/canvasResize.js +1 -6
  158. package/dist/inspector/canvas/canvasStore.d.ts +4 -12
  159. package/dist/inspector/canvas/canvasStore.js +12 -26
  160. package/dist/inspector/canvas/frameConnection.d.ts +1 -7
  161. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  162. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  163. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  164. package/dist/inspector/canvas/frameProtocol.d.ts +5 -40
  165. package/dist/inspector/canvas/frameProtocol.js +1 -24
  166. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  167. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  168. package/dist/inspector/canvas/layout.d.ts +10 -22
  169. package/dist/inspector/canvas/layout.js +0 -3
  170. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  171. package/dist/inspector/canvas/pageSurface.d.ts +1 -6
  172. package/dist/inspector/canvas/pageSurface.js +1 -6
  173. package/dist/inspector/canvas/projection.d.ts +4 -25
  174. package/dist/inspector/canvas/projection.js +22 -72
  175. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  176. package/dist/inspector/canvas/rendererBootstrap.js +6 -14
  177. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  178. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  179. package/dist/inspector/canvas/rendererElementSelector.js +29 -27
  180. package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
  181. package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
  182. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
  183. package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
  184. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  185. package/dist/inspector/canvas/rendererStylesheet.js +9 -2
  186. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  187. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  188. package/dist/inspector/canvas/sessionStore.d.ts +1 -7
  189. package/dist/inspector/canvas/sessionStore.js +21 -34
  190. package/dist/inspector/canvas/staleChangeDetector.js +1 -4
  191. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  192. package/dist/inspector/canvas/toolbarScale.js +1 -4
  193. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  194. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  195. package/dist/inspector/canvas/viewStore.js +1 -1
  196. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  197. package/dist/inspector/canvas/wheelPan.js +1 -1
  198. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  199. package/dist/inspector/canvas/workspaceLease.js +1 -7
  200. package/dist/inspector/changes/codecs.js +2 -1
  201. package/dist/inspector/changes/draftPreview.d.ts +1 -6
  202. package/dist/inspector/changes/draftPreview.js +15 -30
  203. package/dist/inspector/changes/editModel.d.ts +3 -13
  204. package/dist/inspector/changes/editModel.js +1 -2
  205. package/dist/inspector/changes/managedStyleProjection.js +4 -14
  206. package/dist/inspector/changes/model.d.ts +0 -5
  207. package/dist/inspector/changes/model.js +1 -8
  208. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  209. package/dist/inspector/changes/previewDiagnostics.js +4 -20
  210. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  211. package/dist/inspector/changes/previewVerification.js +34 -0
  212. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  213. package/dist/inspector/changes/types.d.ts +3 -10
  214. package/dist/inspector/clientManifest.d.ts +17 -6
  215. package/dist/inspector/clientManifest.js +16 -3
  216. package/dist/inspector/comments/CommentsOverlay.js +48 -7
  217. package/dist/inspector/comments/element.d.ts +1 -2
  218. package/dist/inspector/comments/element.js +1 -2
  219. package/dist/inspector/comments/store.d.ts +1 -1
  220. package/dist/inspector/comments/store.js +1 -1
  221. package/dist/inspector/comments/verification.d.ts +8 -2
  222. package/dist/inspector/comments/verification.js +18 -10
  223. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  224. package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
  225. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  226. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  227. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  228. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  229. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  230. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  231. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  232. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  233. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  234. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  235. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  236. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  237. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  238. package/dist/inspector/componentSemantics/textBinding.d.ts +1 -9
  239. package/dist/inspector/componentSemantics/textBinding.js +16 -42
  240. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  241. package/dist/inspector/componentSemantics/types.js +0 -1
  242. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  243. package/dist/inspector/conformance/borderCases.js +0 -5
  244. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  245. package/dist/inspector/conformance/colorCases.js +0 -6
  246. package/dist/inspector/conformance/fixture.d.ts +1 -5
  247. package/dist/inspector/conformance/fixture.js +1 -5
  248. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  249. package/dist/inspector/conformance/spacingCases.js +0 -4
  250. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  251. package/dist/inspector/conformance/typographyCases.js +0 -5
  252. package/dist/inspector/drafts/draftStore.d.ts +7 -21
  253. package/dist/inspector/drafts/draftStore.js +15 -5
  254. package/dist/inspector/drafts/model.d.ts +7 -15
  255. package/dist/inspector/drafts/model.js +0 -2
  256. package/dist/inspector/drafts/store.d.ts +1 -8
  257. package/dist/inspector/drafts/store.js +3 -10
  258. package/dist/inspector/editScope.d.ts +0 -1
  259. package/dist/inspector/editScope.js +0 -1
  260. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  261. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  262. package/dist/inspector/inline-text/inlineTextEditor.d.ts +2 -8
  263. package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
  264. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  265. package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
  266. package/dist/inspector/inspection/bridge.d.ts +2 -6
  267. package/dist/inspector/inspection/bridge.js +4 -12
  268. package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
  269. package/dist/inspector/inspection/browserCssInspection.js +4 -8
  270. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  271. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  272. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  273. package/dist/inspector/inspection/selectionProperty.js +1 -5
  274. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  275. package/dist/inspector/inspection/useBrowserCssInspection.js +5 -21
  276. package/dist/inspector/iterations/capture.d.ts +0 -1
  277. package/dist/inspector/iterations/capture.js +4 -9
  278. package/dist/inspector/iterations/client.d.ts +0 -1
  279. package/dist/inspector/iterations/client.js +0 -1
  280. package/dist/inspector/iterations/coordinator.d.ts +0 -1
  281. package/dist/inspector/iterations/coordinator.js +0 -1
  282. package/dist/inspector/iterations/prompt.d.ts +0 -1
  283. package/dist/inspector/iterations/prompt.js +0 -1
  284. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  285. package/dist/inspector/overlay/DomNavigator.js +39 -15
  286. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  287. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  288. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  289. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  290. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  291. package/dist/inspector/overlay/clickPolicy.js +3 -14
  292. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  293. package/dist/inspector/overlay/dropGuide.js +0 -3
  294. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  295. package/dist/inspector/overlay/frameThrottle.js +0 -1
  296. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  297. package/dist/inspector/overlay/interactionStyles.js +2 -8
  298. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  299. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  300. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  301. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  302. package/dist/inspector/overlay/spacingGestures.js +151 -31
  303. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  304. package/dist/inspector/overlay/structuralGestures.js +1 -4
  305. package/dist/inspector/pageInspector.d.ts +4 -13
  306. package/dist/inspector/pageInspector.js +25 -32
  307. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  308. package/dist/inspector/projection/cssEscapes.js +2 -4
  309. package/dist/inspector/projection/draftProjection.d.ts +2 -14
  310. package/dist/inspector/projection/draftProjection.js +1 -8
  311. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  312. package/dist/inspector/projection/managedStylesheet.js +4 -22
  313. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  314. package/dist/inspector/projection/renderedInstance.js +6 -32
  315. package/dist/inspector/projection/structuralProjection.d.ts +7 -39
  316. package/dist/inspector/projection/structuralProjection.js +17 -52
  317. package/dist/inspector/projection/textProjection.d.ts +2 -14
  318. package/dist/inspector/projection/textProjection.js +17 -70
  319. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  320. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  321. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -9
  322. package/dist/inspector/prompt/clipboardHandoff.js +1 -9
  323. package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
  324. package/dist/inspector/prompt/generatePrompt.js +10 -25
  325. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  326. package/dist/inspector/prompt/promptSettings.js +0 -3
  327. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  328. package/dist/inspector/runtime/devFlag.js +4 -31
  329. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  330. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  331. package/dist/inspector/runtime/editorShell.js +0 -1
  332. package/dist/inspector/runtime/inspectorStorage.d.ts +1 -7
  333. package/dist/inspector/runtime/inspectorStorage.js +1 -6
  334. package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
  335. package/dist/inspector/runtime/ownedStylesheets.js +2 -8
  336. package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
  337. package/dist/inspector/runtime/runtimeConfig.js +9 -50
  338. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
  339. package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
  340. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
  341. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
  342. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  343. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  344. package/dist/inspector/selection/editScope.d.ts +1 -7
  345. package/dist/inspector/selection/editScope.js +2 -12
  346. package/dist/inspector/selection/editTarget.d.ts +1 -5
  347. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  348. package/dist/inspector/selection/hierarchy.js +42 -24
  349. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  350. package/dist/inspector/selection/selectionStore.js +5 -16
  351. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  352. package/dist/inspector/selection/sourceSite.js +2 -8
  353. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  354. package/dist/inspector/selection/styleSelection.js +1 -5
  355. package/dist/inspector/session/lifecycle.d.ts +1 -9
  356. package/dist/inspector/session/lifecycle.js +0 -1
  357. package/dist/inspector/session/sessionContext.d.ts +0 -4
  358. package/dist/inspector/session/sessionContext.js +0 -4
  359. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  360. package/dist/inspector/session/sessionFactory.js +0 -6
  361. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  362. package/dist/inspector/settings/SettingsDialog.js +5 -3
  363. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  364. package/dist/inspector/shell/AgentStatusButton.js +5 -5
  365. package/dist/inspector/shell/ChangesLog.js +3 -4
  366. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  367. package/dist/inspector/shell/CopyPromptButton.js +12 -11
  368. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  369. package/dist/inspector/shell/InspectorEditors.js +14 -0
  370. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  371. package/dist/inspector/shell/InspectorPanel.js +8 -0
  372. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  373. package/dist/inspector/shell/InspectorSelection.js +20 -0
  374. package/dist/inspector/shell/InspectorShell.js +26 -48
  375. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  376. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  377. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  378. package/dist/inspector/shell/PeekOriginalButton.js +0 -5
  379. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  380. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  381. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  382. package/dist/inspector/shell/PromptActionButton.js +14 -0
  383. package/dist/inspector/shell/elementName.d.ts +5 -0
  384. package/dist/inspector/shell/elementName.js +29 -0
  385. package/dist/inspector/shell/interactionStatePreview.d.ts +1 -4
  386. package/dist/inspector/shell/interactionStatePreview.js +3 -8
  387. package/dist/inspector/shell/originalPreview.d.ts +1 -6
  388. package/dist/inspector/shell/originalPreview.js +1 -6
  389. package/dist/inspector/shell/stateValue.d.ts +1 -2
  390. package/dist/inspector/shell/stateValue.js +2 -5
  391. package/dist/inspector/shell/styleState.d.ts +1 -2
  392. package/dist/inspector/shell/styleState.js +1 -2
  393. package/dist/inspector/sketch/SketchEditor.js +0 -1
  394. package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
  395. package/dist/inspector/sketch/SketchOverlay.js +5 -6
  396. package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
  397. package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
  398. package/dist/inspector/sketch/SketchWorkspace.js +2 -4
  399. package/dist/inspector/sketch/capture.d.ts +12 -3
  400. package/dist/inspector/sketch/capture.js +12 -11
  401. package/dist/inspector/sketch/copySketch.d.ts +1 -7
  402. package/dist/inspector/sketch/copySketch.js +2 -11
  403. package/dist/inspector/sketch/drawingTools.d.ts +1 -3
  404. package/dist/inspector/sketch/drawingTools.js +1 -2
  405. package/dist/inspector/sketch/frameHeading.d.ts +1 -7
  406. package/dist/inspector/sketch/frameHeading.js +1 -8
  407. package/dist/inspector/sketch/freehand.d.ts +0 -1
  408. package/dist/inspector/sketch/freehand.js +0 -1
  409. package/dist/inspector/sketch/geometry.d.ts +1 -6
  410. package/dist/inspector/sketch/geometry.js +1 -6
  411. package/dist/inspector/sketch/handoff.js +0 -1
  412. package/dist/inspector/sketch/history.d.ts +1 -5
  413. package/dist/inspector/sketch/history.js +1 -4
  414. package/dist/inspector/sketch/interaction.d.ts +2 -2
  415. package/dist/inspector/sketch/interaction.js +2 -2
  416. package/dist/inspector/sketch/model.d.ts +2 -9
  417. package/dist/inspector/sketch/model.js +2 -19
  418. package/dist/inspector/sketch/persistence.d.ts +0 -1
  419. package/dist/inspector/sketch/persistence.js +2 -2
  420. package/dist/inspector/sketch/raster.d.ts +1 -4
  421. package/dist/inspector/sketch/raster.js +2 -8
  422. package/dist/inspector/sketch/store.js +2 -3
  423. package/dist/inspector/sketch/videoFrames.js +2 -3
  424. package/dist/inspector/spacing/projection.d.ts +0 -8
  425. package/dist/inspector/spacing/projection.js +38 -20
  426. package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
  427. package/dist/inspector/styleEditors/BorderEditor.js +1 -6
  428. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  429. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  430. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  431. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  432. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  433. package/dist/inspector/styleEditors/GapField.js +3 -4
  434. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  435. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  436. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  437. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  438. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  439. package/dist/inspector/styleEditors/GridSection.js +22 -9
  440. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  441. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  442. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  443. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +0 -1
  444. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  445. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  446. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  447. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  448. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  449. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  450. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  451. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  452. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  453. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  454. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  455. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  456. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  457. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  458. package/dist/inspector/styleEditors/Typography.js +2 -4
  459. package/dist/inspector/styleEditors/borderModel.d.ts +1 -7
  460. package/dist/inspector/styleEditors/borderModel.js +2 -11
  461. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  462. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  463. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  464. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  465. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  466. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  467. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  468. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  469. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  470. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  471. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  472. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  473. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  474. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  475. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  476. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  477. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  478. package/dist/inspector/styleEditors/layoutValue.js +4 -12
  479. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  480. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  481. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  482. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  483. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  484. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  485. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  486. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  487. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  488. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  489. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  490. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  491. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  492. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  493. package/dist/inspector/testing.d.ts +1 -4
  494. package/dist/inspector/testing.js +1 -4
  495. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  496. package/dist/inspector/tokens/TokenChip.js +1 -4
  497. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  498. package/dist/inspector/tokens/TokenField.js +19 -29
  499. package/dist/inspector/tokens/catalog.d.ts +2 -10
  500. package/dist/inspector/tokens/catalog.js +5 -12
  501. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  502. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  503. package/dist/inspector/tokens/editActions.d.ts +1 -1
  504. package/dist/inspector/tokens/editActions.js +2 -4
  505. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  506. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  507. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +1 -5
  508. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
  509. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  510. package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
  511. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
  512. package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
  513. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  514. package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
  515. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  516. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  517. package/dist/inspector/tokens/resolution.d.ts +5 -24
  518. package/dist/inspector/tokens/resolution.js +16 -71
  519. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  520. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  521. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  522. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  523. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  524. package/dist/inspector/ui/AtRuleContext.js +8 -6
  525. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  526. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  527. package/dist/inspector/ui/Disclosure.js +0 -4
  528. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  529. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  530. package/dist/inspector/ui/InspectorPopover.js +1 -5
  531. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  532. package/dist/inspector/ui/SegmentedControl.js +6 -4
  533. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  534. package/dist/inspector/ui/SideValuesField.js +2 -8
  535. package/dist/inspector/ui/Toast.d.ts +0 -4
  536. package/dist/inspector/ui/Toast.js +0 -4
  537. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  538. package/dist/inspector/ui/atRuleSegments.js +34 -0
  539. package/dist/inspector/ui/classNames.d.ts +0 -1
  540. package/dist/inspector/ui/classNames.js +0 -1
  541. package/dist/inspector/ui/customCursors.d.ts +7 -1
  542. package/dist/inspector/ui/customCursors.js +2 -6
  543. package/dist/inspector/ui/styles.js +18 -20
  544. package/dist/inspector/workspace/controller.js +20 -1
  545. package/dist/inspector/workspace/handoff.d.ts +1 -5
  546. package/dist/inspector/workspace/handoff.js +1 -5
  547. package/dist/inspector/workspace/timeline.d.ts +5 -2
  548. package/dist/inspector/workspace/timeline.js +0 -1
  549. package/dist/internal/agent-protocol.d.ts +20 -42
  550. package/dist/internal/agent-protocol.js +18 -35
  551. package/dist/nudge-ui.mjs +75 -28
  552. package/dist/project/artifacts.js +24 -21
  553. package/dist/project/files.d.ts +0 -1
  554. package/dist/project/files.js +2 -9
  555. package/dist/project/identity.d.ts +1 -5
  556. package/dist/project/identity.js +1 -5
  557. package/dist/project/mcpPackage.d.ts +1 -6
  558. package/dist/project/mcpPackage.js +2 -7
  559. package/dist/project/pathPolicy.d.ts +1 -6
  560. package/dist/project/pathPolicy.js +1 -6
  561. package/dist/project/tokens.d.ts +2 -12
  562. package/dist/project/tokens.js +4 -15
  563. package/dist/transport/editor.d.ts +1 -12
  564. package/dist/transport/editor.js +2 -13
  565. package/dist/transport/index.d.ts +0 -5
  566. package/dist/transport/index.js +0 -5
  567. package/dist/transport/routes.d.ts +0 -5
  568. package/dist/transport/routes.js +0 -5
  569. package/package.json +5 -4
  570. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  571. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  572. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  573. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  574. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  575. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -4,6 +4,11 @@ import { adoptedStylesheetKey, STATE_PREVIEW_SHEET_ID } from "../../runtime/owne
4
4
  import { INTERACTION_CURSOR_PROPERTY } from "../../ui/customCursors.js";
5
5
  const revisionRecords = new WeakMap();
6
6
  const ruleSnapshots = new WeakMap();
7
+ /** Bumped when a page-owned stylesheet's walk could change without replacing its CSSStyleSheet object; inspector-owned writes leave it alone. */
8
+ const pageSheetEpochs = new WeakMap();
9
+ function bumpPageSheetEpoch(doc) {
10
+ pageSheetEpochs.set(doc, (pageSheetEpochs.get(doc) ?? 0) + 1);
11
+ }
7
12
  const documentResolutionSessions = new WeakMap();
8
13
  const documentResolutionReferences = new WeakMap();
9
14
  const registeredElements = new WeakSet();
@@ -15,10 +20,6 @@ function notifyDocumentRevision(doc) {
15
20
  const revisions = documentRevisions(doc);
16
21
  documentRevisionListeners.get(doc)?.forEach((cb) => cb({ ...revisions }));
17
22
  }
18
- /**
19
- * Subscribes to cascade revisions for one document. This is the narrow
20
- * document-scoped seam used by the browser inspection Module.
21
- */
22
23
  export function subscribeDocumentRevision(doc, cb) {
23
24
  let listeners = documentRevisionListeners.get(doc);
24
25
  if (!listeners) {
@@ -33,12 +34,7 @@ export function subscribeDocumentRevision(doc, cb) {
33
34
  }
34
35
  };
35
36
  }
36
- /**
37
- * Elements whose attribute changes can affect a cached cascade outcome. The
38
- * observer only counts attribute mutations against registered elements so
39
- * unrelated host churn (React commits, hover states, animations) cannot bump
40
- * the element revision. Registration is idempotent.
41
- */
37
+ /** Only attribute mutations on registered elements bump the element revision; unrelated host churn is ignored. */
42
38
  export function registerResolutionElement(el) {
43
39
  registeredElements.add(el);
44
40
  }
@@ -49,7 +45,6 @@ export function registerResolutionLineage(element) {
49
45
  current = current.parentElement;
50
46
  }
51
47
  }
52
- /** Releases the observer, listener, and cached state owned by one document. */
53
48
  export function disposeDocumentResolution(doc) {
54
49
  const session = documentResolutionSessions.get(doc);
55
50
  if (session) {
@@ -63,14 +58,7 @@ export function disposeDocumentResolution(doc) {
63
58
  documentResolutionSessions.delete(doc);
64
59
  }
65
60
  documentResolutionReferences.delete(doc);
66
- // Keep revision counters monotonic per Document. Resetting them to (0,0)
67
- // resurrects stale revision-keyed caches in property resolution, token
68
- // availability, and rule matching: an entry written at
69
- // (0,0) before disposal matches immediately after disposal at (0,0), even
70
- // though the CSSOM changed while no observer was attached. Bump instead so
71
- // every pre-disposal cache entry misses, then let the next
72
- // documentRevisions() observe from the bumped baseline. Only bump when a
73
- // session was actually torn down so repeated disposes stay idempotent.
61
+ // Counters stay monotonic: resetting to (0,0) would resurrect stale revision-keyed caches written before disposal.
74
62
  if (session) {
75
63
  const record = revisionRecords.get(doc);
76
64
  if (record) {
@@ -79,6 +67,7 @@ export function disposeDocumentResolution(doc) {
79
67
  }
80
68
  }
81
69
  ruleSnapshots.delete(doc);
70
+ bumpPageSheetEpoch(doc);
82
71
  documentRevisionListeners.get(doc)?.clear();
83
72
  documentRevisionListeners.delete(doc);
84
73
  }
@@ -135,15 +124,19 @@ const MANAGED_SHEET_ID = "nudge-ui-styles";
135
124
  function isManagedStylesheetNode(node) {
136
125
  return isStylesheetNode(node) && node.id === MANAGED_SHEET_ID;
137
126
  }
138
- /**
139
- * Records that cannot affect cascade outcomes are skipped: mutations made by
140
- * the tool's own probes (attribution, container-query, and value), attribute
141
- * churn on elements outside the resolution registry, and the container-query
142
- * marker attribute set on registered elements. Managed stylesheet text is
143
- * intentionally observed because it is a real cascade input.
144
- */
145
- // The renderer rewrites these on hover and spacing drags; letting them bump
146
- // the element revision re-resolves the whole selected cascade per pointer move.
127
+ function isPageStylesheetNode(node) {
128
+ return isStylesheetNode(node) && !isManagedStylesheetNode(node);
129
+ }
130
+ function changesPageStylesheet(record) {
131
+ if (record.type === "attributes")
132
+ return isPageStylesheetNode(record.target);
133
+ if (record.type === "characterData")
134
+ return isPageStylesheetNode(record.target.parentElement);
135
+ return isPageStylesheetNode(record.target)
136
+ || Array.from(record.addedNodes).some(isPageStylesheetNode)
137
+ || Array.from(record.removedNodes).some(isPageStylesheetNode);
138
+ }
139
+ // The renderer rewrites these on hover and spacing drags; bumping the element revision would re-resolve the cascade per pointer move.
147
140
  const RENDERER_INLINE_CURSOR_PROPERTIES = ["cursor", INTERACTION_CURSOR_PROPERTY];
148
141
  function styleTextWithoutCursor(doc, text) {
149
142
  const scratch = doc.createElement("div");
@@ -159,9 +152,7 @@ function isCursorOnlyStyleChange(target, oldValue) {
159
152
  function isProbeMutation(record) {
160
153
  if (record.type === "attributes") {
161
154
  const target = record.target;
162
- // Stylesheet attributes change which rules are present or active even when
163
- // the stylesheet element has never been registered as a resolution target.
164
- // Handle them before the generic unregistered-element fast path.
155
+ // Stylesheet attributes change the rules even for unregistered elements, so check them before the registry fast path.
165
156
  if (isStylesheetNode(target)) {
166
157
  const name = record.attributeName ?? "";
167
158
  if (isManagedStylesheetNode(target))
@@ -169,9 +160,7 @@ function isProbeMutation(record) {
169
160
  return name.startsWith("data-nudge-ui");
170
161
  }
171
162
  const name = record.attributeName ?? "";
172
- // Renderer-owned IDs are lookup metadata, not authored cascade inputs.
173
- // Ignore them before the registry check so hovering an unregistered canvas
174
- // node does not invalidate the selected element's resolution snapshot.
163
+ // data-renderer-id is lookup metadata, not a cascade input; ignore it before the registry check.
175
164
  if (name === "data-renderer-id")
176
165
  return true;
177
166
  if (!registeredElements.has(target))
@@ -185,8 +174,7 @@ function isProbeMutation(record) {
185
174
  }
186
175
  if (isProbeNode(record.target) && !isManagedStylesheetNode(record.target))
187
176
  return true;
188
- // Removed nodes are already disconnected, so their ancestor chain is gone;
189
- // check the record's target subtree and the nodes themselves instead.
177
+ // Removed nodes are already disconnected, so check their own attributes instead of an ancestor chain.
190
178
  const nodes = [...record.addedNodes, ...record.removedNodes];
191
179
  if (nodes.some(isManagedStylesheetNode))
192
180
  return false;
@@ -198,10 +186,7 @@ export function documentRevisions(doc) {
198
186
  record = { element: 0, stylesheet: 0 };
199
187
  revisionRecords.set(doc, record);
200
188
  }
201
- // A disposed document keeps its monotonic record (see
202
- // disposeDocumentResolution) but loses its observer session. Recreate the
203
- // session so later mutations are observed from the bumped baseline instead
204
- // of silently freezing the counters.
189
+ // A disposed document keeps its record but loses its observer; recreate the session so mutations are not silently unobserved.
205
190
  if (documentResolutionSessions.get(doc))
206
191
  return record;
207
192
  const session = {
@@ -211,9 +196,7 @@ export function documentRevisions(doc) {
211
196
  resizeListener: null,
212
197
  };
213
198
  documentResolutionSessions.set(doc, session);
214
- // MutationObserver is a global constructor of the document realm, but it is
215
- // not a property in every TypeScript Window declaration used by consumers.
216
- // Keep the cast local so the observer and its callback remain document-local.
199
+ // Not every TypeScript Window declaration types MutationObserver; the local cast keeps the observer document-local.
217
200
  const viewWithObserver = session.view;
218
201
  const Observer = viewWithObserver?.MutationObserver
219
202
  ?? (typeof MutationObserver !== "undefined" ? MutationObserver : undefined);
@@ -228,6 +211,8 @@ export function documentRevisions(doc) {
228
211
  record.element++;
229
212
  if (relevant.some(changesStylesheet))
230
213
  record.stylesheet++;
214
+ if (relevant.some(changesPageStylesheet))
215
+ bumpPageSheetEpoch(doc);
231
216
  notifyDocumentRevision(doc);
232
217
  });
233
218
  session.observer = observer;
@@ -243,6 +228,7 @@ export function documentRevisions(doc) {
243
228
  return;
244
229
  record.element++;
245
230
  record.stylesheet++;
231
+ bumpPageSheetEpoch(doc);
246
232
  notifyDocumentRevision(doc);
247
233
  };
248
234
  session.resizeListener = resizeListener;
@@ -253,8 +239,16 @@ export function documentRevisions(doc) {
253
239
  function stylesheetRevision(doc) {
254
240
  return documentRevisions(doc).stylesheet;
255
241
  }
256
- /** Invalidates CSSOM-derived snapshots after programmatic stylesheet edits. */
257
242
  export function invalidateStyleResolutionCache(doc = document) {
243
+ const record = documentRevisions(doc);
244
+ record.element++;
245
+ record.stylesheet++;
246
+ ruleSnapshots.delete(doc);
247
+ bumpPageSheetEpoch(doc);
248
+ notifyDocumentRevision(doc);
249
+ }
250
+ /** Inspector-only invalidation; page sheets are re-read only if their objects changed. */
251
+ export function invalidateOwnedStyleResolution(doc = document) {
258
252
  const record = documentRevisions(doc);
259
253
  record.element++;
260
254
  record.stylesheet++;
@@ -268,13 +262,7 @@ function isStyleRuleInDocument(rule, doc) {
268
262
  return rule.type === (doc.defaultView?.CSSRule.STYLE_RULE ?? 1)
269
263
  && "selectorText" in rule && "style" in rule;
270
264
  }
271
- /**
272
- * Reads the declarations the browser accepted for a style rule. This is the
273
- * semantic source for authored values; it intentionally does not inspect the
274
- * stylesheet element's original text. CSSOM may expose a shorthand as empty
275
- * longhand entries through indexed enumeration, so prefer its serialized
276
- * declaration block and use enumeration as a compatibility fallback.
277
- */
265
+ /** Prefers the serialized declaration block; enumeration is a fallback because a shorthand can enumerate empty longhands. */
278
266
  export function declarationsFromCssom(style) {
279
267
  const declarations = parseCssomDeclarations(style.cssText);
280
268
  const seen = new Set(declarations.map((declaration) => declaration.property));
@@ -397,10 +385,7 @@ function contextForRule(cssText, record) {
397
385
  return params ? { kind: "media", params } : null;
398
386
  }
399
387
  if (/^\s*@container\b/i.test(cssText)) {
400
- // CSSContainerRule's `conditionText` is the whole prelude, name included;
401
- // only prepend `containerName` for engines whose `conditionText` omits it.
402
- // Fall back to the serialised prelude so named, style, and newer
403
- // container queries remain presentable without hand-parsing their grammar.
388
+ // conditionText includes the container name in some engines and omits it in others; prepend only when missing.
404
389
  const containerName = record.containerName?.trim();
405
390
  const condition = record.conditionText?.trim() ?? "";
406
391
  const hasName = Boolean(containerName) && containerName !== "none";
@@ -419,86 +404,84 @@ function contextForRule(cssText, record) {
419
404
  function isNestedDeclarations(rule, doc) {
420
405
  if (isStyleRuleInDocument(rule, doc) || !("style" in rule) || "selectorText" in rule)
421
406
  return false;
422
- // Chromium represents declarations nested in a style rule's @supports /
423
- // @media block as CSSNestedDeclarations. Its public type is not yet in
424
- // lib.dom, so identify its declaration-only CSSOM shape conservatively.
407
+ // Chromium's CSSNestedDeclarations is not yet in lib.dom; identify its declaration-only shape conservatively.
425
408
  return !/^\s*@/.test(rule.cssText ?? "") && typeof rule.style === "object";
426
409
  }
427
- export function collectRules(doc) {
428
- const revision = stylesheetRevision(doc);
429
- const cached = ruleSnapshots.get(doc);
430
- if (cached?.revision === revision) {
431
- return {
432
- rules: cached.rules,
433
- layerOrder: cached.layerOrder,
434
- inaccessible: cached.inaccessible,
435
- };
410
+ /** Page-owned walks survive inspector edits; walkStillValid() defines when one must be re-read. */
411
+ const pageSheetWalks = new WeakMap();
412
+ function walkStillValid(walk, rules, epoch, view) {
413
+ if (walk.epoch !== epoch || walk.ruleCount !== rules.length)
414
+ return false;
415
+ for (const [condition, matches] of walk.media) {
416
+ if ((view ? view.matchMedia(condition).matches : false) !== matches)
417
+ return false;
436
418
  }
437
- const out = [];
438
- const layerOrder = new Map();
439
- let inaccessible = false;
440
- let sourceOrder = 0;
441
- const registerLayer = (name) => {
442
- const normalized = name.trim();
443
- if (!normalized)
444
- return undefined;
445
- if (!layerOrder.has(normalized))
446
- layerOrder.set(normalized, layerOrder.size);
447
- return normalized;
448
- };
419
+ return true;
420
+ }
421
+ function walkSheet(rules, doc) {
422
+ const events = [];
423
+ const media = new Map();
424
+ const view = doc.defaultView;
449
425
  const nestedLayerName = (parent, child) => {
450
426
  const normalized = child.trim();
451
427
  if (!normalized)
452
428
  return parent;
453
- return registerLayer(parent ? `${parent}.${normalized}` : normalized);
429
+ const name = parent ? `${parent}.${normalized}` : normalized;
430
+ events.push({ layer: name });
431
+ return name;
454
432
  };
455
- const walkRules = (rules, active = true, layer, atRules = [], inheritedSelector, source) => {
433
+ const mediaMatches = (condition) => {
434
+ let matches = media.get(condition);
435
+ if (matches === undefined) {
436
+ matches = view ? view.matchMedia(condition).matches : false;
437
+ media.set(condition, matches);
438
+ }
439
+ return matches;
440
+ };
441
+ const walkRules = (rules, active = true, layer, atRules = [], inheritedSelector) => {
456
442
  for (const rule of Array.from(rules)) {
457
- const serializedRule = rule.cssText ?? "";
458
- const layerStatement = /^\s*@layer\s+([^;{]+)\s*;/i.exec(serializedRule);
459
- if (layerStatement && !("cssRules" in rule)) {
460
- layerStatement[1].split(",").forEach((name) => nestedLayerName(layer, name));
461
- continue;
462
- }
463
443
  if (isStyleRuleInDocument(rule, doc)) {
464
444
  try {
465
445
  const selectorText = inheritedSelector
466
446
  ? resolveNestedSelector(rule.selectorText, inheritedSelector)
467
447
  : rule.selectorText;
468
- out.push({
469
- selectorText,
470
- specificity: computeSpecificityCore(selectorText),
471
- declarations: declarationsFromCssom(rule.style),
472
- source,
473
- sourceOrder: sourceOrder++,
474
- active,
475
- layer,
476
- layerOrder: layer ? layerOrder.get(layer) : undefined,
477
- atRules: atRules.length > 0 ? atRules : undefined,
478
- });
448
+ events.push({ rule: {
449
+ selectorText,
450
+ specificity: computeSpecificityCore(selectorText),
451
+ declarations: declarationsFromCssom(rule.style),
452
+ active,
453
+ layer,
454
+ atRules: atRules.length > 0 ? atRules : undefined,
455
+ } });
479
456
  const nested = rule.cssRules;
480
457
  if (nested?.length)
481
- walkRules(nested, active, layer, atRules, selectorText, source);
458
+ walkRules(nested, active, layer, atRules, selectorText);
482
459
  }
483
460
  catch {
484
461
  continue;
485
462
  }
463
+ continue;
486
464
  }
487
- else if (isNestedDeclarations(rule, doc)) {
465
+ // Serializing a style rule's declaration block is costly, so only other
466
+ // rule kinds are serialized to recognise their at-rule.
467
+ const serializedRule = rule.cssText ?? "";
468
+ const layerStatement = /^\s*@layer\s+([^;{]+)\s*;/i.exec(serializedRule);
469
+ if (layerStatement && !("cssRules" in rule)) {
470
+ layerStatement[1].split(",").forEach((name) => nestedLayerName(layer, name));
471
+ continue;
472
+ }
473
+ if (isNestedDeclarations(rule, doc)) {
488
474
  if (!inheritedSelector)
489
475
  continue;
490
476
  try {
491
- out.push({
492
- selectorText: inheritedSelector,
493
- specificity: computeSpecificityCore(inheritedSelector),
494
- declarations: declarationsFromCssom(rule.style),
495
- source,
496
- sourceOrder: sourceOrder++,
497
- active,
498
- layer,
499
- layerOrder: layer ? layerOrder.get(layer) : undefined,
500
- atRules: atRules.length > 0 ? atRules : undefined,
501
- });
477
+ events.push({ rule: {
478
+ selectorText: inheritedSelector,
479
+ specificity: computeSpecificityCore(inheritedSelector),
480
+ declarations: declarationsFromCssom(rule.style),
481
+ active,
482
+ layer,
483
+ atRules: atRules.length > 0 ? atRules : undefined,
484
+ } });
502
485
  }
503
486
  catch {
504
487
  continue;
@@ -508,24 +491,20 @@ export function collectRules(doc) {
508
491
  try {
509
492
  const record = rule;
510
493
  let childActive = active;
511
- const cssText = rule.cssText ?? "";
494
+ const cssText = serializedRule;
512
495
  const isMedia = /^\s*@media\b/i.test(cssText);
513
496
  const isSupports = /^\s*@supports\b/i.test(cssText);
514
497
  const isLayer = /^\s*@layer\b/i.test(cssText);
515
- const view = doc.defaultView;
516
498
  if (isMedia && record.conditionText)
517
- childActive = active && (view ? view.matchMedia(record.conditionText).matches : false);
499
+ childActive = active && mediaMatches(record.conditionText);
518
500
  else if (isSupports && record.conditionText)
519
- childActive = active && (doc.defaultView?.CSS?.supports(record.conditionText) ?? false);
520
- // A container query is evaluated relative to the styled element, so
521
- // it cannot be answered while walking a document-level stylesheet.
522
- // Resolution evaluates its retained context against the selected
523
- // element using a harmless browser probe.
501
+ childActive = active && (view?.CSS?.supports(record.conditionText) ?? false);
502
+ // A container query depends on the styled element, so the walk only retains it; resolution evaluates it against the selection.
524
503
  const context = contextForRule(cssText, record);
525
504
  const childLayer = isLayer
526
505
  ? nestedLayerName(layer, record.name ?? cssText.slice(6, cssText.indexOf("{")).trim())
527
506
  : layer;
528
- walkRules(record.cssRules, childActive, childLayer, context ? [...atRules, context] : atRules, inheritedSelector, source);
507
+ walkRules(record.cssRules, childActive, childLayer, context ? [...atRules, context] : atRules, inheritedSelector);
529
508
  }
530
509
  catch {
531
510
  continue;
@@ -533,6 +512,55 @@ export function collectRules(doc) {
533
512
  }
534
513
  }
535
514
  };
515
+ walkRules(rules);
516
+ return { events, media };
517
+ }
518
+ export function collectRules(doc) {
519
+ const revision = stylesheetRevision(doc);
520
+ const cached = ruleSnapshots.get(doc);
521
+ if (cached?.revision === revision) {
522
+ return {
523
+ rules: cached.rules,
524
+ layerOrder: cached.layerOrder,
525
+ inaccessible: cached.inaccessible,
526
+ };
527
+ }
528
+ const out = [];
529
+ const layerOrder = new Map();
530
+ let inaccessible = false;
531
+ const epoch = pageSheetEpochs.get(doc) ?? 0;
532
+ const append = (events, source) => {
533
+ for (const event of events) {
534
+ if ("layer" in event) {
535
+ if (!layerOrder.has(event.layer))
536
+ layerOrder.set(event.layer, layerOrder.size);
537
+ continue;
538
+ }
539
+ const { rule } = event;
540
+ out.push({
541
+ selectorText: rule.selectorText,
542
+ specificity: rule.specificity,
543
+ declarations: rule.declarations,
544
+ source,
545
+ sourceOrder: out.length,
546
+ active: rule.active,
547
+ layer: rule.layer,
548
+ layerOrder: rule.layer ? layerOrder.get(rule.layer) : undefined,
549
+ atRules: rule.atRules,
550
+ });
551
+ }
552
+ };
553
+ const sheetEvents = (sheet, pageOwned) => {
554
+ const rules = sheet.cssRules;
555
+ if (!pageOwned)
556
+ return walkSheet(rules, doc).events;
557
+ const previous = pageSheetWalks.get(sheet);
558
+ if (previous && walkStillValid(previous, rules, epoch, doc.defaultView))
559
+ return previous.events;
560
+ const walk = { epoch, ruleCount: rules.length, ...walkSheet(rules, doc) };
561
+ pageSheetWalks.set(sheet, walk);
562
+ return walk.events;
563
+ };
536
564
  const stylesheetNodes = Array.from(doc.querySelectorAll('style, link[rel~="stylesheet"]'));
537
565
  for (const [index, sheet] of Array.from(doc.styleSheets).entries()) {
538
566
  try {
@@ -544,7 +572,8 @@ export function collectRules(doc) {
544
572
  const source = owner?.dataset?.viteDevId
545
573
  ?? sheet.href
546
574
  ?? (owner?.id ? `#${owner.id}` : `stylesheet:${index + 1}`);
547
- walkRules(sheet.cssRules, true, undefined, [], undefined, source);
575
+ const inspectorOwned = typeof owner?.hasAttribute === "function" && owner.hasAttribute("data-nudge-ui");
576
+ append(sheetEvents(sheet, !inspectorOwned), source);
548
577
  }
549
578
  catch {
550
579
  inaccessible = true;
@@ -556,7 +585,7 @@ export function collectRules(doc) {
556
585
  const key = adoptedStylesheetKey(doc, sheet);
557
586
  if (key === STATE_PREVIEW_SHEET_ID)
558
587
  continue;
559
- walkRules(sheet.cssRules, true, undefined, [], undefined, key ? `#${key}` : `adopted:${index + 1}`);
588
+ append(sheetEvents(sheet, key === null), key ? `#${key}` : `adopted:${index + 1}`);
560
589
  }
561
590
  const snapshot = { revision, rules: out, layerOrder, inaccessible };
562
591
  ruleSnapshots.set(doc, snapshot);
@@ -1,6 +1,2 @@
1
- /**
2
- * Resolves a CSSOM nested selector against its already resolved parent.
3
- * `:is()` preserves nesting's maximum parent-list specificity without
4
- * expanding every combination of parent and child selectors.
5
- */
1
+ /** `:is(parent)` keeps nesting's maximum parent-list specificity without expanding every combination. */
6
2
  export declare function resolveNestedSelector(selector: string, parent: string): string;
@@ -1,8 +1,4 @@
1
- /**
2
- * Resolves a CSSOM nested selector against its already resolved parent.
3
- * `:is()` preserves nesting's maximum parent-list specificity without
4
- * expanding every combination of parent and child selectors.
5
- */
1
+ /** `:is(parent)` keeps nesting's maximum parent-list specificity without expanding every combination. */
6
2
  export function resolveNestedSelector(selector, parent) {
7
3
  const subject = `:is(${parent})`;
8
4
  const branches = [];
@@ -7,26 +7,15 @@ export interface ElementMatch {
7
7
  branch: string;
8
8
  specificity: number;
9
9
  }
10
- /**
11
- * The selector set used by a resolution. Interaction states strip or drop
12
- * pseudo-class rules, `live` keeps the raw CSSOM rules (used by
13
- * `getResolvedProperties`), and `stable` drops transient rules (used by
14
- * `getResolvedPropertiesStable`).
15
- */
10
+ /** Resolution vocabulary: interaction states strip matching pseudo-classes, `stable` drops transient rules, `live` keeps raw CSSOM rules. */
16
11
  type CascadeTransform = InteractionState | "live" | "stable";
17
- /** Test-only cache reset. */
18
12
  export declare function resetSourceSiteMatchCache(): void;
19
- /** Test-only cache size. */
20
13
  export declare function sourceSiteMatchCacheSize(): number;
21
14
  export declare function matchRuleForElement(el: HTMLElement, entry: {
22
15
  rule: MatchedRule;
23
16
  selectorText: string;
24
17
  }): ElementMatch | null;
25
- /**
26
- * Shares dynamic matches across cache validation and ancestry within one sweep.
27
- * Element-relative conditions, such as container queries, remain the resolver's
28
- * responsibility; these results describe selector matches and stylesheet activity.
29
- */
18
+ /** Element-relative conditions (container queries) stay the resolver's job; these describe selector matches and stylesheet activity. */
30
19
  export interface RuleMatcher {
31
20
  dynamicMatchKey(element: HTMLElement): string;
32
21
  matchesForElement(element: HTMLElement): {
@@ -34,7 +23,8 @@ export interface RuleMatcher {
34
23
  allMatched: ElementMatch[];
35
24
  };
36
25
  }
37
- /** Creates a matcher for one CSSOM snapshot. */
38
26
  export declare function createRuleMatcher(rules: MatchedRule[], transform: CascadeTransform): RuleMatcher;
27
+ /** Warms transforms, buckets, and class indexes so an idle frame pays their parsing cost. */
28
+ export declare function prewarmRuleMatching(rules: MatchedRule[]): void;
39
29
  export declare function getAvailableInteractionStates(el: HTMLElement): InteractionState[];
40
30
  export {};