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,4 +1,4 @@
1
- import type { ChangeRecord } from "../changes/changesLog.js";
1
+ import { type ChangeRecord } from "../changes/types.js";
2
2
  export type StaleChangeStatus = "unverified" | "verified" | "stale" | "token-drift";
3
3
  export interface StaleChangeInfo {
4
4
  index: number;
@@ -1,13 +1,11 @@
1
- import { draftIdForCard } from "../drafts/store.js";
2
- import { isPreviewableChange, isTokenChange, } from "../changes/changesLog.js";
1
+ import { draftIdForCard, getActiveDraftChanges } from "../drafts/store.js";
2
+ import { isPreviewableChange, isTokenChange, } from "../changes/types.js";
3
3
  import { changeKey } from "../changes/model.js";
4
4
  import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, notifyPreviewDiagnostics, publishPreviewDiagnostic, } from "../changes/previewDiagnostics.js";
5
- import { getActiveDraftChanges } from "../changes/draftChanges.js";
6
5
  import { getCanvasPreviewDocument, getRegisteredFrames } from "./projection.js";
7
- import { findCanvasFrameBySource, PROJECT_ID, WORKSPACE_ID } from "./projection.js";
6
+ import { subscribeCanvasRendererMessages } from "./rendererMessageRouter.js";
8
7
  import { getCanvasCards } from "./canvasStore.js";
9
8
  import { getCanvasMode } from "./viewStore.js";
10
- import { isRendererMessageFor } from "./frameProtocol.js";
11
9
  import { getNudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
12
10
  const VERIFICATION_TIMEOUT_MS = 5000;
13
11
  const STALE_CHECK_DEBOUNCE_MS = 100;
@@ -15,6 +13,7 @@ let verificationTimer = null;
15
13
  let debounceTimer = null;
16
14
  let pendingChanges = null;
17
15
  let pendingAttempts = new Map();
16
+ let stopFrameReady = null;
18
17
  function checkSelectorInDocument(doc, selector) {
19
18
  try {
20
19
  return doc.querySelectorAll(selector).length > 0;
@@ -149,10 +148,7 @@ function applyStaleResults(changes, attempts) {
149
148
  continue;
150
149
  }
151
150
  const routes = evidence.get(i);
152
- // A document that does not contain the target says nothing about
153
- // staleness. Publish target-missing only when the change matches nowhere;
154
- // a Canvas-only match is verified, not a host conflict. When nowhere,
155
- // every live document reports the same miss.
151
+ // Publish target-missing only when no live document matches; a Canvas-only match is verified, not a host conflict.
156
152
  if (!routes || routes.length === 0) {
157
153
  for (const attempt of attempts.values()) {
158
154
  publishPreviewDiagnostic(attempt, changeKey(change), buildStaleResult(change.selector, getRequestedValue(change)));
@@ -189,22 +185,10 @@ export function startStaleDetection(changes) {
189
185
  verificationTimer = null;
190
186
  notifyPreviewDiagnostics();
191
187
  }, VERIFICATION_TIMEOUT_MS);
192
- window.addEventListener("message", handleFrameReady);
193
- }
194
- function handleFrameReady(event) {
195
- if (event.origin !== window.location.origin)
196
- return;
197
- const msg = event.data;
198
- const frame = findCanvasFrameBySource(event.source);
199
- if (!frame || !isRendererMessageFor(msg, {
200
- projectId: PROJECT_ID,
201
- workspaceId: WORKSPACE_ID,
202
- cardId: frame.cardId,
203
- }) || msg.type !== "frame-ready")
204
- return;
205
- if (!pendingChanges)
206
- return;
207
- scheduleStaleCheck();
188
+ stopFrameReady ??= subscribeCanvasRendererMessages(({ message }) => {
189
+ if (message.type === "frame-ready" && pendingChanges)
190
+ scheduleStaleCheck();
191
+ });
208
192
  }
209
193
  export function cancelStaleDetection() {
210
194
  if (verificationTimer) {
@@ -217,7 +201,8 @@ export function cancelStaleDetection() {
217
201
  }
218
202
  pendingChanges = null;
219
203
  pendingAttempts = new Map();
220
- window.removeEventListener("message", handleFrameReady);
204
+ stopFrameReady?.();
205
+ stopFrameReady = null;
221
206
  notifyPreviewDiagnostics();
222
207
  }
223
208
  export function isVerificationPending() {
@@ -1,7 +1,4 @@
1
- /**
2
- * Keep canvas card controls usable while the board is zoomed out without
3
- * letting them grow without bound relative to the card.
4
- */
1
+ /** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
5
2
  export declare const CANVAS_TOOLBAR_MAX_SCALE = 2;
6
3
  export declare const CANVAS_TOOLBAR_SCALE_CAP_ZOOM: number;
7
4
  export declare function getCanvasToolbarScale(zoom: number): number;
@@ -1,7 +1,4 @@
1
- /**
2
- * Keep canvas card controls usable while the board is zoomed out without
3
- * letting them grow without bound relative to the card.
4
- */
1
+ /** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
5
2
  export const CANVAS_TOOLBAR_MAX_SCALE = 2;
6
3
  export const CANVAS_TOOLBAR_SCALE_CAP_ZOOM = 1 / CANVAS_TOOLBAR_MAX_SCALE;
7
4
  export function getCanvasToolbarScale(zoom) {
@@ -1,5 +1,4 @@
1
1
  import { type RefObject } from "react";
2
2
  import { type CanvasCard } from "./canvasStore.js";
3
3
  import { type CanvasCamera, type CanvasPresentation } from "./viewStore.js";
4
- /** Animates frame creation and layout changes without delaying direct manipulation. */
5
4
  export declare function useCanvasLayoutAnimation(boardRef: RefObject<HTMLDivElement | null>, cards: readonly CanvasCard[], camera: CanvasCamera, presentation: CanvasPresentation): void;
@@ -4,7 +4,6 @@ import {} from "./canvasStore.js";
4
4
  import { setCanvasLayoutTransitioning } from "./viewStore.js";
5
5
  const SLIDE_OPTIONS = { duration: 300, easing: "ease-out" };
6
6
  const CAMERA_OPTIONS = { duration: 150, easing: "ease-out" };
7
- /** Animates frame creation and layout changes without delaying direct manipulation. */
8
7
  export function useCanvasLayoutAnimation(boardRef, cards, camera, presentation) {
9
8
  const previous = useRef({ cards, camera, presentation });
10
9
  const animations = useRef([]);
@@ -2,7 +2,7 @@ import { useSyncExternalStore } from "react";
2
2
  export const MIN_CAMERA_ZOOM = 0.25;
3
3
  export const MAX_CAMERA_ZOOM = 3;
4
4
  export const DEFAULT_CAMERA = { x: 0, y: 0, zoom: 1 };
5
- /** How the canvas is viewed. Frames, groups, and selection live in the canvas store. */
5
+ /** Frames, groups, and selection live in the canvas store. */
6
6
  let mode = "inspect";
7
7
  let presentation = "focus";
8
8
  let presentationTransitioning = false;
@@ -1,4 +1,4 @@
1
- /** Converts wheel units to pixel distances for consistent canvas panning. */
1
+ /** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
2
2
  export declare function wheelPanDelta(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode" | "shiftKey">, viewport: {
3
3
  width: number;
4
4
  height: number;
@@ -1,4 +1,4 @@
1
- /** Converts wheel units to pixel distances for consistent canvas panning. */
1
+ /** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
2
2
  export function wheelPanDelta(event, viewport) {
3
3
  const xUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.width : 1;
4
4
  const yUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.height : 1;
@@ -10,11 +10,7 @@ export declare function acquireLease(): boolean;
10
10
  export declare function requestTakeover(): boolean;
11
11
  /** Enable lease checks for state-changing controller actions in this document. */
12
12
  export declare function enableWriteGuard(): void;
13
- /**
14
- * Unit-level modules are also used without the browser controller bootstrap.
15
- * Once the controller enables the guard, only the current lease owner may
16
- * mutate or persist its canonical workspace state.
17
- */
13
+ /** Off by default so unit-level modules work without the controller bootstrap. */
18
14
  export declare function canWriteWorkspace(): boolean;
19
15
  export declare function releaseLease(): void;
20
16
  export declare function hasWriteLease(): boolean;
@@ -49,7 +49,6 @@ function deleteLease() {
49
49
  localStorage.removeItem(leaseKey());
50
50
  }
51
51
  catch {
52
- /* ignore */
53
52
  }
54
53
  }
55
54
  export function isLeaseExpired(lease, now = Date.now()) {
@@ -67,7 +66,6 @@ function notifyOwnershipListeners() {
67
66
  listener(snapshot);
68
67
  }
69
68
  catch {
70
- /* ignore */
71
69
  }
72
70
  }
73
71
  }
@@ -149,11 +147,7 @@ export function requestTakeover() {
149
147
  export function enableWriteGuard() {
150
148
  writeGuardEnabled = true;
151
149
  }
152
- /**
153
- * Unit-level modules are also used without the browser controller bootstrap.
154
- * Once the controller enables the guard, only the current lease owner may
155
- * mutate or persist its canonical workspace state.
156
- */
150
+ /** Off by default so unit-level modules work without the controller bootstrap. */
157
151
  export function canWriteWorkspace() {
158
152
  return !writeGuardEnabled || hasWriteLease();
159
153
  }
@@ -34,6 +34,7 @@ export interface SerializableElementChange {
34
34
  runtimeEvidence?: NonNullable<ElementChangeRecord["runtimeEvidence"]>;
35
35
  sourceEvidence?: NonNullable<ElementChangeRecord["sourceEvidence"]>;
36
36
  scope?: EditScope;
37
+ sourceInstanceCount?: number;
37
38
  instanceOverride?: RenderedInstanceOverride;
38
39
  state?: NonNullable<ElementChangeRecord["state"]>;
39
40
  }
@@ -16,7 +16,7 @@ export function isSerializableElementChangeValue(value) {
16
16
  || !hasOnlyKeys(value, [
17
17
  "kind", "cid", "file", "line", "column", "selector", "property",
18
18
  "sourceProperty", "sourceAuthoredValue", "oldToken", "newToken", "rawValue",
19
- "oldRawValue", "source", "runtimeEvidence", "sourceEvidence", "scope", "instanceOverride", "state",
19
+ "oldRawValue", "source", "runtimeEvidence", "sourceEvidence", "scope", "sourceInstanceCount", "instanceOverride", "state",
20
20
  ])
21
21
  || (value.kind !== undefined && value.kind !== "element")
22
22
  || typeof value.cid !== "string"
@@ -35,6 +35,8 @@ export function isSerializableElementChangeValue(value) {
35
35
  || (value.runtimeEvidence !== undefined && !isRuntimeElementEvidenceValue(value.runtimeEvidence))
36
36
  || (value.sourceEvidence !== undefined && !isSourceElementEvidenceValue(value.sourceEvidence))
37
37
  || !isEditScopeValue(value.scope)
38
+ || (value.sourceInstanceCount !== undefined
39
+ && (!isNonNegativeSafeInteger(value.sourceInstanceCount) || value.sourceInstanceCount < 1))
38
40
  || (value.instanceOverride !== undefined && value.scope !== "rendered-instance")
39
41
  || (value.scope === "rendered-instance" && !isRenderedInstanceOverride(value.instanceOverride))
40
42
  || (value.state !== undefined && !isElementStateValue(value.state))) {
@@ -118,6 +120,7 @@ export function serializeElementChange(change) {
118
120
  runtimeEvidence: change.runtimeEvidence ? { ...change.runtimeEvidence } : undefined,
119
121
  sourceEvidence: change.sourceEvidence ? { ...change.sourceEvidence } : undefined,
120
122
  scope: change.scope === "rendered-instance" ? "rendered-instance" : "source-site",
123
+ ...(change.sourceInstanceCount !== undefined ? { sourceInstanceCount: change.sourceInstanceCount } : {}),
121
124
  instanceOverride: change.scope === "rendered-instance" ? change.instanceOverride : undefined,
122
125
  state: change.state,
123
126
  };
@@ -163,6 +166,9 @@ export function serializeTextContentChange(change) {
163
166
  props: change.target.props,
164
167
  ariaLabel: change.target.ariaLabel,
165
168
  beforeText: change.target.beforeText,
169
+ ...(change.target.tagName !== undefined ? { tagName: change.target.tagName } : {}),
170
+ ...(change.target.elementId !== undefined ? { elementId: change.target.elementId } : {}),
171
+ ...(change.target.domPath !== undefined ? { domPath: change.target.domPath } : {}),
166
172
  ...(change.target.textNodePath?.length
167
173
  ? { textNodePath: [...change.target.textNodePath] }
168
174
  : {}),
@@ -204,6 +210,7 @@ export function deserializeElementChange(serialized) {
204
210
  runtimeEvidence: serialized.runtimeEvidence ? { ...serialized.runtimeEvidence } : undefined,
205
211
  sourceEvidence: serialized.sourceEvidence ? { ...serialized.sourceEvidence } : undefined,
206
212
  scope: serialized.scope ?? "source-site",
213
+ ...(serialized.sourceInstanceCount !== undefined ? { sourceInstanceCount: serialized.sourceInstanceCount } : {}),
207
214
  instanceOverride: serialized.scope === "rendered-instance" ? serialized.instanceOverride : undefined,
208
215
  state: serialized.state,
209
216
  };
@@ -248,6 +255,9 @@ export function deserializeTextContentChange(serialized) {
248
255
  props: serialized.target.props,
249
256
  ariaLabel: serialized.target.ariaLabel,
250
257
  beforeText: serialized.target.beforeText,
258
+ ...(serialized.target.tagName !== undefined ? { tagName: serialized.target.tagName } : {}),
259
+ ...(serialized.target.elementId !== undefined ? { elementId: serialized.target.elementId } : {}),
260
+ ...(serialized.target.domPath !== undefined ? { domPath: serialized.target.domPath } : {}),
251
261
  ...(serialized.target.textNodePath?.length
252
262
  ? { textNodePath: [...serialized.target.textNodePath] }
253
263
  : {}),
@@ -327,18 +337,24 @@ function isComponentInvocationEvidenceValue(value) {
327
337
  }
328
338
  function isRuntimeElementEvidenceValue(value) {
329
339
  return isRecord(value)
330
- && hasOnlyKeys(value, ["reason", "tagName", "text", "props", "ariaLabel"])
340
+ && hasOnlyKeys(value, ["reason", "tagName", "text", "props", "ariaLabel", "domPath", "elementId"])
331
341
  && (value.reason === undefined || value.reason === "runtime-created" || value.reason === "unannotated")
332
342
  && typeof value.tagName === "string"
333
343
  && (typeof value.text === "string" || value.text === null)
334
344
  && (typeof value.props === "string" || value.props === null)
335
- && (typeof value.ariaLabel === "string" || value.ariaLabel === null);
345
+ && (typeof value.ariaLabel === "string" || value.ariaLabel === null)
346
+ && (value.domPath === undefined || typeof value.domPath === "string" || value.domPath === null)
347
+ && (value.elementId === undefined || typeof value.elementId === "string" || value.elementId === null);
336
348
  }
337
349
  function isSourceElementEvidenceValue(value) {
338
350
  return isRecord(value)
339
- && hasOnlyKeys(value, ["tagName", "props"])
351
+ && hasOnlyKeys(value, ["tagName", "props", "text", "ariaLabel", "domPath", "elementId"])
340
352
  && typeof value.tagName === "string"
341
- && (typeof value.props === "string" || value.props === null);
353
+ && (typeof value.props === "string" || value.props === null)
354
+ && (value.text === undefined || typeof value.text === "string" || value.text === null)
355
+ && (value.ariaLabel === undefined || typeof value.ariaLabel === "string" || value.ariaLabel === null)
356
+ && (value.domPath === undefined || typeof value.domPath === "string" || value.domPath === null)
357
+ && (value.elementId === undefined || typeof value.elementId === "string" || value.elementId === null);
342
358
  }
343
359
  function isTokenRefValue(value) {
344
360
  if (value === null)
@@ -0,0 +1,7 @@
1
+ import type { DraftChangesSnapshot, DraftProjectionEvent } from "../drafts/draftStore.js";
2
+ export interface DraftPreview {
3
+ project(snapshot: DraftChangesSnapshot, event: DraftProjectionEvent): void;
4
+ dispose(): void;
5
+ }
6
+ /** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
7
+ export declare function createDraftPreview(readActive: () => DraftChangesSnapshot): DraftPreview;
@@ -0,0 +1,118 @@
1
+ import { getSelectedElement } from "../selection/selectionStore.js";
2
+ import { changeKey } from "./model.js";
3
+ import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, } from "./previewDiagnostics.js";
4
+ import { verifyPreviewChanges } from "./previewVerification.js";
5
+ import { clearStructuralProjectionReports, pruneStructuralProjectionReports } from "../projection/structuralProjection.js";
6
+ import { applyHostDraftProjection, compileDraftProjection } from "../projection/draftProjection.js";
7
+ import { isEditorShellDocument } from "../runtime/editorShell.js";
8
+ import { isOriginalPreviewActive, subscribeOriginalPreview } from "../shell/originalPreview.js";
9
+ /** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
10
+ export function createDraftPreview(readActive) {
11
+ let pendingTargets = new Map();
12
+ let handle = null;
13
+ function reapply(snapshot) {
14
+ if (isOriginalPreviewActive())
15
+ return;
16
+ if (!isEditorShellDocument())
17
+ applyHostDraftProjection(compileDraftProjection(snapshot));
18
+ }
19
+ function flushVerification() {
20
+ handle = null;
21
+ // Probing the original preview would report held-back changes as conflicts; keep the targets for re-verification on release.
22
+ if (isOriginalPreviewActive())
23
+ return;
24
+ const targets = pendingTargets;
25
+ pendingTargets = new Map();
26
+ // The editor shell has no application document to verify; renderer projection reports cover it.
27
+ if (targets.size === 0 || isEditorShellDocument())
28
+ return;
29
+ const current = readActive();
30
+ const attempt = beginPreviewAttempt(getHostPreviewDocument(), current.revision);
31
+ if (!attempt)
32
+ return;
33
+ const targeted = current.changes.filter((change) => targets.has(changeKey(change)));
34
+ verifyPreviewChanges({
35
+ changes: targeted,
36
+ document,
37
+ attempt,
38
+ targetFor: (change) => targets.get(changeKey(change)) ?? null,
39
+ });
40
+ }
41
+ function scheduleVerification() {
42
+ if (handle !== null)
43
+ return;
44
+ const view = typeof window !== "undefined" ? window : undefined;
45
+ if (view && typeof view.requestIdleCallback === "function") {
46
+ handle = view.requestIdleCallback(flushVerification, { timeout: 200 });
47
+ }
48
+ else if (view && typeof view.requestAnimationFrame === "function") {
49
+ handle = view.requestAnimationFrame(flushVerification);
50
+ }
51
+ else {
52
+ handle = setTimeout(flushVerification, 0);
53
+ }
54
+ }
55
+ function markForVerification(snapshot, verificationTargets) {
56
+ const selectedElement = getSelectedElement()?.domElement ?? null;
57
+ let added = false;
58
+ for (const key of snapshot.changes.map(changeKey)) {
59
+ if (!pendingTargets.has(key))
60
+ added = true;
61
+ // Latest commit context wins for a merged key; the element may live in an iframe, which fixes the verification document.
62
+ pendingTargets.set(key, verificationTargets?.get(key) ?? selectedElement);
63
+ }
64
+ if (added)
65
+ scheduleVerification();
66
+ }
67
+ const stopOriginalPreview = subscribeOriginalPreview(() => {
68
+ if (isEditorShellDocument())
69
+ return;
70
+ const snapshot = readActive();
71
+ if (isOriginalPreviewActive()) {
72
+ applyHostDraftProjection({
73
+ sourceRevision: snapshot.revision,
74
+ managedStyles: { rules: [], css: "" },
75
+ instanceOverrides: [],
76
+ structuralChanges: [],
77
+ textContentChanges: [],
78
+ componentOverrides: [],
79
+ });
80
+ return;
81
+ }
82
+ reapply(snapshot);
83
+ // A flush during the hold kept its targets without scheduling, so markForVerification would find every key present and schedule nothing.
84
+ markForVerification(snapshot);
85
+ if (pendingTargets.size > 0)
86
+ scheduleVerification();
87
+ });
88
+ return {
89
+ project(snapshot, event) {
90
+ switch (event.kind) {
91
+ case "edit":
92
+ reapply(snapshot);
93
+ markForVerification(snapshot, event.verificationTargets);
94
+ return;
95
+ case "reconcile":
96
+ reapply(snapshot);
97
+ pruneStructuralProjectionReports(event.structuralIds);
98
+ markForVerification(snapshot);
99
+ return;
100
+ case "switch":
101
+ pendingTargets.clear();
102
+ reapply(snapshot);
103
+ markForVerification(snapshot);
104
+ return;
105
+ case "reset":
106
+ // A deferred verification must not inspect a new record with the selection context of the cleared one.
107
+ pendingTargets.clear();
108
+ clearPreviewDiagnostics();
109
+ clearStructuralProjectionReports();
110
+ reapply(snapshot);
111
+ }
112
+ },
113
+ dispose() {
114
+ stopOriginalPreview();
115
+ pendingTargets.clear();
116
+ },
117
+ };
118
+ }
@@ -1,14 +1,11 @@
1
1
  import type { TokenContextWrapper } from "../../css/model/index.js";
2
2
  export type EditScope = "source-site" | "rendered-instance";
3
- /** A JSX instrumentation site. This is stable across documents. */
3
+ /** JSX instrumentation site; stable across documents. */
4
4
  export interface SourceSiteRef {
5
5
  cid: string;
6
6
  src: string;
7
7
  }
8
- /**
9
- * Serializable identity for one rendered output. It deliberately contains no
10
- * DOM reference or generated node id: each document resolves it independently.
11
- */
8
+ /** Deliberately free of DOM references and generated node ids; each document resolves it independently. */
12
9
  export interface RenderedInstanceRef {
13
10
  sourceSite: SourceSiteRef;
14
11
  locator: {
@@ -18,14 +15,14 @@ export interface RenderedInstanceRef {
18
15
  text: string | null;
19
16
  /** An accessible name can distinguish icon-only repeated controls. */
20
17
  ariaLabel?: string | null;
21
- /**
22
- * The component invocation whose entire output is this element. Present
23
- * only when evidence alone cannot tell identical outputs apart.
24
- */
18
+ /** Rendered facts used to reattach generated identities after reload. */
19
+ tagName?: string;
20
+ domPath?: string | null;
21
+ elementId?: string | null;
22
+ /** Present only when evidence alone cannot tell identical outputs apart. */
25
23
  invocation?: InvocationRef;
26
24
  };
27
25
  }
28
- /** A component callsite, as stamped by the compiler, and its component name. */
29
26
  export interface InvocationRef {
30
27
  callsiteId: string;
31
28
  componentName: string;
@@ -40,9 +37,7 @@ export interface StyleRuleContext {
40
37
  }
41
38
  export declare function isRenderedInstanceRef(value: unknown): value is RenderedInstanceRef;
42
39
  export declare function isRenderedInstanceOverride(value: unknown): value is RenderedInstanceOverride;
43
- /** Validates the serializable context carried by a token change. */
44
40
  export declare function isStyleRuleContextValue(value: unknown): value is StyleRuleContext;
45
- /** A source site shared by text and rendered-instance evidence. */
46
41
  export type TextProjectionSourceSite = SourceSiteRef;
47
42
  export interface TextProjectionTarget {
48
43
  sourceSite: TextProjectionSourceSite;
@@ -50,11 +45,14 @@ export interface TextProjectionTarget {
50
45
  props: string | null;
51
46
  ariaLabel: string | null;
52
47
  beforeText: string;
48
+ /** Optional prompt details; never used to resolve or group text targets. */
49
+ tagName?: string;
50
+ elementId?: string | null;
51
+ domPath?: string | null;
53
52
  /** Document-local evidence for a text node inside safe mixed markup. */
54
53
  textNodePath?: readonly number[];
55
54
  }
56
55
  export type TextProjectionScope = EditScope;
57
- /** Bounded semantic evidence retained alongside an instance text projection. */
58
56
  export interface TextBindingEvidence {
59
57
  callsiteId: string;
60
58
  componentName: string;
@@ -14,13 +14,16 @@ export function isRenderedInstanceRef(value) {
14
14
  || typeof source.cid !== "string"
15
15
  || typeof source.src !== "string"
16
16
  || !isRecord(locator)
17
- || !hasOnlyKeys(locator, ["kind", "occurrence", "props", "text", "ariaLabel", "invocation"]))
17
+ || !hasOnlyKeys(locator, ["kind", "occurrence", "props", "text", "ariaLabel", "tagName", "domPath", "elementId", "invocation"]))
18
18
  return false;
19
19
  return locator.kind === "evidence"
20
- && Number.isSafeInteger(locator.occurrence) && locator.occurrence >= 0
20
+ && isNonNegativeSafeInteger(locator.occurrence)
21
21
  && (typeof locator.props === "string" || locator.props === null)
22
22
  && (typeof locator.text === "string" || locator.text === null)
23
23
  && (locator.ariaLabel === undefined || typeof locator.ariaLabel === "string" || locator.ariaLabel === null)
24
+ && (locator.tagName === undefined || typeof locator.tagName === "string")
25
+ && (locator.domPath === undefined || typeof locator.domPath === "string" || locator.domPath === null)
26
+ && (locator.elementId === undefined || typeof locator.elementId === "string" || locator.elementId === null)
24
27
  && (locator.invocation === undefined || isInvocationRef(locator.invocation));
25
28
  }
26
29
  export function isRenderedInstanceOverride(value) {
@@ -29,7 +32,6 @@ export function isRenderedInstanceOverride(value) {
29
32
  && typeof value.id === "string"
30
33
  && isRenderedInstanceRef(value.target);
31
34
  }
32
- /** Validates the serializable context carried by a token change. */
33
35
  export function isStyleRuleContextValue(value) {
34
36
  if (!isRecord(value) || !hasOnlyKeys(value, ["wrappers"]))
35
37
  return false;
@@ -46,7 +48,7 @@ export function isStyleRuleContextValue(value) {
46
48
  }
47
49
  export function isTextProjectionTargetValue(value) {
48
50
  if (!isRecord(value)
49
- || !hasOnlyKeys(value, ["sourceSite", "occurrence", "props", "ariaLabel", "beforeText", "textNodePath"])) {
51
+ || !hasOnlyKeys(value, ["sourceSite", "occurrence", "props", "ariaLabel", "beforeText", "textNodePath", "tagName", "elementId", "domPath"])) {
50
52
  return false;
51
53
  }
52
54
  const occurrence = value.occurrence;
@@ -58,6 +60,9 @@ export function isTextProjectionTargetValue(value) {
58
60
  || (typeof props !== "string" && props !== null)
59
61
  || (typeof ariaLabel !== "string" && ariaLabel !== null)
60
62
  || typeof beforeText !== "string"
63
+ || (value.tagName !== undefined && typeof value.tagName !== "string")
64
+ || (value.elementId !== undefined && value.elementId !== null && typeof value.elementId !== "string")
65
+ || (value.domPath !== undefined && value.domPath !== null && typeof value.domPath !== "string")
61
66
  || (textNodePath !== undefined
62
67
  && (!Array.isArray(textNodePath)
63
68
  || textNodePath.length === 0
@@ -2,6 +2,7 @@ import { verifyPreview } from "../projection/managedStylesheet.js";
2
2
  import { getSelectedElement } from "../selection/selectionStore.js";
3
3
  import { instanceSelector } from "../projection/renderedInstance.js";
4
4
  import { selectorForInteractionState } from "../shell/styleState.js";
5
+ import { selectorForInteractionStatePreview } from "../shell/interactionStatePreview.js";
5
6
  import { isComponentChange, isTextContentChange, isTokenChange, } from "./types.js";
6
7
  import { tokenReference } from "./model.js";
7
8
  function requestedStyleValue(change) {
@@ -59,38 +60,28 @@ export function buildManagedStyleRules(changes) {
59
60
  });
60
61
  }
61
62
  }
62
- // Source-site rules remain the default; exact rendered-instance rules are
63
- // emitted afterwards so their additional marker specificity wins.
63
+ // Source-site rules are the default; rendered-instance rules come last so their extra marker specificity wins.
64
64
  return [...sourceRules.values(), ...instanceRules.values()];
65
65
  }
66
66
  export function verifyManagedStyleProjection(change, selectedElement, ownerDocument = document) {
67
- // Deferred verification must use the selection that existed when the
68
- // projection was committed. Reading the live selection here can make a
69
- // host-document change verify against a later canvas selection (or vice
70
- // versa) and manufacture a conflict for the wrong document.
67
+ // Deferred verification must use the selection from commit time; the live selection can belong to the wrong document and manufacture a conflict.
71
68
  const selected = selectedElement === undefined
72
69
  ? getSelectedElement()?.domElement ?? null
73
70
  : selectedElement;
74
71
  const requestedValue = requestedStyleValue(change);
75
- // A Canvas-only selection belongs to an iframe. The controller stylesheet
76
- // cannot verify it synchronously; leave its result unknown until the frame
77
- // has received the canonical projection rather than claiming it is stale.
72
+ // A Canvas-only iframe selection cannot be verified synchronously; leave the result unknown rather than claiming it is stale.
78
73
  if (selected && selected.ownerDocument !== ownerDocument) {
79
74
  return null;
80
75
  }
81
76
  let targets = [];
82
77
  try {
83
78
  const selector = selectorForManagedChange(change);
84
- targets = selector ? Array.from(ownerDocument.querySelectorAll(selector)) : [];
79
+ targets = selector ? Array.from(ownerDocument.querySelectorAll(selectorForInteractionStatePreview(selector))) : [];
85
80
  }
86
81
  catch {
87
82
  targets = [];
88
83
  }
89
- // Probe targets lazily in DOM order and stop at the first conflicting
90
- // preview: the reported result is exactly "first conflict ?? first target",
91
- // so probing the remaining instances cannot change the outcome. A
92
- // source-site selector matched by many rendered instances (one callsite,
93
- // hundreds of nodes) otherwise pays a probe + important-rule scan per match.
84
+ // Early exit is safe: the result is "first conflict ?? first target", so later probes cannot change it.
94
85
  let firstApplied = null;
95
86
  let previewResult = null;
96
87
  for (const target of targets) {
@@ -1,10 +1,5 @@
1
1
  import type { TokenEntry } from "../../css/model/index.js";
2
2
  import { type ChangeRecord } from "./types.js";
3
- /**
4
- * The CSS value a token swap writes into the managed stylesheet and the
5
- * prompt must describe: an adapter-provided literal when present, otherwise a
6
- * var() reference on the authored cssName (falling back to the entry name).
7
- */
8
3
  export declare function tokenReference(token: TokenEntry): string;
9
4
  export declare function changeKey(change: ChangeRecord): string;
10
5
  export declare function mergeChange(current: ChangeRecord[], incoming: ChangeRecord): ChangeRecord[];
@@ -1,9 +1,4 @@
1
1
  import { isComponentChange, isElementChange, isTextContentChange, isTokenChange, } from "./types.js";
2
- /**
3
- * The CSS value a token swap writes into the managed stylesheet and the
4
- * prompt must describe: an adapter-provided literal when present, otherwise a
5
- * var() reference on the authored cssName (falling back to the entry name).
6
- */
7
2
  export function tokenReference(token) {
8
3
  return token.cssValue ?? `var(${token.cssName ?? token.name})`;
9
4
  }
@@ -27,9 +22,7 @@ export function changeKey(change) {
27
22
  ].join("\u0000");
28
23
  }
29
24
  if (isTextContentChange(change)) {
30
- // The marker id is document-local projection identity. `beforeText` is
31
- // part of the durable evidence: two outputs at one source site may have
32
- // different initial copy and must remain distinct canonical intents.
25
+ // Two outputs at one source site may have different initial copy, so beforeText keeps them distinct.
33
26
  return [
34
27
  "text-content",
35
28
  change.target.sourceSite.cid,
@@ -14,26 +14,16 @@ export interface PreviewDiagnostic extends PreviewAttempt {
14
14
  readonly changeKey: string;
15
15
  readonly result: PreviewResult;
16
16
  }
17
- /** Returns the stable host-document identity for this inspector lifetime. */
18
17
  export declare function getHostPreviewDocument(): PreviewDocument;
19
- /** Starts or replaces the live session for one logical document. */
20
18
  export declare function startPreviewDocumentSession(document: PreviewDocument): void;
21
- /** Invalidates a live document session and rejects all of its late results. */
19
+ /** Late results from an invalidated session are rejected. */
22
20
  export declare function invalidatePreviewDocumentSession(logicalDocument: string, sessionId?: string): void;
23
- /** Opens a verification attempt for the currently active document session. */
24
21
  export declare function beginPreviewAttempt(document: PreviewDocument, revision?: number): PreviewAttempt | null;
25
- /** Publishes only a result from the active revision, session, and attempt. */
26
22
  export declare function publishPreviewDiagnostic(attempt: PreviewAttempt, changeKey: string, result: PreviewResult): boolean;
27
- /** Removes diagnostics for the supplied canonical keys across live documents. */
28
23
  export declare function clearPreviewDiagnostics(changeKeys?: Iterable<string>): void;
29
- /** Notifies consumers when verification state changes without a result. */
30
24
  export declare function notifyPreviewDiagnostics(): void;
31
25
  export declare function getPreviewDiagnostic(changeKey: string, logicalDocument?: string, draftId?: string): PreviewDiagnostic | undefined;
32
- /**
33
- * Host-first read across live documents. The per-document store is observable
34
- * here so a Canvas-only conflict is not write-only; host remains the default
35
- * for single-document consumers.
36
- */
26
+ /** Also reads non-host documents so Canvas-only conflicts are not write-only. */
37
27
  export declare function getAnyPreviewDiagnostic(changeKey: string): PreviewDiagnostic | undefined;
38
28
  export declare function subscribePreviewDiagnostics(listener: () => void): () => void;
39
29
  export declare function getPreviewDiagnosticRevision(): number;