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
@@ -1,6 +1,6 @@
1
1
  import { INTERACTION_STATES } from "../../shell/styleState.js";
2
2
  import { collectRules as collectCssomRules, documentRevisions as getDocumentRevisions } from "./cssomCollector.js";
3
- import { computeSpecificity, hasSelectorPseudoClass, isElementSensitiveSelector, canMatchSelectorSubject, selectorPseudoClasses, splitSelectorAtTopLevel, } from "./selectorSemantics.js";
3
+ import { computeSpecificity, hasSelectorPseudoClass, isElementSensitiveSelector, canMatchSelectorSubject, selectorPseudoClasses, selectorSubjectClass, splitSelectorAtTopLevel, } from "./selectorSemantics.js";
4
4
  const TRANSIENT_PSEUDO_CLASSES = new Set([
5
5
  "hover",
6
6
  "active",
@@ -11,10 +11,7 @@ const TRANSIENT_PSEUDO_CLASSES = new Set([
11
11
  "target",
12
12
  ]);
13
13
  const INTERACTION_PSEUDO_CLASSES = new Set(INTERACTION_STATES);
14
- /**
15
- * Applies a per-branch selector transform to a selector list, so one stateful
16
- * branch such as `.b:active` cannot drop a plain sibling branch such as `.a`.
17
- */
14
+ /** Per-branch transform, so a stateful branch such as `.b:active` cannot drop a plain sibling branch. */
18
15
  function transformSelectorBranches(selector, transformBranch) {
19
16
  if (!selector.includes(","))
20
17
  return transformBranch(selector);
@@ -37,9 +34,7 @@ function branchForState(selector, state) {
37
34
  return states.size === 0 ? selector : null;
38
35
  if (!states.has(state))
39
36
  return states.size === 0 ? selector : null;
40
- // CSSOM cannot ask the browser whether a hypothetical pseudo-class matches.
41
- // Removing interaction pseudo-classes gives the authored rule a stable
42
- // element match for inspection. The real rule remains untouched.
37
+ // CSSOM cannot test a hypothetical pseudo-class, so strip it for a stable element match; the real rule is untouched.
43
38
  let transformed = selector;
44
39
  for (let index = pseudoClasses.length - 1; index >= 0; index--) {
45
40
  const pseudoClass = pseudoClasses[index];
@@ -48,12 +43,28 @@ function branchForState(selector, state) {
48
43
  return transformed;
49
44
  }
50
45
  function specificityForBranch(rule, branch) {
51
- // Single-branch selectors reuse the specificity collected from CSSOM; the
52
- // matched branch is the whole selector. Multi-branch selectors need the
53
- // matched branch's own weight, so recompute per branch.
46
+ // Multi-branch selectors need the matched branch's own weight; a single branch reuses the CSSOM specificity.
54
47
  return rule.selectorText.includes(",") ? computeSpecificity(branch) : rule.specificity;
55
48
  }
56
49
  const transformedRulesMemo = new WeakMap();
50
+ // Lists change per revision but selectors rarely do, so transformed selectors are cached by text.
51
+ const TRANSFORMED_SELECTOR_CACHE_MAX = 32_768;
52
+ const transformedSelectorMemo = new Map();
53
+ function transformSelector(selectorText, transform) {
54
+ let byText = transformedSelectorMemo.get(transform);
55
+ if (!byText) {
56
+ byText = new Map();
57
+ transformedSelectorMemo.set(transform, byText);
58
+ }
59
+ const cached = byText.get(selectorText);
60
+ if (cached !== undefined)
61
+ return cached;
62
+ const transformed = transform === "stable" ? stableSelector(selectorText) : selectorForState(selectorText, transform);
63
+ if (byText.size >= TRANSFORMED_SELECTOR_CACHE_MAX)
64
+ byText.clear();
65
+ byText.set(selectorText, transformed);
66
+ return transformed;
67
+ }
57
68
  function rulesForTransform(rules, transform) {
58
69
  let byTransform = transformedRulesMemo.get(rules);
59
70
  if (!byTransform) {
@@ -67,21 +78,90 @@ function rulesForTransform(rules, transform) {
67
78
  if (transform === "live") {
68
79
  transformed = rules.map((rule) => ({ rule, selectorText: rule.selectorText }));
69
80
  }
70
- else if (transform === "stable") {
71
- transformed = rules.flatMap((rule) => {
72
- const selectorText = stableSelector(rule.selectorText);
73
- return selectorText ? [{ rule, selectorText }] : [];
74
- });
75
- }
76
81
  else {
77
82
  transformed = rules.flatMap((rule) => {
78
- const selectorText = selectorForState(rule.selectorText, transform);
83
+ const selectorText = transformSelector(rule.selectorText, transform);
79
84
  return selectorText ? [{ rule, selectorText }] : [];
80
85
  });
81
86
  }
82
87
  byTransform.set(transform, transformed);
83
88
  return transformed;
84
89
  }
90
+ const subjectClassIndexMemo = new WeakMap();
91
+ const SUBJECT_CLASS_KEYS_CACHE_MAX = 32_768;
92
+ const subjectClassKeysMemo = new Map();
93
+ /** One required class per branch, or null when some branch requires none. */
94
+ function subjectClassKeys(selectorText) {
95
+ const cached = subjectClassKeysMemo.get(selectorText);
96
+ if (cached !== undefined)
97
+ return cached;
98
+ const keys = new Set();
99
+ let indexed = true;
100
+ for (const branch of splitSelectorAtTopLevel(selectorText, ",")) {
101
+ const className = selectorSubjectClass(branch.trim());
102
+ if (className === null) {
103
+ indexed = false;
104
+ break;
105
+ }
106
+ keys.add(className);
107
+ }
108
+ const result = indexed ? [...keys] : null;
109
+ if (subjectClassKeysMemo.size >= SUBJECT_CLASS_KEYS_CACHE_MAX)
110
+ subjectClassKeysMemo.clear();
111
+ subjectClassKeysMemo.set(selectorText, result);
112
+ return result;
113
+ }
114
+ function subjectClassIndex(entries) {
115
+ const cached = subjectClassIndexMemo.get(entries);
116
+ if (cached)
117
+ return cached;
118
+ const byClass = new Map();
119
+ const unindexed = [];
120
+ entries.forEach((entry, index) => {
121
+ const keys = subjectClassKeys(entry.selectorText);
122
+ if (keys === null) {
123
+ unindexed.push(index);
124
+ return;
125
+ }
126
+ for (const key of keys) {
127
+ const bucket = byClass.get(key);
128
+ if (bucket)
129
+ bucket.push(index);
130
+ else
131
+ byClass.set(key, [index]);
132
+ }
133
+ });
134
+ const built = { byClass, unindexed, unindexedEntries: unindexed.map((index) => entries[index]) };
135
+ subjectClassIndexMemo.set(entries, built);
136
+ return built;
137
+ }
138
+ /** Entries that can match `el`, in original order; only skips branches `canMatchSelectorSubject` would reject anyway. */
139
+ function candidateEntries(entries, el) {
140
+ const index = subjectClassIndex(entries);
141
+ if (el.classList.length === 0 || index.byClass.size === 0)
142
+ return index.unindexedEntries;
143
+ let picked = null;
144
+ for (const className of el.classList) {
145
+ const bucket = index.byClass.get(className);
146
+ if (!bucket)
147
+ continue;
148
+ picked ??= [...index.unindexed];
149
+ for (const entryIndex of bucket)
150
+ picked.push(entryIndex);
151
+ }
152
+ if (!picked)
153
+ return index.unindexedEntries;
154
+ picked.sort((left, right) => left - right);
155
+ const candidates = [];
156
+ let previous = -1;
157
+ for (const entryIndex of picked) {
158
+ if (entryIndex === previous)
159
+ continue;
160
+ previous = entryIndex;
161
+ candidates.push(entries[entryIndex]);
162
+ }
163
+ return candidates;
164
+ }
85
165
  const sourceSiteMatchBucketsMemo = new WeakMap();
86
166
  function sourceSiteMatchBuckets(rules, transform) {
87
167
  let byTransform = sourceSiteMatchBucketsMemo.get(rules);
@@ -105,24 +185,15 @@ const SOURCE_SITE_CACHE_MAX = 4096;
105
185
  let sourceSiteMatchCaches = new WeakMap();
106
186
  let sourceSiteMatchCacheEntries = 0;
107
187
  const concreteElementMatchCaches = new WeakMap();
108
- // The all-rules sweep shares the active sweep's revision cache for stable
109
- // selectors. Element-sensitive selectors stay fresh because browser state can
110
- // change without a mutation observed by the registry.
111
188
  const allMatchesMemo = new WeakMap();
112
- /** Test-only cache reset. */
113
189
  export function resetSourceSiteMatchCache() {
114
190
  sourceSiteMatchCaches = new WeakMap();
115
191
  sourceSiteMatchCacheEntries = 0;
116
192
  }
117
- /** Test-only cache size. */
118
193
  export function sourceSiteMatchCacheSize() {
119
194
  return sourceSiteMatchCacheEntries;
120
195
  }
121
- /**
122
- * Captures selector-relevant state without serializing the whole document.
123
- * Element and ancestor attributes cover the common source-site selectors while
124
- * child/sibling-sensitive selectors are handled conservatively below.
125
- */
196
+ /** Selector-relevant element and ancestor attributes, without serializing the whole document. */
126
197
  function sourceSiteContextKey(el) {
127
198
  const lineage = [];
128
199
  let current = el;
@@ -137,12 +208,7 @@ function sourceSiteContextKey(el) {
137
208
  }
138
209
  return lineage.join("\u0001");
139
210
  }
140
- /**
141
- * Source-site identity key for the matched-rule cache. The element's class is
142
- * part of the key because sibling instances of a source site can carry
143
- * different classes (for example rows in a large list), which changes which
144
- * rules match even though their `data-cid`/`data-src` are identical.
145
- */
211
+ /** `data-cid`/`data-src` are identical across sibling instances, so the class is part of the key. */
146
212
  function sourceSiteKey(el, transform) {
147
213
  const cid = el.getAttribute("data-cid") ?? "";
148
214
  const src = el.getAttribute("data-src") ?? "";
@@ -161,11 +227,7 @@ export function matchRuleForElement(el, entry) {
161
227
  specificity: specificityForBranch(entry.rule, branch),
162
228
  };
163
229
  }
164
- /**
165
- * Captures the current match outcome for selectors whose truth can change
166
- * without a document revision. This keeps the expensive resolved-row cache
167
- * usable while invalidating it when states such as `checked` actually change.
168
- */
230
+ /** Match key for selectors whose truth can change without a document revision. */
169
231
  function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElement) {
170
232
  const entries = sourceSiteMatchBuckets(rules, transform).elementSensitive;
171
233
  if (entries.length === 0)
@@ -175,7 +237,7 @@ function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElemen
175
237
  let depth = 0;
176
238
  while (current) {
177
239
  const elementMatches = [];
178
- for (const entry of entries) {
240
+ for (const entry of candidateEntries(entries, current)) {
179
241
  const match = matchRuleForElement(current, entry);
180
242
  if (!match)
181
243
  continue;
@@ -192,24 +254,20 @@ function sensitiveMatchesForElement(el, buckets, matchesByElement) {
192
254
  const cached = matchesByElement.get(el);
193
255
  if (cached)
194
256
  return cached;
195
- const matched = buckets.elementSensitive.flatMap((entry) => {
257
+ const matched = candidateEntries(buckets.elementSensitive, el).flatMap((entry) => {
196
258
  const match = matchRuleForElement(el, entry);
197
259
  return match ? [match] : [];
198
260
  });
199
261
  matchesByElement.set(el, matched);
200
262
  return matched;
201
263
  }
202
- /**
203
- * Matches transformed rules against one element. Stable source-site identities
204
- * reuse revision-keyed matches; unstable identities and relationship-sensitive
205
- * selectors are matched on each call.
206
- */
264
+ /** Stable source-site identities reuse revision-keyed matches; unstable identities and relationship-sensitive selectors match per call. */
207
265
  function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
208
266
  const buckets = sourceSiteMatchBuckets(rules, transform);
209
267
  const { cacheable, elementSensitive } = buckets;
210
268
  const collect = (entries) => {
211
269
  const matched = [];
212
- for (const entry of entries) {
270
+ for (const entry of candidateEntries(entries, el)) {
213
271
  if (entry.rule.active === false)
214
272
  continue;
215
273
  const match = matchRuleForElement(el, entry);
@@ -278,29 +336,24 @@ function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement
278
336
  matched: cachedMatches,
279
337
  });
280
338
  }
281
- // Browser state such as `checked` or `target` can change without a DOM or
282
- // stylesheet revision, so element-sensitive matches must stay fresh.
339
+ // Browser state (:checked, :target) can change without a revision, so element-sensitive matches stay fresh.
283
340
  const elementMatches = elementSensitive.length > 0
284
341
  ? sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement).filter((match) => match.rule.active !== false)
285
342
  : [];
286
343
  return elementMatches.length === 0 ? cachedMatches : [...cachedMatches, ...elementMatches];
287
344
  }
288
- /**
289
- * Matches selectors without applying conditional wrappers. The result retains
290
- * inactive media alternatives for attribution, while transient selectors and
291
- * the `live` transform retain their freshness requirements.
292
- */
345
+ /** Keeps inactive media alternatives for attribution; transient and `live` matches keep their freshness requirements. */
293
346
  function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
294
347
  const buckets = sourceSiteMatchBuckets(rules, transform);
295
348
  if (transform === "live") {
296
- const cacheableMatches = buckets.cacheable.flatMap((entry) => {
349
+ const cacheableMatches = candidateEntries(buckets.cacheable, el).flatMap((entry) => {
297
350
  const match = matchRuleForElement(el, entry);
298
351
  return match ? [match] : [];
299
352
  });
300
353
  return [...cacheableMatches, ...sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement)];
301
354
  }
302
355
  const { cacheable, elementSensitive } = buckets;
303
- const collect = (entries) => entries.flatMap((entry) => {
356
+ const collect = (entries) => candidateEntries(entries, el).flatMap((entry) => {
304
357
  const match = matchRuleForElement(el, entry);
305
358
  return match ? [match] : [];
306
359
  });
@@ -333,13 +386,9 @@ function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement =
333
386
  : [];
334
387
  return sensitiveMatches.length === 0 ? cachedMatches : [...cachedMatches, ...sensitiveMatches];
335
388
  }
336
- // Branch splits repeat across sweeps, so memoize them for the finite selector
337
- // set in a stylesheet snapshot.
338
- const SELECTOR_SPLIT_CACHE_MAX = 8192;
389
+ // Branch splits repeat across sweeps over a finite selector set, so memoize them.
390
+ const SELECTOR_SPLIT_CACHE_MAX = 32_768;
339
391
  const selectorSplitMemo = new Map();
340
- // Branch matches are reusable for state-independent selectors. Transient
341
- // selectors stay uncached because their state is not represented by document
342
- // revisions.
343
392
  const ELEMENT_BRANCH_CACHE_MAX = 16384;
344
393
  const elementBranchMemo = new WeakMap();
345
394
  function isBranchMemoizable(selectorText) {
@@ -394,7 +443,6 @@ function matchingSelectorBranch(el, selectorText) {
394
443
  }
395
444
  return branch;
396
445
  }
397
- /** Creates a matcher for one CSSOM snapshot. */
398
446
  export function createRuleMatcher(rules, transform) {
399
447
  const sensitiveMatches = new Map();
400
448
  return {
@@ -405,10 +453,7 @@ export function createRuleMatcher(rules, transform) {
405
453
  }),
406
454
  };
407
455
  }
408
- /**
409
- * Interaction states whose pseudo-class appears in the snapshot. Skipping
410
- * absent states avoids a full match sweep after each stylesheet revision.
411
- */
456
+ /** States whose pseudo-class appears in the snapshot, so absent states skip a full match sweep. */
412
457
  const statesWithPseudoInSnapshot = new WeakMap();
413
458
  function statesWithPseudoInSelectors(rules) {
414
459
  let present = statesWithPseudoInSnapshot.get(rules);
@@ -425,6 +470,15 @@ function statesWithPseudoInSelectors(rules) {
425
470
  }
426
471
  return present;
427
472
  }
473
+ /** Warms transforms, buckets, and class indexes so an idle frame pays their parsing cost. */
474
+ export function prewarmRuleMatching(rules) {
475
+ const transforms = ["base", "stable", "live", ...statesWithPseudoInSelectors(rules)];
476
+ for (const transform of new Set(transforms)) {
477
+ const { cacheable, elementSensitive } = sourceSiteMatchBuckets(rules, transform);
478
+ subjectClassIndex(cacheable);
479
+ subjectClassIndex(elementSensitive);
480
+ }
481
+ }
428
482
  export function getAvailableInteractionStates(el) {
429
483
  const doc = el.ownerDocument ?? document;
430
484
  const { rules } = collectCssomRules(doc);
@@ -1,15 +1,7 @@
1
1
  export declare function splitSelectorAtTopLevel(selector: string, separator?: string): string[];
2
- /** Test-only specificity cache size. */
3
2
  export declare function specificityComputationCount(): number;
4
- /** Test-only specificity cache reset. */
5
3
  export declare function resetSpecificityMemo(): void;
6
- /**
7
- * Computes the cascade weight for a selector without asking the DOM to match
8
- * it. Results are memoized per selector string for the resolution paths that
9
- * still recompute branch specificity (multi-branch selectors).
10
- */
11
4
  export declare function computeSpecificity(selectorText: string): number;
12
- /** Unmemoized implementation used by equivalence tests. */
13
5
  export declare function computeSpecificityCore(selectorText: string): number;
14
6
  export interface SelectorPseudoClass {
15
7
  name: string;
@@ -19,10 +11,7 @@ export interface SelectorPseudoClass {
19
11
  export declare function selectorPseudoClasses(selector: string): readonly SelectorPseudoClass[];
20
12
  export declare function hasSelectorPseudoClass(selector: string, names: ReadonlySet<string>): boolean;
21
13
  export declare function isElementSensitiveSelector(selector: string): boolean;
22
- /**
23
- * Rejects selectors whose rightmost compound requires a class the element
24
- * does not have. This is a conservative prefilter: it only returns false for
25
- * an impossible positive class requirement and leaves all other selectors to
26
- * the browser's selector engine.
27
- */
14
+ /** Class the selector's subject (rightmost compound) requires, or null when it requires none. */
15
+ export declare function selectorSubjectClass(selector: string): string | null;
16
+ /** Conservative prefilter: false only for an impossible required subject class; everything else goes to the browser engine. */
28
17
  export declare function canMatchSelectorSubject(el: Element, selector: string): boolean;
@@ -41,23 +41,16 @@ export function splitSelectorAtTopLevel(selector, separator) {
41
41
  parts.push(last);
42
42
  return parts;
43
43
  }
44
- const SPECIFICITY_MEMO_LIMIT = 10_000;
44
+ const SPECIFICITY_MEMO_LIMIT = 32_768;
45
45
  const specificityMemo = new Map();
46
46
  let specificityComputations = 0;
47
- /** Test-only specificity cache size. */
48
47
  export function specificityComputationCount() {
49
48
  return specificityComputations;
50
49
  }
51
- /** Test-only specificity cache reset. */
52
50
  export function resetSpecificityMemo() {
53
51
  specificityMemo.clear();
54
52
  specificityComputations = 0;
55
53
  }
56
- /**
57
- * Computes the cascade weight for a selector without asking the DOM to match
58
- * it. Results are memoized per selector string for the resolution paths that
59
- * still recompute branch specificity (multi-branch selectors).
60
- */
61
54
  export function computeSpecificity(selectorText) {
62
55
  const cached = specificityMemo.get(selectorText);
63
56
  if (cached !== undefined)
@@ -69,7 +62,6 @@ export function computeSpecificity(selectorText) {
69
62
  specificityMemo.set(selectorText, result);
70
63
  return result;
71
64
  }
72
- /** Unmemoized implementation used by equivalence tests. */
73
65
  export function computeSpecificityCore(selectorText) {
74
66
  const selector = selectorText.trim();
75
67
  const commaParts = splitSelectorAtTopLevel(selector, ",");
@@ -104,7 +96,7 @@ export function computeSpecificityCore(selectorText) {
104
96
  }
105
97
  return idCount * 1000000 + classCount * 10000 + elementCount * 100;
106
98
  }
107
- const SELECTOR_PSEUDO_CLASS_CACHE_MAX = 16_384;
99
+ const SELECTOR_PSEUDO_CLASS_CACHE_MAX = 32_768;
108
100
  const selectorPseudoClassMemo = new Map();
109
101
  export function selectorPseudoClasses(selector) {
110
102
  const cached = selectorPseudoClassMemo.get(selector);
@@ -164,7 +156,7 @@ export function hasSelectorPseudoClass(selector, names) {
164
156
  }
165
157
  const STATIC_SELECTOR_FUNCTIONS = new Set(["is", "where", "not"]);
166
158
  const STATIC_PSEUDO_CLASSES = new Set(["host", "root"]);
167
- const SELECTOR_SENSITIVITY_CACHE_MAX = 16_384;
159
+ const SELECTOR_SENSITIVITY_CACHE_MAX = 32_768;
168
160
  const selectorSensitivityMemo = new Map();
169
161
  function selectorFunctionEnd(selector, openingIndex) {
170
162
  let parentheses = 0;
@@ -249,8 +241,7 @@ function computeElementSensitiveSelector(selector) {
249
241
  attributeDepth--;
250
242
  continue;
251
243
  }
252
- // Tailwind escapes utility variants such as `.sm\\:text-red-500`. The
253
- // escaped colon is part of the class name, not a pseudo-class boundary.
244
+ // Tailwind escapes variants (`.sm\\:text-red-500`); an escaped colon is part of the class, not a pseudo boundary.
254
245
  if (escaped) {
255
246
  escaped = false;
256
247
  continue;
@@ -270,9 +261,7 @@ function computeElementSensitiveSelector(selector) {
270
261
  const pseudoElement = selector[index + 1] === ":";
271
262
  const pseudo = /^[A-Za-z-]+/.exec(selector.slice(index + (pseudoElement ? 2 : 1)))?.[0];
272
263
  if (pseudoElement) {
273
- // Pseudo-elements do not change whether the originating element matches
274
- // a selector. Continue scanning after the name so a real pseudo-class
275
- // elsewhere in the selector remains element-sensitive.
264
+ // Pseudo-elements do not make the originating element element-sensitive; keep scanning after the name.
276
265
  if (!pseudo)
277
266
  return true;
278
267
  index += pseudo.length + 1;
@@ -297,10 +286,7 @@ function computeElementSensitiveSelector(selector) {
297
286
  index = end;
298
287
  continue;
299
288
  }
300
- // :root and :host are represented by the complete ancestor/document
301
- // context. Other pseudo-classes can vary per concrete element without an
302
- // attribute or sibling mutation (for example :checked, :visited, and
303
- // :target), so keep them in the element-sensitive bucket.
289
+ // :root/:host are covered by ancestor context; other pseudo-classes (:checked, :visited, :target) can vary per element, so keep them element-sensitive.
304
290
  if (STATIC_PSEUDO_CLASSES.has(pseudoName))
305
291
  continue;
306
292
  return true;
@@ -402,7 +388,7 @@ function unescapeCssIdentifier(value) {
402
388
  })
403
389
  .replace(/\\(.)/g, "$1");
404
390
  }
405
- const SELECTOR_CLASS_REQUIREMENTS_CACHE_MAX = 16_384;
391
+ const SELECTOR_CLASS_REQUIREMENTS_CACHE_MAX = 32_768;
406
392
  const selectorClassRequirementsMemo = new Map();
407
393
  function selectorClassRequirements(selector) {
408
394
  const cached = selectorClassRequirementsMemo.get(selector);
@@ -469,12 +455,11 @@ function selectorClassRequirements(selector) {
469
455
  selectorClassRequirementsMemo.set(selector, requirements);
470
456
  return requirements;
471
457
  }
472
- /**
473
- * Rejects selectors whose rightmost compound requires a class the element
474
- * does not have. This is a conservative prefilter: it only returns false for
475
- * an impossible positive class requirement and leaves all other selectors to
476
- * the browser's selector engine.
477
- */
458
+ /** Class the selector's subject (rightmost compound) requires, or null when it requires none. */
459
+ export function selectorSubjectClass(selector) {
460
+ return selectorClassRequirements(selector)[0] ?? null;
461
+ }
462
+ /** Conservative prefilter: false only for an impossible required subject class; everything else goes to the browser engine. */
478
463
  export function canMatchSelectorSubject(el, selector) {
479
464
  return selectorClassRequirements(selector).every((className) => el.classList.contains(className));
480
465
  }
@@ -2,35 +2,16 @@ import type { InteractionState } from "../shell/styleState.js";
2
2
  import { type ContainerQueryEvaluator } from "./resolution/containerQueryEvaluator.js";
3
3
  import type { MatchedRule, ResolvedProperty, TokenTable } from "../../css/model/index.js";
4
4
  export { getAvailableInteractionStates, resetSourceSiteMatchCache, sourceSiteMatchCacheSize } from "./resolution/ruleMatching.js";
5
- export { buildTokenTable, getTokenTable, getAvailableTokenEntriesForElement, getAvailableTokenCatalog } from "./tokenAvailability.js";
5
+ export { buildTokenTable, getAvailableTokenEntriesForElement, getAvailableTokenCatalog } from "./tokenAvailability.js";
6
6
  export { invalidateStyleResolutionCache } from "./resolution/cssomCollector.js";
7
- /**
8
- * Builds (or reuses) the document's CSSOM rule snapshot ahead of a resolution
9
- * sweep. Idempotent: the walk runs once per stylesheet revision and is a cache
10
- * hit afterwards, so a scheduler can warm it in its own frame to keep the
11
- * subsequent resolution sweep's blocking time small.
12
- */
7
+ /** Idempotent per stylesheet revision; warms the snapshot ahead of a sweep so its blocking time stays small. */
13
8
  export declare function prewarmCssomRuleSnapshot(doc: Document): void;
14
9
  /** Prepares both cascades together so a selection refresh inserts one probe sheet. */
15
10
  export declare function prefetchContainerQueries(elements: readonly HTMLElement[], state: InteractionState, evaluator: ContainerQueryEvaluator): void;
16
- /**
17
- * Package-private cascade fixture seam. This exercises selector, layer,
18
- * importance, and interaction-state coordination while still crossing the
19
- * public value-semantics Interface through `resolveDeclaration`.
20
- * It is intentionally absent from the package exports.
21
- */
11
+ /** Test-only cascade fixture seam, intentionally absent from the package exports. */
22
12
  export declare function resolveRuleFixture(el: HTMLElement, rules: MatchedRule[], tokenTable: TokenTable): ResolvedProperty[];
23
13
  export declare function getResolvedProperties(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
24
- /**
25
- * Resolve the authored cascade for a chosen interaction state without relying
26
- * on the pointer's current location. This is intentionally attribution-first:
27
- * values with no authored declaration still fall back to the browser's live
28
- * computed value in the field layer.
29
- */
14
+ /** Authored cascade for a chosen interaction state, independent of the pointer's live paint. */
30
15
  export declare function getResolvedPropertiesForState(el: HTMLElement, tokenTable: TokenTable, state: InteractionState, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
31
- /**
32
- * Resolves the cascade with transient interaction selectors removed. Used when
33
- * an editor must stay linked to the stable token beneath a live :hover/:focus
34
- * paint. Memoized per (element, revisions, tokenTable).
35
- */
16
+ /** Cascade with transient interaction selectors removed, so an editor stays linked to the token beneath a live :hover/:focus paint. */
36
17
  export declare function getResolvedPropertiesStable(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];