nudge-ui 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +4 -29
  3. package/dist/client.mjs +987 -221
  4. package/dist/compiler/ast.d.ts +0 -6
  5. package/dist/compiler/ast.js +0 -5
  6. package/dist/compiler/componentContractTypes.d.ts +11 -5
  7. package/dist/compiler/componentContracts.js +3 -9
  8. package/dist/compiler/componentInstrumentation.d.ts +2 -13
  9. package/dist/compiler/componentInstrumentation.js +3 -12
  10. package/dist/compiler/componentPolicyResolution.d.ts +3 -22
  11. package/dist/compiler/componentPolicyResolution.js +6 -38
  12. package/dist/compiler/identityAttributes.d.ts +2 -0
  13. package/dist/compiler/identityAttributes.js +2 -0
  14. package/dist/compiler/index.d.ts +0 -1
  15. package/dist/compiler/index.js +0 -1
  16. package/dist/compiler/packageComponentContracts.d.ts +10 -19
  17. package/dist/compiler/packageComponentContracts.js +60 -43
  18. package/dist/compiler/reactComponentProtocols.d.ts +0 -7
  19. package/dist/compiler/reactComponentProtocols.js +0 -7
  20. package/dist/compiler/reactIdentity.d.ts +2 -2
  21. package/dist/compiler/reactIdentity.js +41 -43
  22. package/dist/compiler/sourcePaths.d.ts +4 -8
  23. package/dist/compiler/sourcePaths.js +6 -8
  24. package/dist/css/dialects/index.d.ts +2 -21
  25. package/dist/css/dialects/index.js +2 -9
  26. package/dist/css/dialects/tailwind.d.ts +2 -16
  27. package/dist/css/dialects/tailwind.js +2 -25
  28. package/dist/css/dialects/vanillaExtract.d.ts +1 -9
  29. package/dist/css/dialects/vanillaExtract.js +0 -1
  30. package/dist/css/index.d.ts +0 -8
  31. package/dist/css/index.js +0 -8
  32. package/dist/css/model/index.d.ts +6 -38
  33. package/dist/css/model/index.js +0 -9
  34. package/dist/css/token-inventory/index.d.ts +0 -23
  35. package/dist/css/token-inventory/index.js +0 -23
  36. package/dist/css/token-inventory/inventory.js +4 -16
  37. package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
  38. package/dist/css/token-inventory/parseStylesheet.js +5 -42
  39. package/dist/css/token-inventory/policy.d.ts +2 -39
  40. package/dist/css/token-inventory/policy.js +2 -39
  41. package/dist/css/token-inventory/types.d.ts +2 -15
  42. package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
  43. package/dist/css/value-semantics/borderSemantics.js +5 -23
  44. package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
  45. package/dist/css/value-semantics/boxSemantics.js +1 -7
  46. package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
  47. package/dist/css/value-semantics/colorSemantics.js +9 -40
  48. package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
  49. package/dist/css/value-semantics/cssSyntax.js +39 -11
  50. package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
  51. package/dist/css/value-semantics/fontSemantics.js +7 -25
  52. package/dist/css/value-semantics/index.d.ts +1 -12
  53. package/dist/css/value-semantics/index.js +1 -12
  54. package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
  55. package/dist/css/value-semantics/propertyPolicy.js +47 -59
  56. package/dist/css/value-semantics/stringMaps.d.ts +0 -1
  57. package/dist/css/value-semantics/structuredValues.d.ts +3 -37
  58. package/dist/css/value-semantics/structuredValues.js +6 -17
  59. package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
  60. package/dist/css/value-semantics/tokenInterpretation.js +7 -21
  61. package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
  62. package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
  63. package/dist/hosts/astro/clientAsset.d.ts +1 -5
  64. package/dist/hosts/astro/clientAsset.js +1 -5
  65. package/dist/hosts/astro/clientTransport.d.ts +0 -1
  66. package/dist/hosts/astro/clientTransport.js +4 -9
  67. package/dist/hosts/astro/integration.d.ts +2 -28
  68. package/dist/hosts/astro/integration.js +7 -36
  69. package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
  70. package/dist/hosts/astro/markdownIdentity.js +0 -3
  71. package/dist/hosts/astro/middleware.d.ts +1 -12
  72. package/dist/hosts/astro/middleware.js +1 -12
  73. package/dist/hosts/astro/projectContext.d.ts +1 -9
  74. package/dist/hosts/astro/projectContext.js +2 -11
  75. package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
  76. package/dist/hosts/astro/responseInstrumentation.js +5 -34
  77. package/dist/hosts/environment.d.ts +0 -8
  78. package/dist/hosts/environment.js +0 -1
  79. package/dist/hosts/next/index.js +1 -3
  80. package/dist/hosts/next/loader.d.ts +5 -44
  81. package/dist/hosts/next/loader.js +22 -103
  82. package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
  83. package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
  84. package/dist/hosts/next/manifest.d.ts +2 -16
  85. package/dist/hosts/next/manifest.js +18 -20
  86. package/dist/hosts/next/mount.d.ts +1 -11
  87. package/dist/hosts/next/mount.js +1 -11
  88. package/dist/hosts/next/repositoryScope.d.ts +2 -17
  89. package/dist/hosts/next/repositoryScope.js +2 -17
  90. package/dist/hosts/next/sidecar.d.ts +0 -13
  91. package/dist/hosts/next/sidecar.js +25 -110
  92. package/dist/hosts/next/wrapper.d.ts +0 -31
  93. package/dist/hosts/next/wrapper.js +14 -71
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +3 -19
  96. package/dist/hosts/reactRendererCapture.d.ts +2 -0
  97. package/dist/hosts/reactRendererCapture.js +12 -0
  98. package/dist/hosts/static/cli.d.ts +0 -4
  99. package/dist/hosts/static/cli.js +0 -3
  100. package/dist/hosts/static/html/bootstrap.d.ts +1 -18
  101. package/dist/hosts/static/html/bootstrap.js +2 -14
  102. package/dist/hosts/static/manifest.d.ts +2 -15
  103. package/dist/hosts/static/manifest.js +5 -18
  104. package/dist/hosts/static/server.d.ts +4 -38
  105. package/dist/hosts/static/server.js +17 -67
  106. package/dist/hosts/vite/index.d.ts +0 -10
  107. package/dist/hosts/vite/index.js +0 -10
  108. package/dist/hosts/vite/react.d.ts +4 -17
  109. package/dist/hosts/vite/react.js +18 -35
  110. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
  111. package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
  112. package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
  113. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
  114. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
  115. package/dist/hosts/vite/vite.d.ts +5 -26
  116. package/dist/hosts/vite/vite.js +44 -80
  117. package/dist/html/dom.d.ts +0 -1
  118. package/dist/html/dom.js +0 -1
  119. package/dist/html/identity.d.ts +1 -15
  120. package/dist/html/identity.js +1 -8
  121. package/dist/html/insertions.d.ts +2 -8
  122. package/dist/html/insertions.js +1 -1
  123. package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
  124. package/dist/inspector/agent/McpConnectionDialog.js +8 -9
  125. package/dist/inspector/agent/activity.d.ts +2 -2
  126. package/dist/inspector/agent/activity.js +4 -3
  127. package/dist/inspector/agent/client.d.ts +3 -27
  128. package/dist/inspector/agent/client.js +43 -91
  129. package/dist/inspector/agent/connectionStatus.d.ts +3 -2
  130. package/dist/inspector/agent/connectionStatus.js +25 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +42 -176
  133. package/dist/inspector/agent/protocol.d.ts +1 -10
  134. package/dist/inspector/agent/protocol.js +1 -9
  135. package/dist/inspector/agent/verification.d.ts +3 -20
  136. package/dist/inspector/agent/verification.js +10 -43
  137. package/dist/inspector/boot.d.ts +5 -0
  138. package/dist/inspector/boot.js +289 -0
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
  141. package/dist/inspector/canvas/CanvasCard.js +26 -24
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
  143. package/dist/inspector/canvas/CanvasToolbar.js +2 -1
  144. package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
  145. package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
  146. package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
  147. package/dist/inspector/canvas/PageCard.d.ts +9 -0
  148. package/dist/inspector/canvas/PageCard.js +50 -0
  149. package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
  150. package/dist/inspector/canvas/SketchToolOptions.js +80 -0
  151. package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
  152. package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
  153. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
  154. package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
  155. package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
  156. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  157. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  158. package/dist/inspector/canvas/agentPresentation.js +3 -14
  159. package/dist/inspector/canvas/assets/eraser.svg +28 -0
  160. package/dist/inspector/canvas/assets/pen.svg +25 -0
  161. package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
  162. package/dist/inspector/canvas/canvasFrame.js +9 -0
  163. package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
  164. package/dist/inspector/canvas/canvasGestures.js +0 -6
  165. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  166. package/dist/inspector/canvas/canvasResize.js +1 -6
  167. package/dist/inspector/canvas/canvasStore.d.ts +5 -7
  168. package/dist/inspector/canvas/canvasStore.js +42 -21
  169. package/dist/inspector/canvas/frameConnection.d.ts +42 -0
  170. package/dist/inspector/canvas/frameConnection.js +73 -0
  171. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  172. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  173. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  174. package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
  175. package/dist/inspector/canvas/frameProtocol.js +37 -24
  176. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  177. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  178. package/dist/inspector/canvas/layout.d.ts +10 -22
  179. package/dist/inspector/canvas/layout.js +0 -3
  180. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  181. package/dist/inspector/canvas/pageSurface.d.ts +6 -0
  182. package/dist/inspector/canvas/pageSurface.js +29 -0
  183. package/dist/inspector/canvas/projection.d.ts +14 -25
  184. package/dist/inspector/canvas/projection.js +64 -87
  185. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  186. package/dist/inspector/canvas/rendererBootstrap.js +10 -15
  187. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  188. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  189. package/dist/inspector/canvas/rendererElementSelector.js +38 -28
  190. package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
  191. package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
  192. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
  193. package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
  194. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  195. package/dist/inspector/canvas/rendererStylesheet.js +23 -1
  196. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  197. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  198. package/dist/inspector/canvas/sessionStore.d.ts +3 -9
  199. package/dist/inspector/canvas/sessionStore.js +33 -43
  200. package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
  201. package/dist/inspector/canvas/staleChangeDetector.js +11 -26
  202. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  203. package/dist/inspector/canvas/toolbarScale.js +1 -4
  204. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  205. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  206. package/dist/inspector/canvas/viewStore.js +1 -1
  207. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  208. package/dist/inspector/canvas/wheelPan.js +1 -1
  209. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  210. package/dist/inspector/canvas/workspaceLease.js +1 -7
  211. package/dist/inspector/changes/codecs.d.ts +1 -0
  212. package/dist/inspector/changes/codecs.js +21 -5
  213. package/dist/inspector/changes/draftPreview.d.ts +7 -0
  214. package/dist/inspector/changes/draftPreview.js +118 -0
  215. package/dist/inspector/changes/editModel.d.ts +11 -13
  216. package/dist/inspector/changes/editModel.js +9 -4
  217. package/dist/inspector/changes/managedStyleProjection.js +6 -15
  218. package/dist/inspector/changes/model.d.ts +0 -5
  219. package/dist/inspector/changes/model.js +1 -8
  220. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  221. package/dist/inspector/changes/previewDiagnostics.js +5 -21
  222. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  223. package/dist/inspector/changes/previewVerification.js +34 -0
  224. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  225. package/dist/inspector/changes/types.d.ts +11 -8
  226. package/dist/inspector/clientManifest.d.ts +17 -6
  227. package/dist/inspector/clientManifest.js +16 -3
  228. package/dist/inspector/comments/CommentsOverlay.js +66 -23
  229. package/dist/inspector/comments/element.d.ts +1 -2
  230. package/dist/inspector/comments/element.js +1 -2
  231. package/dist/inspector/comments/store.d.ts +1 -1
  232. package/dist/inspector/comments/store.js +4 -3
  233. package/dist/inspector/comments/verification.d.ts +8 -2
  234. package/dist/inspector/comments/verification.js +19 -11
  235. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  236. package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
  237. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  238. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  239. package/dist/inspector/componentSemantics/changeAction.js +1 -1
  240. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  241. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  242. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  243. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  244. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  245. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  246. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  247. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  248. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  249. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  250. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  251. package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
  252. package/dist/inspector/componentSemantics/textBinding.js +20 -87
  253. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  254. package/dist/inspector/componentSemantics/types.js +0 -1
  255. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  256. package/dist/inspector/conformance/borderCases.js +0 -5
  257. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  258. package/dist/inspector/conformance/colorCases.js +0 -6
  259. package/dist/inspector/conformance/fixture.d.ts +1 -5
  260. package/dist/inspector/conformance/fixture.js +1 -5
  261. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  262. package/dist/inspector/conformance/spacingCases.js +0 -4
  263. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  264. package/dist/inspector/conformance/typographyCases.js +0 -5
  265. package/dist/inspector/drafts/draftStore.d.ts +95 -0
  266. package/dist/inspector/drafts/draftStore.js +461 -0
  267. package/dist/inspector/drafts/model.d.ts +14 -14
  268. package/dist/inspector/drafts/model.js +4 -2
  269. package/dist/inspector/drafts/store.d.ts +47 -16
  270. package/dist/inspector/drafts/store.js +137 -170
  271. package/dist/inspector/editScope.d.ts +0 -1
  272. package/dist/inspector/editScope.js +0 -1
  273. package/dist/inspector/index.d.ts +2 -4
  274. package/dist/inspector/index.js +2 -264
  275. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  276. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  277. package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
  278. package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
  279. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  280. package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
  281. package/dist/inspector/inspection/bridge.d.ts +3 -7
  282. package/dist/inspector/inspection/bridge.js +6 -13
  283. package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
  284. package/dist/inspector/inspection/browserCssInspection.js +32 -14
  285. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  286. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  287. package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
  288. package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
  289. package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
  290. package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
  291. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  292. package/dist/inspector/inspection/selectionProperty.js +1 -5
  293. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  294. package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
  295. package/dist/inspector/iterations/capture.d.ts +2 -2
  296. package/dist/inspector/iterations/capture.js +4 -9
  297. package/dist/inspector/iterations/client.d.ts +2 -2
  298. package/dist/inspector/iterations/client.js +0 -1
  299. package/dist/inspector/iterations/coordinator.d.ts +4 -4
  300. package/dist/inspector/iterations/coordinator.js +5 -4
  301. package/dist/inspector/iterations/prompt.d.ts +0 -1
  302. package/dist/inspector/iterations/prompt.js +9 -9
  303. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  304. package/dist/inspector/overlay/DomNavigator.js +39 -15
  305. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  306. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  307. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  308. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  309. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  310. package/dist/inspector/overlay/clickPolicy.js +3 -14
  311. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  312. package/dist/inspector/overlay/dropGuide.js +0 -3
  313. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  314. package/dist/inspector/overlay/frameThrottle.js +0 -1
  315. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  316. package/dist/inspector/overlay/interactionStyles.js +19 -8
  317. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  318. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  319. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  320. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  321. package/dist/inspector/overlay/spacingGestures.js +151 -31
  322. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  323. package/dist/inspector/overlay/structuralGestures.js +1 -4
  324. package/dist/inspector/pageInspector.d.ts +33 -0
  325. package/dist/inspector/pageInspector.js +335 -0
  326. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  327. package/dist/inspector/projection/cssEscapes.js +2 -4
  328. package/dist/inspector/projection/draftProjection.d.ts +6 -10
  329. package/dist/inspector/projection/draftProjection.js +8 -7
  330. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  331. package/dist/inspector/projection/managedStylesheet.js +28 -26
  332. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  333. package/dist/inspector/projection/renderedInstance.js +13 -33
  334. package/dist/inspector/projection/structuralProjection.d.ts +7 -48
  335. package/dist/inspector/projection/structuralProjection.js +31 -96
  336. package/dist/inspector/projection/textProjection.d.ts +7 -13
  337. package/dist/inspector/projection/textProjection.js +35 -80
  338. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  339. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  340. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
  341. package/dist/inspector/prompt/clipboardHandoff.js +34 -16
  342. package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
  343. package/dist/inspector/prompt/generatePrompt.js +247 -166
  344. package/dist/inspector/prompt/promptDocument.d.ts +3 -0
  345. package/dist/inspector/prompt/promptDocument.js +8 -0
  346. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  347. package/dist/inspector/prompt/promptSettings.js +7 -8
  348. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  349. package/dist/inspector/runtime/devFlag.js +4 -31
  350. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  351. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  352. package/dist/inspector/runtime/editorShell.js +0 -1
  353. package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
  354. package/dist/inspector/runtime/inspectorStorage.js +37 -0
  355. package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
  356. package/dist/inspector/runtime/ownedStylesheets.js +66 -0
  357. package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
  358. package/dist/inspector/runtime/runtimeConfig.js +18 -50
  359. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
  360. package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
  361. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
  362. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
  363. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  364. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  365. package/dist/inspector/selection/editScope.d.ts +2 -7
  366. package/dist/inspector/selection/editScope.js +15 -14
  367. package/dist/inspector/selection/editTarget.d.ts +1 -5
  368. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  369. package/dist/inspector/selection/hierarchy.js +42 -24
  370. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  371. package/dist/inspector/selection/selectionStore.js +5 -16
  372. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  373. package/dist/inspector/selection/sourceSite.js +2 -8
  374. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  375. package/dist/inspector/selection/styleSelection.js +1 -5
  376. package/dist/inspector/session/lifecycle.d.ts +1 -9
  377. package/dist/inspector/session/lifecycle.js +0 -1
  378. package/dist/inspector/session/sessionContext.d.ts +0 -4
  379. package/dist/inspector/session/sessionContext.js +0 -4
  380. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  381. package/dist/inspector/session/sessionFactory.js +0 -6
  382. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  383. package/dist/inspector/settings/SettingsDialog.js +5 -3
  384. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  385. package/dist/inspector/shell/AgentStatusButton.js +7 -7
  386. package/dist/inspector/shell/AppShell.js +6 -2
  387. package/dist/inspector/shell/ChangesLog.js +29 -12
  388. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  389. package/dist/inspector/shell/CopyPromptButton.js +62 -55
  390. package/dist/inspector/shell/EmptyState.js +3 -3
  391. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  392. package/dist/inspector/shell/InspectorEditors.js +14 -0
  393. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  394. package/dist/inspector/shell/InspectorPanel.js +8 -0
  395. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  396. package/dist/inspector/shell/InspectorSelection.js +20 -0
  397. package/dist/inspector/shell/InspectorShell.d.ts +0 -3
  398. package/dist/inspector/shell/InspectorShell.js +44 -58
  399. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  400. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  401. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  402. package/dist/inspector/shell/PeekOriginalButton.js +3 -8
  403. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  404. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  405. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  406. package/dist/inspector/shell/PromptActionButton.js +14 -0
  407. package/dist/inspector/shell/elementName.d.ts +5 -0
  408. package/dist/inspector/shell/elementName.js +29 -0
  409. package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
  410. package/dist/inspector/shell/interactionStatePreview.js +107 -0
  411. package/dist/inspector/shell/originalPreview.d.ts +1 -5
  412. package/dist/inspector/shell/originalPreview.js +5 -37
  413. package/dist/inspector/shell/stateValue.d.ts +1 -2
  414. package/dist/inspector/shell/stateValue.js +4 -8
  415. package/dist/inspector/shell/styleState.d.ts +1 -2
  416. package/dist/inspector/shell/styleState.js +1 -2
  417. package/dist/inspector/sketch/SketchEditor.js +5 -5
  418. package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
  419. package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
  420. package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
  421. package/dist/inspector/sketch/SketchOverlay.js +138 -263
  422. package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
  423. package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
  424. package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
  425. package/dist/inspector/sketch/SketchThumbnail.js +18 -0
  426. package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
  427. package/dist/inspector/sketch/SketchWorkspace.js +70 -37
  428. package/dist/inspector/sketch/capture.d.ts +12 -3
  429. package/dist/inspector/sketch/capture.js +31 -14
  430. package/dist/inspector/sketch/copySketch.d.ts +4 -0
  431. package/dist/inspector/sketch/copySketch.js +43 -0
  432. package/dist/inspector/sketch/drawingTools.d.ts +15 -0
  433. package/dist/inspector/sketch/drawingTools.js +46 -0
  434. package/dist/inspector/sketch/frameHeading.d.ts +3 -0
  435. package/dist/inspector/sketch/frameHeading.js +23 -0
  436. package/dist/inspector/sketch/freehand.d.ts +0 -1
  437. package/dist/inspector/sketch/freehand.js +3 -4
  438. package/dist/inspector/sketch/geometry.d.ts +2 -1
  439. package/dist/inspector/sketch/geometry.js +15 -1
  440. package/dist/inspector/sketch/handoff.js +0 -1
  441. package/dist/inspector/sketch/history.d.ts +26 -0
  442. package/dist/inspector/sketch/history.js +55 -0
  443. package/dist/inspector/sketch/interaction.d.ts +3 -5
  444. package/dist/inspector/sketch/interaction.js +8 -11
  445. package/dist/inspector/sketch/model.d.ts +33 -6
  446. package/dist/inspector/sketch/model.js +101 -63
  447. package/dist/inspector/sketch/persistence.d.ts +14 -1
  448. package/dist/inspector/sketch/persistence.js +64 -8
  449. package/dist/inspector/sketch/raster.d.ts +3 -2
  450. package/dist/inspector/sketch/raster.js +40 -20
  451. package/dist/inspector/sketch/store.d.ts +1 -1
  452. package/dist/inspector/sketch/store.js +3 -4
  453. package/dist/inspector/sketch/videoFrames.d.ts +6 -0
  454. package/dist/inspector/sketch/videoFrames.js +80 -0
  455. package/dist/inspector/spacing/projection.d.ts +0 -8
  456. package/dist/inspector/spacing/projection.js +38 -20
  457. package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
  458. package/dist/inspector/styleEditors/BorderEditor.js +30 -135
  459. package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
  460. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  461. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  462. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  463. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  464. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  465. package/dist/inspector/styleEditors/GapField.js +3 -4
  466. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  467. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  468. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  469. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  470. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  471. package/dist/inspector/styleEditors/GridSection.js +22 -9
  472. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  473. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  474. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  475. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
  476. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  477. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  478. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  479. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  480. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  481. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  482. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  483. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  484. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  485. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  486. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  487. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  488. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  489. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  490. package/dist/inspector/styleEditors/Typography.js +2 -4
  491. package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
  492. package/dist/inspector/styleEditors/borderModel.js +105 -0
  493. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  494. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  495. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  496. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  497. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  498. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  499. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  500. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  501. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  502. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  503. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  504. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  505. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  506. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  507. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  508. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  509. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  510. package/dist/inspector/styleEditors/layoutValue.js +6 -15
  511. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  512. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  513. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  514. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  515. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  516. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  517. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  518. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  519. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  520. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  521. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  522. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  523. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  524. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  525. package/dist/inspector/testing.d.ts +1 -4
  526. package/dist/inspector/testing.js +1 -4
  527. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  528. package/dist/inspector/tokens/TokenChip.js +1 -4
  529. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  530. package/dist/inspector/tokens/TokenField.js +53 -32
  531. package/dist/inspector/tokens/TokensPanel.js +2 -1
  532. package/dist/inspector/tokens/catalog.d.ts +2 -10
  533. package/dist/inspector/tokens/catalog.js +5 -12
  534. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  535. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  536. package/dist/inspector/tokens/editActions.d.ts +4 -4
  537. package/dist/inspector/tokens/editActions.js +11 -7
  538. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  539. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  540. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
  541. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
  542. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  543. package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
  544. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
  545. package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
  546. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  547. package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
  548. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  549. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  550. package/dist/inspector/tokens/resolution.d.ts +11 -27
  551. package/dist/inspector/tokens/resolution.js +105 -181
  552. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  553. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  554. package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
  555. package/dist/inspector/tokens/tokenEdits.js +1 -1
  556. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  557. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  558. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  559. package/dist/inspector/ui/AtRuleContext.js +8 -6
  560. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  561. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  562. package/dist/inspector/ui/Disclosure.js +0 -4
  563. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  564. package/dist/inspector/ui/InlineStyleWarning.js +2 -2
  565. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  566. package/dist/inspector/ui/InspectorPopover.js +1 -5
  567. package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
  568. package/dist/inspector/ui/InspectorStyle.js +26 -0
  569. package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
  570. package/dist/inspector/ui/PopoverListbox.js +3 -3
  571. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  572. package/dist/inspector/ui/SegmentedControl.js +6 -4
  573. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  574. package/dist/inspector/ui/SideValuesField.js +2 -8
  575. package/dist/inspector/ui/Toast.d.ts +10 -0
  576. package/dist/inspector/ui/Toast.js +26 -0
  577. package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
  578. package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
  579. package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
  580. package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
  581. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  582. package/dist/inspector/ui/atRuleSegments.js +34 -0
  583. package/dist/inspector/ui/classNames.d.ts +0 -1
  584. package/dist/inspector/ui/classNames.js +0 -1
  585. package/dist/inspector/ui/customCursors.d.ts +11 -0
  586. package/dist/inspector/ui/customCursors.js +29 -7
  587. package/dist/inspector/ui/styles.js +25 -25
  588. package/dist/inspector/workspace/commands.js +1 -2
  589. package/dist/inspector/workspace/controller.js +20 -2
  590. package/dist/inspector/workspace/handoff.d.ts +1 -5
  591. package/dist/inspector/workspace/handoff.js +4 -7
  592. package/dist/inspector/workspace/sentItems.d.ts +3 -6
  593. package/dist/inspector/workspace/sentItems.js +6 -24
  594. package/dist/inspector/workspace/timeline.d.ts +28 -11
  595. package/dist/inspector/workspace/timeline.js +117 -96
  596. package/dist/internal/agent-protocol.d.ts +53 -38
  597. package/dist/internal/agent-protocol.js +151 -42
  598. package/dist/nudge-ui.mjs +155 -92
  599. package/dist/project/artifacts.js +24 -21
  600. package/dist/project/files.d.ts +0 -1
  601. package/dist/project/files.js +2 -9
  602. package/dist/project/identity.d.ts +1 -5
  603. package/dist/project/identity.js +1 -5
  604. package/dist/project/mcpPackage.d.ts +3 -0
  605. package/dist/project/mcpPackage.js +55 -0
  606. package/dist/project/pathPolicy.d.ts +1 -6
  607. package/dist/project/pathPolicy.js +1 -6
  608. package/dist/project/tokens.d.ts +2 -12
  609. package/dist/project/tokens.js +4 -15
  610. package/dist/transport/editor.d.ts +1 -12
  611. package/dist/transport/editor.js +2 -13
  612. package/dist/transport/index.d.ts +0 -5
  613. package/dist/transport/index.js +0 -5
  614. package/dist/transport/routes.d.ts +0 -5
  615. package/dist/transport/routes.js +0 -5
  616. package/package.json +16 -5
  617. package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
  618. package/dist/inspector/canvas/measurementProjection.js +0 -16
  619. package/dist/inspector/changes/changesLog.d.ts +0 -49
  620. package/dist/inspector/changes/changesLog.js +0 -255
  621. package/dist/inspector/changes/draftChanges.d.ts +0 -58
  622. package/dist/inspector/changes/draftChanges.js +0 -304
  623. package/dist/inspector/conformance/projection.d.ts +0 -2
  624. package/dist/inspector/conformance/projection.js +0 -3
  625. package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
  626. package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
  627. package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
  628. package/dist/inspector/overlay/InspectorOverlay.js +0 -332
  629. package/dist/inspector/overlay/elementSelector.d.ts +0 -1
  630. package/dist/inspector/overlay/elementSelector.js +0 -111
  631. package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
  632. package/dist/inspector/sketch/SketchChanges.js +0 -72
  633. package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
  634. package/dist/inspector/sketch/SketchEntryButton.js +0 -11
  635. package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
  636. package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
  637. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  638. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  639. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  640. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  641. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  642. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -1,10 +1,9 @@
1
- import { iterationId, contentSourceUrl, contentEditTarget } from "./frameContent.js";
2
- import { recordCanvasChange, discardCanvasHistory, isDraftLocked, forgetDraft } from "../changes/draftChanges.js";
3
- import { targetKey } from "../drafts/model.js";
1
+ import { iterationId, contentSourceUrl } from "./frameContent.js";
2
+ import { frameLifecycle } from "./frameLifecycle.js";
3
+ import { recordCanvasChange, discardCanvasHistory } from "../workspace/timeline.js";
4
4
  import { useSyncExternalStore } from "react";
5
5
  import { DEFAULT_CAMERA, getBoardCamera, placeBoardCamera, restoreCanvasView, setCanvasMode, } from "./viewStore.js";
6
6
  import { normalizeUrl, normalizedUrlKey } from "./normalizeUrl.js";
7
- import { removeHtmlArtifact } from "../iterations/client.js";
8
7
  import { applyLayoutShifts, boundsOf, centerCamera, fitCamera, layoutShifts, nextCardPosition, pushOverlappingCards, reinsertInRecordedOrder, iterationPosition, } from "./layout.js";
9
8
  const frameGroups = new Map();
10
9
  export function setFrameGroup(group) { frameGroups.set(group.id, group); }
@@ -75,7 +74,7 @@ function notify() {
75
74
  }
76
75
  listeners.forEach((l) => l());
77
76
  }
78
- /** Adds one card while retaining the existing placement policy. */
77
+ /** Adds one card to the end of the row. */
79
78
  export function addCanvasCard(url, title) {
80
79
  const before = cards;
81
80
  const size = lastUsedCardSize ?? defaultViewportSize();
@@ -139,8 +138,7 @@ function recordCreation(before, created) {
139
138
  const shifts = layoutShifts(before, cards);
140
139
  const restore = (redo) => {
141
140
  if (!redo) {
142
- // Direct creation drags finish placement after the creation was recorded.
143
- // Redo must recover the dropped position, dimensions, and loaded title.
141
+ // Direct creation drags finish placement after recording, so redo must recover the dropped geometry and title.
144
142
  for (const [index, recorded] of after.entries()) {
145
143
  const current = createdIds.has(recorded.id) && cards.find((card) => card.id === recorded.id);
146
144
  if (current)
@@ -183,14 +181,11 @@ function selectFallbackAfterRemoval(removedIds) {
183
181
  if (removedIds.has(focusedCardId ?? ""))
184
182
  focusedCardId = fallbackId;
185
183
  }
186
- function releaseUnusedIteration(card) {
187
- const artifactId = iterationId(card.content);
188
- if (!artifactId || cards.some((candidate) => iterationId(candidate.content) === artifactId))
184
+ /** Reports removed iteration content; the drafts/artifacts owner decides what to release. */
185
+ function releaseUnusedIteration(card, remaining = cards) {
186
+ if (!iterationId(card.content))
189
187
  return;
190
- forgetDraft(targetKey(contentEditTarget(card.content)));
191
- void removeHtmlArtifact(artifactId).catch((error) => {
192
- console.warn("Nudge UI could not remove an unused HTML iteration:", error);
193
- });
188
+ frameLifecycle().release(card.content, remaining.map((candidate) => candidate.content));
194
189
  }
195
190
  function recordRemoval(before, removed) {
196
191
  let snapshot = removed;
@@ -215,7 +210,7 @@ function recordRemoval(before, removed) {
215
210
  });
216
211
  }
217
212
  export function removeCanvasCard(id, { undoable = false } = {}) {
218
- if (isDraftLocked())
213
+ if (!frameLifecycle().canEdit())
219
214
  return;
220
215
  const removed = cards.find((card) => card.id === id);
221
216
  if (!removed)
@@ -231,10 +226,7 @@ export function removeCanvasCard(id, { undoable = false } = {}) {
231
226
  if (!undoable)
232
227
  releaseUnusedIteration(removed);
233
228
  }
234
- /**
235
- * Opens one editor target in the iframe workspace without replacing restored
236
- * cards or their dimensions.
237
- */
229
+ /** Opens one editor target without replacing restored cards or their dimensions. */
238
230
  export function activateIframeWorkspace(url, viewport, options = {}) {
239
231
  const normalized = normalizeUrl(url);
240
232
  if (!normalized || normalized.origin !== window.location.origin)
@@ -368,7 +360,7 @@ export function fitAllCards(viewport) {
368
360
  return;
369
361
  placeBoardCamera(fitCamera(bounds, viewport ?? windowViewport(), FIT_ALL_PADDING) ?? DEFAULT_CAMERA);
370
362
  }
371
- /** Centers a selected set of cards without changing the current zoom. */
363
+ /** Centers the cards without changing the current zoom. */
372
364
  export function focusCanvasCards(cardIds, viewport) {
373
365
  const bounds = selectedBounds(cardIds);
374
366
  if (!bounds)
@@ -424,6 +416,36 @@ export function setCardPosition(id, x, y) {
424
416
  cards = cards.map((c) => (c.id === id ? { ...c, x, y } : c));
425
417
  notify();
426
418
  }
419
+ function cardGeometry(id) {
420
+ const card = cards.find((candidate) => candidate.id === id);
421
+ return card ? { x: card.x, y: card.y, width: card.width, height: card.height } : null;
422
+ }
423
+ /** The returned commit records the whole gesture as one undo step; programmatic placement stays out of history. */
424
+ export function beginCardGeometryChange(id) {
425
+ const before = cardGeometry(id);
426
+ let committed = false;
427
+ return () => {
428
+ if (committed || !before)
429
+ return;
430
+ committed = true;
431
+ const after = cardGeometry(id);
432
+ if (!after || (after.x === before.x && after.y === before.y && after.width === before.width && after.height === before.height))
433
+ return;
434
+ const restore = (geometry) => {
435
+ if (!cards.some((card) => card.id === id))
436
+ return;
437
+ cards = cards.map((card) => card.id === id ? { ...card, ...geometry } : card);
438
+ selectCard(id);
439
+ activateHistoryCard(id);
440
+ };
441
+ recordCanvasChange({
442
+ cardIds: [id],
443
+ undo: () => restore(before),
444
+ redo: () => restore(after),
445
+ dispose: () => undefined,
446
+ });
447
+ };
448
+ }
427
449
  export function hydrateCanvasStore(newMode, newCards, newCamera, restoredFocusedCardId = null, restoredPresentation = "focus", restoredGroups = []) {
428
450
  frameGroups.clear();
429
451
  for (const group of restoredGroups)
@@ -469,7 +491,6 @@ function frameRoute(card) {
469
491
  label: normalized.pathname,
470
492
  };
471
493
  }
472
- /** Returns a route-based label that distinguishes copies and HTML iterations. */
473
494
  export function getCanvasCardLabel(card, frameCards = cards) {
474
495
  const route = frameRoute(card);
475
496
  const candidates = frameCards.some((candidate) => candidate.id === card.id) ? frameCards : [...frameCards, card];
@@ -0,0 +1,42 @@
1
+ import type { CanvasFrame } from "./canvasFrame.js";
2
+ import type { Rect } from "../overlay/overlayGeometry.js";
3
+ import { type ControllerToRendererMessage, type FrameIdentity } from "./frameProtocol.js";
4
+ export declare const PROJECT_ID: string;
5
+ export declare const WORKSPACE_ID: string;
6
+ export interface FramePoint {
7
+ readonly x: number;
8
+ readonly y: number;
9
+ }
10
+ /** Measured, not read from the camera: correct on the board, in focus view, and mid-transition. */
11
+ export interface FrameViewport extends Readonly<Rect> {
12
+ readonly scale: number;
13
+ }
14
+ export interface RendererElementRef {
15
+ readonly elementId: string;
16
+ readonly cid: string;
17
+ readonly src: string;
18
+ }
19
+ type Envelope = "protocolVersion" | "projectId" | "workspaceId" | "cardId";
20
+ type WithoutEnvelope<T> = T extends unknown ? Omit<T, Envelope> : never;
21
+ export type ControllerMessageBody = WithoutEnvelope<ControllerToRendererMessage>;
22
+ export interface FrameConnection {
23
+ readonly cardId: string;
24
+ readonly iframe: CanvasFrame;
25
+ readonly identity: FrameIdentity;
26
+ /** The renderer's document; null while the frame navigates or blocks access. */
27
+ document(): Document | null;
28
+ /** Null unless exactly one element carries the renderer ID and its source identity still matches. */
29
+ element(ref: RendererElementRef): HTMLElement | null;
30
+ viewport(): FrameViewport;
31
+ post(message: ControllerMessageBody): void;
32
+ }
33
+ export declare function measureFrameViewport(iframe: CanvasFrame): FrameViewport;
34
+ export declare function toViewportPoint(viewport: FrameViewport, point: FramePoint): FramePoint;
35
+ /** Pass `false` for an axis whose size is a guide thickness in controller pixels. */
36
+ export declare function toViewportRect(viewport: FrameViewport, rect: Rect, scaleSize?: {
37
+ readonly width: boolean;
38
+ readonly height: boolean;
39
+ }): Rect;
40
+ export declare function findRendererElement(doc: Document | null, ref: RendererElementRef): HTMLElement | null;
41
+ export declare function connectFrame(cardId: string, iframe: CanvasFrame): FrameConnection;
42
+ export {};
@@ -0,0 +1,73 @@
1
+ import { PROTOCOL_VERSION, } from "./frameProtocol.js";
2
+ import { RENDERER_ELEMENT_ID_ATTR } from "./rendererCidIndex.js";
3
+ export const PROJECT_ID = typeof window !== "undefined" && window.location?.origin
4
+ ? window.location.origin
5
+ : "";
6
+ export const WORKSPACE_ID = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
7
+ ? crypto.randomUUID()
8
+ : `ws-${Date.now()}`;
9
+ const RENDERER_ELEMENT_ID = /^r\d+$/;
10
+ const connections = new WeakMap();
11
+ export function measureFrameViewport(iframe) {
12
+ const rect = iframe.getBoundingClientRect();
13
+ return {
14
+ left: rect.left,
15
+ top: rect.top,
16
+ width: rect.width,
17
+ height: rect.height,
18
+ scale: iframe.clientWidth > 0 ? rect.width / iframe.clientWidth : 1,
19
+ };
20
+ }
21
+ export function toViewportPoint(viewport, point) {
22
+ return {
23
+ x: viewport.left + point.x * viewport.scale,
24
+ y: viewport.top + point.y * viewport.scale,
25
+ };
26
+ }
27
+ /** Pass `false` for an axis whose size is a guide thickness in controller pixels. */
28
+ export function toViewportRect(viewport, rect, scaleSize = { width: true, height: true }) {
29
+ return {
30
+ left: viewport.left + rect.left * viewport.scale,
31
+ top: viewport.top + rect.top * viewport.scale,
32
+ width: scaleSize.width ? rect.width * viewport.scale : rect.width,
33
+ height: scaleSize.height ? rect.height * viewport.scale : rect.height,
34
+ };
35
+ }
36
+ export function findRendererElement(doc, ref) {
37
+ if (!doc || !RENDERER_ELEMENT_ID.test(ref.elementId))
38
+ return null;
39
+ const candidates = doc.querySelectorAll(`[${RENDERER_ELEMENT_ID_ATTR}="${ref.elementId}"]`);
40
+ const candidate = candidates.length === 1 ? candidates[0] : null;
41
+ if (!candidate
42
+ || candidate.getAttribute("data-cid") !== ref.cid
43
+ || (candidate.getAttribute("data-src") ?? "") !== ref.src)
44
+ return null;
45
+ const frameWindow = doc.defaultView;
46
+ return frameWindow && candidate instanceof frameWindow.HTMLElement ? candidate : null;
47
+ }
48
+ export function connectFrame(cardId, iframe) {
49
+ const existing = connections.get(iframe);
50
+ if (existing?.cardId === cardId)
51
+ return existing;
52
+ const identity = { projectId: PROJECT_ID, workspaceId: WORKSPACE_ID, cardId };
53
+ const connection = {
54
+ cardId,
55
+ iframe,
56
+ identity,
57
+ document() {
58
+ try {
59
+ return iframe.contentDocument;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ },
65
+ element: (ref) => findRendererElement(connection.document(), ref),
66
+ viewport: () => measureFrameViewport(iframe),
67
+ post(message) {
68
+ iframe.contentWindow?.postMessage({ ...message, protocolVersion: PROTOCOL_VERSION, ...identity }, window.location.origin);
69
+ },
70
+ };
71
+ connections.set(iframe, connection);
72
+ return connection;
73
+ }
@@ -1,5 +1,4 @@
1
1
  import { type DraftTarget } from "../drafts/model.js";
2
- /** Content identity is independent of frame geometry and its editable draft. */
3
2
  export type FrameContent = {
4
3
  kind: "route";
5
4
  url: string;
@@ -0,0 +1,12 @@
1
+ import type { FrameContent } from "./frameContent.js";
2
+ /**
3
+ * Cross-store effects a frame removal needs: whether drafts allow editing, and
4
+ * who releases the frame's draft and HTML artifact. Canvas registers nothing
5
+ * itself, so it never imports drafts or the iteration client.
6
+ */
7
+ export interface FrameLifecycle {
8
+ readonly canEdit: () => boolean;
9
+ readonly release: (released: FrameContent, remaining: readonly FrameContent[]) => void;
10
+ }
11
+ export declare function setFrameLifecycle(next: FrameLifecycle | null): void;
12
+ export declare function frameLifecycle(): FrameLifecycle;
@@ -0,0 +1,11 @@
1
+ const allowAll = {
2
+ canEdit: () => true,
3
+ release: () => undefined,
4
+ };
5
+ let lifecycle = allowAll;
6
+ export function setFrameLifecycle(next) {
7
+ lifecycle = next ?? allowAll;
8
+ }
9
+ export function frameLifecycle() {
10
+ return lifecycle;
11
+ }
@@ -2,17 +2,13 @@ import type { ComponentOverride } from "../componentSemantics/types.js";
2
2
  import type { RenderedInstanceOverride } from "../changes/editModel.js";
3
3
  import type { NudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
4
4
  import type { SpacingDescriptor } from "../overlay/spacingGestures.js";
5
+ import type { RendererCursor } from "../ui/customCursors.js";
5
6
  export declare const PROTOCOL_VERSION = 21;
6
7
  export interface FrameMessage {
7
8
  type: string;
8
9
  protocolVersion: number;
9
10
  }
10
- /**
11
- * Pre-identity solicitation from a renderer whose bootstrap finished after
12
- * the controller's load-time parent-ready (or whose document never received
13
- * one). Carries no FrameIdentity: the whole point is that the renderer does
14
- * not have one yet. The controller answers with ParentReadyMessage.
15
- */
11
+ /** Pre-identity solicitation from a renderer that missed parent-ready; carries no FrameIdentity. */
16
12
  export interface RendererHelloMessage extends FrameMessage {
17
13
  type: "renderer-hello";
18
14
  }
@@ -59,32 +55,26 @@ export interface ReplaceStylesMessage extends FrameMessage {
59
55
  instanceOverrides: RenderedInstanceOverride[];
60
56
  /** Controller-owned structural intent; renderers never own this change log. */
61
57
  structuralChanges: import("../projection/structuralProjection.js").StructuralChange[];
62
- /** Controller-owned durable rendered text intent. */
63
58
  textContentChanges: import("../changes/types.js").TextContentChangeRecord[];
64
- /** Controller-owned semantic component overrides for Canvas runtimes. */
65
59
  componentOverrides: ComponentOverride[];
60
+ /** Generated identities the edits refer to; omitted while edits are hidden. */
61
+ runtimeIdentities?: import("../runtime/runtimeIdentityClaims.js").RuntimeIdentityClaim[];
66
62
  }
67
- /** Renderer acknowledgement that one complete controller snapshot is applied. */
68
63
  export interface ProjectionAppliedMessage extends RendererMessage {
69
64
  type: "projection-applied";
70
65
  revision: number;
71
66
  }
72
- /**
73
- * Renderer-local outcomes for one controller snapshot. This is diagnostic
74
- * data only: accepting it never changes controller-owned structural intent.
75
- */
67
+ /** Diagnostics only: accepting these never changes controller-owned structural intent. */
76
68
  export interface StructuralProjectionReportMessage extends RendererMessage {
77
69
  type: "structural-projection-report";
78
70
  revision: number;
79
71
  reports: import("../projection/structuralProjection.js").StructuralProjectionReport[];
80
72
  }
81
- /** Renderer-local CSS-instance outcomes for one controller snapshot. */
82
73
  export interface RenderedInstanceProjectionReportMessage extends RendererMessage {
83
74
  type: "rendered-instance-projection-report";
84
75
  revision: number;
85
76
  reports: import("../projection/renderedInstance.js").DocumentProjectionReport[];
86
77
  }
87
- /** Renderer-local outcomes for one controller-owned text snapshot. */
88
78
  export interface TextProjectionReportMessage extends RendererMessage {
89
79
  type: "text-projection-report";
90
80
  revision: number;
@@ -96,7 +86,6 @@ export interface NavigationIntentMessage extends RendererMessage {
96
86
  /** The renderer kept its own route and asks the controller for a card instead. */
97
87
  openInCard?: boolean;
98
88
  }
99
- /** Tells a renderer whether ordinary link clicks open a new canvas card. */
100
89
  export interface LinkTargetStateMessage extends RendererMessage {
101
90
  type: "link-target-state";
102
91
  openInCard: boolean;
@@ -130,15 +119,12 @@ export interface ElementHoverMessage extends RendererMessage {
130
119
  x: number;
131
120
  y: number;
132
121
  } | null;
133
- /** The spacing handle under the pointer. Drives the resize cursor and drag
134
- * start; only present when the pointer is inside the handle hit area. */
122
+ /** The spacing handle under the pointer; only present inside the handle hit area. */
135
123
  spacing?: SpacingDescriptor | null;
136
- /** The padding bar or layout gap area under the pointer, regardless of the
137
- * handle. Drives the hover fill overlay across the whole area. */
124
+ /** The padding bar or layout gap area under the pointer, regardless of the handle. */
138
125
  hoverSpacing?: SpacingDescriptor | null;
139
126
  }
140
- /** Modifier state stays inside one renderer frame; the parent never infers it
141
- * from its own keyboard events because focus lives in the iframe. */
127
+ /** The parent never infers modifier state: focus lives in the iframe. */
142
128
  export interface ElementMeasureStateMessage extends RendererMessage {
143
129
  type: "element-measure-state";
144
130
  altKey: boolean;
@@ -156,7 +142,6 @@ export interface ElementClickMessage extends RendererMessage {
156
142
  /** True for a Shift-click that toggles this target in the selection group. */
157
143
  additive?: boolean;
158
144
  }
159
- /** Requests controller-owned inline text editing for an element in this frame. */
160
145
  export interface InlineTextIntentMessage extends RendererMessage {
161
146
  type: "inline-text-intent";
162
147
  intent: "pointer-down" | "double-click";
@@ -170,7 +155,6 @@ export interface InlineTextIntentMessage extends RendererMessage {
170
155
  clickCount?: number;
171
156
  emptyProjectionId?: string;
172
157
  }
173
- /** Renderer request to clear the controller-owned element selection. */
174
158
  export interface ElementDeselectMessage extends RendererMessage {
175
159
  type: "element-deselect";
176
160
  }
@@ -199,7 +183,6 @@ export interface ElementDragMoveMessage extends RendererMessage {
199
183
  x: number;
200
184
  y: number;
201
185
  };
202
- /** True while Shift is held; spacing drags use this to snap by 8px steps. */
203
186
  shiftKey?: boolean;
204
187
  }
205
188
  export interface ElementDragEndMessage extends RendererMessage {
@@ -208,7 +191,6 @@ export interface ElementDragEndMessage extends RendererMessage {
208
191
  x: number;
209
192
  y: number;
210
193
  };
211
- /** True while Shift is held; spacing drags use this to snap by 8px steps. */
212
194
  shiftKey?: boolean;
213
195
  /** True when the renderer lost the gesture before the pointer was released. */
214
196
  cancelled?: boolean;
@@ -231,7 +213,6 @@ export interface HistoryRequestMessage extends RendererMessage {
231
213
  type: "history-request";
232
214
  action: "undo" | "redo";
233
215
  }
234
- /** Requests the parent-owned inspector visibility toggle from frame focus. */
235
216
  export interface InspectorToggleRequestMessage extends RendererMessage {
236
217
  type: "inspector-toggle-request";
237
218
  }
@@ -241,7 +222,6 @@ export interface InspectorOpenRequestMessage extends RendererMessage {
241
222
  }
242
223
  export type KeyboardShortcutCode = "Backslash" | "KeyI" | "KeyV" | "KeyC" | "KeyP" | "KeyS";
243
224
  export type KeyboardShortcutPhase = "keydown" | "keyup";
244
- /** Forwards controller-owned keyboard shortcuts from an iframe document. */
245
225
  export interface KeyboardShortcutMessage extends RendererMessage {
246
226
  type: "keyboard-shortcut";
247
227
  phase: KeyboardShortcutPhase;
@@ -281,7 +261,6 @@ export interface BoardGestureStateMessage extends RendererMessage {
281
261
  /** Ordinary wheel gestures pan the board instead of scrolling the app. */
282
262
  panScroll?: boolean;
283
263
  }
284
- /** Proxies modified wheel gestures that originate inside an iframe card. */
285
264
  export interface ZoomMessage extends RendererMessage {
286
265
  type: "zoom";
287
266
  deltaY: number;
@@ -290,7 +269,6 @@ export interface ZoomMessage extends RendererMessage {
290
269
  y: number;
291
270
  };
292
271
  }
293
- /** Proxies ordinary wheel gestures as normalized pixel distances. */
294
272
  export interface WheelPanMessage extends RendererMessage {
295
273
  type: "wheel-pan";
296
274
  deltaX: number;
@@ -301,25 +279,29 @@ export interface AppInteractionModifierMessage extends RendererMessage {
301
279
  type: "app-interaction-modifier";
302
280
  held: boolean;
303
281
  }
304
- export type FrameProtocolMessage = ParentReadyMessage | RendererHelloMessage | FrameReadyMessage | FrameRuntimeMessage | FrameMetadataMessage | FrameLoadError | ReplaceStylesMessage | ProjectionAppliedMessage | StructuralProjectionReportMessage | RenderedInstanceProjectionReportMessage | TextProjectionReportMessage | NavigationIntentMessage | LinkTargetStateMessage | ElementHoverMessage | ElementMeasureStateMessage | ElementClickMessage | InlineTextIntentMessage | ElementDeselectMessage | ElementDragStartMessage | ElementDragMoveMessage | ElementDragEndMessage | ElementDeleteMessage | ElementNudgeMessage | HistoryRequestMessage | InspectorToggleRequestMessage | InspectorOpenRequestMessage | KeyboardShortcutMessage | PanStartMessage | PanMoveMessage | PanEndMessage | PanModifierMessage | MeasureModifierMessage | BoardGestureStateMessage | ZoomMessage | WheelPanMessage | AppInteractionModifierMessage;
282
+ export interface InspectorInteractionStateMessage extends RendererMessage {
283
+ type: "inspector-interaction-state";
284
+ open: boolean;
285
+ interactionsEnabled: boolean;
286
+ cursor: RendererCursor;
287
+ /** CSS cursor for the Comment tool; the controller renders it. */
288
+ commentCursor?: string;
289
+ }
290
+ export type RendererToControllerMessage = RendererHelloMessage | FrameReadyMessage | FrameRuntimeMessage | FrameMetadataMessage | FrameLoadError | ProjectionAppliedMessage | StructuralProjectionReportMessage | RenderedInstanceProjectionReportMessage | TextProjectionReportMessage | NavigationIntentMessage | ElementHoverMessage | ElementMeasureStateMessage | ElementClickMessage | InlineTextIntentMessage | ElementDeselectMessage | ElementDragStartMessage | ElementDragMoveMessage | ElementDragEndMessage | ElementDeleteMessage | ElementNudgeMessage | HistoryRequestMessage | InspectorToggleRequestMessage | InspectorOpenRequestMessage | KeyboardShortcutMessage | PanStartMessage | PanMoveMessage | PanEndMessage | PanModifierMessage | ZoomMessage | WheelPanMessage | AppInteractionModifierMessage;
291
+ export type ControllerToRendererMessage = ParentReadyMessage | ReplaceStylesMessage | LinkTargetStateMessage | PanModifierMessage | MeasureModifierMessage | BoardGestureStateMessage | InspectorInteractionStateMessage;
292
+ export declare function isRendererMessageType(type: unknown): type is RendererToControllerMessage["type"];
293
+ export type FrameProtocolMessage = ParentReadyMessage | RendererHelloMessage | FrameReadyMessage | FrameRuntimeMessage | FrameMetadataMessage | FrameLoadError | ReplaceStylesMessage | ProjectionAppliedMessage | StructuralProjectionReportMessage | RenderedInstanceProjectionReportMessage | TextProjectionReportMessage | NavigationIntentMessage | LinkTargetStateMessage | ElementHoverMessage | ElementMeasureStateMessage | ElementClickMessage | InlineTextIntentMessage | ElementDeselectMessage | ElementDragStartMessage | ElementDragMoveMessage | ElementDragEndMessage | ElementDeleteMessage | ElementNudgeMessage | HistoryRequestMessage | InspectorToggleRequestMessage | InspectorOpenRequestMessage | KeyboardShortcutMessage | PanStartMessage | PanMoveMessage | PanEndMessage | PanModifierMessage | MeasureModifierMessage | BoardGestureStateMessage | ZoomMessage | WheelPanMessage | AppInteractionModifierMessage | InspectorInteractionStateMessage;
305
294
  export declare function setRendererIdentity(identity: FrameIdentity): void;
306
295
  export declare function clearRendererIdentity(expected?: FrameIdentity): void;
307
296
  export declare function getRendererIdentity(): FrameIdentity | null;
308
297
  export declare function isRendererMessageFor(value: unknown, identity: FrameIdentity): value is RendererMessage;
309
298
  export declare function isKeyboardShortcutCode(value: unknown): value is KeyboardShortcutCode;
310
- /** Strict JSON-only schema for renderer-originated global keyboard shortcuts. */
311
299
  export declare function isKeyboardShortcutMessage(value: unknown, identity: FrameIdentity): value is KeyboardShortcutMessage;
312
- /** Strict JSON-only schema for selecting an element from a renderer frame. */
313
300
  export declare function isElementClickMessage(value: unknown, identity: FrameIdentity): value is ElementClickMessage;
314
- /** Strict JSON-only schema for starting controller-owned inline text editing. */
315
301
  export declare function isInlineTextIntentMessage(value: unknown, identity: FrameIdentity): value is InlineTextIntentMessage;
316
- /** Strict JSON-only schema for renderer diagnostics before the parent records them. */
317
302
  export declare function isStructuralProjectionReportMessage(value: unknown, identity: FrameIdentity): value is StructuralProjectionReportMessage;
318
- /** Strict JSON-only schema for renderer CSS-instance diagnostics. */
319
303
  export declare function isRenderedInstanceProjectionReportMessage(value: unknown, identity: FrameIdentity): value is RenderedInstanceProjectionReportMessage;
320
- /** Strict JSON-only schema for renderer rendered-text diagnostics. */
321
304
  export declare function isTextProjectionReportMessage(value: unknown, identity: FrameIdentity): value is TextProjectionReportMessage;
322
- /** Strict JSON-only acknowledgement for a fully applied Canvas snapshot. */
323
305
  export declare function isProjectionAppliedMessage(value: unknown, identity: FrameIdentity): value is ProjectionAppliedMessage;
324
306
  export declare function isComponentOverrideList(value: unknown): value is ComponentOverride[];
325
307
  export declare function sendToParent(msg: FrameProtocolMessage): void;
@@ -1,24 +1,44 @@
1
1
  import { isDocumentProjectionReport } from "../projection/renderedInstance.js";
2
2
  import { isTextProjectionReport } from "../projection/textProjection.js";
3
3
  import { isStructuralProjectionReport } from "../projection/structuralProjectionBoundary.js";
4
- // v21 adds the Comment tool cursor and C shortcut.
5
- // v20 adds Shift state to element drag messages so spacing handles can snap
6
- // changes to 8px increments.
7
- // v19 adds spacing drag gestures (hover point, spacing descriptor, start
8
- // point, and cancelled drag-end) plus renderer-to-controller keyboard shortcut
9
- // forwarding for Canvas frames.
10
- // v18 adds parent-to-renderer Alt modifier forwarding for Canvas measurements.
11
- // v17 adds an idempotent renderer request to open the parent inspector. v16
12
- // adds controller-owned inline-text intents for Canvas frames. v15 adds
13
- // renderer-to-controller element deselection for Canvas frames. v14
14
- // adds border widths to hover geometry so containment measurements can exclude
15
- // the container border. v13 adds source-parent-aware structural moves and
16
- // bounded structural failure reasons to the full projection snapshot. v12
17
- // added the projection-applied acknowledgement: the controller can avoid
18
- // rereading a Canvas iframe until the renderer has applied its revision. v11
19
- // added the renderer-hello handshake solicitation for runtimes whose boot
20
- // completes after the controller's load-time parent-ready.
4
+ // Bumped on every message-shape change; the controller and renderer must agree exactly.
21
5
  export const PROTOCOL_VERSION = 21;
6
+ const RENDERER_MESSAGE_TYPES = {
7
+ "renderer-hello": true,
8
+ "frame-ready": true,
9
+ "frame-runtime": true,
10
+ "frame-metadata": true,
11
+ "frame-error": true,
12
+ "projection-applied": true,
13
+ "structural-projection-report": true,
14
+ "rendered-instance-projection-report": true,
15
+ "text-projection-report": true,
16
+ "navigation-intent": true,
17
+ "element-hover": true,
18
+ "element-measure-state": true,
19
+ "element-click": true,
20
+ "inline-text-intent": true,
21
+ "element-deselect": true,
22
+ "element-drag-start": true,
23
+ "element-drag-move": true,
24
+ "element-drag-end": true,
25
+ "element-delete": true,
26
+ "element-nudge": true,
27
+ "history-request": true,
28
+ "inspector-toggle-request": true,
29
+ "inspector-open-request": true,
30
+ "keyboard-shortcut": true,
31
+ "pan-start": true,
32
+ "pan-move": true,
33
+ "pan-end": true,
34
+ "pan-modifier": true,
35
+ "zoom": true,
36
+ "wheel-pan": true,
37
+ "app-interaction-modifier": true,
38
+ };
39
+ export function isRendererMessageType(type) {
40
+ return typeof type === "string" && Object.hasOwn(RENDERER_MESSAGE_TYPES, type);
41
+ }
22
42
  let rendererIdentity = null;
23
43
  export function setRendererIdentity(identity) {
24
44
  rendererIdentity = identity;
@@ -46,7 +66,6 @@ export function isKeyboardShortcutCode(value) {
46
66
  || value === "KeyP"
47
67
  || value === "KeyS";
48
68
  }
49
- /** Strict JSON-only schema for renderer-originated global keyboard shortcuts. */
50
69
  export function isKeyboardShortcutMessage(value, identity) {
51
70
  if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
52
71
  return false;
@@ -58,7 +77,6 @@ export function isKeyboardShortcutMessage(value, identity) {
58
77
  && (ownValue(value, "phase") === "keydown" || ownValue(value, "phase") === "keyup")
59
78
  && isKeyboardShortcutCode(ownValue(value, "code"));
60
79
  }
61
- /** Strict JSON-only schema for selecting an element from a renderer frame. */
62
80
  export function isElementClickMessage(value, identity) {
63
81
  if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
64
82
  return false;
@@ -79,7 +97,6 @@ export function isElementClickMessage(value, identity) {
79
97
  && typeof ownValue(value, "component") === "string"
80
98
  && (additive === undefined || typeof additive === "boolean");
81
99
  }
82
- /** Strict JSON-only schema for starting controller-owned inline text editing. */
83
100
  export function isInlineTextIntentMessage(value, identity) {
84
101
  if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
85
102
  return false;
@@ -104,7 +121,6 @@ export function isInlineTextIntentMessage(value, identity) {
104
121
  && (clickCount === undefined || (typeof clickCount === "number" && Number.isSafeInteger(clickCount) && clickCount >= 0))
105
122
  && (emptyProjectionId === undefined || typeof emptyProjectionId === "string");
106
123
  }
107
- /** Strict JSON-only schema for renderer diagnostics before the parent records them. */
108
124
  export function isStructuralProjectionReportMessage(value, identity) {
109
125
  if (!isRendererMessageFor(value, identity) || !value || typeof value !== "object")
110
126
  return false;
@@ -119,7 +135,6 @@ export function isStructuralProjectionReportMessage(value, identity) {
119
135
  && Array.isArray(message.reports)
120
136
  && message.reports.every(isStructuralProjectionReport);
121
137
  }
122
- /** Strict JSON-only schema for renderer CSS-instance diagnostics. */
123
138
  export function isRenderedInstanceProjectionReportMessage(value, identity) {
124
139
  if (!isRendererMessageFor(value, identity) || !value || typeof value !== "object")
125
140
  return false;
@@ -134,7 +149,6 @@ export function isRenderedInstanceProjectionReportMessage(value, identity) {
134
149
  && Array.isArray(message.reports)
135
150
  && message.reports.every(isDocumentProjectionReport);
136
151
  }
137
- /** Strict JSON-only schema for renderer rendered-text diagnostics. */
138
152
  export function isTextProjectionReportMessage(value, identity) {
139
153
  if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
140
154
  return false;
@@ -150,7 +164,6 @@ export function isTextProjectionReportMessage(value, identity) {
150
164
  && Array.isArray(reports)
151
165
  && reports.every(isTextProjectionReport);
152
166
  }
153
- /** Strict JSON-only acknowledgement for a fully applied Canvas snapshot. */
154
167
  export function isProjectionAppliedMessage(value, identity) {
155
168
  if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
156
169
  return false;
@@ -1,3 +1,2 @@
1
1
  export declare const FRAME_SCROLLBAR_STYLE_ID = "nudge-ui-frame-scrollbar-styles";
2
- /** Gives frame documents thin scrollbars over a transparent track by default. */
3
2
  export declare function installFrameScrollbarStyles(doc: Document): () => void;
@@ -9,7 +9,6 @@ const FRAME_SCROLLBAR_CSS = `
9
9
  scrollbar-width: thin;
10
10
  }
11
11
  `;
12
- /** Gives frame documents thin scrollbars over a transparent track by default. */
13
12
  export function installFrameScrollbarStyles(doc) {
14
13
  if (!doc.head || doc.getElementById(FRAME_SCROLLBAR_STYLE_ID))
15
14
  return () => undefined;
@@ -1,3 +1,4 @@
1
+ import { type CanvasCamera } from "./viewStore.js";
1
2
  export interface LayoutCard {
2
3
  readonly id: string;
3
4
  readonly x: number;
@@ -11,42 +12,29 @@ export interface Bounds {
11
12
  readonly maxX: number;
12
13
  readonly maxY: number;
13
14
  }
14
- /** The layout fields a creation may change on existing frames. */
15
+ /** Where a new card or iteration is placed on the board. */
16
+ export interface CardPosition {
17
+ readonly x: number;
18
+ readonly y: number;
19
+ }
15
20
  export interface LayoutShift {
16
21
  readonly id: string;
17
22
  readonly from: Pick<LayoutCard, "x" | "y">;
18
23
  readonly to: Pick<LayoutCard, "x" | "y">;
19
24
  }
20
25
  export declare function boundsOf(cards: readonly LayoutCard[]): Bounds;
21
- /** Places a new frame to the right of every frame, on the first frame's row. */
22
- export declare function nextCardPosition(cards: readonly LayoutCard[], gap: number): {
23
- x: number;
24
- y: number;
25
- };
26
+ export declare function nextCardPosition(cards: readonly LayoutCard[], gap: number): CardPosition;
26
27
  export declare function pushOverlappingCards<T extends LayoutCard>(cards: readonly T[], protectedIds: ReadonlySet<string>, gap: number): T[];
27
- export declare function iterationPosition(cards: readonly LayoutCard[], source: LayoutCard, gap: number): {
28
- x: number;
29
- y: number;
30
- };
31
- /** Zooms and centers content inside the padded viewport; null for empty content. */
28
+ export declare function iterationPosition(cards: readonly LayoutCard[], source: LayoutCard, gap: number): CardPosition;
32
29
  export declare function fitCamera(bounds: Bounds, viewport: {
33
30
  width: number;
34
31
  height: number;
35
- }, padding: number): {
36
- x: number;
37
- y: number;
38
- zoom: number;
39
- } | null;
32
+ }, padding: number): CanvasCamera | null;
40
33
  export declare function centerCamera(bounds: Bounds, zoom: number, viewport: {
41
34
  width: number;
42
35
  height: number;
43
- }): {
44
- x: number;
45
- y: number;
46
- zoom: number;
47
- };
36
+ }): CanvasCamera;
48
37
  export declare function layoutShifts(before: readonly LayoutCard[], after: readonly LayoutCard[]): LayoutShift[];
49
38
  /** Replays recorded shifts as deltas, so frames moved since the creation keep their later moves. */
50
39
  export declare function applyLayoutShifts<T extends LayoutCard>(cards: readonly T[], shifts: readonly LayoutShift[], forward: boolean): T[];
51
- /** Reinserts recorded frames after their nearest recorded predecessor that still exists. */
52
40
  export declare function reinsertInRecordedOrder<T extends LayoutCard>(cards: readonly T[], recorded: readonly T[], ids: ReadonlySet<string>): T[];