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,6 +1,14 @@
1
1
  import { computeSpecificityCore } from "./selectorSemantics.js";
2
+ import { resolveNestedSelector } from "./nestedSelectors.js";
3
+ import { adoptedStylesheetKey, STATE_PREVIEW_SHEET_ID } from "../../runtime/ownedStylesheets.js";
4
+ import { INTERACTION_CURSOR_PROPERTY } from "../../ui/customCursors.js";
2
5
  const revisionRecords = new WeakMap();
3
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
+ }
4
12
  const documentResolutionSessions = new WeakMap();
5
13
  const documentResolutionReferences = new WeakMap();
6
14
  const registeredElements = new WeakSet();
@@ -12,10 +20,6 @@ function notifyDocumentRevision(doc) {
12
20
  const revisions = documentRevisions(doc);
13
21
  documentRevisionListeners.get(doc)?.forEach((cb) => cb({ ...revisions }));
14
22
  }
15
- /**
16
- * Subscribes to cascade revisions for one document. This is the narrow
17
- * document-scoped seam used by the browser inspection Module.
18
- */
19
23
  export function subscribeDocumentRevision(doc, cb) {
20
24
  let listeners = documentRevisionListeners.get(doc);
21
25
  if (!listeners) {
@@ -30,12 +34,7 @@ export function subscribeDocumentRevision(doc, cb) {
30
34
  }
31
35
  };
32
36
  }
33
- /**
34
- * Elements whose attribute changes can affect a cached cascade outcome. The
35
- * observer only counts attribute mutations against registered elements so
36
- * unrelated host churn (React commits, hover states, animations) cannot bump
37
- * the element revision. Registration is idempotent.
38
- */
37
+ /** Only attribute mutations on registered elements bump the element revision; unrelated host churn is ignored. */
39
38
  export function registerResolutionElement(el) {
40
39
  registeredElements.add(el);
41
40
  }
@@ -46,7 +45,6 @@ export function registerResolutionLineage(element) {
46
45
  current = current.parentElement;
47
46
  }
48
47
  }
49
- /** Releases the observer, listener, and cached state owned by one document. */
50
48
  export function disposeDocumentResolution(doc) {
51
49
  const session = documentResolutionSessions.get(doc);
52
50
  if (session) {
@@ -60,14 +58,7 @@ export function disposeDocumentResolution(doc) {
60
58
  documentResolutionSessions.delete(doc);
61
59
  }
62
60
  documentResolutionReferences.delete(doc);
63
- // Keep revision counters monotonic per Document. Resetting them to (0,0)
64
- // resurrects stale revision-keyed caches in property resolution, token
65
- // availability, and rule matching: an entry written at
66
- // (0,0) before disposal matches immediately after disposal at (0,0), even
67
- // though the CSSOM changed while no observer was attached. Bump instead so
68
- // every pre-disposal cache entry misses, then let the next
69
- // documentRevisions() observe from the bumped baseline. Only bump when a
70
- // 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.
71
62
  if (session) {
72
63
  const record = revisionRecords.get(doc);
73
64
  if (record) {
@@ -76,6 +67,7 @@ export function disposeDocumentResolution(doc) {
76
67
  }
77
68
  }
78
69
  ruleSnapshots.delete(doc);
70
+ bumpPageSheetEpoch(doc);
79
71
  documentRevisionListeners.get(doc)?.clear();
80
72
  documentRevisionListeners.delete(doc);
81
73
  }
@@ -132,19 +124,35 @@ const MANAGED_SHEET_ID = "nudge-ui-styles";
132
124
  function isManagedStylesheetNode(node) {
133
125
  return isStylesheetNode(node) && node.id === MANAGED_SHEET_ID;
134
126
  }
135
- /**
136
- * Records that cannot affect cascade outcomes are skipped: mutations made by
137
- * the tool's own probes (attribution, container-query, and value), attribute
138
- * churn on elements outside the resolution registry, and the container-query
139
- * marker attribute set on registered elements. Managed stylesheet text is
140
- * intentionally observed because it is a real cascade input.
141
- */
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.
140
+ const RENDERER_INLINE_CURSOR_PROPERTIES = ["cursor", INTERACTION_CURSOR_PROPERTY];
141
+ function styleTextWithoutCursor(doc, text) {
142
+ const scratch = doc.createElement("div");
143
+ scratch.style.cssText = text ?? "";
144
+ for (const property of RENDERER_INLINE_CURSOR_PROPERTIES)
145
+ scratch.style.removeProperty(property);
146
+ return scratch.style.cssText;
147
+ }
148
+ function isCursorOnlyStyleChange(target, oldValue) {
149
+ const doc = target.ownerDocument;
150
+ return styleTextWithoutCursor(doc, oldValue) === styleTextWithoutCursor(doc, target.getAttribute("style"));
151
+ }
142
152
  function isProbeMutation(record) {
143
153
  if (record.type === "attributes") {
144
154
  const target = record.target;
145
- // Stylesheet attributes change which rules are present or active even when
146
- // the stylesheet element has never been registered as a resolution target.
147
- // 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.
148
156
  if (isStylesheetNode(target)) {
149
157
  const name = record.attributeName ?? "";
150
158
  if (isManagedStylesheetNode(target))
@@ -152,23 +160,21 @@ function isProbeMutation(record) {
152
160
  return name.startsWith("data-nudge-ui");
153
161
  }
154
162
  const name = record.attributeName ?? "";
155
- // Renderer-owned IDs are lookup metadata, not authored cascade inputs.
156
- // Ignore them before the registry check so hovering an unregistered canvas
157
- // 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.
158
164
  if (name === "data-renderer-id")
159
165
  return true;
160
166
  if (!registeredElements.has(target))
161
167
  return true;
162
168
  return name.startsWith("data-nudge-ui")
163
- || CONTAINER_PROBE_MARKER.test(name);
169
+ || CONTAINER_PROBE_MARKER.test(name)
170
+ || (name === "style" && isCursorOnlyStyleChange(target, record.oldValue));
164
171
  }
165
172
  if (record.type === "characterData") {
166
173
  return isProbeNode(record.target) && !isManagedStylesheetNode(record.target.parentElement);
167
174
  }
168
175
  if (isProbeNode(record.target) && !isManagedStylesheetNode(record.target))
169
176
  return true;
170
- // Removed nodes are already disconnected, so their ancestor chain is gone;
171
- // 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.
172
178
  const nodes = [...record.addedNodes, ...record.removedNodes];
173
179
  if (nodes.some(isManagedStylesheetNode))
174
180
  return false;
@@ -180,10 +186,7 @@ export function documentRevisions(doc) {
180
186
  record = { element: 0, stylesheet: 0 };
181
187
  revisionRecords.set(doc, record);
182
188
  }
183
- // A disposed document keeps its monotonic record (see
184
- // disposeDocumentResolution) but loses its observer session. Recreate the
185
- // session so later mutations are observed from the bumped baseline instead
186
- // 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.
187
190
  if (documentResolutionSessions.get(doc))
188
191
  return record;
189
192
  const session = {
@@ -193,9 +196,7 @@ export function documentRevisions(doc) {
193
196
  resizeListener: null,
194
197
  };
195
198
  documentResolutionSessions.set(doc, session);
196
- // MutationObserver is a global constructor of the document realm, but it is
197
- // not a property in every TypeScript Window declaration used by consumers.
198
- // 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.
199
200
  const viewWithObserver = session.view;
200
201
  const Observer = viewWithObserver?.MutationObserver
201
202
  ?? (typeof MutationObserver !== "undefined" ? MutationObserver : undefined);
@@ -210,11 +211,14 @@ export function documentRevisions(doc) {
210
211
  record.element++;
211
212
  if (relevant.some(changesStylesheet))
212
213
  record.stylesheet++;
214
+ if (relevant.some(changesPageStylesheet))
215
+ bumpPageSheetEpoch(doc);
213
216
  notifyDocumentRevision(doc);
214
217
  });
215
218
  session.observer = observer;
216
219
  observer.observe(root, {
217
220
  attributes: true,
221
+ attributeOldValue: true,
218
222
  childList: true,
219
223
  characterData: true,
220
224
  subtree: true,
@@ -224,6 +228,7 @@ export function documentRevisions(doc) {
224
228
  return;
225
229
  record.element++;
226
230
  record.stylesheet++;
231
+ bumpPageSheetEpoch(doc);
227
232
  notifyDocumentRevision(doc);
228
233
  };
229
234
  session.resizeListener = resizeListener;
@@ -234,8 +239,16 @@ export function documentRevisions(doc) {
234
239
  function stylesheetRevision(doc) {
235
240
  return documentRevisions(doc).stylesheet;
236
241
  }
237
- /** Invalidates CSSOM-derived snapshots after programmatic stylesheet edits. */
238
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) {
239
252
  const record = documentRevisions(doc);
240
253
  record.element++;
241
254
  record.stylesheet++;
@@ -249,13 +262,7 @@ function isStyleRuleInDocument(rule, doc) {
249
262
  return rule.type === (doc.defaultView?.CSSRule.STYLE_RULE ?? 1)
250
263
  && "selectorText" in rule && "style" in rule;
251
264
  }
252
- /**
253
- * Reads the declarations the browser accepted for a style rule. This is the
254
- * semantic source for authored values; it intentionally does not inspect the
255
- * stylesheet element's original text. CSSOM may expose a shorthand as empty
256
- * longhand entries through indexed enumeration, so prefer its serialized
257
- * declaration block and use enumeration as a compatibility fallback.
258
- */
265
+ /** Prefers the serialized declaration block; enumeration is a fallback because a shorthand can enumerate empty longhands. */
259
266
  export function declarationsFromCssom(style) {
260
267
  const declarations = parseCssomDeclarations(style.cssText);
261
268
  const seen = new Set(declarations.map((declaration) => declaration.property));
@@ -378,13 +385,13 @@ function contextForRule(cssText, record) {
378
385
  return params ? { kind: "media", params } : null;
379
386
  }
380
387
  if (/^\s*@container\b/i.test(cssText)) {
381
- // CSSContainerRule exposes `conditionText` and `containerName` in modern
382
- // engines. Fall back to the serialised prelude so named, style, and newer
383
- // 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.
384
389
  const containerName = record.containerName?.trim();
385
- const fromInterfaces = [containerName && containerName !== "none" ? containerName : undefined, record.conditionText?.trim()]
386
- .filter((part) => Boolean(part))
387
- .join(" ");
390
+ const condition = record.conditionText?.trim() ?? "";
391
+ const hasName = Boolean(containerName) && containerName !== "none";
392
+ const conditionNamed = hasName && condition.startsWith(containerName)
393
+ && /^(?:$|[\s(])/.test(condition.slice(containerName.length));
394
+ const fromInterfaces = hasName && !conditionNamed ? `${containerName} ${condition}`.trim() : condition;
388
395
  const params = fromInterfaces || atRuleParams(cssText, "container");
389
396
  return params ? { kind: "container", params } : null;
390
397
  }
@@ -397,83 +404,84 @@ function contextForRule(cssText, record) {
397
404
  function isNestedDeclarations(rule, doc) {
398
405
  if (isStyleRuleInDocument(rule, doc) || !("style" in rule) || "selectorText" in rule)
399
406
  return false;
400
- // Chromium represents declarations nested in a style rule's @supports /
401
- // @media block as CSSNestedDeclarations. Its public type is not yet in
402
- // 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.
403
408
  return !/^\s*@/.test(rule.cssText ?? "") && typeof rule.style === "object";
404
409
  }
405
- export function collectRules(doc) {
406
- const revision = stylesheetRevision(doc);
407
- const cached = ruleSnapshots.get(doc);
408
- if (cached?.revision === revision) {
409
- return {
410
- rules: cached.rules,
411
- layerOrder: cached.layerOrder,
412
- inaccessible: cached.inaccessible,
413
- };
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;
414
418
  }
415
- const out = [];
416
- const layerOrder = new Map();
417
- let inaccessible = false;
418
- let sourceOrder = 0;
419
- const registerLayer = (name) => {
420
- const normalized = name.trim();
421
- if (!normalized)
422
- return undefined;
423
- if (!layerOrder.has(normalized))
424
- layerOrder.set(normalized, layerOrder.size);
425
- return normalized;
426
- };
419
+ return true;
420
+ }
421
+ function walkSheet(rules, doc) {
422
+ const events = [];
423
+ const media = new Map();
424
+ const view = doc.defaultView;
427
425
  const nestedLayerName = (parent, child) => {
428
426
  const normalized = child.trim();
429
427
  if (!normalized)
430
428
  return parent;
431
- return registerLayer(parent ? `${parent}.${normalized}` : normalized);
429
+ const name = parent ? `${parent}.${normalized}` : normalized;
430
+ events.push({ layer: name });
431
+ return name;
432
432
  };
433
- 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) => {
434
442
  for (const rule of Array.from(rules)) {
435
- const serializedRule = rule.cssText ?? "";
436
- const layerStatement = /^\s*@layer\s+([^;{]+)\s*;/i.exec(serializedRule);
437
- if (layerStatement && !("cssRules" in rule)) {
438
- layerStatement[1].split(",").forEach((name) => nestedLayerName(layer, name));
439
- continue;
440
- }
441
443
  if (isStyleRuleInDocument(rule, doc)) {
442
444
  try {
443
- out.push({
444
- selectorText: rule.selectorText,
445
- specificity: computeSpecificityCore(rule.selectorText),
446
- declarations: declarationsFromCssom(rule.style),
447
- source,
448
- sourceOrder: sourceOrder++,
449
- active,
450
- layer,
451
- layerOrder: layer ? layerOrder.get(layer) : undefined,
452
- atRules: atRules.length > 0 ? atRules : undefined,
453
- });
445
+ const selectorText = inheritedSelector
446
+ ? resolveNestedSelector(rule.selectorText, inheritedSelector)
447
+ : rule.selectorText;
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
+ } });
454
456
  const nested = rule.cssRules;
455
457
  if (nested?.length)
456
- walkRules(nested, active, layer, atRules, rule.selectorText, source);
458
+ walkRules(nested, active, layer, atRules, selectorText);
457
459
  }
458
460
  catch {
459
461
  continue;
460
462
  }
463
+ continue;
461
464
  }
462
- 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)) {
463
474
  if (!inheritedSelector)
464
475
  continue;
465
476
  try {
466
- out.push({
467
- selectorText: inheritedSelector,
468
- specificity: computeSpecificityCore(inheritedSelector),
469
- declarations: declarationsFromCssom(rule.style),
470
- source,
471
- sourceOrder: sourceOrder++,
472
- active,
473
- layer,
474
- layerOrder: layer ? layerOrder.get(layer) : undefined,
475
- atRules: atRules.length > 0 ? atRules : undefined,
476
- });
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
+ } });
477
485
  }
478
486
  catch {
479
487
  continue;
@@ -483,24 +491,20 @@ export function collectRules(doc) {
483
491
  try {
484
492
  const record = rule;
485
493
  let childActive = active;
486
- const cssText = rule.cssText ?? "";
494
+ const cssText = serializedRule;
487
495
  const isMedia = /^\s*@media\b/i.test(cssText);
488
496
  const isSupports = /^\s*@supports\b/i.test(cssText);
489
497
  const isLayer = /^\s*@layer\b/i.test(cssText);
490
- const view = doc.defaultView;
491
498
  if (isMedia && record.conditionText)
492
- childActive = active && (view ? view.matchMedia(record.conditionText).matches : false);
499
+ childActive = active && mediaMatches(record.conditionText);
493
500
  else if (isSupports && record.conditionText)
494
- childActive = active && (doc.defaultView?.CSS?.supports(record.conditionText) ?? false);
495
- // A container query is evaluated relative to the styled element, so
496
- // it cannot be answered while walking a document-level stylesheet.
497
- // Resolution evaluates its retained context against the selected
498
- // 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.
499
503
  const context = contextForRule(cssText, record);
500
504
  const childLayer = isLayer
501
505
  ? nestedLayerName(layer, record.name ?? cssText.slice(6, cssText.indexOf("{")).trim())
502
506
  : layer;
503
- walkRules(record.cssRules, childActive, childLayer, context ? [...atRules, context] : atRules, inheritedSelector, source);
507
+ walkRules(record.cssRules, childActive, childLayer, context ? [...atRules, context] : atRules, inheritedSelector);
504
508
  }
505
509
  catch {
506
510
  continue;
@@ -508,21 +512,81 @@ export function collectRules(doc) {
508
512
  }
509
513
  }
510
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
+ };
511
564
  const stylesheetNodes = Array.from(doc.querySelectorAll('style, link[rel~="stylesheet"]'));
512
565
  for (const [index, sheet] of Array.from(doc.styleSheets).entries()) {
513
566
  try {
514
567
  // jsdom does not currently expose CSSStyleSheet.ownerNode; the document
515
568
  // stylesheet list and stylesheet element list retain the same order.
516
569
  const owner = sheet.ownerNode ?? stylesheetNodes[index] ?? null;
570
+ if (owner?.id === STATE_PREVIEW_SHEET_ID)
571
+ continue;
517
572
  const source = owner?.dataset?.viteDevId
518
573
  ?? sheet.href
519
574
  ?? (owner?.id ? `#${owner.id}` : `stylesheet:${index + 1}`);
520
- 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);
521
577
  }
522
578
  catch {
523
579
  inaccessible = true;
524
580
  }
525
581
  }
582
+ // Adopted sheets cascade after document stylesheets. Under a strict
583
+ // style-src policy they also hold the inspector's own managed rules.
584
+ for (const [index, sheet] of Array.from(doc.adoptedStyleSheets ?? []).entries()) {
585
+ const key = adoptedStylesheetKey(doc, sheet);
586
+ if (key === STATE_PREVIEW_SHEET_ID)
587
+ continue;
588
+ append(sheetEvents(sheet, key === null), key ? `#${key}` : `adopted:${index + 1}`);
589
+ }
526
590
  const snapshot = { revision, rules: out, layerOrder, inaccessible };
527
591
  ruleSnapshots.set(doc, snapshot);
528
592
  return snapshot;
@@ -0,0 +1,2 @@
1
+ /** `:is(parent)` keeps nesting's maximum parent-list specificity without expanding every combination. */
2
+ export declare function resolveNestedSelector(selector: string, parent: string): string;
@@ -0,0 +1,63 @@
1
+ /** `:is(parent)` keeps nesting's maximum parent-list specificity without expanding every combination. */
2
+ export function resolveNestedSelector(selector, parent) {
3
+ const subject = `:is(${parent})`;
4
+ const branches = [];
5
+ let branch = "";
6
+ let hasNesting = false;
7
+ let parentheses = 0;
8
+ let brackets = 0;
9
+ let quote = null;
10
+ const finishBranch = () => {
11
+ branches.push(hasNesting ? branch.trim() : `${subject} ${branch.trim()}`);
12
+ branch = "";
13
+ hasNesting = false;
14
+ };
15
+ for (let index = 0; index < selector.length; index++) {
16
+ const character = selector[index];
17
+ if (character === "\\") {
18
+ branch += character + (selector[++index] ?? "");
19
+ continue;
20
+ }
21
+ if (quote) {
22
+ branch += character;
23
+ if (character === quote)
24
+ quote = null;
25
+ continue;
26
+ }
27
+ if (character === '"' || character === "'") {
28
+ quote = character;
29
+ }
30
+ else if (character === "/" && selector[index + 1] === "*") {
31
+ const end = selector.indexOf("*/", index + 2);
32
+ if (end < 0)
33
+ return "";
34
+ branch += selector.slice(index, end + 2);
35
+ index = end + 1;
36
+ continue;
37
+ }
38
+ else if (character === "[") {
39
+ brackets++;
40
+ }
41
+ else if (character === "]") {
42
+ brackets--;
43
+ }
44
+ else if (brackets === 0) {
45
+ if (character === "(")
46
+ parentheses++;
47
+ else if (character === ")")
48
+ parentheses--;
49
+ else if (character === "&") {
50
+ branch += subject;
51
+ hasNesting = true;
52
+ continue;
53
+ }
54
+ else if (character === "," && parentheses === 0) {
55
+ finishBranch();
56
+ continue;
57
+ }
58
+ }
59
+ branch += character;
60
+ }
61
+ finishBranch();
62
+ return branches.join(", ");
63
+ }
@@ -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 {};