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
@@ -5,28 +5,19 @@ import { TokenField, TokenValueField } from "../tokens/TokenField.js";
5
5
  import { IconButton } from "../ui/IconButton.js";
6
6
  import { SideValuesField, SIDE_NAMES, MarginSideIndicator, } from "../ui/SideValuesField.js";
7
7
  import { setStyles, swapTokens } from "../tokens/editActions.js";
8
+ import { isCalcExpression } from "../../css/value-semantics/index.js";
9
+ import { deriveActiveTokenName, isExpressionRow } from "./fieldValue.js";
8
10
  import { completeCssValue } from "./completeCssValue.js";
9
11
  import { valuePolicyFor } from "./valuePolicy.js";
10
12
  import { projectInspectorValues, projectInspectorValuesForSelection, } from "../spacing/projection.js";
11
- import { getStateStyleValue } from "../shell/stateValue.js";
12
13
  import { isZeroCssValue } from "./stylePresence.js";
13
14
  import { useFieldVisibility } from "./useFieldVisibility.js";
14
15
  import { inlineBlockedBy } from "./inlineAuthored.js";
15
- export function SpacingBox(props) {
16
- const { element, selection, entries, tokenRows = [], onAfterEdit } = props;
17
- const el = element.domElement;
18
- const allEntries = entries ?? [];
19
- const projection = selection
16
+ /** Values for one selection, projected from its computed styles or the shared selection model. */
17
+ export function projectSpacing(element, selection, tokenRows) {
18
+ return (selection
20
19
  ? projectInspectorValuesForSelection(selection)
21
- : projectInspectorValues(el, tokenRows);
22
- const showRelativeInset = selection
23
- ? selection.supportsRole("relative-position")
24
- : (() => {
25
- const value = getStateStyleValue(el, "position", "static").trim().toLowerCase();
26
- return value === "relative" || value === "sticky";
27
- })();
28
- const editTarget = selection?.target ?? el;
29
- return (_jsxs("div", { className: "editor", "data-test": "spacing-box", children: [_jsx("div", { className: "editor__title", children: "Spacing" }), _jsxs("div", { className: "spacing", children: [_jsx(SpacingField, { property: "padding", projection: projection.spacing.padding, domElement: el, editTarget: editTarget, selection: selection, entries: allEntries, tokenRows: tokenRows, onAfterEdit: onAfterEdit }), _jsx(SpacingField, { property: "margin", projection: projection.spacing.margin, domElement: el, editTarget: editTarget, selection: selection, entries: allEntries, tokenRows: tokenRows, onAfterEdit: onAfterEdit }), showRelativeInset ? _jsx(SpacingField, { property: "inset", projection: projection.spacing.inset, domElement: el, editTarget: editTarget, selection: selection, entries: allEntries, tokenRows: tokenRows, onAfterEdit: onAfterEdit }) : null] })] }));
20
+ : projectInspectorValues(element, tokenRows)).spacing;
30
21
  }
31
22
  export function SpacingField({ property, projection: spacingProjection, domElement: el, editTarget, selection, entries, tokenRows, onAfterEdit, showLabel = true, showEmptyState = true, suggestions, }) {
32
23
  const pairDefinitions = [
@@ -40,12 +31,13 @@ export function SpacingField({ property, projection: spacingProjection, domEleme
40
31
  return {
41
32
  side,
42
33
  icon: null,
43
- control: (_jsx(TokenField, { property: sideName, selection: selection, tokenRow: findTokenRow(tokenRows, sideName), domElement: el, editTarget: editTarget, entries: entries, suggestions: suggestions, displayValue: isCalcValue(field.authoredValue) && field.value ? field.value : undefined, editMetadata: metadataFor(findTokenRow(tokenRows, sideName)), onAfterEdit: onAfterEdit, chipVariant: "small", leading: icon })),
34
+ control: (_jsx(TokenField, { property: sideName, selection: selection, tokenRow: findTokenRow(tokenRows, sideName), domElement: el, editTarget: editTarget, entries: entries, suggestions: suggestions, initialValue: property === "inset" ? "auto" : undefined, displayValue: property === "inset" && !field.tokenName
35
+ ? field.authoredValue
36
+ : isCalcExpression(field.authoredValue) && field.value ? field.value : undefined, editMetadata: metadataFor(findTokenRow(tokenRows, sideName)), onAfterEdit: onAfterEdit, chipVariant: "small", leading: icon })),
44
37
  };
45
38
  });
46
39
  const hasSpacing = SIDE_NAMES.some((side) => {
47
- // Zero spacing is visually empty regardless of whether it came from a
48
- // reset, a component rule, or a token. Open editors stay open below.
40
+ // Zero spacing is visually empty whatever its source; open editors stay open below.
49
41
  const value = spacingProjection.fields[side].value.trim();
50
42
  return value !== "" && !isZeroCssValue(value) && (property !== "inset" || value !== "auto");
51
43
  });
@@ -88,14 +80,11 @@ function PairedTokenField({ displayProperty, sideProperties, domElement: el, edi
88
80
  const row = pairTokenRow(displayProperty, axisProjection);
89
81
  const groupMixed = axisProjection.fields.some((field) => field.value === "Mixed");
90
82
  const valuesMatch = axisProjection.state === "shared" && !groupMixed;
91
- const expression = Boolean(row && (row.capability === "raw" || row.capability === "composite"
92
- || row.modifiers?.some((modifier) => modifier.kind === "alpha")));
83
+ const expression = isExpressionRow(row);
93
84
  const calcAuthored = row?.authored ?? row?.declaredValue ?? "";
94
- const isCalcAuthored = isCalcValue(calcAuthored);
95
- const activeTokenName = !valuesMatch || expression || isCalcAuthored ? null : row.tokenName;
96
- // Some browsers expose the used pixel size for horizontal auto margins.
97
- // Keep the authored keyword visible because replacing it with that transient
98
- // size would misrepresent the declaration and change the edit semantics.
85
+ const isCalcAuthored = isCalcExpression(calcAuthored);
86
+ const activeTokenName = deriveActiveTokenName({ row, mixed: !valuesMatch, authored: calcAuthored });
87
+ // Some browsers report the used pixel size for horizontal auto margins; keep the authored keyword.
99
88
  const committedValue = groupMixed
100
89
  ? "Mixed"
101
90
  : valuesMatch
@@ -130,10 +119,7 @@ function PairedTokenField({ displayProperty, sideProperties, domElement: el, edi
130
119
  }, onUnlink: commitAxisValue, leading: leading, blockedBy: blockedBy }));
131
120
  }
132
121
  function fieldDisplayValue(field) {
133
- return isCalcValue(field.authoredValue) ? field.value : field.authoredValue.trim() || field.value;
134
- }
135
- function isCalcValue(value) {
136
- return /\bcalc\s*\(/i.test(value);
122
+ return isCalcExpression(field.authoredValue) ? field.value : field.authoredValue.trim() || field.value;
137
123
  }
138
124
  function splitAxisValue(value) {
139
125
  let depth = 0;
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from "react";
3
3
  import { IconTextSize, IconAlignCenter, IconAlignLeft, IconAlignRight, IconLayoutAlignMiddle, IconLayoutAlignBottom, IconLayoutAlignTop, IconBaseline, IconChevronDown, IconItalic, IconLetterSpacing, IconTypography, } from "@tabler/icons-react";
4
4
  import { findTokenRow, metadataFor } from "./rowLookup.js";
5
+ import { isExpressionRow } from "./fieldValue.js";
5
6
  import { TokenField } from "../tokens/TokenField.js";
6
7
  import { Select } from "../ui/Select.js";
7
8
  import { SegmentedControl } from "../ui/SegmentedControl.js";
@@ -36,10 +37,7 @@ function TypographyTokenField(props) {
36
37
  const tokenName = selectedProperty
37
38
  ? selectedProperty.token.kind === "common" ? selectedProperty.token.name : null
38
39
  : tokenRow?.tokenName;
39
- const hasTokenChip = Boolean(tokenName
40
- && tokenRow?.capability !== "raw"
41
- && tokenRow?.capability !== "composite"
42
- && !tokenRow?.modifiers?.some((modifier) => modifier.kind === "alpha"));
40
+ const hasTokenChip = Boolean(tokenName && !isExpressionRow(tokenRow));
43
41
  return (_jsx(ControlSurface, { className: `typography__field typography__field--${property}`, children: _jsx(TokenField, { property: property, tokenRow: tokenRow, selection: selection, domElement: domElement, editTarget: editTarget, entries: entries, editMetadata: metadataFor(tokenRow), leading: icon, trailing: metric || hasTokenChip ? undefined : _jsx(IconChevronDown, { size: 17, stroke: 1.8, "aria-hidden": "true" }), label: label, chipVariant: chipVariant, onAfterEdit: onAfterEdit }) }));
44
42
  }
45
43
  const FONT_STYLE_OPTIONS = [
@@ -0,0 +1,36 @@
1
+ import type { ResolvedProperty } from "../../css/model/index.js";
2
+ import type { StyleDeclaration } from "../tokens/editActions.js";
3
+ export declare const BORDER_STYLES: readonly ["none", "hidden", "solid", "dashed", "dotted", "double", "groove", "ridge", "inset", "outset"];
4
+ export declare const BORDER_SIDES: readonly ["top", "right", "bottom", "left"];
5
+ export type BorderSide = (typeof BORDER_SIDES)[number];
6
+ export type BorderComponent = "width" | "style" | "color";
7
+ /** Reads a property's computed value for the inspected style state. */
8
+ export type ComputedStyleReader = (property: string, fallback: string) => string;
9
+ export interface BorderSource {
10
+ readonly rows: readonly ResolvedProperty[];
11
+ readonly computed: ComputedStyleReader;
12
+ }
13
+ export interface BorderEditorState {
14
+ readonly sidesLinked: boolean;
15
+ /** Editable only through a raw field. */
16
+ readonly rawShorthandRow: ResolvedProperty | null;
17
+ readonly linkedStyleDraws: boolean;
18
+ readonly linkedRows: Readonly<Record<BorderComponent, ResolvedProperty | null>>;
19
+ }
20
+ export type BorderIntent = {
21
+ readonly kind: "add";
22
+ } | {
23
+ readonly kind: "remove";
24
+ } | {
25
+ readonly kind: "link-sides";
26
+ } | {
27
+ readonly kind: "set-style";
28
+ readonly property: string;
29
+ readonly style: string;
30
+ };
31
+ export declare function borderProperty(component: BorderComponent, side?: BorderSide): string;
32
+ export declare function readBorderEditor(source: BorderSource, { group }: {
33
+ readonly group: boolean;
34
+ }): BorderEditorState;
35
+ export declare function hasVisibleBorder(computed: ComputedStyleReader): boolean;
36
+ export declare function borderDeclarations(source: BorderSource, intent: BorderIntent): StyleDeclaration[];
@@ -0,0 +1,105 @@
1
+ import { findTokenRow } from "./rowLookup.js";
2
+ import { isZeroCssValue } from "./stylePresence.js";
3
+ export const BORDER_STYLES = ["none", "hidden", "solid", "dashed", "dotted", "double", "groove", "ridge", "inset", "outset"];
4
+ export const BORDER_SIDES = ["top", "right", "bottom", "left"];
5
+ const BORDER_STYLE_SET = new Set(BORDER_STYLES);
6
+ const INVISIBLE_BORDER_STYLES = new Set(["none", "hidden"]);
7
+ const COMPONENT_FALLBACK = {
8
+ width: "0px",
9
+ style: "none",
10
+ color: "currentcolor",
11
+ };
12
+ export function borderProperty(component, side) {
13
+ return side ? `border-${side}-${component}` : `border-${component}`;
14
+ }
15
+ function isBorderStyle(value) {
16
+ return BORDER_STYLE_SET.has(value);
17
+ }
18
+ function sideProperties(component) {
19
+ return BORDER_SIDES.map((side) => borderProperty(component, side));
20
+ }
21
+ /** Precedence: structured shorthand parts, then authored text, then computed style. */
22
+ function borderComponentValue(source, component, property) {
23
+ const row = findTokenRow(source.rows, property);
24
+ const fallback = COMPONENT_FALLBACK[component];
25
+ const structured = row?.structure?.[component]?.trim();
26
+ if (component === "style") {
27
+ if (structured)
28
+ return structured.toLowerCase();
29
+ const authored = (row?.authored ?? row?.declaredValue ?? "").trim().toLowerCase();
30
+ if (isBorderStyle(authored))
31
+ return authored;
32
+ return (source.computed(property, fallback) || fallback).toLowerCase();
33
+ }
34
+ if (structured)
35
+ return structured;
36
+ return (row?.authored || row?.declaredValue || row?.resolvedValue || source.computed(property, fallback) || fallback).trim();
37
+ }
38
+ /** Width and color compare token bindings too, so a token on one side keeps sides apart. */
39
+ function sideSignature(source, component, property) {
40
+ const value = borderComponentValue(source, component, property).toLowerCase();
41
+ if (component === "style")
42
+ return value;
43
+ return `${value}|${findTokenRow(source.rows, property)?.tokenName ?? ""}`;
44
+ }
45
+ /** A lone shorthand row is linked by construction; per-side rows compare by structured parts. */
46
+ function componentLinked(source, component) {
47
+ const properties = sideProperties(component);
48
+ const hasShorthandRow = findTokenRow(source.rows, borderProperty(component)) !== null;
49
+ const hasSideRows = properties.some((property) => findTokenRow(source.rows, property) !== null);
50
+ if (hasShorthandRow && !hasSideRows)
51
+ return true;
52
+ return new Set(properties.map((property) => sideSignature(source, component, property))).size === 1;
53
+ }
54
+ function linkedRow(source, component) {
55
+ const shorthand = borderProperty(component);
56
+ const direct = findTokenRow(source.rows, shorthand);
57
+ if (direct)
58
+ return direct;
59
+ const top = findTokenRow(source.rows, borderProperty(component, "top"));
60
+ return top ? { ...top, property: shorthand } : null;
61
+ }
62
+ export function readBorderEditor(source, { group }) {
63
+ const borderRow = findTokenRow(source.rows, "border");
64
+ const hasStructuredRows = source.rows.some((row) => Boolean(row.structure));
65
+ return {
66
+ sidesLinked: !group
67
+ && componentLinked(source, "width")
68
+ && componentLinked(source, "style")
69
+ && componentLinked(source, "color"),
70
+ rawShorthandRow: !group && borderRow && !borderRow.structure && !hasStructuredRows ? borderRow : null,
71
+ linkedStyleDraws: !INVISIBLE_BORDER_STYLES.has(borderComponentValue(source, "style", "border-style")),
72
+ linkedRows: {
73
+ width: linkedRow(source, "width"),
74
+ style: linkedRow(source, "style"),
75
+ color: linkedRow(source, "color"),
76
+ },
77
+ };
78
+ }
79
+ export function hasVisibleBorder(computed) {
80
+ return BORDER_SIDES.some((side) => {
81
+ const style = computed(borderProperty("style", side), "none").toLowerCase();
82
+ if (INVISIBLE_BORDER_STYLES.has(style))
83
+ return false;
84
+ return !isZeroCssValue(computed(borderProperty("width", side), "0px"));
85
+ });
86
+ }
87
+ function linkSidesDeclarations(source) {
88
+ const components = ["style", "width", "color"];
89
+ return components.map((component) => ({
90
+ property: borderProperty(component),
91
+ value: borderComponentValue(source, component, borderProperty(component, "top")),
92
+ }));
93
+ }
94
+ export function borderDeclarations(source, intent) {
95
+ switch (intent.kind) {
96
+ case "add":
97
+ return [{ property: "border", value: "1px solid" }];
98
+ case "remove":
99
+ return [{ property: "border", value: "0 solid" }];
100
+ case "link-sides":
101
+ return linkSidesDeclarations(source);
102
+ case "set-style":
103
+ return isBorderStyle(intent.style) ? [{ property: intent.property, value: intent.style }] : [];
104
+ }
105
+ }
@@ -1,8 +1,4 @@
1
1
  import type { ValuePolicy } from "./valuePolicy.js";
2
2
  export declare const CSS_NUMBER_SOURCE = "[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?";
3
- /**
4
- * Completes a bare numeric entry with its property's default unit. This is a
5
- * commit-time formatter; it deliberately does not validate or reinterpret
6
- * arbitrary CSS supplied by the user.
7
- */
3
+ /** Commit-time only; never validates or reinterprets arbitrary CSS input. */
8
4
  export declare function completeCssValue(rawValue: string, policy: ValuePolicy): string;
@@ -1,15 +1,7 @@
1
- // CSS <number>, including values such as .5 and 1e3. This intentionally only
2
- // matches the entire value: units, functions, keywords, and compound values
3
- // are all valid raw CSS and must be passed through unchanged.
4
- // Exported as a source fragment so other editors (e.g. nudgeValue) build
5
- // their number-aware patterns from the same single grammar definition.
1
+ // Exported as a source fragment for reuse in nudgeValue; matches only a complete CSS <number>.
6
2
  export const CSS_NUMBER_SOURCE = "[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?";
7
3
  const BARE_NUMBER = new RegExp(`^(?:${CSS_NUMBER_SOURCE})$`, "i");
8
- /**
9
- * Completes a bare numeric entry with its property's default unit. This is a
10
- * commit-time formatter; it deliberately does not validate or reinterpret
11
- * arbitrary CSS supplied by the user.
12
- */
4
+ /** Commit-time only; never validates or reinterprets arbitrary CSS input. */
13
5
  export function completeCssValue(rawValue, policy) {
14
6
  const value = rawValue.trim();
15
7
  if (!BARE_NUMBER.test(value) || Number(value) === 0) {
@@ -17,9 +9,7 @@ export function completeCssValue(rawValue, policy) {
17
9
  }
18
10
  if (policy.kind === "line-height") {
19
11
  const multiplier = Number(value);
20
- // People commonly enter line-height as its CSS multiplier (1.6), while
21
- // larger whole values conventionally represent a percentage (120). Keep
22
- // both convenient forms while committing a single percentage value.
12
+ // Values up to 10 are multipliers (1.6); larger values are conventional percentages (120).
23
13
  if (multiplier > 0 && multiplier <= 10) {
24
14
  return `${formatPercentage(multiplier * 100)}%`;
25
15
  }
@@ -0,0 +1,20 @@
1
+ import type { ResolvedProperty } from "../../css/model/index.js";
2
+ import type { SelectionProperty } from "../inspection/selectionProperty.js";
3
+ /**
4
+ * True when a row reports a value the inspector must treat as an expression,
5
+ * not as a token: raw CSS, a composite shorthand, an alpha modifier, or an
6
+ * authored color expression such as color-mix().
7
+ */
8
+ export declare function isExpressionRow(row: ResolvedProperty | null): boolean;
9
+ export interface ActiveTokenInput {
10
+ readonly row: ResolvedProperty | null;
11
+ readonly selectedProperty?: SelectionProperty | null;
12
+ /** A multi-element selection that disagrees on this property shows "Mixed" and no chip. */
13
+ readonly mixed: boolean;
14
+ /** The authored CSS value; a calc() expression suppresses the chip. */
15
+ readonly authored?: string;
16
+ /** A property-specific token name that outranks the row (opacity's token-backed value). */
17
+ readonly override?: string | null;
18
+ }
19
+ /** The token a field should show as active, or null when the value is not token-backed. */
20
+ export declare function deriveActiveTokenName(input: ActiveTokenInput): string | null;
@@ -0,0 +1,26 @@
1
+ import { isCalcExpression } from "../../css/value-semantics/index.js";
2
+ /**
3
+ * True when a row reports a value the inspector must treat as an expression,
4
+ * not as a token: raw CSS, a composite shorthand, an alpha modifier, or an
5
+ * authored color expression such as color-mix().
6
+ */
7
+ export function isExpressionRow(row) {
8
+ return Boolean(row && (row.capability === "raw"
9
+ || row.capability === "composite"
10
+ || row.modifiers?.some((modifier) => modifier.kind === "alpha")
11
+ || row.color?.isExpression));
12
+ }
13
+ /** The token a field should show as active, or null when the value is not token-backed. */
14
+ export function deriveActiveTokenName(input) {
15
+ const { row, selectedProperty, mixed, authored = "", override } = input;
16
+ if (mixed)
17
+ return null;
18
+ if (override)
19
+ return override;
20
+ if (isExpressionRow(row) || isCalcExpression(authored))
21
+ return null;
22
+ if (selectedProperty) {
23
+ return selectedProperty.token.kind === "common" ? selectedProperty.token.name : null;
24
+ }
25
+ return row?.tokenName ?? null;
26
+ }
@@ -12,6 +12,6 @@ export interface GradientValue {
12
12
  stops: GradientStop[];
13
13
  }
14
14
  export declare function defaultGradient(): GradientValue;
15
- /** Parse editable computed gradients. Leave unsupported syntax in the CSS field. */
15
+ /** Null for gradients the editor cannot represent; callers keep the raw CSS. */
16
16
  export declare function parseGradient(value: string): GradientValue | null;
17
17
  export declare function serializeGradient(gradient: GradientValue): string;
@@ -16,7 +16,7 @@ function angleDegrees(value) {
16
16
  default: return number;
17
17
  }
18
18
  }
19
- /** Parse editable computed gradients. Leave unsupported syntax in the CSS field. */
19
+ /** Null for gradients the editor cannot represent; callers keep the raw CSS. */
20
20
  export function parseGradient(value) {
21
21
  if (splitTopLevel(value, ",").length !== 1)
22
22
  return null;
@@ -35,7 +35,7 @@ export function parseGradient(value) {
35
35
  const direction = /^(to\s+(?:(?:left|right|top|bottom)(?:\s+|$)){1,2})/.exec(prelude)?.[0]?.trim();
36
36
  if (direction) {
37
37
  const directions = { top: 0, "top right": 45, "right top": 45, right: 90, "bottom right": 135, "right bottom": 135, bottom: 180, "bottom left": 225, "left bottom": 225, left: 270, "top left": 315, "left top": 315 };
38
- // Corner directions depend on the element's aspect ratio. Keep them as CSS.
38
+ // Corner directions depend on the element's aspect ratio; keep them as CSS.
39
39
  if (direction.slice(3).includes(" "))
40
40
  return null;
41
41
  angle = directions[direction.slice(3)] ?? 180;
@@ -102,6 +102,7 @@ export function parseGradient(value) {
102
102
  }
103
103
  start = end;
104
104
  }
105
+ // SAFETY: interpolation above fills every null position, so each stop has a numeric position.
105
106
  return { type, repeating: Boolean(match[1]), angle, prelude, stops: stops };
106
107
  }
107
108
  export function serializeGradient(gradient) {
@@ -2,72 +2,32 @@ import type { ChangeRecord } from "../tokens/editActions.js";
2
2
  import { type EditTarget } from "../selection/editTarget.js";
3
3
  /** One grid axis of a grid item: `column` maps to grid-column-*, `row` to grid-row-*. */
4
4
  export type GridAxis = "column" | "row";
5
- /**
6
- * Alignment vocabulary for grid children. `default` defers to the container's
7
- * `justify-items` / `align-items` (authored as `auto`); `fill` is `stretch`.
8
- */
9
5
  export type GridChildAlignment = "auto" | "stretch" | "start" | "center" | "end";
10
6
  export interface GridAxisPlacement {
11
- /** Authored or computed start line token: "auto", a line number, or a named line. */
12
7
  start: string;
13
- /**
14
- * Span when the placement is expressible as start + span N: the end side is
15
- * `span N`, or both sides are definite positive line numbers. Null when the
16
- * end side is auto, a negative line, or not derivable.
17
- */
8
+ /** Expressible as start + span N; null when the end side is auto, negative, or underivable. */
18
9
  span: number | null;
19
10
  }
20
11
  export declare const GRID_CHILD_MAX_TRACKS = 12;
21
- /** Parses a `span N` end-side token into N. */
22
12
  export declare function parseSpanToken(value: string): number | null;
23
- /**
24
- * Reads one placement axis from authored CSS (preferred) falling back to
25
- * computed CSS, which stays correct even when the authored rule uses the
26
- * `grid-column` / `grid-row` shorthand.
27
- */
13
+ /** Computed CSS stays correct even when the authored rule uses the grid-column/grid-row shorthand. */
28
14
  export declare function readGridAxisPlacement(el: HTMLElement, axis: GridAxis): GridAxisPlacement;
29
- /**
30
- * Commits one placement axis as managed longhands. The UI model is
31
- * "start line + span", so editing either side recomposes both:
32
- * a simple span is rewritten as `span N` (or `auto` for 1), while a negative
33
- * end line ("to the last line") and plain auto ends are preserved untouched.
34
- * `span: "keep"` re-commits the currently derived span, if any, so moving the
35
- * start line keeps the item's size.
36
- */
15
+ /** `span: "keep"` re-commits the derived span so moving the start line keeps the item's size. */
37
16
  export declare function commitGridAxisPlacement(target: EditTarget, axis: GridAxis, commit: {
38
17
  start?: string;
39
18
  span?: number | "keep";
40
19
  }): ChangeRecord[];
41
- /**
42
- * Reads one self-alignment axis as a raw CSS token with `normal` mapped to
43
- * `stretch`: on grid items `normal` has stretch behavior (except replaced
44
- * elements), so labeling it "Parent default" would misdescribe the rendering
45
- * and re-committing `auto` for it could change the layout. `auto` alone means
46
- * the item defers to the container's `justify-items` / `align-items`.
47
- */
20
+ /** `normal` maps to `stretch`: that is its grid-item behavior, and re-committing `auto` would change layout. */
48
21
  export declare function readGridChildAlignment(el: HTMLElement, axis: "h" | "v"): string;
49
- /** Friendly alignment labels; `auto` resolves to the container's items alignment. */
50
22
  export declare const GRID_CHILD_ALIGNMENT_OPTIONS: Array<{
51
23
  value: GridChildAlignment;
52
24
  label: string;
53
25
  }>;
54
- /**
55
- * Commits one self-alignment axis. The alignment vocabulary is an open CSS
56
- * set — the friendly pickers cover the common keywords while authored values
57
- * such as `self-start` or `normal` round-trip verbatim — so this accepts any
58
- * self-alignment token the UI puts in its options.
59
- */
26
+ /** Accepts any self-alignment token, not just the picker's keywords. */
60
27
  export declare function commitGridChildAlignment(target: EditTarget, axis: "h" | "v", alignment: string): ChangeRecord[];
61
- /**
62
- * Resolved track count of the parent grid on one axis, when CSS makes it
63
- * definite (auto-fill/auto-fit tracks cannot be counted). Caps at
64
- * GRID_CHILD_MAX_TRACKS to bound generated line options.
65
- */
28
+ /** Null for auto-fill/auto-fit tracks, which CSS leaves indefinite. */
66
29
  export declare function parentTrackCount(el: HTMLElement, axis: GridAxis): number | null;
67
- /**
68
- * Start-line options for one axis: Auto plus explicit line numbers. A grid
69
- * with N tracks has N+1 lines, so the final start line is count + 1.
70
- */
30
+ /** A grid with N tracks has N+1 start lines. */
71
31
  export declare function startLineOptions(trackCount: number | null): Array<{
72
32
  value: string;
73
33
  label: string;
@@ -12,16 +12,11 @@ function normalizeToken(value) {
12
12
  function isLineNumber(value) {
13
13
  return LINE_NUMBER.test(value);
14
14
  }
15
- /** Parses a `span N` end-side token into N. */
16
15
  export function parseSpanToken(value) {
17
16
  const match = SPAN_TOKEN.exec(value.trim());
18
17
  return match ? Number(match[1]) : null;
19
18
  }
20
- /**
21
- * Reads one placement axis from authored CSS (preferred) falling back to
22
- * computed CSS, which stays correct even when the authored rule uses the
23
- * `grid-column` / `grid-row` shorthand.
24
- */
19
+ /** Computed CSS stays correct even when the authored rule uses the grid-column/grid-row shorthand. */
25
20
  export function readGridAxisPlacement(el, axis) {
26
21
  const start = getLayoutValue(el, `grid-${axis}-start`);
27
22
  const end = getLayoutValue(el, `grid-${axis}-end`);
@@ -42,14 +37,7 @@ export function readGridAxisPlacement(el, axis) {
42
37
  }
43
38
  return { start: startToken, span };
44
39
  }
45
- /**
46
- * Commits one placement axis as managed longhands. The UI model is
47
- * "start line + span", so editing either side recomposes both:
48
- * a simple span is rewritten as `span N` (or `auto` for 1), while a negative
49
- * end line ("to the last line") and plain auto ends are preserved untouched.
50
- * `span: "keep"` re-commits the currently derived span, if any, so moving the
51
- * start line keeps the item's size.
52
- */
40
+ /** `span: "keep"` re-commits the derived span so moving the start line keeps the item's size. */
53
41
  export function commitGridAxisPlacement(target, axis, commit) {
54
42
  const elements = targetElements(target);
55
43
  const declarations = [];
@@ -77,20 +65,13 @@ export function commitGridAxisPlacement(target, axis, commit) {
77
65
  declarations.push({ property: `grid-${axis}-end`, value: endValue });
78
66
  return declarations.length > 0 ? setStyles(target, declarations) : [];
79
67
  }
80
- /**
81
- * Reads one self-alignment axis as a raw CSS token with `normal` mapped to
82
- * `stretch`: on grid items `normal` has stretch behavior (except replaced
83
- * elements), so labeling it "Parent default" would misdescribe the rendering
84
- * and re-committing `auto` for it could change the layout. `auto` alone means
85
- * the item defers to the container's `justify-items` / `align-items`.
86
- */
68
+ /** `normal` maps to `stretch`: that is its grid-item behavior, and re-committing `auto` would change layout. */
87
69
  export function readGridChildAlignment(el, axis) {
88
70
  const property = axis === "h" ? "justify-self" : "align-self";
89
71
  const value = getLayoutValue(el, property);
90
72
  const token = normalizeToken(value.authored ?? value.computed);
91
73
  return token === "normal" ? "stretch" : token;
92
74
  }
93
- /** Friendly alignment labels; `auto` resolves to the container's items alignment. */
94
75
  export const GRID_CHILD_ALIGNMENT_OPTIONS = [
95
76
  { value: "auto", label: "Parent default" },
96
77
  { value: "stretch", label: "Fill" },
@@ -98,22 +79,13 @@ export const GRID_CHILD_ALIGNMENT_OPTIONS = [
98
79
  { value: "center", label: "Center" },
99
80
  { value: "end", label: "End" },
100
81
  ];
101
- /**
102
- * Commits one self-alignment axis. The alignment vocabulary is an open CSS
103
- * set — the friendly pickers cover the common keywords while authored values
104
- * such as `self-start` or `normal` round-trip verbatim — so this accepts any
105
- * self-alignment token the UI puts in its options.
106
- */
82
+ /** Accepts any self-alignment token, not just the picker's keywords. */
107
83
  export function commitGridChildAlignment(target, axis, alignment) {
108
84
  const property = axis === "h" ? "justify-self" : "align-self";
109
85
  const record = setStyle(target, property, alignment);
110
86
  return record ? [record] : [];
111
87
  }
112
- /**
113
- * Resolved track count of the parent grid on one axis, when CSS makes it
114
- * definite (auto-fill/auto-fit tracks cannot be counted). Caps at
115
- * GRID_CHILD_MAX_TRACKS to bound generated line options.
116
- */
88
+ /** Null for auto-fill/auto-fit tracks, which CSS leaves indefinite. */
117
89
  export function parentTrackCount(el, axis) {
118
90
  const parent = el.parentElement;
119
91
  if (!parent)
@@ -124,10 +96,7 @@ export function parentTrackCount(el, axis) {
124
96
  return null;
125
97
  return Math.min(count, GRID_CHILD_MAX_TRACKS);
126
98
  }
127
- /**
128
- * Start-line options for one axis: Auto plus explicit line numbers. A grid
129
- * with N tracks has N+1 lines, so the final start line is count + 1.
130
- */
99
+ /** A grid with N tracks has N+1 start lines. */
131
100
  export function startLineOptions(trackCount) {
132
101
  const lineCount = (trackCount ?? GRID_CHILD_MAX_TRACKS) + 1;
133
102
  const options = [{ value: "auto", label: "Auto" }];
@@ -0,0 +1,5 @@
1
+ /** True when anything the size expander hides differs from its initial value, so the toggle can flag it. */
2
+ export declare function hasHiddenSizeOverrides(el: HTMLElement, parent: {
3
+ flexChild: boolean;
4
+ gridChild: boolean;
5
+ }): boolean;
@@ -0,0 +1,42 @@
1
+ import { getStateStyleValue } from "../shell/stateValue.js";
2
+ import { meaningfulLayoutValue } from "./layoutValue.js";
3
+ /** Initial values of the properties tucked behind the size expander. */
4
+ const SIZE_DEFAULTS = {
5
+ "min-width": "0",
6
+ "min-height": "0",
7
+ "max-width": "none",
8
+ "max-height": "none",
9
+ "aspect-ratio": "auto",
10
+ };
11
+ const FLEX_CHILD_DEFAULTS = {
12
+ "flex-grow": "0",
13
+ "flex-shrink": "1",
14
+ "flex-basis": "auto",
15
+ "align-self": "auto",
16
+ order: "0",
17
+ };
18
+ const GRID_CHILD_DEFAULTS = {
19
+ "grid-column-start": "auto",
20
+ "grid-column-end": "auto",
21
+ "grid-row-start": "auto",
22
+ "grid-row-end": "auto",
23
+ "justify-self": "auto",
24
+ "align-self": "auto",
25
+ };
26
+ function normalize(value) {
27
+ const trimmed = value.trim().toLowerCase();
28
+ // `normal` is how browsers report an unset self-alignment; it behaves like `auto`.
29
+ if (trimmed === "normal")
30
+ return "auto";
31
+ return /^0(px|%|em|rem)?$/.test(trimmed) ? "0" : trimmed;
32
+ }
33
+ /** True when anything the size expander hides differs from its initial value, so the toggle can flag it. */
34
+ export function hasHiddenSizeOverrides(el, parent) {
35
+ const sizeChanged = Object.entries(SIZE_DEFAULTS)
36
+ .some(([property, initial]) => normalize(meaningfulLayoutValue(el, property)) !== initial);
37
+ if (sizeChanged)
38
+ return true;
39
+ const childDefaults = parent.flexChild ? FLEX_CHILD_DEFAULTS : parent.gridChild ? GRID_CHILD_DEFAULTS : null;
40
+ return childDefaults !== null && Object.entries(childDefaults)
41
+ .some(([property, initial]) => normalize(getStateStyleValue(el, property, initial)) !== initial);
42
+ }
@@ -1,10 +1,3 @@
1
- /**
2
- * Returns the inline-authored source when `el` carries the property — or a
3
- * shorthand that sets it — in its `style` attribute. Managed previews can
4
- * never beat inline styles in the cascade, so a non-null result means the
5
- * field must present as blocked instead of accepting edits that silently
6
- * revert (see `verifyPreview`'s "inline-style" conflict).
7
- */
1
+ /** Non-null means the field must present as blocked: previews cannot beat inline styles in the cascade. */
8
2
  export declare function inlineAuthoredValue(el: HTMLElement, property: string): string | null;
9
- /** First inline-authored source that blocks any of `properties` on any of `elements`. */
10
3
  export declare function inlineBlockedBy(elements: readonly HTMLElement[], ...properties: readonly string[]): string | null;