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
@@ -12,7 +12,6 @@ export function boundsOf(cards) {
12
12
  }
13
13
  return { minX, minY, maxX, maxY };
14
14
  }
15
- /** Places a new frame to the right of every frame, on the first frame's row. */
16
15
  export function nextCardPosition(cards, gap) {
17
16
  if (cards.length === 0)
18
17
  return { x: 0, y: 0 };
@@ -55,7 +54,6 @@ export function iterationPosition(cards, source, gap) {
55
54
  }
56
55
  return { x, y };
57
56
  }
58
- /** Zooms and centers content inside the padded viewport; null for empty content. */
59
57
  export function fitCamera(bounds, viewport, padding) {
60
58
  const width = bounds.maxX - bounds.minX;
61
59
  const height = bounds.maxY - bounds.minY;
@@ -92,7 +90,6 @@ export function applyLayoutShifts(cards, shifts, forward) {
92
90
  return { ...card, x: card.x + to.x - from.x, y: card.y + to.y - from.y };
93
91
  });
94
92
  }
95
- /** Reinserts recorded frames after their nearest recorded predecessor that still exists. */
96
93
  export function reinsertInRecordedOrder(cards, recorded, ids) {
97
94
  let next = [...cards];
98
95
  for (const [index, added] of recorded.entries()) {
@@ -14,14 +14,7 @@ export function normalizeUrl(url) {
14
14
  export function normalizedUrlKey(normalized) {
15
15
  return `${normalized.origin}${canonicalRoutePath(normalized.pathname)}${normalized.search}`;
16
16
  }
17
- /**
18
- * Directory-index pages resolve to the directory URL: `/` and `/index.html`
19
- * are one route served from one file on every supported dev server, so card
20
- * deduplication must treat them as the same key or link discovery spawns a
21
- * duplicate card for the page already on the board.
22
- */
17
+ /** Dev servers serve `/` and `/index.html` from one file, so dedup must treat them as the same key. */
23
18
  function canonicalRoutePath(pathname) {
24
- // "/docs/index.html" becomes the directory form "/docs/"; a bare
25
- // "/index.html" becomes "/".
26
19
  return pathname.replace(/\/index\.html?$/i, "/");
27
20
  }
@@ -0,0 +1,6 @@
1
+ import type { CanvasFrame } from "./canvasFrame.js";
2
+ /** Runs renderer and controller in the inspected window so no iframe or framing permission is needed. */
3
+ export declare function enablePageSurface(): void;
4
+ export declare function isPageSurface(): boolean;
5
+ export declare function getPageFrame(win?: Window): CanvasFrame;
6
+ export declare function isInspectorUiEvent(event: Event): boolean;
@@ -0,0 +1,29 @@
1
+ import { NUDGE_UI_MOUNT_ID } from "../../transport/routes.js";
2
+ let pageSurface = false;
3
+ /** Runs renderer and controller in the inspected window so no iframe or framing permission is needed. */
4
+ export function enablePageSurface() {
5
+ pageSurface = true;
6
+ }
7
+ export function isPageSurface() {
8
+ return pageSurface;
9
+ }
10
+ const pageFrames = new WeakMap();
11
+ export function getPageFrame(win = window) {
12
+ const existing = pageFrames.get(win);
13
+ if (existing)
14
+ return existing;
15
+ const root = win.document.documentElement;
16
+ const frame = {
17
+ contentWindow: win,
18
+ contentDocument: win.document,
19
+ isConnected: true,
20
+ get clientWidth() { return root.clientWidth; },
21
+ get clientHeight() { return root.clientHeight; },
22
+ getBoundingClientRect: () => new DOMRect(0, 0, root.clientWidth, root.clientHeight),
23
+ };
24
+ pageFrames.set(win, frame);
25
+ return frame;
26
+ }
27
+ export function isInspectorUiEvent(event) {
28
+ return pageSurface && event.composedPath().some((node) => node instanceof Element && node.id === NUDGE_UI_MOUNT_ID);
29
+ }
@@ -1,9 +1,8 @@
1
- import { type DraftContents } from "../changes/draftChanges.js";
1
+ import type { CanvasFrame } from "./canvasFrame.js";
2
+ import type { DraftContents } from "../drafts/model.js";
2
3
  import type { CanvasCard } from "./canvasStore.js";
3
4
  import { type PreviewDocument } from "../changes/previewDiagnostics.js";
4
5
  import { type CompiledManagedStyles, type DraftProjectionPlan } from "../projection/draftProjection.js";
5
- export declare const PROJECT_ID: string;
6
- export declare const WORKSPACE_ID: string;
7
6
  export interface FrameProjection extends DraftProjectionPlan<CompiledManagedStyles> {
8
7
  readonly draftId: string;
9
8
  readonly draftRevision: number;
@@ -14,45 +13,35 @@ export interface CanvasProjectionStatus {
14
13
  sentRevision: number;
15
14
  appliedRevision: number;
16
15
  }
17
- /** Returns the current value-based identity for one Canvas card document. */
18
16
  export declare function getCanvasPreviewDocument(cardId: string): PreviewDocument;
19
17
  /** Invalidates a card's current document before its iframe is replaced. */
20
18
  export declare function invalidateCanvasPreviewDocument(cardId: string): void;
21
- export declare function computeProjection(): {
22
- css: string;
23
- revision: number;
24
- sourceRevision: number;
25
- managedStyles: CompiledManagedStyles;
26
- instanceOverrides: readonly import("../changes/editModel.js").RenderedInstanceOverride[];
27
- structuralChanges: readonly import("../changes/structuralTypes.js").StructuralChange[];
28
- textContentChanges: readonly import("../changes/editModel.js").TextContentChangeRecord[];
29
- componentOverrides: readonly import("../componentSemantics/types.js").ComponentOverride[];
30
- };
31
19
  export declare function computeProjectionForCard(cardId: string): FrameProjection;
32
20
  export declare function getCanonicalFrameProjection(cardId: string, expectedRevision: number): FrameProjection | null;
33
- export declare function restoreCanonicalFrameProjection(doc: Document): void;
21
+ /** Re-sends the canonical projection and settles on acknowledgement, so callers can rely on its stylesheet invalidation. */
22
+ export declare function restoreCanonicalFrameProjection(doc: Document): Promise<void>;
34
23
  export declare function getCanvasCardIdForDocument(doc: Document): string | null;
35
24
  export declare function resetProjectionRevision(): void;
36
- export declare function sendProjectionToCard(card: Pick<CanvasCard, "id">, iframe: HTMLIFrameElement): void;
37
- /** Temporarily projects a snapshot through the renderer that owns the document. */
25
+ export declare function sendProjectionToCard(card: Pick<CanvasCard, "id">, iframe: CanvasFrame): number | null;
38
26
  export declare function projectDraftToDocument(doc: Document, snapshot: DraftContents): Promise<number | null>;
39
- /** Returns whether an acknowledged temporary projection is still authoritative. */
27
+ /** Whether an acknowledged temporary projection is still authoritative. */
40
28
  export declare function isCanvasProjectionRevisionCurrent(doc: Document, expectedRevision: number): boolean;
41
- /** Returns whether the live frame acknowledged its latest canonical workspace projection. */
42
29
  export declare function isCanvasCanonicalProjectionRevisionCurrent(doc: Document, expectedRevision: number): boolean;
43
- export declare function registerCardFrameSource(cardId: string, iframe: HTMLIFrameElement): void;
44
- export declare function registerCardFrame(cardId: string, iframe: HTMLIFrameElement): void;
30
+ export declare function registerCardFrameSource(cardId: string, iframe: CanvasFrame): void;
31
+ export declare function registerCardFrame(cardId: string, iframe: CanvasFrame): void;
45
32
  export declare function unregisterCardFrame(cardId: string): void;
46
- export declare function getRegisteredFrames(): ReadonlyMap<string, HTMLIFrameElement>;
33
+ export declare function getRegisteredFrames(): ReadonlyMap<string, CanvasFrame>;
47
34
  export declare function findCanvasFrameBySource(source: MessageEventSource | null): {
48
35
  cardId: string;
49
- iframe: HTMLIFrameElement;
36
+ iframe: CanvasFrame;
50
37
  } | null;
38
+ /** The registered frame rendering `doc`; on the page surface this is the controller document. */
39
+ export declare function findCanvasFrameByDocument(doc: Document | null | undefined): CanvasFrame | null;
51
40
  export declare function subscribeFrameRegistry(listener: () => void): () => void;
52
- /** Records the highest complete projection revision accepted by one frame. */
53
41
  export declare function recordCanvasProjectionApplied(cardId: string, appliedRevision: number): void;
54
- /** Returns projection progress for the document containing a selected element. */
55
42
  export declare function getCanvasProjectionStatus(doc: Document): CanvasProjectionStatus | null;
56
43
  export declare function subscribeCanvasProjectionAcknowledgements(listener: () => void): () => void;
57
44
  export declare function getCanvasProjectionAcknowledgementVersion(): number;
45
+ /** Bumped whenever a frame registers or unregisters, for `useSyncExternalStore`. */
46
+ export declare function getFrameRegistryVersion(): number;
58
47
  export declare function projectToAllReadyCards(): void;
@@ -1,24 +1,15 @@
1
- import { draftIdForCard } from "../drafts/store.js";
2
- import { getDraftChanges, getActiveDraftChanges } from "../changes/draftChanges.js";
1
+ import { draftIdForCard, getDraftChanges, getActiveDraftChanges } from "../drafts/store.js";
3
2
  import { getCanvasCards } from "./canvasStore.js";
4
3
  import { getCanvasMode } from "./viewStore.js";
5
- import { PROTOCOL_VERSION } from "./frameProtocol.js";
6
- import { clearCanvasRenderedInstanceProjectionReports, setCanonicalRenderedInstanceOverrides, } from "../projection/renderedInstance.js";
7
- import { clearCanvasTextProjectionReports, setCanonicalTextContentChanges, } from "../projection/textProjection.js";
4
+ import { connectFrame } from "./frameConnection.js";
5
+ import { clearCanvasRenderedInstanceProjectionReports } from "../projection/renderedInstance.js";
6
+ import { clearCanvasTextProjectionReports } from "../projection/textProjection.js";
8
7
  import { clearCanvasStructuralProjectionReports } from "../projection/structuralProjection.js";
9
8
  import { invalidatePreviewDocumentSession, startPreviewDocumentSession, } from "../changes/previewDiagnostics.js";
10
9
  import { compileDraftProjection, } from "../projection/draftProjection.js";
11
10
  import { isOriginalPreviewActive } from "../shell/originalPreview.js";
12
- import { disposeBrowserCssInspection } from "../inspection/browserCssInspectionRegistry.js";
13
- export const PROJECT_ID = typeof window !== "undefined" && window.location?.origin
14
- ? window.location.origin
15
- : "";
16
- export const WORKSPACE_ID = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
17
- ? crypto.randomUUID()
18
- : `ws-${Date.now()}`;
11
+ import { disposeBrowserCssInspection, notifyBrowserStylesheetChange } from "../inspection/browserCssInspectionRegistry.js";
19
12
  let revision = 0;
20
- let lastRulesKey = null;
21
- let lastPeekActive = false;
22
13
  const draftPlans = new Map();
23
14
  const frameProjectionStates = new Map();
24
15
  const previewDocuments = new Map();
@@ -34,10 +25,8 @@ function createPreviewDocumentIdentity(cardId) {
34
25
  previewDocuments.set(cardId, previewDocument);
35
26
  return previewDocument;
36
27
  }
37
- /** Returns the current value-based identity for one Canvas card document. */
38
28
  export function getCanvasPreviewDocument(cardId) {
39
- // Pure getter: no session activation or notify. Creation (identity only) is
40
- // idempotent here; registerCardFrame owns session activation.
29
+ // Pure getter: registerCardFrame owns session activation; creating the identity here is idempotent.
41
30
  return previewDocuments.get(cardId) ?? createPreviewDocumentIdentity(cardId);
42
31
  }
43
32
  /** Invalidates a card's current document before its iframe is replaced. */
@@ -51,47 +40,6 @@ export function invalidateCanvasPreviewDocument(cardId) {
51
40
  invalidatePreviewDocumentSession(previewDocument.logicalDocument, previewDocument.sessionId);
52
41
  previewDocuments.delete(cardId);
53
42
  }
54
- function projectionKey(plan) {
55
- // Revision ordering protects every controller-owned projection dimension.
56
- // In particular, a delete-only snapshot has empty CSS but must still advance
57
- // past the snapshot already accepted by ready Canvas renderers.
58
- return `${plan.managedStyles.css}\u0000${JSON.stringify(plan.instanceOverrides)}\u0000${JSON.stringify(plan.structuralChanges)}\u0000${JSON.stringify(plan.textContentChanges)}\u0000${JSON.stringify(plan.componentOverrides)}`;
59
- }
60
- export function computeProjection() {
61
- const plan = compileDraftProjection(getActiveDraftChanges());
62
- if (isOriginalPreviewActive()) {
63
- // Hold-to-view-original: frames show the page without inspector changes
64
- // while canonical intent (and its projection key) stays untouched.
65
- if (!lastPeekActive) {
66
- lastPeekActive = true;
67
- revision += 1;
68
- }
69
- return {
70
- ...plan,
71
- managedStyles: { rules: [], css: "" },
72
- css: "",
73
- instanceOverrides: [],
74
- structuralChanges: [],
75
- textContentChanges: [],
76
- componentOverrides: [],
77
- revision,
78
- };
79
- }
80
- if (lastPeekActive) {
81
- // Force the canonical projection to resend after a peek even though its
82
- // key is unchanged since the peek began.
83
- lastPeekActive = false;
84
- lastRulesKey = null;
85
- }
86
- setCanonicalRenderedInstanceOverrides(plan.instanceOverrides);
87
- setCanonicalTextContentChanges(plan.textContentChanges);
88
- const key = projectionKey(plan);
89
- if (key !== lastRulesKey) {
90
- lastRulesKey = key;
91
- revision += 1;
92
- }
93
- return { ...plan, css: plan.managedStyles.css, revision };
94
- }
95
43
  export function computeProjectionForCard(cardId) {
96
44
  const draftId = draftIdForCard(cardId);
97
45
  const workspace = draftId ? getDraftChanges(draftId) : getActiveDraftChanges();
@@ -116,12 +64,16 @@ export function getCanonicalFrameProjection(cardId, expectedRevision) {
116
64
  return null;
117
65
  return plan;
118
66
  }
119
- export function restoreCanonicalFrameProjection(doc) {
67
+ /** Re-sends the canonical projection and settles on acknowledgement, so callers can rely on its stylesheet invalidation. */
68
+ export async function restoreCanonicalFrameProjection(doc) {
120
69
  const id = getCanvasCardIdForDocument(doc);
121
70
  const card = getCanvasCards().find((card) => card.id === id);
122
71
  const frame = id ? frameRegistry.get(id) : undefined;
123
- if (card && frame)
124
- sendProjectionToCard(card, frame);
72
+ if (!card || !frame)
73
+ return;
74
+ const sent = sendProjectionToCard(card, frame);
75
+ if (sent !== null)
76
+ await waitForProjectionApplied(card.id, doc, sent);
125
77
  }
126
78
  export function getCanvasCardIdForDocument(doc) {
127
79
  for (const [id, state] of frameProjectionStates)
@@ -131,8 +83,6 @@ export function getCanvasCardIdForDocument(doc) {
131
83
  }
132
84
  export function resetProjectionRevision() {
133
85
  revision = 0;
134
- lastRulesKey = null;
135
- lastPeekActive = false;
136
86
  draftPlans.clear();
137
87
  for (const state of frameProjectionStates.values()) {
138
88
  state.sentRevision = -1;
@@ -146,7 +96,7 @@ export function resetProjectionRevision() {
146
96
  export function sendProjectionToCard(card, iframe) {
147
97
  const win = iframe.contentWindow;
148
98
  if (!win)
149
- return;
99
+ return null;
150
100
  let plan = computeProjectionForCard(card.id);
151
101
  const state = frameProjectionStates.get(card.id);
152
102
  if (state && plan.revision < state.sentRevision) {
@@ -155,30 +105,25 @@ export function sendProjectionToCard(card, iframe) {
155
105
  }
156
106
  if (state)
157
107
  state.canonicalProjection = plan;
158
- const { css, revision: rev, instanceOverrides, structuralChanges, textContentChanges, componentOverrides } = plan;
159
- sendProjectionMessage(card.id, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, true);
108
+ const { css, revision: rev, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities } = plan;
109
+ sendProjectionMessage(card.id, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities, true);
110
+ return rev;
160
111
  }
161
- function sendProjectionMessage(cardId, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, canonical = false) {
162
- const win = iframe.contentWindow;
163
- if (!win)
112
+ function sendProjectionMessage(cardId, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities, canonical = false) {
113
+ if (!iframe.contentWindow)
164
114
  return;
165
- const msg = {
115
+ markProjectionSent(cardId, iframe, rev, css, canonical);
116
+ connectFrame(cardId, iframe).post({
166
117
  type: "replace-styles",
167
- protocolVersion: PROTOCOL_VERSION,
168
- projectId: PROJECT_ID,
169
- workspaceId: WORKSPACE_ID,
170
- cardId,
171
118
  css,
172
119
  revision: rev,
173
120
  instanceOverrides: [...instanceOverrides],
174
121
  structuralChanges: [...structuralChanges],
175
122
  textContentChanges: [...textContentChanges],
176
123
  componentOverrides: [...componentOverrides],
177
- };
178
- markProjectionSent(cardId, iframe, rev, canonical);
179
- win.postMessage(msg, window.location.origin);
124
+ ...(runtimeIdentities ? { runtimeIdentities: [...runtimeIdentities] } : {}),
125
+ });
180
126
  }
181
- /** Temporarily projects a snapshot through the renderer that owns the document. */
182
127
  export async function projectDraftToDocument(doc, snapshot) {
183
128
  const entry = [...frameProjectionStates.entries()].find(([, state]) => state.document === doc);
184
129
  if (!entry)
@@ -186,10 +131,15 @@ export async function projectDraftToDocument(doc, snapshot) {
186
131
  const [cardId, state] = entry;
187
132
  const plan = compileDraftProjection({ ...snapshot, revision: 0 });
188
133
  revision += 1;
189
- sendProjectionMessage(cardId, state.iframe, revision, plan.managedStyles.css, plan.instanceOverrides, plan.structuralChanges, plan.textContentChanges, plan.componentOverrides);
190
- if (state.appliedRevision === revision && state.sentRevision === revision)
191
- return revision;
192
- const requestedRevision = revision;
134
+ sendProjectionMessage(cardId, state.iframe, revision, plan.managedStyles.css, plan.instanceOverrides, plan.structuralChanges, plan.textContentChanges, plan.componentOverrides, plan.runtimeIdentities);
135
+ return waitForProjectionApplied(cardId, doc, revision);
136
+ }
137
+ /** Resolves with `requestedRevision` on acknowledgement; null when superseded, replaced, or after 2s. */
138
+ function waitForProjectionApplied(cardId, doc, requestedRevision) {
139
+ const initial = frameProjectionStates.get(cardId);
140
+ if (initial?.appliedRevision === requestedRevision && initial.sentRevision === requestedRevision) {
141
+ return Promise.resolve(requestedRevision);
142
+ }
193
143
  return new Promise((resolve) => {
194
144
  let settled = false;
195
145
  let timer;
@@ -214,7 +164,7 @@ export async function projectDraftToDocument(doc, snapshot) {
214
164
  timer = setTimeout(() => finish(null), 2_000);
215
165
  });
216
166
  }
217
- /** Returns whether an acknowledged temporary projection is still authoritative. */
167
+ /** Whether an acknowledged temporary projection is still authoritative. */
218
168
  export function isCanvasProjectionRevisionCurrent(doc, expectedRevision) {
219
169
  for (const state of frameProjectionStates.values()) {
220
170
  if (state.document !== doc)
@@ -230,7 +180,6 @@ export function isCanvasProjectionRevisionCurrent(doc, expectedRevision) {
230
180
  }
231
181
  return false;
232
182
  }
233
- /** Returns whether the live frame acknowledged its latest canonical workspace projection. */
234
183
  export function isCanvasCanonicalProjectionRevisionCurrent(doc, expectedRevision) {
235
184
  for (const state of frameProjectionStates.values()) {
236
185
  if (state.document !== doc)
@@ -273,6 +222,8 @@ export function registerCardFrame(cardId, iframe) {
273
222
  appliedRevision: -1,
274
223
  canonicalSentRevision: -1,
275
224
  canonicalProjection: null,
225
+ sentCss: new Map(),
226
+ appliedCss: null,
276
227
  });
277
228
  }
278
229
  else {
@@ -304,6 +255,16 @@ export function findCanvasFrameBySource(source) {
304
255
  }
305
256
  return null;
306
257
  }
258
+ /** The registered frame rendering `doc`; on the page surface this is the controller document. */
259
+ export function findCanvasFrameByDocument(doc) {
260
+ if (!doc)
261
+ return null;
262
+ for (const iframe of frameRegistry.values()) {
263
+ if (getFrameDocument(iframe) === doc)
264
+ return iframe;
265
+ }
266
+ return null;
267
+ }
307
268
  const frameRegistryListeners = new Set();
308
269
  export function subscribeFrameRegistry(listener) {
309
270
  frameRegistryListeners.add(listener);
@@ -319,24 +280,34 @@ function getFrameDocument(iframe) {
319
280
  return null;
320
281
  }
321
282
  }
322
- function markProjectionSent(cardId, iframe, sentRevision, canonical = false) {
283
+ function markProjectionSent(cardId, iframe, sentRevision, css, canonical = false) {
323
284
  const state = frameProjectionStates.get(cardId);
324
285
  if (!state || state.iframe !== iframe)
325
286
  return;
326
287
  state.sentRevision = Math.max(state.sentRevision, sentRevision);
288
+ state.sentCss.set(sentRevision, css);
327
289
  if (canonical)
328
290
  state.canonicalSentRevision = sentRevision;
329
291
  }
330
- /** Records the highest complete projection revision accepted by one frame. */
331
292
  export function recordCanvasProjectionApplied(cardId, appliedRevision) {
332
293
  const state = frameProjectionStates.get(cardId);
333
294
  if (!state || appliedRevision > state.sentRevision || appliedRevision <= state.appliedRevision)
334
295
  return;
335
296
  state.appliedRevision = appliedRevision;
297
+ const css = state.sentCss.get(appliedRevision);
298
+ for (const sent of state.sentCss.keys()) {
299
+ if (sent <= appliedRevision)
300
+ state.sentCss.delete(sent);
301
+ }
302
+ // Renderer stylesheet writes don't invalidate the controller's CSSOM cache, so only a CSS change needs a refresh.
303
+ const cssChanged = css === undefined || css !== state.appliedCss;
304
+ state.appliedCss = css ?? null;
305
+ if (cssChanged && state.document && state.iframe.contentDocument === state.document) {
306
+ notifyBrowserStylesheetChange(state.document);
307
+ }
336
308
  projectionAcknowledgementVersion += 1;
337
309
  notifyProjectionAcknowledgementListeners();
338
310
  }
339
- /** Returns projection progress for the document containing a selected element. */
340
311
  export function getCanvasProjectionStatus(doc) {
341
312
  for (const state of frameProjectionStates.values()) {
342
313
  if (state.document !== doc)
@@ -365,7 +336,13 @@ function notifyProjectionAcknowledgementListeners() {
365
336
  catch { /* ignore */ }
366
337
  }
367
338
  }
339
+ let frameRegistryVersion = 0;
340
+ /** Bumped whenever a frame registers or unregisters, for `useSyncExternalStore`. */
341
+ export function getFrameRegistryVersion() {
342
+ return frameRegistryVersion;
343
+ }
368
344
  function notifyFrameRegistryListeners() {
345
+ frameRegistryVersion += 1;
369
346
  for (const listener of frameRegistryListeners) {
370
347
  try {
371
348
  listener();
@@ -1,4 +1,11 @@
1
+ import { startRendererProjectionDiagnostics } from "./rendererStylesheet.js";
2
+ import { installRendererElementSelector } from "./rendererElementSelector.js";
1
3
  export interface RendererBootstrapHandle {
2
4
  teardown(): void;
3
5
  }
4
- export declare function bootstrapRenderer(): RendererBootstrapHandle | undefined;
6
+ /** Replaces the renderer resources a caller cannot exercise directly, such as jsdom-based browser tests. */
7
+ export interface RendererBootstrapResources {
8
+ readonly installElementSelector?: typeof installRendererElementSelector;
9
+ readonly startProjectionDiagnostics?: typeof startRendererProjectionDiagnostics;
10
+ }
11
+ export declare function bootstrapRenderer(resources?: RendererBootstrapResources): RendererBootstrapHandle | undefined;
@@ -7,6 +7,8 @@ import { createFrameThrottle } from "../overlay/frameThrottle.js";
7
7
  import { isNudgeUiDev } from "../runtime/devFlag.js";
8
8
  import { getNudgeUiRuntimeConfig, subscribeNudgeUiRuntime } from "../runtime/runtimeConfig.js";
9
9
  import { APP_INTERACTION_KEY } from "./keyboardShortcuts.js";
10
+ import { isInspectorUiEvent } from "./pageSurface.js";
11
+ import { disposeRuntimeIdentityClaims } from "../runtime/runtimeIdentityClaims.js";
10
12
  let activeRendererBootstrap = null;
11
13
  function ownsRendererBootstrap(owner) {
12
14
  return owner.active && activeRendererBootstrap?.owner === owner;
@@ -104,8 +106,7 @@ function scheduleRendererTimer(owner, callback, delay) {
104
106
  function teardownRenderer(owner) {
105
107
  if (!owner.active)
106
108
  return;
107
- // Invalidate callbacks before releasing any resource. A queued microtask or
108
- // frame can still run after its source has been cancelled.
109
+ // Invalidate callbacks before releasing resources: queued microtasks or frames can still run.
109
110
  owner.active = false;
110
111
  if (activeRendererBootstrap?.owner === owner) {
111
112
  activeRendererBootstrap = null;
@@ -127,7 +128,7 @@ function teardownRenderer(owner) {
127
128
  restoreHistoryPatch();
128
129
  clearRendererIdentity();
129
130
  }
130
- export function bootstrapRenderer() {
131
+ export function bootstrapRenderer(resources = {}) {
131
132
  if (!getNudgeUiRuntimeConfig().capabilities.canvas)
132
133
  return;
133
134
  if (!isNudgeUiDev())
@@ -149,11 +150,12 @@ export function bootstrapRenderer() {
149
150
  activeRendererBootstrap = { owner, handle };
150
151
  try {
151
152
  observeFrameMetadata(owner);
153
+ owner.resourceDisposers.push(() => disposeRuntimeIdentityClaims(document));
152
154
  owner.resourceDisposers.push(subscribeNudgeUiRuntime(() => sendFrameRuntime(owner)));
153
- const disposeDiagnostics = startRendererProjectionDiagnostics();
155
+ const disposeDiagnostics = (resources.startProjectionDiagnostics ?? startRendererProjectionDiagnostics)();
154
156
  if (disposeDiagnostics)
155
157
  owner.resourceDisposers.push(disposeDiagnostics);
156
- const disposeSelector = installRendererElementSelector();
158
+ const disposeSelector = (resources.installElementSelector ?? installRendererElementSelector)();
157
159
  if (disposeSelector)
158
160
  owner.resourceDisposers.push(disposeSelector);
159
161
  installRendererPanProxy(owner);
@@ -223,13 +225,7 @@ export function bootstrapRenderer() {
223
225
  };
224
226
  window.addEventListener("message", onMessage);
225
227
  owner.listenerRemovers.push(() => window.removeEventListener("message", onMessage));
226
- // Solicit the handshake, then retry briefly. The controller answers on
227
- // iframe load AND on every hello it receives, but its answering listener
228
- // attaches when the card component commits — normally long before any
229
- // renderer finishes booting. The retries cover the residual window where
230
- // a renderer's listeners go live before the controller's do (fast boot,
231
- // slow controller compile). Every path is idempotent: setRendererIdentity
232
- // overwrites, re-registration replaces, projection re-sends are safe.
228
+ // The controller's listener may attach after the renderer boots; retry briefly, and every path is idempotent.
233
229
  let helloAttempts = 0;
234
230
  const solicitHandshake = () => {
235
231
  if (!ownsRendererBootstrap(owner) || getRendererIdentity() || helloAttempts >= 5)
@@ -319,7 +315,7 @@ function installRendererPanProxy(owner) {
319
315
  sendToParent({ type: "app-interaction-modifier", protocolVersion: PROTOCOL_VERSION, held, ...identity });
320
316
  }
321
317
  const onKeyDown = (event) => {
322
- if (!ownsRendererBootstrap(owner))
318
+ if (!ownsRendererBootstrap(owner) || isInspectorUiEvent(event))
323
319
  return;
324
320
  if (event.code === APP_INTERACTION_KEY && !event.repeat && !isEditableTarget(event.target))
325
321
  sendAppInteractionModifier(true);
@@ -354,8 +350,7 @@ function installRendererPanProxy(owner) {
354
350
  panMoveUpdate.cancel();
355
351
  return;
356
352
  }
357
- // Pointer-up can arrive before the next animation frame. Deliver the
358
- // latest point before pan-end so the final drag position is not lost.
353
+ // Pointer-up can arrive before the next frame; flush the latest point so the final position is not lost.
359
354
  panMoveUpdate.flush();
360
355
  panning = false;
361
356
  const identity = getRendererIdentity();
@@ -3,9 +3,4 @@ export declare const RENDERER_ELEMENT_ID_ATTR = "data-renderer-id";
3
3
  export interface CidIndex {
4
4
  elementId(el: HTMLElement): string;
5
5
  }
6
- /**
7
- * Retains the historical factory name while replacing positional indexes with
8
- * node identities. IDs are attached to the actual DOM node, so reorders and
9
- * sibling insertions cannot redirect a delayed controller message.
10
- */
11
6
  export declare function createCidIndex(_doc: Document): CidIndex;
@@ -1,10 +1,5 @@
1
1
  /** Renderer-owned identity that survives DOM reorders for the lifetime of a node. */
2
2
  export const RENDERER_ELEMENT_ID_ATTR = "data-renderer-id";
3
- /**
4
- * Retains the historical factory name while replacing positional indexes with
5
- * node identities. IDs are attached to the actual DOM node, so reorders and
6
- * sibling insertions cannot redirect a delayed controller message.
7
- */
8
3
  export function createCidIndex(_doc) {
9
4
  let nextId = 1;
10
5
  const ids = new WeakMap();