nudge-ui 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/dist/cli/agentCommand.d.ts +0 -1
  2. package/dist/cli/agentCommand.js +0 -1
  3. package/dist/client.mjs +238 -122
  4. package/dist/compiler/ast.d.ts +0 -6
  5. package/dist/compiler/ast.js +0 -5
  6. package/dist/compiler/componentContractTypes.d.ts +11 -5
  7. package/dist/compiler/componentContracts.js +3 -9
  8. package/dist/compiler/componentInstrumentation.d.ts +2 -13
  9. package/dist/compiler/componentInstrumentation.js +3 -12
  10. package/dist/compiler/componentPolicyResolution.d.ts +3 -22
  11. package/dist/compiler/componentPolicyResolution.js +6 -38
  12. package/dist/compiler/identityAttributes.d.ts +2 -0
  13. package/dist/compiler/identityAttributes.js +2 -0
  14. package/dist/compiler/index.d.ts +0 -1
  15. package/dist/compiler/index.js +0 -1
  16. package/dist/compiler/packageComponentContracts.d.ts +10 -19
  17. package/dist/compiler/packageComponentContracts.js +60 -43
  18. package/dist/compiler/reactComponentProtocols.d.ts +0 -7
  19. package/dist/compiler/reactComponentProtocols.js +0 -7
  20. package/dist/compiler/reactIdentity.d.ts +2 -2
  21. package/dist/compiler/reactIdentity.js +41 -43
  22. package/dist/compiler/sourcePaths.d.ts +4 -8
  23. package/dist/compiler/sourcePaths.js +6 -8
  24. package/dist/css/dialects/index.d.ts +2 -21
  25. package/dist/css/dialects/index.js +2 -9
  26. package/dist/css/dialects/tailwind.d.ts +2 -16
  27. package/dist/css/dialects/tailwind.js +2 -25
  28. package/dist/css/dialects/vanillaExtract.d.ts +1 -9
  29. package/dist/css/dialects/vanillaExtract.js +0 -1
  30. package/dist/css/index.d.ts +0 -8
  31. package/dist/css/index.js +0 -8
  32. package/dist/css/model/index.d.ts +6 -38
  33. package/dist/css/model/index.js +0 -9
  34. package/dist/css/token-inventory/index.d.ts +0 -23
  35. package/dist/css/token-inventory/index.js +0 -23
  36. package/dist/css/token-inventory/inventory.js +4 -16
  37. package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
  38. package/dist/css/token-inventory/parseStylesheet.js +5 -42
  39. package/dist/css/token-inventory/policy.d.ts +2 -39
  40. package/dist/css/token-inventory/policy.js +2 -39
  41. package/dist/css/token-inventory/types.d.ts +2 -15
  42. package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
  43. package/dist/css/value-semantics/borderSemantics.js +5 -23
  44. package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
  45. package/dist/css/value-semantics/boxSemantics.js +1 -7
  46. package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
  47. package/dist/css/value-semantics/colorSemantics.js +9 -40
  48. package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
  49. package/dist/css/value-semantics/cssSyntax.js +39 -11
  50. package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
  51. package/dist/css/value-semantics/fontSemantics.js +7 -25
  52. package/dist/css/value-semantics/index.d.ts +1 -12
  53. package/dist/css/value-semantics/index.js +1 -12
  54. package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
  55. package/dist/css/value-semantics/propertyPolicy.js +47 -59
  56. package/dist/css/value-semantics/stringMaps.d.ts +0 -1
  57. package/dist/css/value-semantics/structuredValues.d.ts +3 -37
  58. package/dist/css/value-semantics/structuredValues.js +6 -17
  59. package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
  60. package/dist/css/value-semantics/tokenInterpretation.js +7 -21
  61. package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
  62. package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
  63. package/dist/hosts/astro/clientAsset.d.ts +1 -5
  64. package/dist/hosts/astro/clientAsset.js +1 -5
  65. package/dist/hosts/astro/clientTransport.d.ts +0 -1
  66. package/dist/hosts/astro/clientTransport.js +4 -9
  67. package/dist/hosts/astro/integration.d.ts +2 -28
  68. package/dist/hosts/astro/integration.js +7 -36
  69. package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
  70. package/dist/hosts/astro/markdownIdentity.js +0 -3
  71. package/dist/hosts/astro/middleware.d.ts +1 -12
  72. package/dist/hosts/astro/middleware.js +1 -12
  73. package/dist/hosts/astro/projectContext.d.ts +1 -9
  74. package/dist/hosts/astro/projectContext.js +2 -11
  75. package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
  76. package/dist/hosts/astro/responseInstrumentation.js +5 -34
  77. package/dist/hosts/environment.d.ts +0 -8
  78. package/dist/hosts/environment.js +0 -1
  79. package/dist/hosts/next/index.js +1 -3
  80. package/dist/hosts/next/loader.d.ts +5 -44
  81. package/dist/hosts/next/loader.js +22 -103
  82. package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
  83. package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
  84. package/dist/hosts/next/manifest.d.ts +2 -16
  85. package/dist/hosts/next/manifest.js +18 -20
  86. package/dist/hosts/next/mount.d.ts +1 -11
  87. package/dist/hosts/next/mount.js +1 -11
  88. package/dist/hosts/next/repositoryScope.d.ts +2 -17
  89. package/dist/hosts/next/repositoryScope.js +2 -17
  90. package/dist/hosts/next/sidecar.d.ts +0 -13
  91. package/dist/hosts/next/sidecar.js +25 -110
  92. package/dist/hosts/next/wrapper.d.ts +0 -31
  93. package/dist/hosts/next/wrapper.js +13 -64
  94. package/dist/hosts/projectBridge.d.ts +0 -2
  95. package/dist/hosts/projectBridge.js +0 -2
  96. package/dist/hosts/reactRendererCapture.d.ts +2 -0
  97. package/dist/hosts/reactRendererCapture.js +12 -0
  98. package/dist/hosts/static/cli.d.ts +0 -4
  99. package/dist/hosts/static/cli.js +0 -3
  100. package/dist/hosts/static/html/bootstrap.d.ts +1 -18
  101. package/dist/hosts/static/html/bootstrap.js +2 -14
  102. package/dist/hosts/static/manifest.d.ts +2 -15
  103. package/dist/hosts/static/manifest.js +5 -18
  104. package/dist/hosts/static/server.d.ts +4 -38
  105. package/dist/hosts/static/server.js +17 -67
  106. package/dist/hosts/vite/index.d.ts +0 -10
  107. package/dist/hosts/vite/index.js +0 -10
  108. package/dist/hosts/vite/react.d.ts +4 -17
  109. package/dist/hosts/vite/react.js +18 -35
  110. package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
  111. package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
  112. package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
  113. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
  114. package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
  115. package/dist/hosts/vite/vite.d.ts +5 -26
  116. package/dist/hosts/vite/vite.js +44 -80
  117. package/dist/html/dom.d.ts +0 -1
  118. package/dist/html/dom.js +0 -1
  119. package/dist/html/identity.d.ts +1 -15
  120. package/dist/html/identity.js +1 -8
  121. package/dist/html/insertions.d.ts +2 -8
  122. package/dist/html/insertions.js +1 -1
  123. package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
  124. package/dist/inspector/agent/McpConnectionDialog.js +1 -6
  125. package/dist/inspector/agent/activity.d.ts +1 -1
  126. package/dist/inspector/agent/activity.js +1 -1
  127. package/dist/inspector/agent/client.d.ts +2 -26
  128. package/dist/inspector/agent/client.js +17 -64
  129. package/dist/inspector/agent/connectionStatus.d.ts +0 -1
  130. package/dist/inspector/agent/connectionStatus.js +0 -1
  131. package/dist/inspector/agent/httpTransport.d.ts +0 -8
  132. package/dist/inspector/agent/httpTransport.js +21 -39
  133. package/dist/inspector/agent/protocol.d.ts +1 -10
  134. package/dist/inspector/agent/protocol.js +1 -9
  135. package/dist/inspector/agent/verification.d.ts +2 -19
  136. package/dist/inspector/agent/verification.js +7 -43
  137. package/dist/inspector/boot.d.ts +3 -1
  138. package/dist/inspector/boot.js +12 -20
  139. package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
  140. package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
  141. package/dist/inspector/canvas/CanvasCard.js +7 -14
  142. package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
  143. package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
  144. package/dist/inspector/canvas/PageCard.d.ts +0 -1
  145. package/dist/inspector/canvas/PageCard.js +0 -1
  146. package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
  147. package/dist/inspector/canvas/SketchToolOptions.js +0 -6
  148. package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
  149. package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
  150. package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
  151. package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
  152. package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
  153. package/dist/inspector/canvas/agentPresentation.js +3 -14
  154. package/dist/inspector/canvas/canvasFrame.d.ts +2 -6
  155. package/dist/inspector/canvas/canvasFrame.js +1 -2
  156. package/dist/inspector/canvas/canvasResize.d.ts +1 -6
  157. package/dist/inspector/canvas/canvasResize.js +1 -6
  158. package/dist/inspector/canvas/canvasStore.d.ts +4 -12
  159. package/dist/inspector/canvas/canvasStore.js +12 -26
  160. package/dist/inspector/canvas/frameConnection.d.ts +1 -7
  161. package/dist/inspector/canvas/frameContent.d.ts +0 -1
  162. package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
  163. package/dist/inspector/canvas/frameLifecycle.js +11 -0
  164. package/dist/inspector/canvas/frameProtocol.d.ts +5 -40
  165. package/dist/inspector/canvas/frameProtocol.js +1 -24
  166. package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
  167. package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
  168. package/dist/inspector/canvas/layout.d.ts +10 -22
  169. package/dist/inspector/canvas/layout.js +0 -3
  170. package/dist/inspector/canvas/normalizeUrl.js +1 -8
  171. package/dist/inspector/canvas/pageSurface.d.ts +1 -6
  172. package/dist/inspector/canvas/pageSurface.js +1 -6
  173. package/dist/inspector/canvas/projection.d.ts +4 -25
  174. package/dist/inspector/canvas/projection.js +22 -72
  175. package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
  176. package/dist/inspector/canvas/rendererBootstrap.js +6 -14
  177. package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
  178. package/dist/inspector/canvas/rendererCidIndex.js +0 -5
  179. package/dist/inspector/canvas/rendererElementSelector.js +29 -27
  180. package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
  181. package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
  182. package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
  183. package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
  184. package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
  185. package/dist/inspector/canvas/rendererStylesheet.js +9 -2
  186. package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
  187. package/dist/inspector/canvas/resizeHandleScale.js +1 -10
  188. package/dist/inspector/canvas/sessionStore.d.ts +1 -7
  189. package/dist/inspector/canvas/sessionStore.js +21 -34
  190. package/dist/inspector/canvas/staleChangeDetector.js +1 -4
  191. package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
  192. package/dist/inspector/canvas/toolbarScale.js +1 -4
  193. package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
  194. package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
  195. package/dist/inspector/canvas/viewStore.js +1 -1
  196. package/dist/inspector/canvas/wheelPan.d.ts +1 -1
  197. package/dist/inspector/canvas/wheelPan.js +1 -1
  198. package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
  199. package/dist/inspector/canvas/workspaceLease.js +1 -7
  200. package/dist/inspector/changes/codecs.js +2 -1
  201. package/dist/inspector/changes/draftPreview.d.ts +1 -6
  202. package/dist/inspector/changes/draftPreview.js +15 -30
  203. package/dist/inspector/changes/editModel.d.ts +3 -13
  204. package/dist/inspector/changes/editModel.js +1 -2
  205. package/dist/inspector/changes/managedStyleProjection.js +4 -14
  206. package/dist/inspector/changes/model.d.ts +0 -5
  207. package/dist/inspector/changes/model.js +1 -8
  208. package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
  209. package/dist/inspector/changes/previewDiagnostics.js +4 -20
  210. package/dist/inspector/changes/previewVerification.d.ts +25 -0
  211. package/dist/inspector/changes/previewVerification.js +34 -0
  212. package/dist/inspector/changes/structuralTypes.d.ts +2 -4
  213. package/dist/inspector/changes/types.d.ts +3 -10
  214. package/dist/inspector/clientManifest.d.ts +17 -6
  215. package/dist/inspector/clientManifest.js +16 -3
  216. package/dist/inspector/comments/CommentsOverlay.js +48 -7
  217. package/dist/inspector/comments/element.d.ts +1 -2
  218. package/dist/inspector/comments/element.js +1 -2
  219. package/dist/inspector/comments/store.d.ts +1 -1
  220. package/dist/inspector/comments/store.js +1 -1
  221. package/dist/inspector/comments/verification.d.ts +8 -2
  222. package/dist/inspector/comments/verification.js +18 -10
  223. package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
  224. package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
  225. package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
  226. package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
  227. package/dist/inspector/componentSemantics/changeModel.js +2 -4
  228. package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
  229. package/dist/inspector/componentSemantics/react/callsites.js +261 -0
  230. package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
  231. package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
  232. package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
  233. package/dist/inspector/componentSemantics/react/fibers.js +30 -0
  234. package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
  235. package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
  236. package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
  237. package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
  238. package/dist/inspector/componentSemantics/textBinding.d.ts +1 -9
  239. package/dist/inspector/componentSemantics/textBinding.js +16 -42
  240. package/dist/inspector/componentSemantics/types.d.ts +8 -27
  241. package/dist/inspector/componentSemantics/types.js +0 -1
  242. package/dist/inspector/conformance/borderCases.d.ts +0 -5
  243. package/dist/inspector/conformance/borderCases.js +0 -5
  244. package/dist/inspector/conformance/colorCases.d.ts +0 -6
  245. package/dist/inspector/conformance/colorCases.js +0 -6
  246. package/dist/inspector/conformance/fixture.d.ts +1 -5
  247. package/dist/inspector/conformance/fixture.js +1 -5
  248. package/dist/inspector/conformance/spacingCases.d.ts +0 -4
  249. package/dist/inspector/conformance/spacingCases.js +0 -4
  250. package/dist/inspector/conformance/typographyCases.d.ts +0 -5
  251. package/dist/inspector/conformance/typographyCases.js +0 -5
  252. package/dist/inspector/drafts/draftStore.d.ts +7 -21
  253. package/dist/inspector/drafts/draftStore.js +15 -5
  254. package/dist/inspector/drafts/model.d.ts +7 -15
  255. package/dist/inspector/drafts/model.js +0 -2
  256. package/dist/inspector/drafts/store.d.ts +1 -8
  257. package/dist/inspector/drafts/store.js +3 -10
  258. package/dist/inspector/editScope.d.ts +0 -1
  259. package/dist/inspector/editScope.js +0 -1
  260. package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
  261. package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
  262. package/dist/inspector/inline-text/inlineTextEditor.d.ts +2 -8
  263. package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
  264. package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
  265. package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
  266. package/dist/inspector/inspection/bridge.d.ts +2 -6
  267. package/dist/inspector/inspection/bridge.js +4 -12
  268. package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
  269. package/dist/inspector/inspection/browserCssInspection.js +4 -8
  270. package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
  271. package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
  272. package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
  273. package/dist/inspector/inspection/selectionProperty.js +1 -5
  274. package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
  275. package/dist/inspector/inspection/useBrowserCssInspection.js +5 -21
  276. package/dist/inspector/iterations/capture.d.ts +0 -1
  277. package/dist/inspector/iterations/capture.js +4 -9
  278. package/dist/inspector/iterations/client.d.ts +0 -1
  279. package/dist/inspector/iterations/client.js +0 -1
  280. package/dist/inspector/iterations/coordinator.d.ts +0 -1
  281. package/dist/inspector/iterations/coordinator.js +0 -1
  282. package/dist/inspector/iterations/prompt.d.ts +0 -1
  283. package/dist/inspector/iterations/prompt.js +0 -1
  284. package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
  285. package/dist/inspector/overlay/DomNavigator.js +39 -15
  286. package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
  287. package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
  288. package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
  289. package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
  290. package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
  291. package/dist/inspector/overlay/clickPolicy.js +3 -14
  292. package/dist/inspector/overlay/dropGuide.d.ts +0 -3
  293. package/dist/inspector/overlay/dropGuide.js +0 -3
  294. package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
  295. package/dist/inspector/overlay/frameThrottle.js +0 -1
  296. package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
  297. package/dist/inspector/overlay/interactionStyles.js +2 -8
  298. package/dist/inspector/overlay/measurementGeometry.js +4 -12
  299. package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
  300. package/dist/inspector/overlay/selectedGeometry.js +1 -8
  301. package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
  302. package/dist/inspector/overlay/spacingGestures.js +151 -31
  303. package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
  304. package/dist/inspector/overlay/structuralGestures.js +1 -4
  305. package/dist/inspector/pageInspector.d.ts +4 -13
  306. package/dist/inspector/pageInspector.js +25 -32
  307. package/dist/inspector/projection/cssEscapes.d.ts +0 -1
  308. package/dist/inspector/projection/cssEscapes.js +2 -4
  309. package/dist/inspector/projection/draftProjection.d.ts +2 -14
  310. package/dist/inspector/projection/draftProjection.js +1 -8
  311. package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
  312. package/dist/inspector/projection/managedStylesheet.js +4 -22
  313. package/dist/inspector/projection/renderedInstance.d.ts +5 -28
  314. package/dist/inspector/projection/renderedInstance.js +6 -32
  315. package/dist/inspector/projection/structuralProjection.d.ts +7 -39
  316. package/dist/inspector/projection/structuralProjection.js +17 -52
  317. package/dist/inspector/projection/textProjection.d.ts +2 -14
  318. package/dist/inspector/projection/textProjection.js +17 -70
  319. package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
  320. package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
  321. package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -9
  322. package/dist/inspector/prompt/clipboardHandoff.js +1 -9
  323. package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
  324. package/dist/inspector/prompt/generatePrompt.js +10 -25
  325. package/dist/inspector/prompt/promptSettings.d.ts +0 -3
  326. package/dist/inspector/prompt/promptSettings.js +0 -3
  327. package/dist/inspector/runtime/devFlag.d.ts +2 -25
  328. package/dist/inspector/runtime/devFlag.js +4 -31
  329. package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
  330. package/dist/inspector/runtime/editorShell.d.ts +0 -1
  331. package/dist/inspector/runtime/editorShell.js +0 -1
  332. package/dist/inspector/runtime/inspectorStorage.d.ts +1 -7
  333. package/dist/inspector/runtime/inspectorStorage.js +1 -6
  334. package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
  335. package/dist/inspector/runtime/ownedStylesheets.js +2 -8
  336. package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
  337. package/dist/inspector/runtime/runtimeConfig.js +9 -50
  338. package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
  339. package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
  340. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
  341. package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
  342. package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
  343. package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
  344. package/dist/inspector/selection/editScope.d.ts +1 -7
  345. package/dist/inspector/selection/editScope.js +2 -12
  346. package/dist/inspector/selection/editTarget.d.ts +1 -5
  347. package/dist/inspector/selection/hierarchy.d.ts +11 -11
  348. package/dist/inspector/selection/hierarchy.js +42 -24
  349. package/dist/inspector/selection/selectionStore.d.ts +0 -3
  350. package/dist/inspector/selection/selectionStore.js +5 -16
  351. package/dist/inspector/selection/sourceSite.d.ts +1 -5
  352. package/dist/inspector/selection/sourceSite.js +2 -8
  353. package/dist/inspector/selection/styleSelection.d.ts +1 -5
  354. package/dist/inspector/selection/styleSelection.js +1 -5
  355. package/dist/inspector/session/lifecycle.d.ts +1 -9
  356. package/dist/inspector/session/lifecycle.js +0 -1
  357. package/dist/inspector/session/sessionContext.d.ts +0 -4
  358. package/dist/inspector/session/sessionContext.js +0 -4
  359. package/dist/inspector/session/sessionFactory.d.ts +0 -9
  360. package/dist/inspector/session/sessionFactory.js +0 -6
  361. package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
  362. package/dist/inspector/settings/SettingsDialog.js +5 -3
  363. package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
  364. package/dist/inspector/shell/AgentStatusButton.js +5 -5
  365. package/dist/inspector/shell/ChangesLog.js +3 -4
  366. package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
  367. package/dist/inspector/shell/CopyPromptButton.js +12 -11
  368. package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
  369. package/dist/inspector/shell/InspectorEditors.js +14 -0
  370. package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
  371. package/dist/inspector/shell/InspectorPanel.js +8 -0
  372. package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
  373. package/dist/inspector/shell/InspectorSelection.js +20 -0
  374. package/dist/inspector/shell/InspectorShell.js +26 -48
  375. package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
  376. package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
  377. package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
  378. package/dist/inspector/shell/PeekOriginalButton.js +0 -5
  379. package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
  380. package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
  381. package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
  382. package/dist/inspector/shell/PromptActionButton.js +14 -0
  383. package/dist/inspector/shell/elementName.d.ts +5 -0
  384. package/dist/inspector/shell/elementName.js +29 -0
  385. package/dist/inspector/shell/interactionStatePreview.d.ts +1 -4
  386. package/dist/inspector/shell/interactionStatePreview.js +3 -8
  387. package/dist/inspector/shell/originalPreview.d.ts +1 -6
  388. package/dist/inspector/shell/originalPreview.js +1 -6
  389. package/dist/inspector/shell/stateValue.d.ts +1 -2
  390. package/dist/inspector/shell/stateValue.js +2 -5
  391. package/dist/inspector/shell/styleState.d.ts +1 -2
  392. package/dist/inspector/shell/styleState.js +1 -2
  393. package/dist/inspector/sketch/SketchEditor.js +0 -1
  394. package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
  395. package/dist/inspector/sketch/SketchOverlay.js +5 -6
  396. package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
  397. package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
  398. package/dist/inspector/sketch/SketchWorkspace.js +2 -4
  399. package/dist/inspector/sketch/capture.d.ts +12 -3
  400. package/dist/inspector/sketch/capture.js +12 -11
  401. package/dist/inspector/sketch/copySketch.d.ts +1 -7
  402. package/dist/inspector/sketch/copySketch.js +2 -11
  403. package/dist/inspector/sketch/drawingTools.d.ts +1 -3
  404. package/dist/inspector/sketch/drawingTools.js +1 -2
  405. package/dist/inspector/sketch/frameHeading.d.ts +1 -7
  406. package/dist/inspector/sketch/frameHeading.js +1 -8
  407. package/dist/inspector/sketch/freehand.d.ts +0 -1
  408. package/dist/inspector/sketch/freehand.js +0 -1
  409. package/dist/inspector/sketch/geometry.d.ts +1 -6
  410. package/dist/inspector/sketch/geometry.js +1 -6
  411. package/dist/inspector/sketch/handoff.js +0 -1
  412. package/dist/inspector/sketch/history.d.ts +1 -5
  413. package/dist/inspector/sketch/history.js +1 -4
  414. package/dist/inspector/sketch/interaction.d.ts +2 -2
  415. package/dist/inspector/sketch/interaction.js +2 -2
  416. package/dist/inspector/sketch/model.d.ts +2 -9
  417. package/dist/inspector/sketch/model.js +2 -19
  418. package/dist/inspector/sketch/persistence.d.ts +0 -1
  419. package/dist/inspector/sketch/persistence.js +2 -2
  420. package/dist/inspector/sketch/raster.d.ts +1 -4
  421. package/dist/inspector/sketch/raster.js +2 -8
  422. package/dist/inspector/sketch/store.js +2 -3
  423. package/dist/inspector/sketch/videoFrames.js +2 -3
  424. package/dist/inspector/spacing/projection.d.ts +0 -8
  425. package/dist/inspector/spacing/projection.js +38 -20
  426. package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
  427. package/dist/inspector/styleEditors/BorderEditor.js +1 -6
  428. package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
  429. package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
  430. package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
  431. package/dist/inspector/styleEditors/FlexControls.js +158 -0
  432. package/dist/inspector/styleEditors/GapField.d.ts +5 -2
  433. package/dist/inspector/styleEditors/GapField.js +3 -4
  434. package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
  435. package/dist/inspector/styleEditors/GridChildSection.js +0 -5
  436. package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
  437. package/dist/inspector/styleEditors/GridPicker.js +2 -4
  438. package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
  439. package/dist/inspector/styleEditors/GridSection.js +22 -9
  440. package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
  441. package/dist/inspector/styleEditors/GridValueField.js +2 -8
  442. package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
  443. package/dist/inspector/styleEditors/ImageBackgroundEditor.js +0 -1
  444. package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
  445. package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
  446. package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
  447. package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
  448. package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
  449. package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
  450. package/dist/inspector/styleEditors/LayoutSection.js +30 -356
  451. package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
  452. package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
  453. package/dist/inspector/styleEditors/PositionControls.js +16 -0
  454. package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
  455. package/dist/inspector/styleEditors/SizeSection.js +71 -0
  456. package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
  457. package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
  458. package/dist/inspector/styleEditors/Typography.js +2 -4
  459. package/dist/inspector/styleEditors/borderModel.d.ts +1 -7
  460. package/dist/inspector/styleEditors/borderModel.js +2 -11
  461. package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
  462. package/dist/inspector/styleEditors/completeCssValue.js +3 -13
  463. package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
  464. package/dist/inspector/styleEditors/fieldValue.js +26 -0
  465. package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
  466. package/dist/inspector/styleEditors/gradientValue.js +3 -2
  467. package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
  468. package/dist/inspector/styleEditors/gridChildModel.js +6 -37
  469. package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
  470. package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
  471. package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
  472. package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
  473. package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
  474. package/dist/inspector/styleEditors/layoutMode.js +33 -0
  475. package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
  476. package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
  477. package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
  478. package/dist/inspector/styleEditors/layoutValue.js +4 -12
  479. package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
  480. package/dist/inspector/styleEditors/nudgeValue.js +1 -13
  481. package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
  482. package/dist/inspector/styleEditors/rowLookup.js +1 -5
  483. package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
  484. package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
  485. package/dist/inspector/styleEditors/stylePresence.js +1 -4
  486. package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
  487. package/dist/inspector/styleEditors/textRelevance.js +1 -1
  488. package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
  489. package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
  490. package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
  491. package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
  492. package/dist/inspector/styleEditors/valuePolicy.js +0 -1
  493. package/dist/inspector/testing.d.ts +1 -4
  494. package/dist/inspector/testing.js +1 -4
  495. package/dist/inspector/tokens/TokenChip.d.ts +1 -4
  496. package/dist/inspector/tokens/TokenChip.js +1 -4
  497. package/dist/inspector/tokens/TokenField.d.ts +4 -3
  498. package/dist/inspector/tokens/TokenField.js +19 -29
  499. package/dist/inspector/tokens/catalog.d.ts +2 -10
  500. package/dist/inspector/tokens/catalog.js +5 -12
  501. package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
  502. package/dist/inspector/tokens/dragPointerLock.js +2 -3
  503. package/dist/inspector/tokens/editActions.d.ts +1 -1
  504. package/dist/inspector/tokens/editActions.js +2 -4
  505. package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
  506. package/dist/inspector/tokens/resolution/cascade.js +1 -5
  507. package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +1 -5
  508. package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
  509. package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
  510. package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
  511. package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
  512. package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
  513. package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
  514. package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
  515. package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
  516. package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
  517. package/dist/inspector/tokens/resolution.d.ts +5 -24
  518. package/dist/inspector/tokens/resolution.js +16 -71
  519. package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
  520. package/dist/inspector/tokens/tokenAvailability.js +6 -38
  521. package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
  522. package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
  523. package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
  524. package/dist/inspector/ui/AtRuleContext.js +8 -6
  525. package/dist/inspector/ui/ControlSurface.d.ts +0 -4
  526. package/dist/inspector/ui/Disclosure.d.ts +0 -5
  527. package/dist/inspector/ui/Disclosure.js +0 -4
  528. package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
  529. package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
  530. package/dist/inspector/ui/InspectorPopover.js +1 -5
  531. package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
  532. package/dist/inspector/ui/SegmentedControl.js +6 -4
  533. package/dist/inspector/ui/SideValuesField.d.ts +1 -6
  534. package/dist/inspector/ui/SideValuesField.js +2 -8
  535. package/dist/inspector/ui/Toast.d.ts +0 -4
  536. package/dist/inspector/ui/Toast.js +0 -4
  537. package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
  538. package/dist/inspector/ui/atRuleSegments.js +34 -0
  539. package/dist/inspector/ui/classNames.d.ts +0 -1
  540. package/dist/inspector/ui/classNames.js +0 -1
  541. package/dist/inspector/ui/customCursors.d.ts +7 -1
  542. package/dist/inspector/ui/customCursors.js +2 -6
  543. package/dist/inspector/ui/styles.js +18 -20
  544. package/dist/inspector/workspace/controller.js +20 -1
  545. package/dist/inspector/workspace/handoff.d.ts +1 -5
  546. package/dist/inspector/workspace/handoff.js +1 -5
  547. package/dist/inspector/workspace/timeline.d.ts +5 -2
  548. package/dist/inspector/workspace/timeline.js +0 -1
  549. package/dist/internal/agent-protocol.d.ts +20 -42
  550. package/dist/internal/agent-protocol.js +18 -35
  551. package/dist/nudge-ui.mjs +75 -28
  552. package/dist/project/artifacts.js +24 -21
  553. package/dist/project/files.d.ts +0 -1
  554. package/dist/project/files.js +2 -9
  555. package/dist/project/identity.d.ts +1 -5
  556. package/dist/project/identity.js +1 -5
  557. package/dist/project/mcpPackage.d.ts +1 -6
  558. package/dist/project/mcpPackage.js +2 -7
  559. package/dist/project/pathPolicy.d.ts +1 -6
  560. package/dist/project/pathPolicy.js +1 -6
  561. package/dist/project/tokens.d.ts +2 -12
  562. package/dist/project/tokens.js +4 -15
  563. package/dist/transport/editor.d.ts +1 -12
  564. package/dist/transport/editor.js +2 -13
  565. package/dist/transport/index.d.ts +0 -5
  566. package/dist/transport/index.js +0 -5
  567. package/dist/transport/routes.d.ts +0 -5
  568. package/dist/transport/routes.js +0 -5
  569. package/package.json +5 -4
  570. package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
  571. package/dist/inspector/styleEditors/InsetSection.js +0 -15
  572. package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
  573. package/dist/inspector/styleEditors/PositionInsets.js +0 -12
  574. package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
  575. package/dist/inspector/tokens/TokenDropdown.js +0 -59
@@ -5,6 +5,5 @@ export interface CanvasRendererMessage {
5
5
  message: RendererToControllerMessage;
6
6
  }
7
7
  type CanvasRendererMessageListener = (event: CanvasRendererMessage) => void;
8
- /** Subscribes to same-origin messages from registered Canvas renderer frames. */
9
8
  export declare function subscribeCanvasRendererMessages(listener: CanvasRendererMessageListener): () => void;
10
9
  export {};
@@ -26,7 +26,6 @@ function routeRendererMessage(event) {
26
26
  for (const listener of listeners)
27
27
  listener(routed);
28
28
  }
29
- /** Subscribes to same-origin messages from registered Canvas renderer frames. */
30
29
  export function subscribeCanvasRendererMessages(listener) {
31
30
  if (listeners.size === 0)
32
31
  window.addEventListener("message", routeRendererMessage);
@@ -1,8 +1,4 @@
1
1
  import type { ElementClickMessage } from "./frameProtocol.js";
2
2
  import type { FrameConnection } from "./frameConnection.js";
3
- /**
4
- * Selects the exact DOM node the user clicked inside a card's frame, so the
5
- * controller mutates that physical node. If it no longer exists, the card is
6
- * selected instead of binding the click to an unrelated node.
7
- */
3
+ /** Selects the exact DOM node the user clicked. Falls back to the card when that node is gone. */
8
4
  export declare function handleElementClick(msg: ElementClickMessage, frame: FrameConnection): void;
@@ -1,11 +1,7 @@
1
1
  import { getSelectedElements, setSelectedElement, toggleSelectedElement } from "../selection/selectionStore.js";
2
2
  import { selectCard } from "./canvasStore.js";
3
3
  import { inspectComponentTargets } from "../componentSemantics/index.js";
4
- /**
5
- * Selects the exact DOM node the user clicked inside a card's frame, so the
6
- * controller mutates that physical node. If it no longer exists, the card is
7
- * selected instead of binding the click to an unrelated node.
8
- */
4
+ /** Selects the exact DOM node the user clicked. Falls back to the card when that node is gone. */
9
5
  export function handleElementClick(msg, frame) {
10
6
  const el = frame.element(msg);
11
7
  if (!el) {
@@ -24,8 +20,7 @@ export function handleElementClick(msg, frame) {
24
20
  domElement: el,
25
21
  componentTargets,
26
22
  };
27
- // setSelectedElement must run before any side effect that could reload the
28
- // host page, otherwise the selection would be discarded by the unload.
23
+ // Must run before any side effect that could reload the host page, which would drop the selection.
29
24
  const current = getSelectedElements();
30
25
  if (msg.additive && current.length > 0 && current.every((candidate) => candidate.domElement.ownerDocument === el.ownerDocument)) {
31
26
  toggleSelectedElement(selected);
@@ -1,5 +1,4 @@
1
1
  import { type ReplaceStylesMessage } from "./frameProtocol.js";
2
- /** Installs renderer diagnostics only after the dev-only renderer bootstrap. */
3
2
  export declare function startRendererProjectionDiagnostics(): () => void;
4
3
  export declare function getLastAppliedRevision(): number;
5
4
  export declare function resetRendererRevision(): void;
@@ -9,16 +9,24 @@ import { applyStructuralProjection, getStructuralProjectionReports, isStructural
9
9
  import { applyTextContentProjection, getTextProjectionReports, subscribeTextProjectionDiagnostics, } from "../projection/textProjection.js";
10
10
  import { isTextContentChangeListValue } from "../changes/types.js";
11
11
  import { applyDraftProjection, } from "../projection/draftProjection.js";
12
- import { adoptStylesheet, allowsStyleElements } from "../runtime/ownedStylesheets.js";
12
+ import { adoptStylesheet, allowsStyleElements, getAdoptedStylesheet } from "../runtime/ownedStylesheets.js";
13
13
  import { applyRuntimeIdentityClaims, isRuntimeIdentityClaim } from "../runtime/runtimeIdentityClaims.js";
14
14
  const SHEET_ID = "nudge-ui-styles";
15
+ let adoptedCss = null;
15
16
  function replaceRendererCss(css) {
16
17
  if (!allowsStyleElements(document)) {
18
+ // Structural and text projections resend unchanged CSS; rewriting it would discard cached resolutions.
19
+ const adopted = getAdoptedStylesheet(document, SHEET_ID);
20
+ if (adopted && adoptedCss === css && document.adoptedStyleSheets.includes(adopted))
21
+ return;
17
22
  adoptStylesheet(document, SHEET_ID, css);
23
+ adoptedCss = css;
18
24
  notifyBrowserStylesheetChange(document);
19
25
  return;
20
26
  }
21
27
  let sheet = document.getElementById(SHEET_ID);
28
+ if (sheet?.textContent === css)
29
+ return;
22
30
  if (!sheet) {
23
31
  sheet = document.createElement("style");
24
32
  sheet.id = SHEET_ID;
@@ -124,7 +132,6 @@ function sendProjectionApplied(revision) {
124
132
  };
125
133
  sendToParent(msg);
126
134
  }
127
- /** Installs renderer diagnostics only after the dev-only renderer bootstrap. */
128
135
  export function startRendererProjectionDiagnostics() {
129
136
  if (!isNudgeUiDev() || activeDiagnosticsOwner)
130
137
  return () => undefined;
@@ -1,13 +1,4 @@
1
- /**
2
- * Keep the resize handle usable while the board is zoomed without allowing
3
- * inverse scaling to make it disproportionately large or small.
4
- */
1
+ /** Keeps the resize handle usable at any zoom without letting inverse scaling make it disproportionately large or small. */
5
2
  export declare const CANVAS_RESIZE_HANDLE_MIN_SCALE: number;
6
3
  export declare const CANVAS_RESIZE_HANDLE_MAX_SCALE = 2;
7
- /**
8
- * Returns the scale to apply inside the board's zoomed coordinate space.
9
- *
10
- * The lower bound matches the inverse of the largest supported camera zoom,
11
- * and the upper bound follows the toolbar compensation policy.
12
- */
13
4
  export declare function getCanvasResizeHandleScale(zoom: number): number;
@@ -1,17 +1,8 @@
1
1
  import { MAX_CAMERA_ZOOM } from "./viewStore.js";
2
2
  import { CANVAS_TOOLBAR_MAX_SCALE } from "./toolbarScale.js";
3
- /**
4
- * Keep the resize handle usable while the board is zoomed without allowing
5
- * inverse scaling to make it disproportionately large or small.
6
- */
3
+ /** Keeps the resize handle usable at any zoom without letting inverse scaling make it disproportionately large or small. */
7
4
  export const CANVAS_RESIZE_HANDLE_MIN_SCALE = 1 / MAX_CAMERA_ZOOM;
8
5
  export const CANVAS_RESIZE_HANDLE_MAX_SCALE = CANVAS_TOOLBAR_MAX_SCALE;
9
- /**
10
- * Returns the scale to apply inside the board's zoomed coordinate space.
11
- *
12
- * The lower bound matches the inverse of the largest supported camera zoom,
13
- * and the upper bound follows the toolbar compensation policy.
14
- */
15
6
  export function getCanvasResizeHandleScale(zoom) {
16
7
  if (!Number.isFinite(zoom) || zoom <= 0) {
17
8
  return CANVAS_RESIZE_HANDLE_MAX_SCALE;
@@ -33,7 +33,6 @@ export interface DurableSession {
33
33
  export type { SerializableChange, SerializableComponentChange, SerializableElementChange, SerializableTextContentChange, SerializableTokenChange, SerializableTokenRef, } from "../changes/codecs.js";
34
34
  export interface HydrationResult {
35
35
  restored: boolean;
36
- changeCount: number;
37
36
  }
38
37
  export declare function serializeSession(): DurableSession;
39
38
  export declare function persistSession(): boolean;
@@ -42,13 +41,8 @@ export declare function hydrateSession(): HydrationResult;
42
41
  export declare function clearSelectedFrameChanges(): Promise<void>;
43
42
  export declare function clearSession(): void;
44
43
  export declare function enableAutoSave(): void;
45
- /**
46
- * Coalesces the synchronous full-session `JSON.stringify` + `localStorage`
47
- * write behind a trailing timer so commits never block on persistence. A
48
- * refresh or close inside the debounce window still flushes on `beforeunload`.
49
- */
44
+ /** Coalesces the synchronous full-session write behind a trailing timer; `beforeunload` still flushes it. */
50
45
  export declare function scheduleAutoSave(): void;
51
- export declare function scheduleCanvasSave(): void;
52
46
  export declare function flushAutoSave(): void;
53
47
  export declare function getRestoreCount(): number;
54
48
  export declare function setRestoreCount(count: number): void;
@@ -70,10 +70,7 @@ export function persistSession() {
70
70
  return false;
71
71
  return persistSessionUnchecked();
72
72
  }
73
- /**
74
- * Serializes and writes the session without the write-lease gate. The public
75
- * persistence path checks the lease before calling this helper.
76
- */
73
+ /** Skips the write-lease gate; the public persistence path checks the lease first. */
77
74
  function persistSessionUnchecked() {
78
75
  if (!projectId())
79
76
  return false;
@@ -84,56 +81,56 @@ function persistSessionUnchecked() {
84
81
  return true;
85
82
  }
86
83
  catch {
87
- // Storage unavailable or quota exceeded — silently ignore
84
+ // Storage unavailable or quota exceeded
88
85
  return false;
89
86
  }
90
87
  }
91
88
  export function hydrateSession() {
92
89
  if (!projectId())
93
- return { restored: false, changeCount: 0 };
90
+ return { restored: false };
94
91
  let raw = null;
95
92
  try {
96
93
  raw = inspectorStorage()?.getItem(storageKey(projectId())) ?? null;
97
94
  }
98
95
  catch {
99
- return { restored: false, changeCount: 0 };
96
+ return { restored: false };
100
97
  }
101
98
  if (!raw)
102
- return { restored: false, changeCount: 0 };
99
+ return { restored: false };
103
100
  let session;
104
101
  try {
105
102
  session = JSON.parse(raw);
106
103
  }
107
104
  catch {
108
105
  safeDiscard();
109
- return { restored: false, changeCount: 0 };
106
+ return { restored: false };
110
107
  }
111
108
  if (!session || typeof session !== "object") {
112
109
  safeDiscard();
113
- return { restored: false, changeCount: 0 };
110
+ return { restored: false };
114
111
  }
115
112
  const s = session;
116
113
  if (typeof s.schemaVersion !== "number" || s.schemaVersion !== SCHEMA_VERSION) {
117
114
  safeDiscard();
118
- return { restored: false, changeCount: 0 };
115
+ return { restored: false };
119
116
  }
120
117
  if (typeof s.projectId !== "string" || s.projectId !== projectId()) {
121
118
  safeDiscard();
122
- return { restored: false, changeCount: 0 };
119
+ return { restored: false };
123
120
  }
124
121
  if (typeof s.mode !== "string" || (s.mode !== "inspect" && s.mode !== "canvas")) {
125
122
  safeDiscard();
126
- return { restored: false, changeCount: 0 };
123
+ return { restored: false };
127
124
  }
128
125
  if (!isSameOriginUrl(s.inspectUrl)) {
129
126
  safeDiscard();
130
- return { restored: false, changeCount: 0 };
127
+ return { restored: false };
131
128
  }
132
129
  const inspectRouteChanged = s.mode === "inspect" && s.inspectUrl !== window.location.href;
133
130
  const cards = Array.isArray(s.cards) ? s.cards : null;
134
131
  if (!cards) {
135
132
  safeDiscard();
136
- return { restored: false, changeCount: 0 };
133
+ return { restored: false };
137
134
  }
138
135
  const serializableCards = [];
139
136
  for (const card of cards) {
@@ -148,7 +145,7 @@ export function hydrateSession() {
148
145
  candidate.width <= 0 ||
149
146
  candidate.height <= 0) {
150
147
  safeDiscard();
151
- return { restored: false, changeCount: 0 };
148
+ return { restored: false };
152
149
  }
153
150
  const c = card;
154
151
  serializableCards.push({
@@ -164,7 +161,7 @@ export function hydrateSession() {
164
161
  }
165
162
  if (new Set(serializableCards.map((card) => card.id)).size !== serializableCards.length) {
166
163
  safeDiscard();
167
- return { restored: false, changeCount: 0 };
164
+ return { restored: false };
168
165
  }
169
166
  const cardsById = new Map(serializableCards.map((card) => [card.id, card]));
170
167
  const cameraRaw = s.camera;
@@ -173,18 +170,18 @@ export function hydrateSession() {
173
170
  !isFiniteNumber(cameraRaw.y) ||
174
171
  !isFiniteNumber(cameraRaw.zoom)) {
175
172
  safeDiscard();
176
- return { restored: false, changeCount: 0 };
173
+ return { restored: false };
177
174
  }
178
175
  const presentation = s.presentation ?? "focus";
179
176
  const groups = Array.isArray(s.groups) ? s.groups.filter((group) => group?.kind !== "linked") : s.groups ?? [];
180
177
  if ((presentation !== "focus" && presentation !== "canvas") || !Array.isArray(groups) || !groups.every(isFrameGroup)) {
181
178
  safeDiscard();
182
- return { restored: false, changeCount: 0 };
179
+ return { restored: false };
183
180
  }
184
181
  const clipboardHandoff = s.clipboardHandoff;
185
182
  if (!isClipboardHandoffSnapshot(clipboardHandoff)) {
186
183
  safeDiscard();
187
- return { restored: false, changeCount: 0 };
184
+ return { restored: false };
188
185
  }
189
186
  const camera = {
190
187
  x: cameraRaw.x,
@@ -198,24 +195,20 @@ export function hydrateSession() {
198
195
  : undefined;
199
196
  if (focusedCardId === undefined) {
200
197
  safeDiscard();
201
- return { restored: false, changeCount: 0 };
198
+ return { restored: false };
202
199
  }
203
200
  hydrateCanvasStore(s.mode, serializableCards, camera, focusedCardId, presentation, groups);
204
201
  hydrateClipboardHandoff(clipboardHandoff);
205
- // A different URL means the user intentionally navigated while Inspect was
206
- // active. Keep the durable edits, but adopt the new route instead of
207
- // sending the user back to the previous page. On refresh, the URLs already
208
- // match and restoration remains unchanged.
202
+ // A changed URL means the user navigated while Inspect was active: keep the edits but adopt the new route.
209
203
  if (inspectRouteChanged)
210
204
  persistSessionUnchecked();
211
- return { restored: true, changeCount: 0 };
205
+ return { restored: true };
212
206
  }
213
207
  function safeDiscard() {
214
208
  try {
215
209
  inspectorStorage()?.removeItem(storageKey(projectId()));
216
210
  }
217
211
  catch {
218
- // ignore
219
212
  }
220
213
  }
221
214
  /** Clears the active draft, its comments, and project sketches while preserving canvas geometry and other drafts. */
@@ -242,7 +235,6 @@ export function clearSession() {
242
235
  inspectorStorage()?.removeItem(storageKey(projectId()));
243
236
  }
244
237
  catch {
245
- // ignore
246
238
  }
247
239
  clearComments();
248
240
  clearActiveDraft();
@@ -272,11 +264,7 @@ export function enableAutoSave() {
272
264
  autoSaveEnabled = true;
273
265
  window.addEventListener("beforeunload", flushAutoSave);
274
266
  }
275
- /**
276
- * Coalesces the synchronous full-session `JSON.stringify` + `localStorage`
277
- * write behind a trailing timer so commits never block on persistence. A
278
- * refresh or close inside the debounce window still flushes on `beforeunload`.
279
- */
267
+ /** Coalesces the synchronous full-session write behind a trailing timer; `beforeunload` still flushes it. */
280
268
  export function scheduleAutoSave() {
281
269
  if (!autoSaveEnabled)
282
270
  return;
@@ -291,7 +279,6 @@ export function scheduleAutoSave() {
291
279
  autoSaveDirty = false;
292
280
  }, AUTOSAVE_DEBOUNCE_MS);
293
281
  }
294
- export function scheduleCanvasSave() { scheduleAutoSave(); }
295
282
  export function flushAutoSave() {
296
283
  if (autosaveTimer !== null) {
297
284
  clearTimeout(autosaveTimer);
@@ -148,10 +148,7 @@ function applyStaleResults(changes, attempts) {
148
148
  continue;
149
149
  }
150
150
  const routes = evidence.get(i);
151
- // A document that does not contain the target says nothing about
152
- // staleness. Publish target-missing only when the change matches nowhere;
153
- // a Canvas-only match is verified, not a host conflict. When nowhere,
154
- // every live document reports the same miss.
151
+ // Publish target-missing only when no live document matches; a Canvas-only match is verified, not a host conflict.
155
152
  if (!routes || routes.length === 0) {
156
153
  for (const attempt of attempts.values()) {
157
154
  publishPreviewDiagnostic(attempt, changeKey(change), buildStaleResult(change.selector, getRequestedValue(change)));
@@ -1,7 +1,4 @@
1
- /**
2
- * Keep canvas card controls usable while the board is zoomed out without
3
- * letting them grow without bound relative to the card.
4
- */
1
+ /** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
5
2
  export declare const CANVAS_TOOLBAR_MAX_SCALE = 2;
6
3
  export declare const CANVAS_TOOLBAR_SCALE_CAP_ZOOM: number;
7
4
  export declare function getCanvasToolbarScale(zoom: number): number;
@@ -1,7 +1,4 @@
1
- /**
2
- * Keep canvas card controls usable while the board is zoomed out without
3
- * letting them grow without bound relative to the card.
4
- */
1
+ /** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
5
2
  export const CANVAS_TOOLBAR_MAX_SCALE = 2;
6
3
  export const CANVAS_TOOLBAR_SCALE_CAP_ZOOM = 1 / CANVAS_TOOLBAR_MAX_SCALE;
7
4
  export function getCanvasToolbarScale(zoom) {
@@ -1,5 +1,4 @@
1
1
  import { type RefObject } from "react";
2
2
  import { type CanvasCard } from "./canvasStore.js";
3
3
  import { type CanvasCamera, type CanvasPresentation } from "./viewStore.js";
4
- /** Animates frame creation and layout changes without delaying direct manipulation. */
5
4
  export declare function useCanvasLayoutAnimation(boardRef: RefObject<HTMLDivElement | null>, cards: readonly CanvasCard[], camera: CanvasCamera, presentation: CanvasPresentation): void;
@@ -4,7 +4,6 @@ import {} from "./canvasStore.js";
4
4
  import { setCanvasLayoutTransitioning } from "./viewStore.js";
5
5
  const SLIDE_OPTIONS = { duration: 300, easing: "ease-out" };
6
6
  const CAMERA_OPTIONS = { duration: 150, easing: "ease-out" };
7
- /** Animates frame creation and layout changes without delaying direct manipulation. */
8
7
  export function useCanvasLayoutAnimation(boardRef, cards, camera, presentation) {
9
8
  const previous = useRef({ cards, camera, presentation });
10
9
  const animations = useRef([]);
@@ -2,7 +2,7 @@ import { useSyncExternalStore } from "react";
2
2
  export const MIN_CAMERA_ZOOM = 0.25;
3
3
  export const MAX_CAMERA_ZOOM = 3;
4
4
  export const DEFAULT_CAMERA = { x: 0, y: 0, zoom: 1 };
5
- /** How the canvas is viewed. Frames, groups, and selection live in the canvas store. */
5
+ /** Frames, groups, and selection live in the canvas store. */
6
6
  let mode = "inspect";
7
7
  let presentation = "focus";
8
8
  let presentationTransitioning = false;
@@ -1,4 +1,4 @@
1
- /** Converts wheel units to pixel distances for consistent canvas panning. */
1
+ /** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
2
2
  export declare function wheelPanDelta(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode" | "shiftKey">, viewport: {
3
3
  width: number;
4
4
  height: number;
@@ -1,4 +1,4 @@
1
- /** Converts wheel units to pixel distances for consistent canvas panning. */
1
+ /** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
2
2
  export function wheelPanDelta(event, viewport) {
3
3
  const xUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.width : 1;
4
4
  const yUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.height : 1;
@@ -10,11 +10,7 @@ export declare function acquireLease(): boolean;
10
10
  export declare function requestTakeover(): boolean;
11
11
  /** Enable lease checks for state-changing controller actions in this document. */
12
12
  export declare function enableWriteGuard(): void;
13
- /**
14
- * Unit-level modules are also used without the browser controller bootstrap.
15
- * Once the controller enables the guard, only the current lease owner may
16
- * mutate or persist its canonical workspace state.
17
- */
13
+ /** Off by default so unit-level modules work without the controller bootstrap. */
18
14
  export declare function canWriteWorkspace(): boolean;
19
15
  export declare function releaseLease(): void;
20
16
  export declare function hasWriteLease(): boolean;
@@ -49,7 +49,6 @@ function deleteLease() {
49
49
  localStorage.removeItem(leaseKey());
50
50
  }
51
51
  catch {
52
- /* ignore */
53
52
  }
54
53
  }
55
54
  export function isLeaseExpired(lease, now = Date.now()) {
@@ -67,7 +66,6 @@ function notifyOwnershipListeners() {
67
66
  listener(snapshot);
68
67
  }
69
68
  catch {
70
- /* ignore */
71
69
  }
72
70
  }
73
71
  }
@@ -149,11 +147,7 @@ export function requestTakeover() {
149
147
  export function enableWriteGuard() {
150
148
  writeGuardEnabled = true;
151
149
  }
152
- /**
153
- * Unit-level modules are also used without the browser controller bootstrap.
154
- * Once the controller enables the guard, only the current lease owner may
155
- * mutate or persist its canonical workspace state.
156
- */
150
+ /** Off by default so unit-level modules work without the controller bootstrap. */
157
151
  export function canWriteWorkspace() {
158
152
  return !writeGuardEnabled || hasWriteLease();
159
153
  }
@@ -35,7 +35,8 @@ export function isSerializableElementChangeValue(value) {
35
35
  || (value.runtimeEvidence !== undefined && !isRuntimeElementEvidenceValue(value.runtimeEvidence))
36
36
  || (value.sourceEvidence !== undefined && !isSourceElementEvidenceValue(value.sourceEvidence))
37
37
  || !isEditScopeValue(value.scope)
38
- || (value.sourceInstanceCount !== undefined && (!Number.isSafeInteger(value.sourceInstanceCount) || value.sourceInstanceCount < 1))
38
+ || (value.sourceInstanceCount !== undefined
39
+ && (!isNonNegativeSafeInteger(value.sourceInstanceCount) || value.sourceInstanceCount < 1))
39
40
  || (value.instanceOverride !== undefined && value.scope !== "rendered-instance")
40
41
  || (value.scope === "rendered-instance" && !isRenderedInstanceOverride(value.instanceOverride))
41
42
  || (value.state !== undefined && !isElementStateValue(value.state))) {
@@ -1,12 +1,7 @@
1
1
  import type { DraftChangesSnapshot, DraftProjectionEvent } from "../drafts/draftStore.js";
2
- /** The host document's preview of the active draft. */
3
2
  export interface DraftPreview {
4
3
  project(snapshot: DraftChangesSnapshot, event: DraftProjectionEvent): void;
5
4
  dispose(): void;
6
5
  }
7
- /**
8
- * Projects the active draft into the host document and verifies the managed
9
- * CSS off the commit path (0044). Verification re-checks the full surviving
10
- * set: a new rule can change cascade or specificity for earlier changes.
11
- */
6
+ /** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
12
7
  export declare function createDraftPreview(readActive: () => DraftChangesSnapshot): DraftPreview;
@@ -1,23 +1,16 @@
1
1
  import { getSelectedElement } from "../selection/selectionStore.js";
2
2
  import { changeKey } from "./model.js";
3
- import { verifyManagedStyleProjection } from "./managedStyleProjection.js";
4
- import { isPreviewableChange } from "./types.js";
5
- import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, publishPreviewDiagnostic, } from "./previewDiagnostics.js";
3
+ import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, } from "./previewDiagnostics.js";
4
+ import { verifyPreviewChanges } from "./previewVerification.js";
6
5
  import { clearStructuralProjectionReports, pruneStructuralProjectionReports } from "../projection/structuralProjection.js";
7
6
  import { applyHostDraftProjection, compileDraftProjection } from "../projection/draftProjection.js";
8
7
  import { isEditorShellDocument } from "../runtime/editorShell.js";
9
8
  import { isOriginalPreviewActive, subscribeOriginalPreview } from "../shell/originalPreview.js";
10
- /**
11
- * Projects the active draft into the host document and verifies the managed
12
- * CSS off the commit path (0044). Verification re-checks the full surviving
13
- * set: a new rule can change cascade or specificity for earlier changes.
14
- */
9
+ /** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
15
10
  export function createDraftPreview(readActive) {
16
11
  let pendingTargets = new Map();
17
12
  let handle = null;
18
13
  function reapply(snapshot) {
19
- // While hold-to-view-original is active the host document intentionally
20
- // shows the page without inspector changes. Releasing re-projects.
21
14
  if (isOriginalPreviewActive())
22
15
  return;
23
16
  if (!isEditorShellDocument())
@@ -25,30 +18,25 @@ export function createDraftPreview(readActive) {
25
18
  }
26
19
  function flushVerification() {
27
20
  handle = null;
28
- // Probing the original preview would report the held-back changes as
29
- // conflicts. Keep the pending targets; releasing re-verifies them.
21
+ // Probing the original preview would report held-back changes as conflicts; keep the targets for re-verification on release.
30
22
  if (isOriginalPreviewActive())
31
23
  return;
32
24
  const targets = pendingTargets;
33
25
  pendingTargets = new Map();
34
- // The editor shell has no application document. Renderer diagnostics are
35
- // owned by renderer projection reports.
26
+ // The editor shell has no application document to verify; renderer projection reports cover it.
36
27
  if (targets.size === 0 || isEditorShellDocument())
37
28
  return;
38
29
  const current = readActive();
39
30
  const attempt = beginPreviewAttempt(getHostPreviewDocument(), current.revision);
40
31
  if (!attempt)
41
32
  return;
42
- for (const change of current.changes) {
43
- if (!isPreviewableChange(change))
44
- continue;
45
- const key = changeKey(change);
46
- if (!targets.has(key))
47
- continue;
48
- const result = verifyManagedStyleProjection(change, targets.get(key) ?? null);
49
- if (result)
50
- publishPreviewDiagnostic(attempt, key, result);
51
- }
33
+ const targeted = current.changes.filter((change) => targets.has(changeKey(change)));
34
+ verifyPreviewChanges({
35
+ changes: targeted,
36
+ document,
37
+ attempt,
38
+ targetFor: (change) => targets.get(changeKey(change)) ?? null,
39
+ });
52
40
  }
53
41
  function scheduleVerification() {
54
42
  if (handle !== null)
@@ -70,8 +58,7 @@ export function createDraftPreview(readActive) {
70
58
  for (const key of snapshot.changes.map(changeKey)) {
71
59
  if (!pendingTargets.has(key))
72
60
  added = true;
73
- // Keep the latest commit context for a merged key. The element may be in
74
- // an iframe, so this is also the document for verification.
61
+ // Latest commit context wins for a merged key; the element may live in an iframe, which fixes the verification document.
75
62
  pendingTargets.set(key, verificationTargets?.get(key) ?? selectedElement);
76
63
  }
77
64
  if (added)
@@ -93,8 +80,7 @@ export function createDraftPreview(readActive) {
93
80
  return;
94
81
  }
95
82
  reapply(snapshot);
96
- // A flush during the hold kept its targets without scheduling, so marking
97
- // alone would find every key present and schedule nothing.
83
+ // A flush during the hold kept its targets without scheduling, so markForVerification would find every key present and schedule nothing.
98
84
  markForVerification(snapshot);
99
85
  if (pendingTargets.size > 0)
100
86
  scheduleVerification();
@@ -117,8 +103,7 @@ export function createDraftPreview(readActive) {
117
103
  markForVerification(snapshot);
118
104
  return;
119
105
  case "reset":
120
- // A deferred verification must not inspect a new record with the
121
- // selection context of the cleared one.
106
+ // A deferred verification must not inspect a new record with the selection context of the cleared one.
122
107
  pendingTargets.clear();
123
108
  clearPreviewDiagnostics();
124
109
  clearStructuralProjectionReports();
@@ -1,14 +1,11 @@
1
1
  import type { TokenContextWrapper } from "../../css/model/index.js";
2
2
  export type EditScope = "source-site" | "rendered-instance";
3
- /** A JSX instrumentation site. This is stable across documents. */
3
+ /** JSX instrumentation site; stable across documents. */
4
4
  export interface SourceSiteRef {
5
5
  cid: string;
6
6
  src: string;
7
7
  }
8
- /**
9
- * Serializable identity for one rendered output. It deliberately contains no
10
- * DOM reference or generated node id: each document resolves it independently.
11
- */
8
+ /** Deliberately free of DOM references and generated node ids; each document resolves it independently. */
12
9
  export interface RenderedInstanceRef {
13
10
  sourceSite: SourceSiteRef;
14
11
  locator: {
@@ -22,14 +19,10 @@ export interface RenderedInstanceRef {
22
19
  tagName?: string;
23
20
  domPath?: string | null;
24
21
  elementId?: string | null;
25
- /**
26
- * The component invocation whose entire output is this element. Present
27
- * only when evidence alone cannot tell identical outputs apart.
28
- */
22
+ /** Present only when evidence alone cannot tell identical outputs apart. */
29
23
  invocation?: InvocationRef;
30
24
  };
31
25
  }
32
- /** A component callsite, as stamped by the compiler, and its component name. */
33
26
  export interface InvocationRef {
34
27
  callsiteId: string;
35
28
  componentName: string;
@@ -44,9 +37,7 @@ export interface StyleRuleContext {
44
37
  }
45
38
  export declare function isRenderedInstanceRef(value: unknown): value is RenderedInstanceRef;
46
39
  export declare function isRenderedInstanceOverride(value: unknown): value is RenderedInstanceOverride;
47
- /** Validates the serializable context carried by a token change. */
48
40
  export declare function isStyleRuleContextValue(value: unknown): value is StyleRuleContext;
49
- /** A source site shared by text and rendered-instance evidence. */
50
41
  export type TextProjectionSourceSite = SourceSiteRef;
51
42
  export interface TextProjectionTarget {
52
43
  sourceSite: TextProjectionSourceSite;
@@ -62,7 +53,6 @@ export interface TextProjectionTarget {
62
53
  textNodePath?: readonly number[];
63
54
  }
64
55
  export type TextProjectionScope = EditScope;
65
- /** Bounded semantic evidence retained alongside an instance text projection. */
66
56
  export interface TextBindingEvidence {
67
57
  callsiteId: string;
68
58
  componentName: string;
@@ -17,7 +17,7 @@ export function isRenderedInstanceRef(value) {
17
17
  || !hasOnlyKeys(locator, ["kind", "occurrence", "props", "text", "ariaLabel", "tagName", "domPath", "elementId", "invocation"]))
18
18
  return false;
19
19
  return locator.kind === "evidence"
20
- && Number.isSafeInteger(locator.occurrence) && locator.occurrence >= 0
20
+ && isNonNegativeSafeInteger(locator.occurrence)
21
21
  && (typeof locator.props === "string" || locator.props === null)
22
22
  && (typeof locator.text === "string" || locator.text === null)
23
23
  && (locator.ariaLabel === undefined || typeof locator.ariaLabel === "string" || locator.ariaLabel === null)
@@ -32,7 +32,6 @@ export function isRenderedInstanceOverride(value) {
32
32
  && typeof value.id === "string"
33
33
  && isRenderedInstanceRef(value.target);
34
34
  }
35
- /** Validates the serializable context carried by a token change. */
36
35
  export function isStyleRuleContextValue(value) {
37
36
  if (!isRecord(value) || !hasOnlyKeys(value, ["wrappers"]))
38
37
  return false;