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,10 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { IconLinkOff } from "@tabler/icons-react";
4
- import { applyValueEdit, normalizeOpacityPercent, selectTokens, } from "../../css/value-semantics/index.js";
4
+ import { applyValueEdit, isCalcExpression, normalizeOpacityPercent, selectTokens, } from "../../css/value-semantics/index.js";
5
5
  import { promoteToToken, swapToken } from "./editActions.js";
6
6
  import { setStyle } from "./editActions.js";
7
7
  import { completeCssValue } from "../styleEditors/completeCssValue.js";
8
+ import { deriveActiveTokenName, isExpressionRow } from "../styleEditors/fieldValue.js";
8
9
  import { canNudgeCssValueByDrag, nudgeCssValue, nudgeCssValueByDrag, nudgeOpacityValue, supportsDragNudge, } from "../styleEditors/nudgeValue.js";
9
10
  import { valuePolicyFor } from "../styleEditors/valuePolicy.js";
10
11
  import { IconButton } from "../ui/IconButton.js";
@@ -16,10 +17,11 @@ import { Tooltip } from "../ui/Tooltip.js";
16
17
  import { cx } from "../ui/classNames.js";
17
18
  import { TokenChip } from "./TokenChip.js";
18
19
  import { startDragPointerLock } from "./dragPointerLock.js";
19
- import { createChangeHistoryGroup } from "../changes/draftChanges.js";
20
+ import { createChangeHistoryGroup } from "../workspace/timeline.js";
20
21
  import { isMultiTarget } from "../selection/editTarget.js";
21
22
  import { inlineBlockedBy } from "../styleEditors/inlineAuthored.js";
22
23
  import { InlineStyleWarning } from "../ui/InlineStyleWarning.js";
24
+ import { isMacPlatform } from "../shell/shortcuts.js";
23
25
  const NON_COLOR_FACTS = { hasEmbeddedAlpha: false, isExpression: false, opacityEditable: false };
24
26
  function colorFacts(value) {
25
27
  return selectTokens({
@@ -77,7 +79,7 @@ function releasePointerCapture(state) {
77
79
  // The browser may release capture before pointerup/pointercancel arrives.
78
80
  }
79
81
  }
80
- /** Returns the first family in a CSS family list without splitting var() fallbacks. */
82
+ /** First family in a CSS family list; commas inside var() fallbacks are ignored. */
81
83
  function primaryFontFamily(value) {
82
84
  let depth = 0;
83
85
  let quote = null;
@@ -202,11 +204,7 @@ export function TokenValueField(props) {
202
204
  const showOpacity = isColor && !activeTokenHasEmbeddedAlpha
203
205
  && authoredColor.opacityEditable
204
206
  && (Boolean(activeTokenName) || attributionTokens.length === 0 || Boolean(opacity));
205
- // One classification pass per entries change. selectTokens costs up to
206
- // three CSS.supports calls per token, so classifying per token per render
207
- // (chip mode is unbounded; raw mode runs per keystroke) dominates this
208
- // field's render cost. Map misses fall back to direct classification for
209
- // synthetic entries that are not part of the catalog list.
207
+ // Classification costs up to three CSS.supports calls per token, so it runs once per entries change.
210
208
  const groupByTokenName = useMemo(() => {
211
209
  const groups = new Map();
212
210
  for (const entry of entries)
@@ -235,6 +233,10 @@ export function TokenValueField(props) {
235
233
  return Array.from(new Set(suggestions));
236
234
  }, [suggestions]);
237
235
  function handleSuggestionSelect(value) {
236
+ if (value === DETACH_VALUE) {
237
+ handleDelink();
238
+ return;
239
+ }
238
240
  const rawSuggestion = decodeRawSuggestion(value);
239
241
  if (rawSuggestion !== null) {
240
242
  selectedFromPopover.current = true;
@@ -264,8 +266,7 @@ export function TokenValueField(props) {
264
266
  onCommitRaw(formatted);
265
267
  }
266
268
  function handleDelink() {
267
- // A token-backed alpha expression is represented by a chip, but unlinking
268
- // it should preserve the complete authored color expression and its alpha.
269
+ // Unlinking must preserve the complete authored color expression and its alpha.
269
270
  const value = opacity ? committedValue : activeToken?.value || resolvedValue || committedValue;
270
271
  setActiveTokenName(null);
271
272
  setRawValue(value);
@@ -467,9 +468,20 @@ export function TokenValueField(props) {
467
468
  if (activeToken) {
468
469
  const chipValue = chipVariant === "small" ? stripCssUnit(activeToken.value) : activeToken.name;
469
470
  const embedColorSwatch = isColor && chipVariant !== "small";
470
- return (_jsxs("span", { className: cx("token-field", isColor && "token-field--color", embedColorSwatch && "token-field--color-chip", blockedBy !== null && "token-field--blocked", className), "data-test": "token-field", "data-property": property, "aria-disabled": fieldDisabled || undefined, "aria-label": label, children: [renderLeading(), embedColorSwatch ? null : colorControlEl, _jsxs(TokenChip, { size: chipVariant, "data-group": groupByTokenName.get(activeToken.name) ?? tokenGroup(activeToken), children: [_jsx(PopoverListbox, { query: "", value: activeToken.name, open: isTokenPickerOpen, trigger: (_jsxs(TokenChip.Picker, { children: [embedColorSwatch ? colorControlEl : null, _jsx(TokenChip.Label, { title: chipVariant === "small" ? activeToken.name : undefined, children: chipValue })] })), triggerClassName: "token-chip__trigger", triggerDataTest: "token-chip", triggerAriaLabel: `Change ${property} token`, searchable: true, searchPlaceholder: "Search tokens\u2026", searchAriaLabel: "Search tokens", items: [...rawSuggestionItems, ...relevantTokens.map((entry) => tokenSuggestion(entry, groupByTokenName))], onQueryChange: () => undefined, onOpenChange: setTokenPickerOpen, disabled: fieldDisabled, onSelect: (value) => {
471
+ return (_jsxs("span", { className: cx("token-field", isColor && "token-field--color", embedColorSwatch && "token-field--color-chip", blockedBy !== null && "token-field--blocked", className), "data-test": "token-field", "data-property": property, "aria-disabled": fieldDisabled || undefined, "aria-label": label, children: [renderLeading(), embedColorSwatch ? null : colorControlEl, _jsxs(TokenChip, { size: chipVariant, "data-group": groupByTokenName.get(activeToken.name) ?? tokenGroup(activeToken), children: [_jsx(PopoverListbox, { query: "", value: activeToken.name, open: isTokenPickerOpen, trigger: (_jsxs(TokenChip.Picker, { children: [embedColorSwatch ? colorControlEl : null, _jsx(TokenChip.Label, { title: chipVariant === "small" ? activeToken.name : undefined, children: chipValue })] })), triggerClassName: "token-chip__trigger", triggerDataTest: "token-chip", triggerAriaLabel: `Change ${property} token`, searchable: true, searchPlaceholder: "Search tokens\u2026", searchAriaLabel: "Search tokens", searchOnKeyDown: (event) => {
472
+ if (fieldDisabled || !isDetachKey(event))
473
+ return;
474
+ event.preventDefault();
475
+ event.stopPropagation();
476
+ setTokenPickerOpen(false);
477
+ handleDelink();
478
+ }, items: [
479
+ detachItem(),
480
+ ...rawSuggestionItems,
481
+ ...relevantTokens.map((entry) => tokenSuggestion(entry, groupByTokenName)),
482
+ ], onQueryChange: () => undefined, onOpenChange: setTokenPickerOpen, disabled: fieldDisabled, onSelect: (value) => {
471
483
  handleSuggestionSelect(value);
472
- } }), _jsx(TokenChip.Action, { children: _jsx(Tooltip, { stableTrigger: true, children: _jsx(IconButton, { variant: "quiet", size: "compact", style: { borderRadius: "var(--radius-4)" }, label: "Replace with raw value", "data-test": "delink-btn", disabled: fieldDisabled, onClick: handleDelink, children: _jsx(IconLinkOff, { size: chipVariant === "small" ? 12 : 14, stroke: 1.75, "aria-hidden": "true" }) }) }) })] }), opacityControl, _jsx(AtRuleIndicator, { atRules: fieldAtRules }), trailing ? _jsx("span", { className: "token-field__trailing", children: trailing }) : null, _jsx(InlineStyleWarning, { blockedBy: blockedBy, dataTest: inlineWarningDataTest, tooltipDataTest: inlineWarningTooltipDataTest })] }));
484
+ } }), chipVariant === "small" ? null : (_jsx(TokenChip.Action, { children: _jsx(Tooltip, { stableTrigger: true, children: _jsx(IconButton, { variant: "quiet", size: "compact", style: { borderRadius: "var(--radius-4)" }, label: "Detach token", "data-test": "delink-btn", disabled: fieldDisabled, onClick: handleDelink, children: _jsx(IconLinkOff, { size: 14, stroke: 1.75, "aria-hidden": "true" }) }) }) }))] }), opacityControl, _jsx(AtRuleIndicator, { atRules: fieldAtRules }), trailing ? _jsx("span", { className: "token-field__trailing", children: trailing }) : null, _jsx(InlineStyleWarning, { blockedBy: blockedBy, dataTest: inlineWarningDataTest, tooltipDataTest: inlineWarningTooltipDataTest })] }));
473
485
  }
474
486
  const showPopover = isFocused && (filteredTokens.length > 0 || availableSuggestions.length > 0);
475
487
  return (_jsxs("span", { className: cx("token-field", "token-field--raw", isColor && "token-field--color", blockedBy !== null && "token-field--blocked", className), "data-test": "token-field", "data-property": property, "aria-disabled": fieldDisabled || undefined, "aria-label": label, children: [renderLeading(), colorControlEl, _jsx(PopoverListbox, { query: rawValue, value: null, open: showPopover, placeholder: property, inputRef: inputRef, inputAppearance: "embedded", inputDataTest: inputDataTest, inputOnFocus: () => {
@@ -494,7 +506,7 @@ function arrowDirection(key) {
494
506
  return null;
495
507
  }
496
508
  export function TokenField(props) {
497
- const { property, semanticSlot, tokenRow, selection, initialValue, displayValue, domElement: el, editTarget, entries, suggestions, inputDataTest, onAfterEdit, editMetadata, leading, trailing, className, label, chipVariant, formatRawValue: formatRawValueProp, disabled = false, mixed = false, attributionTokens, inlineWarningDataTest, inlineWarningTooltipDataTest, } = props;
509
+ const { property, semanticSlot, tokenRow, selection, initialValue, displayValue, domElement: el, editTarget, entries, suggestions, inputDataTest, onAfterEdit, editMetadata, leading, trailing, className, label, chipVariant, formatRawValue: formatRawValueProp, disabled = false, mixed = false, attributionTokens, inlineWarningDataTest, inlineWarningTooltipDataTest, interceptRaw, } = props;
498
510
  const selectedProperty = selection && selection.elements.length > 1
499
511
  ? selection.getProperty(property)
500
512
  : null;
@@ -510,25 +522,18 @@ export function TokenField(props) {
510
522
  && tokenRow.opacity.tokenName !== tokenRow.tokenName
511
523
  ? tokenRow.tokenName
512
524
  : null;
513
- const expression = Boolean(tokenRow && (tokenRow.capability === "raw" || tokenRow.capability === "composite"
514
- || tokenRow.modifiers?.some((modifier) => modifier.kind === "alpha")
515
- || tokenRow.color?.isExpression));
525
+ const expression = isExpressionRow(tokenRow ?? null);
516
526
  const authored = tokenRow?.authored ?? tokenRow?.declaredValue ?? "";
517
- const isCalcAuthored = /\bcalc\s*\(/i.test(authored);
518
- const selectedTokenName = selectedProperty?.token.kind === "common"
519
- ? selectedProperty.token.name
520
- : null;
521
- const activeTokenName = effectiveMixed
522
- ? null
523
- : tokenBackedOpacityName
524
- ?? (expression || isCalcAuthored
525
- ? null
526
- : selectedProperty ? selectedTokenName : tokenRow?.tokenName ?? null);
527
+ const isCalcAuthored = isCalcExpression(authored);
528
+ const activeTokenName = deriveActiveTokenName({
529
+ row: tokenRow ?? null,
530
+ selectedProperty,
531
+ mixed: effectiveMixed,
532
+ authored,
533
+ override: tokenBackedOpacityName,
534
+ });
527
535
  const fallbackValue = initialValue ?? structuredBorderValue(property, tokenRow) ?? computedRaw(el, property);
528
- // When a calc() was simplified to a numeric value we suppress the token
529
- // chip so the UI shows the resolved pixel value, not the internal
530
- // multiplier token (e.g. --spacing). The authored expression stays
531
- // accessible via the row for diagnostics.
536
+ // Suppress the chip for calc()-derived values so the UI shows the resolved pixel value, not the internal multiplier token.
532
537
  const authoredOrComputed = tokenBackedOpacityName
533
538
  ? authored
534
539
  : expression || (!activeTokenName && !isCalcAuthored)
@@ -544,8 +549,7 @@ export function TokenField(props) {
544
549
  : null;
545
550
  let resolvedValue = tokenRow?.propertyOpacity?.value ?? tokenRow?.resolvedValue ?? committedValue;
546
551
  if (property === "background-color") {
547
- // Background rows can contain the complete computed shorthand. Extract
548
- // its color before passing it to the color control, preserving alpha.
552
+ // Background rows can carry the full computed shorthand; the color control needs its color part.
549
553
  const style = el.ownerDocument.createElement("span").style;
550
554
  style.background = resolvedValue;
551
555
  resolvedValue = style.backgroundColor || resolvedValue;
@@ -559,6 +563,8 @@ export function TokenField(props) {
559
563
  return formatRawValueProp(value);
560
564
  return completeCssValue(value.trim(), valuePolicyFor(property));
561
565
  }, onCommitRaw: (value) => {
566
+ if (interceptRaw?.(value))
567
+ return;
562
568
  if (setStyle(editTarget ?? el, property, value, effectiveMetadata))
563
569
  onAfterEdit?.();
564
570
  }, onCommitOpacity: (value) => {
@@ -606,6 +612,21 @@ function tokenSuggestion(entry, groups) {
606
612
  };
607
613
  }
608
614
  const RAW_SUGGESTION_PREFIX = "\u0000raw:";
615
+ const DETACH_VALUE = "\u0000detach";
616
+ function detachItem() {
617
+ return {
618
+ value: DETACH_VALUE,
619
+ label: "Detach token",
620
+ "data-test": "detach-token-item",
621
+ leading: _jsx(IconLinkOff, { size: 14, stroke: 1.75, "aria-hidden": "true" }),
622
+ trailing: _jsx("kbd", { className: "token-shortcut", children: isMacPlatform() ? "⌫" : "Del" }),
623
+ };
624
+ }
625
+ function isDetachKey(event) {
626
+ return (event.key === "Backspace" || event.key === "Delete")
627
+ && event.currentTarget.value === ""
628
+ && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey;
629
+ }
609
630
  function rawSuggestion(value) {
610
631
  return {
611
632
  value: `${RAW_SUGGESTION_PREFIX}${value}`,
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useState } from "react";
3
- import { isTokenChange, useChanges } from "../changes/changesLog.js";
3
+ import { isTokenChange } from "../changes/types.js";
4
+ import { useChanges } from "../drafts/store.js";
4
5
  import { TextInput } from "../ui/TextInput.js";
5
6
  import { ControlSurface } from "../ui/ControlSurface.js";
6
7
  import { Disclosure } from "../ui/Disclosure.js";
@@ -25,16 +25,7 @@ export interface TokenRuntime {
25
25
  layerOrder(name: string): number | undefined;
26
26
  }
27
27
  export declare function isTokenContextActive(context: TokenContext, runtime: TokenRuntime): boolean;
28
- /**
29
- * Strips host-declared structural scoping markers from a selector so
30
- * human-facing labels present only author vocabulary (ADR-0011). The marker
31
- * grammar — Astro's `[data-astro-cid-<hash>]` attribute selectors or
32
- * `.astro-<hash>` classes, a future Vue/Svelte equivalent — is declared by
33
- * the host Adapter through the runtime configuration; the raw selector is
34
- * retained in `context.selector` so resolution keeps matching the rendered
35
- * DOM. A `:where(...)` wrapper left empty by the removals disappears
36
- * entirely.
37
- */
28
+ /** Strips host-declared scoping markers for labels; `context.selector` keeps the raw selector for matching. */
38
29
  export declare function humanizeSelector(selector: string, scopingPattern: RegExp | null): string;
39
30
  export declare function contextLabel(context: TokenContext): string;
40
31
  export declare function sourceParts(source: string): {
@@ -46,6 +37,7 @@ export declare function selectorForContext(context: TokenContext): string;
46
37
  export declare function classifyCatalogToken(name: string, value?: string): TokenCatalogGroup;
47
38
  export declare function buildTokenCatalogRows(catalog: TokenDefinition[], root?: HTMLElement, suppliedRuntime?: TokenRuntime): TokenCatalogRow[];
48
39
  export declare function filterTokenRows(rows: readonly TokenCatalogRow[], query: string): TokenCatalogRow[];
40
+ /** An alias is a whole-string reference with no fallback; a fallback changes the value. */
49
41
  export declare function aliasName(value: string): string | null;
50
42
  export declare function createsAliasCycle(tokenName: string, candidateName: string, authoredValues: ReadonlyMap<string, string>): boolean;
51
43
  export declare function compatibleTokenNames(row: TokenCatalogRow, rows: readonly TokenCatalogRow[]): Set<string>;
@@ -1,6 +1,7 @@
1
1
  import { getScopingSelectorPattern } from "../runtime/runtimeConfig.js";
2
2
  import { getElementComputedStyle, getElementWindow } from "../runtime/domRealm.js";
3
3
  import { selectTokens } from "../../css/value-semantics/index.js";
4
+ import { parseSingleVarReference } from "../../css/value-semantics/cssSyntax.js";
4
5
  import { cascadeLayerOrder } from "./resolution/cssomCollector.js";
5
6
  import { compareAuthorCascade } from "./resolution/cascade.js";
6
7
  import { computeSpecificityCore } from "./resolution/selectorSemantics.js";
@@ -83,16 +84,7 @@ function pickWinningDeclaration(declarations, runtime) {
83
84
  });
84
85
  return winner;
85
86
  }
86
- /**
87
- * Strips host-declared structural scoping markers from a selector so
88
- * human-facing labels present only author vocabulary (ADR-0011). The marker
89
- * grammar — Astro's `[data-astro-cid-<hash>]` attribute selectors or
90
- * `.astro-<hash>` classes, a future Vue/Svelte equivalent — is declared by
91
- * the host Adapter through the runtime configuration; the raw selector is
92
- * retained in `context.selector` so resolution keeps matching the rendered
93
- * DOM. A `:where(...)` wrapper left empty by the removals disappears
94
- * entirely.
95
- */
87
+ /** Strips host-declared scoping markers for labels; `context.selector` keeps the raw selector for matching. */
96
88
  export function humanizeSelector(selector, scopingPattern) {
97
89
  const stripped = scopingPattern === null ? selector : selector.replace(scopingPattern, "");
98
90
  return stripped
@@ -160,9 +152,10 @@ export function filterTokenRows(rows, query) {
160
152
  || row.definition.cssName.toLowerCase().includes(needle)
161
153
  || row.definition.declarations.some((declaration) => declaration.value.toLowerCase().includes(needle)));
162
154
  }
163
- const EXACT_ALIAS = /^var\(\s*(--[\w-]+)\s*\)$/;
155
+ /** An alias is a whole-string reference with no fallback; a fallback changes the value. */
164
156
  export function aliasName(value) {
165
- return value.trim().match(EXACT_ALIAS)?.[1] ?? null;
157
+ const reference = parseSingleVarReference(value);
158
+ return reference && reference.fallback === undefined ? reference.name : null;
166
159
  }
167
160
  export function createsAliasCycle(tokenName, candidateName, authoredValues) {
168
161
  const visited = new Set([tokenName]);
@@ -1,4 +1,3 @@
1
- /** Keeps mouse drags relative, including when the handle is inside a shadow root. */
2
1
  export declare function startDragPointerLock(handle: HTMLElement, point: {
3
2
  x: number;
4
3
  y: number;
@@ -1,5 +1,4 @@
1
1
  import { showLockedDragCursor } from "../ui/dragCursor.js";
2
- /** Keeps mouse drags relative, including when the handle is inside a shadow root. */
3
2
  export function startDragPointerLock(handle, point, onMove, onEnd) {
4
3
  const doc = handle.ownerDocument;
5
4
  const root = handle.getRootNode();
@@ -45,7 +44,7 @@ export function startDragPointerLock(handle, point, onMove, onEnd) {
45
44
  doc.addEventListener("pointerlockchange", onLockChange);
46
45
  doc.addEventListener("pointerlockerror", onLockError);
47
46
  try {
48
- // Older implementations return void. Rejections retain pointer-capture dragging.
47
+ // Older implementations return void; a rejection still leaves pointer-capture dragging.
49
48
  const request = handle.requestPointerLock();
50
49
  if (request)
51
50
  void request.catch(onLockError);
@@ -62,7 +61,7 @@ export function startDragPointerLock(handle, point, onMove, onEnd) {
62
61
  doc.removeEventListener("mouseup", onMouseUp);
63
62
  if (isLocked())
64
63
  doc.exitPointerLock();
65
- // A request can finish after mouse-up or unmount. Release that late lock too.
64
+ // A pending request can acquire the lock after mouse-up; release that late lock too.
66
65
  if (!pending)
67
66
  removeLockListeners();
68
67
  },
@@ -1,13 +1,13 @@
1
1
  import type { TokenEntry } from "../../css/model/index.js";
2
- import type { ElementChangeRecord } from "../changes/changesLog.js";
2
+ import type { ElementChangeRecord } from "../changes/types.js";
3
3
  import { type EditTarget } from "../selection/editTarget.js";
4
- export type { ChangeRecord } from "../changes/changesLog.js";
5
- export { getPendingRules, getChangesList as getChangeRecords, clearActiveDraft as resetPendingRules } from "../changes/changesLog.js";
4
+ export type { ChangeRecord } from "../changes/types.js";
5
+ export { getPendingRules, getChangesList as getChangeRecords, clearActiveDraft as resetPendingRules } from "../drafts/store.js";
6
6
  export interface StyleEditMetadata {
7
7
  sourceProperty?: string;
8
8
  sourceAuthoredValue?: string;
9
9
  }
10
- /** Returns whether a style write can address every element in the target safely. */
10
+ /** True only when a write can address every element in the target. */
11
11
  export declare function canEditStyles(target: EditTarget): boolean;
12
12
  export declare function buildSelector(cid: string, src: string): string | null;
13
13
  export declare function swapToken(target: EditTarget, property: string, newToken: TokenEntry, oldToken: TokenEntry | null, metadata?: StyleEditMetadata): ElementChangeRecord | null;
@@ -1,9 +1,9 @@
1
1
  import { parseDataSrc } from "../selection/resolveSelection.js";
2
- import { appendChanges, } from "../changes/changesLog.js";
2
+ import { appendChanges } from "../drafts/store.js";
3
3
  import { canPlanBatchEditScopes, planBatchEditScopes, selectorForElement, sourceSiteSelector } from "../selection/editScope.js";
4
4
  import { getActiveStyleState, selectorForInteractionState } from "../shell/styleState.js";
5
5
  import { getStateStyleValue } from "../shell/stateValue.js";
6
- import { boundRuntimeEvidence, isRuntimeCreatedElement, isRuntimeGeneratedSource, normalizeRuntimeTag, normalizeRuntimeText, } from "../runtime/staticHtmlRuntimeIdentity.js";
6
+ import { boundRuntimeEvidence, isRuntimeCreatedElement, isRuntimeGeneratedSource, normalizeRuntimeTag, normalizeRuntimeText, runtimeDomPath, } from "../runtime/staticHtmlRuntimeIdentity.js";
7
7
  import { targetElements } from "../selection/editTarget.js";
8
8
  import { changeKey } from "../changes/model.js";
9
9
  function boundedRenderedText(el) {
@@ -18,6 +18,8 @@ function sourceFields(el) {
18
18
  text: boundedRenderedText(el),
19
19
  props: boundRuntimeEvidence(el.getAttribute("data-cprops")),
20
20
  ariaLabel: boundRuntimeEvidence(el.getAttribute("aria-label")),
21
+ domPath: runtimeDomPath(el),
22
+ elementId: boundRuntimeEvidence(el.id || null),
21
23
  });
22
24
  if (isRuntimeCreatedElement(el) || isRuntimeGeneratedSource(src)) {
23
25
  return {
@@ -28,9 +30,7 @@ function sourceFields(el) {
28
30
  };
29
31
  }
30
32
  if (!parsed) {
31
- // Authored markup whose source annotation is absent or unusable — for
32
- // example Astro dev-annotation degraded mode. Prompts must say the
33
- // location is unknown instead of rendering a fabricated `file:0`.
33
+ // Unannotated authored markup (e.g. Astro degraded mode): prompts must report an unknown location, never a fabricated `file:0`.
34
34
  return {
35
35
  file: "",
36
36
  line: 0,
@@ -45,11 +45,15 @@ function sourceFields(el) {
45
45
  sourceEvidence: {
46
46
  tagName: normalizeRuntimeTag(el.tagName),
47
47
  props: boundRuntimeEvidence(el.getAttribute("data-cprops")),
48
+ text: boundedRenderedText(el),
49
+ ariaLabel: boundRuntimeEvidence(el.getAttribute("aria-label")),
50
+ domPath: runtimeDomPath(el),
51
+ elementId: boundRuntimeEvidence(el.id || null),
48
52
  },
49
53
  };
50
54
  }
51
- export { getPendingRules, getChangesList as getChangeRecords, clearActiveDraft as resetPendingRules } from "../changes/changesLog.js";
52
- /** Returns whether a style write can address every element in the target safely. */
55
+ export { getPendingRules, getChangesList as getChangeRecords, clearActiveDraft as resetPendingRules } from "../drafts/store.js";
56
+ /** True only when a write can address every element in the target. */
53
57
  export function canEditStyles(target) {
54
58
  return canPlanBatchEditScopes(targetElements(target));
55
59
  }
@@ -6,9 +6,5 @@ export interface AuthorCascadePriority {
6
6
  specificity: number;
7
7
  sourceOrder: number;
8
8
  }
9
- /**
10
- * Compares declarations from the author origin. Positive means `a` wins.
11
- * Normal declarations prefer unlayered rules and later layers; important
12
- * declarations reverse both relationships as required by the CSS cascade.
13
- */
9
+ /** Positive means `a` wins; important declarations reverse layer precedence per the CSS cascade. */
14
10
  export declare function compareAuthorCascade(a: AuthorCascadePriority, b: AuthorCascadePriority): number;
@@ -1,8 +1,4 @@
1
- /**
2
- * Compares declarations from the author origin. Positive means `a` wins.
3
- * Normal declarations prefer unlayered rules and later layers; important
4
- * declarations reverse both relationships as required by the CSS cascade.
5
- */
1
+ /** Positive means `a` wins; important declarations reverse layer precedence per the CSS cascade. */
6
2
  export function compareAuthorCascade(a, b) {
7
3
  const aImportant = Boolean(a.important);
8
4
  const bImportant = Boolean(b.important);
@@ -0,0 +1,11 @@
1
+ export interface ContainerQueryPair {
2
+ element: HTMLElement;
3
+ /** Outer-to-inner conditions, including container names. */
4
+ conditions: readonly string[];
5
+ }
6
+ export interface ContainerQueryEvaluator {
7
+ prefetch(pairs: readonly ContainerQueryPair[]): void;
8
+ matches(element: HTMLElement, conditions: readonly string[]): boolean;
9
+ }
10
+ /** Each pair gets its own probe property so inherited values cannot answer another element's query; nothing survives a batch. */
11
+ export declare function createContainerQueryEvaluator(doc: Document): ContainerQueryEvaluator;
@@ -0,0 +1,82 @@
1
+ import { countInspectionWork } from "../../inspection/performanceDiagnostics.js";
2
+ import { adoptStylesheet, allowsStyleElements, releaseAdoptedStylesheet } from "../../runtime/ownedStylesheets.js";
3
+ const PROBE_SHEET_KEY = "nudge-ui-container-probe";
4
+ let nextProbeId = 0;
5
+ /** Each pair gets its own probe property so inherited values cannot answer another element's query; nothing survives a batch. */
6
+ export function createContainerQueryEvaluator(doc) {
7
+ const results = new WeakMap();
8
+ const key = (conditions) => JSON.stringify(conditions);
9
+ function prefetch(pairs) {
10
+ const pending = [];
11
+ for (const pair of pairs) {
12
+ if (pair.element.ownerDocument !== doc)
13
+ throw new TypeError("Container query target belongs to another document.");
14
+ if (pair.conditions.length === 0)
15
+ continue;
16
+ let values = results.get(pair.element);
17
+ if (!values) {
18
+ values = new Map();
19
+ results.set(pair.element, values);
20
+ }
21
+ const conditionKey = key(pair.conditions);
22
+ if (values.has(conditionKey))
23
+ continue;
24
+ // Reserve the pair before collecting the rest of this batch.
25
+ values.set(conditionKey, false);
26
+ const id = ++nextProbeId;
27
+ pending.push({ ...pair, key: conditionKey, marker: `data-container-probe-${id}`, property: `--nudge-container-probe-${id}` });
28
+ }
29
+ if (!doc.head || pending.length === 0)
30
+ return;
31
+ const cssText = pending.map(({ conditions, marker, property }) => {
32
+ let rule = `[${marker}] { ${property}: 1 !important; }`;
33
+ for (let index = conditions.length - 1; index >= 0; index--) {
34
+ rule = `@container ${conditions[index]} { ${rule} }`;
35
+ }
36
+ return rule;
37
+ }).join("\n");
38
+ const sheet = allowsStyleElements(doc) ? doc.createElement("style") : null;
39
+ countInspectionWork(doc, "probePairs", pending.length);
40
+ countInspectionWork(doc, "probeBatches");
41
+ try {
42
+ for (const pair of pending)
43
+ pair.element.setAttribute(pair.marker, "");
44
+ if (sheet) {
45
+ sheet.setAttribute("data-nudge-ui", "container-probe");
46
+ sheet.textContent = cssText;
47
+ doc.head.append(sheet);
48
+ }
49
+ else {
50
+ adoptStylesheet(doc, PROBE_SHEET_KEY, cssText);
51
+ }
52
+ const styles = new Map();
53
+ for (const pair of pending) {
54
+ let style = styles.get(pair.element);
55
+ if (!style) {
56
+ style = doc.defaultView?.getComputedStyle(pair.element);
57
+ if (style)
58
+ styles.set(pair.element, style);
59
+ }
60
+ results.get(pair.element).set(pair.key, style?.getPropertyValue(pair.property).trim() === "1");
61
+ }
62
+ }
63
+ finally {
64
+ if (sheet)
65
+ sheet.remove();
66
+ else
67
+ releaseAdoptedStylesheet(doc, PROBE_SHEET_KEY);
68
+ for (const pair of pending)
69
+ pair.element.removeAttribute(pair.marker);
70
+ }
71
+ }
72
+ return {
73
+ prefetch,
74
+ matches(element, conditions) {
75
+ countInspectionWork(doc, "containerChecks");
76
+ if (conditions.length === 0)
77
+ return true;
78
+ prefetch([{ element, conditions }]);
79
+ return results.get(element)?.get(key(conditions)) ?? false;
80
+ },
81
+ };
82
+ }
@@ -3,32 +3,17 @@ export interface DocumentRevisions {
3
3
  element: number;
4
4
  stylesheet: number;
5
5
  }
6
- /**
7
- * Subscribes to cascade revisions for one document. This is the narrow
8
- * document-scoped seam used by the browser inspection Module.
9
- */
10
6
  export declare function subscribeDocumentRevision(doc: Document, cb: (revisions: Readonly<DocumentRevisions>) => void): () => void;
11
- /**
12
- * Elements whose attribute changes can affect a cached cascade outcome. The
13
- * observer only counts attribute mutations against registered elements so
14
- * unrelated host churn (React commits, hover states, animations) cannot bump
15
- * the element revision. Registration is idempotent.
16
- */
7
+ /** Only attribute mutations on registered elements bump the element revision; unrelated host churn is ignored. */
17
8
  export declare function registerResolutionElement(el: Element): void;
18
9
  export declare function registerResolutionLineage(element: HTMLElement): void;
19
- /** Releases the observer, listener, and cached state owned by one document. */
20
10
  export declare function disposeDocumentResolution(doc: Document): void;
21
11
  export declare function retainDocumentResolution(doc: Document): () => void;
22
12
  export declare function documentRevisions(doc: Document): DocumentRevisions;
23
- /** Invalidates CSSOM-derived snapshots after programmatic stylesheet edits. */
24
13
  export declare function invalidateStyleResolutionCache(doc?: Document): void;
25
- /**
26
- * Reads the declarations the browser accepted for a style rule. This is the
27
- * semantic source for authored values; it intentionally does not inspect the
28
- * stylesheet element's original text. CSSOM may expose a shorthand as empty
29
- * longhand entries through indexed enumeration, so prefer its serialized
30
- * declaration block and use enumeration as a compatibility fallback.
31
- */
14
+ /** Inspector-only invalidation; page sheets are re-read only if their objects changed. */
15
+ export declare function invalidateOwnedStyleResolution(doc?: Document): void;
16
+ /** Prefers the serialized declaration block; enumeration is a fallback because a shorthand can enumerate empty longhands. */
32
17
  export declare function declarationsFromCssom(style: CSSStyleDeclaration): StyleDeclaration[];
33
18
  export declare function collectRules(doc: Document): {
34
19
  revision: number;