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.
- package/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +4 -29
- package/dist/client.mjs +987 -221
- package/dist/compiler/ast.d.ts +0 -6
- package/dist/compiler/ast.js +0 -5
- package/dist/compiler/componentContractTypes.d.ts +11 -5
- package/dist/compiler/componentContracts.js +3 -9
- package/dist/compiler/componentInstrumentation.d.ts +2 -13
- package/dist/compiler/componentInstrumentation.js +3 -12
- package/dist/compiler/componentPolicyResolution.d.ts +3 -22
- package/dist/compiler/componentPolicyResolution.js +6 -38
- package/dist/compiler/identityAttributes.d.ts +2 -0
- package/dist/compiler/identityAttributes.js +2 -0
- package/dist/compiler/index.d.ts +0 -1
- package/dist/compiler/index.js +0 -1
- package/dist/compiler/packageComponentContracts.d.ts +10 -19
- package/dist/compiler/packageComponentContracts.js +60 -43
- package/dist/compiler/reactComponentProtocols.d.ts +0 -7
- package/dist/compiler/reactComponentProtocols.js +0 -7
- package/dist/compiler/reactIdentity.d.ts +2 -2
- package/dist/compiler/reactIdentity.js +41 -43
- package/dist/compiler/sourcePaths.d.ts +4 -8
- package/dist/compiler/sourcePaths.js +6 -8
- package/dist/css/dialects/index.d.ts +2 -21
- package/dist/css/dialects/index.js +2 -9
- package/dist/css/dialects/tailwind.d.ts +2 -16
- package/dist/css/dialects/tailwind.js +2 -25
- package/dist/css/dialects/vanillaExtract.d.ts +1 -9
- package/dist/css/dialects/vanillaExtract.js +0 -1
- package/dist/css/index.d.ts +0 -8
- package/dist/css/index.js +0 -8
- package/dist/css/model/index.d.ts +6 -38
- package/dist/css/model/index.js +0 -9
- package/dist/css/token-inventory/index.d.ts +0 -23
- package/dist/css/token-inventory/index.js +0 -23
- package/dist/css/token-inventory/inventory.js +4 -16
- package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
- package/dist/css/token-inventory/parseStylesheet.js +5 -42
- package/dist/css/token-inventory/policy.d.ts +2 -39
- package/dist/css/token-inventory/policy.js +2 -39
- package/dist/css/token-inventory/types.d.ts +2 -15
- package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
- package/dist/css/value-semantics/borderSemantics.js +5 -23
- package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
- package/dist/css/value-semantics/boxSemantics.js +1 -7
- package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
- package/dist/css/value-semantics/colorSemantics.js +9 -40
- package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
- package/dist/css/value-semantics/cssSyntax.js +39 -11
- package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
- package/dist/css/value-semantics/fontSemantics.js +7 -25
- package/dist/css/value-semantics/index.d.ts +1 -12
- package/dist/css/value-semantics/index.js +1 -12
- package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
- package/dist/css/value-semantics/propertyPolicy.js +47 -59
- package/dist/css/value-semantics/stringMaps.d.ts +0 -1
- package/dist/css/value-semantics/structuredValues.d.ts +3 -37
- package/dist/css/value-semantics/structuredValues.js +6 -17
- package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
- package/dist/css/value-semantics/tokenInterpretation.js +7 -21
- package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
- package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
- package/dist/hosts/astro/clientAsset.d.ts +1 -5
- package/dist/hosts/astro/clientAsset.js +1 -5
- package/dist/hosts/astro/clientTransport.d.ts +0 -1
- package/dist/hosts/astro/clientTransport.js +4 -9
- package/dist/hosts/astro/integration.d.ts +2 -28
- package/dist/hosts/astro/integration.js +7 -36
- package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
- package/dist/hosts/astro/markdownIdentity.js +0 -3
- package/dist/hosts/astro/middleware.d.ts +1 -12
- package/dist/hosts/astro/middleware.js +1 -12
- package/dist/hosts/astro/projectContext.d.ts +1 -9
- package/dist/hosts/astro/projectContext.js +2 -11
- package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
- package/dist/hosts/astro/responseInstrumentation.js +5 -34
- package/dist/hosts/environment.d.ts +0 -8
- package/dist/hosts/environment.js +0 -1
- package/dist/hosts/next/index.js +1 -3
- package/dist/hosts/next/loader.d.ts +5 -44
- package/dist/hosts/next/loader.js +22 -103
- package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
- package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
- package/dist/hosts/next/manifest.d.ts +2 -16
- package/dist/hosts/next/manifest.js +18 -20
- package/dist/hosts/next/mount.d.ts +1 -11
- package/dist/hosts/next/mount.js +1 -11
- package/dist/hosts/next/repositoryScope.d.ts +2 -17
- package/dist/hosts/next/repositoryScope.js +2 -17
- package/dist/hosts/next/sidecar.d.ts +0 -13
- package/dist/hosts/next/sidecar.js +25 -110
- package/dist/hosts/next/wrapper.d.ts +0 -31
- package/dist/hosts/next/wrapper.js +14 -71
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +3 -19
- package/dist/hosts/reactRendererCapture.d.ts +2 -0
- package/dist/hosts/reactRendererCapture.js +12 -0
- package/dist/hosts/static/cli.d.ts +0 -4
- package/dist/hosts/static/cli.js +0 -3
- package/dist/hosts/static/html/bootstrap.d.ts +1 -18
- package/dist/hosts/static/html/bootstrap.js +2 -14
- package/dist/hosts/static/manifest.d.ts +2 -15
- package/dist/hosts/static/manifest.js +5 -18
- package/dist/hosts/static/server.d.ts +4 -38
- package/dist/hosts/static/server.js +17 -67
- package/dist/hosts/vite/index.d.ts +0 -10
- package/dist/hosts/vite/index.js +0 -10
- package/dist/hosts/vite/react.d.ts +4 -17
- package/dist/hosts/vite/react.js +18 -35
- package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
- package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
- package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
- package/dist/hosts/vite/vite.d.ts +5 -26
- package/dist/hosts/vite/vite.js +44 -80
- package/dist/html/dom.d.ts +0 -1
- package/dist/html/dom.js +0 -1
- package/dist/html/identity.d.ts +1 -15
- package/dist/html/identity.js +1 -8
- package/dist/html/insertions.d.ts +2 -8
- package/dist/html/insertions.js +1 -1
- package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
- package/dist/inspector/agent/McpConnectionDialog.js +8 -9
- package/dist/inspector/agent/activity.d.ts +2 -2
- package/dist/inspector/agent/activity.js +4 -3
- package/dist/inspector/agent/client.d.ts +3 -27
- package/dist/inspector/agent/client.js +43 -91
- package/dist/inspector/agent/connectionStatus.d.ts +3 -2
- package/dist/inspector/agent/connectionStatus.js +25 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +42 -176
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +3 -20
- package/dist/inspector/agent/verification.js +10 -43
- package/dist/inspector/boot.d.ts +5 -0
- package/dist/inspector/boot.js +289 -0
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
- package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
- package/dist/inspector/canvas/CanvasCard.js +26 -24
- package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
- package/dist/inspector/canvas/CanvasToolbar.js +2 -1
- package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
- package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
- package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
- package/dist/inspector/canvas/PageCard.d.ts +9 -0
- package/dist/inspector/canvas/PageCard.js +50 -0
- package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
- package/dist/inspector/canvas/SketchToolOptions.js +80 -0
- package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
- package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
- package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
- package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
- package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
- package/dist/inspector/canvas/agentPresentation.js +3 -14
- package/dist/inspector/canvas/assets/eraser.svg +28 -0
- package/dist/inspector/canvas/assets/pen.svg +25 -0
- package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
- package/dist/inspector/canvas/canvasFrame.js +9 -0
- package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
- package/dist/inspector/canvas/canvasGestures.js +0 -6
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +5 -7
- package/dist/inspector/canvas/canvasStore.js +42 -21
- package/dist/inspector/canvas/frameConnection.d.ts +42 -0
- package/dist/inspector/canvas/frameConnection.js +73 -0
- package/dist/inspector/canvas/frameContent.d.ts +0 -1
- package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
- package/dist/inspector/canvas/frameLifecycle.js +11 -0
- package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
- package/dist/inspector/canvas/frameProtocol.js +37 -24
- package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
- package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
- package/dist/inspector/canvas/layout.d.ts +10 -22
- package/dist/inspector/canvas/layout.js +0 -3
- package/dist/inspector/canvas/normalizeUrl.js +1 -8
- package/dist/inspector/canvas/pageSurface.d.ts +6 -0
- package/dist/inspector/canvas/pageSurface.js +29 -0
- package/dist/inspector/canvas/projection.d.ts +14 -25
- package/dist/inspector/canvas/projection.js +64 -87
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +10 -15
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +38 -28
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
- package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
- package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +23 -1
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +3 -9
- package/dist/inspector/canvas/sessionStore.js +33 -43
- package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
- package/dist/inspector/canvas/staleChangeDetector.js +11 -26
- package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
- package/dist/inspector/canvas/toolbarScale.js +1 -4
- package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
- package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
- package/dist/inspector/canvas/viewStore.js +1 -1
- package/dist/inspector/canvas/wheelPan.d.ts +1 -1
- package/dist/inspector/canvas/wheelPan.js +1 -1
- package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
- package/dist/inspector/canvas/workspaceLease.js +1 -7
- package/dist/inspector/changes/codecs.d.ts +1 -0
- package/dist/inspector/changes/codecs.js +21 -5
- package/dist/inspector/changes/draftPreview.d.ts +7 -0
- package/dist/inspector/changes/draftPreview.js +118 -0
- package/dist/inspector/changes/editModel.d.ts +11 -13
- package/dist/inspector/changes/editModel.js +9 -4
- package/dist/inspector/changes/managedStyleProjection.js +6 -15
- package/dist/inspector/changes/model.d.ts +0 -5
- package/dist/inspector/changes/model.js +1 -8
- package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
- package/dist/inspector/changes/previewDiagnostics.js +5 -21
- package/dist/inspector/changes/previewVerification.d.ts +25 -0
- package/dist/inspector/changes/previewVerification.js +34 -0
- package/dist/inspector/changes/structuralTypes.d.ts +2 -4
- package/dist/inspector/changes/types.d.ts +11 -8
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +66 -23
- package/dist/inspector/comments/element.d.ts +1 -2
- package/dist/inspector/comments/element.js +1 -2
- package/dist/inspector/comments/store.d.ts +1 -1
- package/dist/inspector/comments/store.js +4 -3
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +19 -11
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- package/dist/inspector/componentSemantics/changeAction.js +1 -1
- package/dist/inspector/componentSemantics/changeModel.js +2 -4
- package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
- package/dist/inspector/componentSemantics/react/callsites.js +261 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
- package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
- package/dist/inspector/componentSemantics/react/fibers.js +30 -0
- package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
- package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
- package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
- package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
- package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
- package/dist/inspector/componentSemantics/textBinding.js +20 -87
- package/dist/inspector/componentSemantics/types.d.ts +8 -27
- package/dist/inspector/componentSemantics/types.js +0 -1
- package/dist/inspector/conformance/borderCases.d.ts +0 -5
- package/dist/inspector/conformance/borderCases.js +0 -5
- package/dist/inspector/conformance/colorCases.d.ts +0 -6
- package/dist/inspector/conformance/colorCases.js +0 -6
- package/dist/inspector/conformance/fixture.d.ts +1 -5
- package/dist/inspector/conformance/fixture.js +1 -5
- package/dist/inspector/conformance/spacingCases.d.ts +0 -4
- package/dist/inspector/conformance/spacingCases.js +0 -4
- package/dist/inspector/conformance/typographyCases.d.ts +0 -5
- package/dist/inspector/conformance/typographyCases.js +0 -5
- package/dist/inspector/drafts/draftStore.d.ts +95 -0
- package/dist/inspector/drafts/draftStore.js +461 -0
- package/dist/inspector/drafts/model.d.ts +14 -14
- package/dist/inspector/drafts/model.js +4 -2
- package/dist/inspector/drafts/store.d.ts +47 -16
- package/dist/inspector/drafts/store.js +137 -170
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- package/dist/inspector/index.d.ts +2 -4
- package/dist/inspector/index.js +2 -264
- package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
- package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
- package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
- package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
- package/dist/inspector/inspection/bridge.d.ts +3 -7
- package/dist/inspector/inspection/bridge.js +6 -13
- package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
- package/dist/inspector/inspection/browserCssInspection.js +32 -14
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
- package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
- package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
- package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
- package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
- package/dist/inspector/inspection/selectionProperty.js +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
- package/dist/inspector/iterations/capture.d.ts +2 -2
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +2 -2
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +4 -4
- package/dist/inspector/iterations/coordinator.js +5 -4
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +9 -9
- package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
- package/dist/inspector/overlay/DomNavigator.js +39 -15
- package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
- package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
- package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
- package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
- package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
- package/dist/inspector/overlay/clickPolicy.js +3 -14
- package/dist/inspector/overlay/dropGuide.d.ts +0 -3
- package/dist/inspector/overlay/dropGuide.js +0 -3
- package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
- package/dist/inspector/overlay/frameThrottle.js +0 -1
- package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
- package/dist/inspector/overlay/interactionStyles.js +19 -8
- package/dist/inspector/overlay/measurementGeometry.js +4 -12
- package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
- package/dist/inspector/overlay/selectedGeometry.js +1 -8
- package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
- package/dist/inspector/overlay/spacingGestures.js +151 -31
- package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
- package/dist/inspector/overlay/structuralGestures.js +1 -4
- package/dist/inspector/pageInspector.d.ts +33 -0
- package/dist/inspector/pageInspector.js +335 -0
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +6 -10
- package/dist/inspector/projection/draftProjection.js +8 -7
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +28 -26
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +13 -33
- package/dist/inspector/projection/structuralProjection.d.ts +7 -48
- package/dist/inspector/projection/structuralProjection.js +31 -96
- package/dist/inspector/projection/textProjection.d.ts +7 -13
- package/dist/inspector/projection/textProjection.js +35 -80
- package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
- package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
- package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
- package/dist/inspector/prompt/clipboardHandoff.js +34 -16
- package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
- package/dist/inspector/prompt/generatePrompt.js +247 -166
- package/dist/inspector/prompt/promptDocument.d.ts +3 -0
- package/dist/inspector/prompt/promptDocument.js +8 -0
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +7 -8
- package/dist/inspector/runtime/devFlag.d.ts +2 -25
- package/dist/inspector/runtime/devFlag.js +4 -31
- package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
- package/dist/inspector/runtime/editorShell.d.ts +0 -1
- package/dist/inspector/runtime/editorShell.js +0 -1
- package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
- package/dist/inspector/runtime/inspectorStorage.js +37 -0
- package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
- package/dist/inspector/runtime/ownedStylesheets.js +66 -0
- package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
- package/dist/inspector/runtime/runtimeConfig.js +18 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
- package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +2 -7
- package/dist/inspector/selection/editScope.js +15 -14
- package/dist/inspector/selection/editTarget.d.ts +1 -5
- package/dist/inspector/selection/hierarchy.d.ts +11 -11
- package/dist/inspector/selection/hierarchy.js +42 -24
- package/dist/inspector/selection/selectionStore.d.ts +0 -3
- package/dist/inspector/selection/selectionStore.js +5 -16
- package/dist/inspector/selection/sourceSite.d.ts +1 -5
- package/dist/inspector/selection/sourceSite.js +2 -8
- package/dist/inspector/selection/styleSelection.d.ts +1 -5
- package/dist/inspector/selection/styleSelection.js +1 -5
- package/dist/inspector/session/lifecycle.d.ts +1 -9
- package/dist/inspector/session/lifecycle.js +0 -1
- package/dist/inspector/session/sessionContext.d.ts +0 -4
- package/dist/inspector/session/sessionContext.js +0 -4
- package/dist/inspector/session/sessionFactory.d.ts +0 -9
- package/dist/inspector/session/sessionFactory.js +0 -6
- package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
- package/dist/inspector/settings/SettingsDialog.js +5 -3
- package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
- package/dist/inspector/shell/AgentStatusButton.js +7 -7
- package/dist/inspector/shell/AppShell.js +6 -2
- package/dist/inspector/shell/ChangesLog.js +29 -12
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +62 -55
- package/dist/inspector/shell/EmptyState.js +3 -3
- package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
- package/dist/inspector/shell/InspectorEditors.js +14 -0
- package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
- package/dist/inspector/shell/InspectorPanel.js +8 -0
- package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
- package/dist/inspector/shell/InspectorSelection.js +20 -0
- package/dist/inspector/shell/InspectorShell.d.ts +0 -3
- package/dist/inspector/shell/InspectorShell.js +44 -58
- package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
- package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
- package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalButton.js +3 -8
- package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
- package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
- package/dist/inspector/shell/PromptActionButton.js +14 -0
- package/dist/inspector/shell/elementName.d.ts +5 -0
- package/dist/inspector/shell/elementName.js +29 -0
- package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
- package/dist/inspector/shell/interactionStatePreview.js +107 -0
- package/dist/inspector/shell/originalPreview.d.ts +1 -5
- package/dist/inspector/shell/originalPreview.js +5 -37
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +4 -8
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +5 -5
- package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
- package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
- package/dist/inspector/sketch/SketchOverlay.js +138 -263
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
- package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
- package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
- package/dist/inspector/sketch/SketchThumbnail.js +18 -0
- package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
- package/dist/inspector/sketch/SketchWorkspace.js +70 -37
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +31 -14
- package/dist/inspector/sketch/copySketch.d.ts +4 -0
- package/dist/inspector/sketch/copySketch.js +43 -0
- package/dist/inspector/sketch/drawingTools.d.ts +15 -0
- package/dist/inspector/sketch/drawingTools.js +46 -0
- package/dist/inspector/sketch/frameHeading.d.ts +3 -0
- package/dist/inspector/sketch/frameHeading.js +23 -0
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +3 -4
- package/dist/inspector/sketch/geometry.d.ts +2 -1
- package/dist/inspector/sketch/geometry.js +15 -1
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +26 -0
- package/dist/inspector/sketch/history.js +55 -0
- package/dist/inspector/sketch/interaction.d.ts +3 -5
- package/dist/inspector/sketch/interaction.js +8 -11
- package/dist/inspector/sketch/model.d.ts +33 -6
- package/dist/inspector/sketch/model.js +101 -63
- package/dist/inspector/sketch/persistence.d.ts +14 -1
- package/dist/inspector/sketch/persistence.js +64 -8
- package/dist/inspector/sketch/raster.d.ts +3 -2
- package/dist/inspector/sketch/raster.js +40 -20
- package/dist/inspector/sketch/store.d.ts +1 -1
- package/dist/inspector/sketch/store.js +3 -4
- package/dist/inspector/sketch/videoFrames.d.ts +6 -0
- package/dist/inspector/sketch/videoFrames.js +80 -0
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
- package/dist/inspector/styleEditors/BorderEditor.js +30 -135
- package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
- package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
- package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
- package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
- package/dist/inspector/styleEditors/FlexControls.js +158 -0
- package/dist/inspector/styleEditors/GapField.d.ts +5 -2
- package/dist/inspector/styleEditors/GapField.js +3 -4
- package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
- package/dist/inspector/styleEditors/GridChildSection.js +0 -5
- package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
- package/dist/inspector/styleEditors/GridPicker.js +2 -4
- package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
- package/dist/inspector/styleEditors/GridSection.js +22 -9
- package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
- package/dist/inspector/styleEditors/GridValueField.js +2 -8
- package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
- package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
- package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
- package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
- package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
- package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
- package/dist/inspector/styleEditors/LayoutSection.js +30 -356
- package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
- package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
- package/dist/inspector/styleEditors/PositionControls.js +16 -0
- package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
- package/dist/inspector/styleEditors/SizeSection.js +71 -0
- package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
- package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
- package/dist/inspector/styleEditors/Typography.js +2 -4
- package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
- package/dist/inspector/styleEditors/borderModel.js +105 -0
- package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
- package/dist/inspector/styleEditors/completeCssValue.js +3 -13
- package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
- package/dist/inspector/styleEditors/fieldValue.js +26 -0
- package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
- package/dist/inspector/styleEditors/gradientValue.js +3 -2
- package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
- package/dist/inspector/styleEditors/gridChildModel.js +6 -37
- package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
- package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
- package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
- package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
- package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
- package/dist/inspector/styleEditors/layoutMode.js +33 -0
- package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
- package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
- package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
- package/dist/inspector/styleEditors/layoutValue.js +6 -15
- package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
- package/dist/inspector/styleEditors/nudgeValue.js +1 -13
- package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
- package/dist/inspector/styleEditors/rowLookup.js +1 -5
- package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
- package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
- package/dist/inspector/styleEditors/stylePresence.js +1 -4
- package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
- package/dist/inspector/styleEditors/textRelevance.js +1 -1
- package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
- package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
- package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
- package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
- package/dist/inspector/styleEditors/valuePolicy.js +0 -1
- package/dist/inspector/testing.d.ts +1 -4
- package/dist/inspector/testing.js +1 -4
- package/dist/inspector/tokens/TokenChip.d.ts +1 -4
- package/dist/inspector/tokens/TokenChip.js +1 -4
- package/dist/inspector/tokens/TokenField.d.ts +4 -3
- package/dist/inspector/tokens/TokenField.js +53 -32
- package/dist/inspector/tokens/TokensPanel.js +2 -1
- package/dist/inspector/tokens/catalog.d.ts +2 -10
- package/dist/inspector/tokens/catalog.js +5 -12
- package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
- package/dist/inspector/tokens/dragPointerLock.js +2 -3
- package/dist/inspector/tokens/editActions.d.ts +4 -4
- package/dist/inspector/tokens/editActions.js +11 -7
- package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
- package/dist/inspector/tokens/resolution/cascade.js +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
- package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
- package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
- package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
- package/dist/inspector/tokens/resolution.d.ts +11 -27
- package/dist/inspector/tokens/resolution.js +105 -181
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
- package/dist/inspector/tokens/tokenEdits.js +1 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
- package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
- package/dist/inspector/ui/AtRuleContext.js +8 -6
- package/dist/inspector/ui/ControlSurface.d.ts +0 -4
- package/dist/inspector/ui/Disclosure.d.ts +0 -5
- package/dist/inspector/ui/Disclosure.js +0 -4
- package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
- package/dist/inspector/ui/InlineStyleWarning.js +2 -2
- package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
- package/dist/inspector/ui/InspectorStyle.js +26 -0
- package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
- package/dist/inspector/ui/PopoverListbox.js +3 -3
- package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
- package/dist/inspector/ui/SegmentedControl.js +6 -4
- package/dist/inspector/ui/SideValuesField.d.ts +1 -6
- package/dist/inspector/ui/SideValuesField.js +2 -8
- package/dist/inspector/ui/Toast.d.ts +10 -0
- package/dist/inspector/ui/Toast.js +26 -0
- package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
- package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
- package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
- package/dist/inspector/ui/atRuleSegments.js +34 -0
- package/dist/inspector/ui/classNames.d.ts +0 -1
- package/dist/inspector/ui/classNames.js +0 -1
- package/dist/inspector/ui/customCursors.d.ts +11 -0
- package/dist/inspector/ui/customCursors.js +29 -7
- package/dist/inspector/ui/styles.js +25 -25
- package/dist/inspector/workspace/commands.js +1 -2
- package/dist/inspector/workspace/controller.js +20 -2
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +4 -7
- package/dist/inspector/workspace/sentItems.d.ts +3 -6
- package/dist/inspector/workspace/sentItems.js +6 -24
- package/dist/inspector/workspace/timeline.d.ts +28 -11
- package/dist/inspector/workspace/timeline.js +117 -96
- package/dist/internal/agent-protocol.d.ts +53 -38
- package/dist/internal/agent-protocol.js +151 -42
- package/dist/nudge-ui.mjs +155 -92
- package/dist/project/artifacts.js +24 -21
- package/dist/project/files.d.ts +0 -1
- package/dist/project/files.js +2 -9
- package/dist/project/identity.d.ts +1 -5
- package/dist/project/identity.js +1 -5
- package/dist/project/mcpPackage.d.ts +3 -0
- package/dist/project/mcpPackage.js +55 -0
- package/dist/project/pathPolicy.d.ts +1 -6
- package/dist/project/pathPolicy.js +1 -6
- package/dist/project/tokens.d.ts +2 -12
- package/dist/project/tokens.js +4 -15
- package/dist/transport/editor.d.ts +1 -12
- package/dist/transport/editor.js +2 -13
- package/dist/transport/index.d.ts +0 -5
- package/dist/transport/index.js +0 -5
- package/dist/transport/routes.d.ts +0 -5
- package/dist/transport/routes.js +0 -5
- package/package.json +16 -5
- package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
- package/dist/inspector/canvas/measurementProjection.js +0 -16
- package/dist/inspector/changes/changesLog.d.ts +0 -49
- package/dist/inspector/changes/changesLog.js +0 -255
- package/dist/inspector/changes/draftChanges.d.ts +0 -58
- package/dist/inspector/changes/draftChanges.js +0 -304
- package/dist/inspector/conformance/projection.d.ts +0 -2
- package/dist/inspector/conformance/projection.js +0 -3
- package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
- package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
- package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
- package/dist/inspector/overlay/InspectorOverlay.js +0 -332
- package/dist/inspector/overlay/elementSelector.d.ts +0 -1
- package/dist/inspector/overlay/elementSelector.js +0 -111
- package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
- package/dist/inspector/sketch/SketchChanges.js +0 -72
- package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
- package/dist/inspector/sketch/SketchEntryButton.js +0 -11
- package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
- package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
- package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
- package/dist/inspector/styleEditors/InsetSection.js +0 -15
- package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
- package/dist/inspector/styleEditors/PositionInsets.js +0 -12
- package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
- package/dist/inspector/tokens/TokenDropdown.js +0 -59
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { SKETCH_ANNOTATION_RADIUS, SKETCH_LIMITS, SKETCH_STROKE_COLOR, } from "./model.js";
|
|
1
|
+
import { SKETCH_ANNOTATION_RADIUS, SKETCH_LIMITS, SKETCH_ACCENT_COLOR, SKETCH_RECTANGLE_FILL_OPACITY, SKETCH_STROKE_COLOR, } from "./model.js";
|
|
2
2
|
import { sketchStrokeOutline } from "./freehand.js";
|
|
3
3
|
const PNG_SIGNATURE = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]);
|
|
4
4
|
const SKETCH_NOTE_PADDING = 24;
|
|
5
|
-
const
|
|
5
|
+
const SKETCH_NOTE_TITLE_LINE_HEIGHT = 34;
|
|
6
6
|
const SKETCH_NOTE_LINE_HEIGHT = 32;
|
|
7
7
|
const SKETCH_NOTE_FONT = "24px system-ui, sans-serif";
|
|
8
8
|
const SKETCH_NOTE_TITLE_FONT = "600 24px system-ui, sans-serif";
|
|
9
|
+
const SKETCH_NOTE_FALLBACK_HEADING = "Sketch notes";
|
|
9
10
|
export function readPngDimensions(bytes) {
|
|
10
11
|
if (bytes.length < 24)
|
|
11
12
|
return null;
|
|
@@ -13,8 +14,7 @@ export function readPngDimensions(bytes) {
|
|
|
13
14
|
if (bytes[index] !== PNG_SIGNATURE[index])
|
|
14
15
|
return null;
|
|
15
16
|
}
|
|
16
|
-
// IHDR is the first chunk
|
|
17
|
-
// byte offsets 16 and 20 in the complete file.
|
|
17
|
+
// IHDR is the first chunk; dimensions are big-endian at byte offsets 16 and 20.
|
|
18
18
|
if (bytes[12] !== 73 || bytes[13] !== 72 || bytes[14] !== 68 || bytes[15] !== 82)
|
|
19
19
|
return null;
|
|
20
20
|
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
@@ -63,9 +63,15 @@ export function drawSketchStroke(ctx, stroke, scaleX = 1, scaleY = scaleX) {
|
|
|
63
63
|
if (stroke.kind === "rectangle") {
|
|
64
64
|
ctx.lineCap = "round";
|
|
65
65
|
ctx.lineJoin = "round";
|
|
66
|
-
|
|
66
|
+
const color = stroke.color || SKETCH_STROKE_COLOR;
|
|
67
|
+
ctx.strokeStyle = color;
|
|
68
|
+
ctx.fillStyle = color;
|
|
67
69
|
ctx.lineWidth = stroke.width * Math.max(scaleX, scaleY);
|
|
68
70
|
drawPointPath(ctx, stroke.points, scaleX, scaleY);
|
|
71
|
+
ctx.save();
|
|
72
|
+
ctx.globalAlpha = SKETCH_RECTANGLE_FILL_OPACITY;
|
|
73
|
+
ctx.fill();
|
|
74
|
+
ctx.restore();
|
|
69
75
|
ctx.stroke();
|
|
70
76
|
}
|
|
71
77
|
else {
|
|
@@ -93,7 +99,7 @@ export function drawSketchAnnotation(ctx, annotation, scaleX = 1, scaleY = scale
|
|
|
93
99
|
const y = annotation.point.y * scaleY;
|
|
94
100
|
const radius = SKETCH_ANNOTATION_RADIUS * scale;
|
|
95
101
|
ctx.save();
|
|
96
|
-
ctx.fillStyle =
|
|
102
|
+
ctx.fillStyle = SKETCH_ACCENT_COLOR;
|
|
97
103
|
ctx.beginPath();
|
|
98
104
|
ctx.arc(x, y, radius, 0, Math.PI * 2);
|
|
99
105
|
ctx.fill();
|
|
@@ -159,7 +165,13 @@ function wrapText(ctx, text, maxWidth) {
|
|
|
159
165
|
lines.push(line);
|
|
160
166
|
return lines;
|
|
161
167
|
}
|
|
162
|
-
|
|
168
|
+
function wrapSketchHeading(ctx, width, heading) {
|
|
169
|
+
const text = heading.trim();
|
|
170
|
+
if (!text)
|
|
171
|
+
return [];
|
|
172
|
+
ctx.font = SKETCH_NOTE_TITLE_FONT;
|
|
173
|
+
return wrapText(ctx, text, Math.max(1, width - SKETCH_NOTE_PADDING * 2));
|
|
174
|
+
}
|
|
163
175
|
function wrapSketchNotes(ctx, width, description, annotations) {
|
|
164
176
|
const notes = [
|
|
165
177
|
description.trim(),
|
|
@@ -172,29 +184,34 @@ function wrapSketchNotes(ctx, width, description, annotations) {
|
|
|
172
184
|
const textWidth = Math.max(1, width - SKETCH_NOTE_PADDING * 2);
|
|
173
185
|
return notes.flatMap((note) => wrapText(ctx, note, textWidth));
|
|
174
186
|
}
|
|
175
|
-
function sketchNotePanelHeight(
|
|
176
|
-
if (
|
|
187
|
+
function sketchNotePanelHeight(headingLineCount, noteLineCount) {
|
|
188
|
+
if (headingLineCount + noteLineCount === 0)
|
|
177
189
|
return 0;
|
|
178
|
-
return SKETCH_NOTE_PADDING * 2
|
|
190
|
+
return SKETCH_NOTE_PADDING * 2
|
|
191
|
+
+ headingLineCount * SKETCH_NOTE_TITLE_LINE_HEIGHT
|
|
192
|
+
+ noteLineCount * SKETCH_NOTE_LINE_HEIGHT;
|
|
179
193
|
}
|
|
180
|
-
function drawSketchNotes(ctx, width, top,
|
|
194
|
+
function drawSketchNotes(ctx, width, top, headingLines, noteLines) {
|
|
181
195
|
ctx.save();
|
|
182
|
-
ctx.fillStyle =
|
|
183
|
-
ctx.fillRect(0, top, width, sketchNotePanelHeight(
|
|
196
|
+
ctx.fillStyle = SKETCH_ACCENT_COLOR;
|
|
197
|
+
ctx.fillRect(0, top, width, sketchNotePanelHeight(headingLines.length, noteLines.length));
|
|
184
198
|
ctx.fillStyle = "#ffffff";
|
|
185
199
|
ctx.textAlign = "left";
|
|
186
200
|
ctx.textBaseline = "top";
|
|
187
201
|
ctx.font = SKETCH_NOTE_TITLE_FONT;
|
|
188
|
-
|
|
202
|
+
let y = top + SKETCH_NOTE_PADDING;
|
|
203
|
+
for (const line of headingLines) {
|
|
204
|
+
ctx.fillText(line, SKETCH_NOTE_PADDING, y);
|
|
205
|
+
y += SKETCH_NOTE_TITLE_LINE_HEIGHT;
|
|
206
|
+
}
|
|
189
207
|
ctx.font = SKETCH_NOTE_FONT;
|
|
190
|
-
|
|
191
|
-
for (const line of lines) {
|
|
208
|
+
for (const line of noteLines) {
|
|
192
209
|
ctx.fillText(line, SKETCH_NOTE_PADDING, y);
|
|
193
210
|
y += SKETCH_NOTE_LINE_HEIGHT;
|
|
194
211
|
}
|
|
195
212
|
ctx.restore();
|
|
196
213
|
}
|
|
197
|
-
export async function renderAnnotatedPng(originalImage, imageWidth, imageHeight, strokes, annotations = [], description = "") {
|
|
214
|
+
export async function renderAnnotatedPng(originalImage, imageWidth, imageHeight, strokes, annotations = [], description = "", heading = SKETCH_NOTE_FALLBACK_HEADING) {
|
|
198
215
|
await validatePngBlob(originalImage, { width: imageWidth, height: imageHeight });
|
|
199
216
|
if (typeof document === "undefined")
|
|
200
217
|
throw new Error("Sketch rendering requires a browser document.");
|
|
@@ -205,8 +222,9 @@ export async function renderAnnotatedPng(originalImage, imageWidth, imageHeight,
|
|
|
205
222
|
const context = canvas.getContext("2d");
|
|
206
223
|
if (!context)
|
|
207
224
|
throw new Error("The browser could not create a sketch canvas.");
|
|
225
|
+
const headingLines = wrapSketchHeading(context, imageWidth, heading);
|
|
208
226
|
const noteLines = wrapSketchNotes(context, imageWidth, description, annotations);
|
|
209
|
-
const outputHeight = imageHeight + sketchNotePanelHeight(noteLines.length);
|
|
227
|
+
const outputHeight = imageHeight + sketchNotePanelHeight(headingLines.length, noteLines.length);
|
|
210
228
|
if (outputHeight > SKETCH_LIMITS.imageEdge) {
|
|
211
229
|
throw new Error("Sketch notes are too long to fit below the captured image.");
|
|
212
230
|
}
|
|
@@ -215,8 +233,9 @@ export async function renderAnnotatedPng(originalImage, imageWidth, imageHeight,
|
|
|
215
233
|
context.drawImage(image.source, 0, 0, imageWidth, imageHeight);
|
|
216
234
|
drawSketchStrokes(context, strokes);
|
|
217
235
|
drawSketchAnnotations(context, annotations);
|
|
218
|
-
if (noteLines.length > 0)
|
|
219
|
-
drawSketchNotes(context, imageWidth, imageHeight, noteLines);
|
|
236
|
+
if (headingLines.length > 0 || noteLines.length > 0) {
|
|
237
|
+
drawSketchNotes(context, imageWidth, imageHeight, headingLines, noteLines);
|
|
238
|
+
}
|
|
220
239
|
const result = await canvasPng(canvas);
|
|
221
240
|
if (result.size > SKETCH_LIMITS.imageBytes) {
|
|
222
241
|
throw new Error("This sketch is too detailed to save within the 2 MiB image limit.");
|
|
@@ -238,6 +257,7 @@ export async function blobToBase64(blob) {
|
|
|
238
257
|
throw new Error("This browser cannot prepare sketch attachments.");
|
|
239
258
|
return btoa(binary);
|
|
240
259
|
}
|
|
260
|
+
/** The promise form lets callers start the write inside the user gesture (required by Safari). */
|
|
241
261
|
export async function copyImageToClipboard(blob) {
|
|
242
262
|
if (typeof navigator === "undefined" || !navigator.clipboard?.write || typeof ClipboardItem === "undefined") {
|
|
243
263
|
throw new Error("Image clipboard access is unavailable. Use Download image instead.");
|
|
@@ -35,7 +35,7 @@ export declare function markSketchesHandingOff(entries: readonly {
|
|
|
35
35
|
readonly id: string;
|
|
36
36
|
readonly revision: number;
|
|
37
37
|
}[], batchRevision: number, localBatchId: string, agentRequestId?: string): Promise<boolean>;
|
|
38
|
-
export declare function settleSketchDispatch(batchRevision: number | undefined, state: "working" | "completed" | "failed" | "interrupted", agentRequestId?: string, localBatchId?: string): Promise<boolean>;
|
|
38
|
+
export declare function settleSketchDispatch(batchRevision: number | undefined, state: "delivered" | "working" | "completed" | "failed" | "interrupted", agentRequestId?: string, localBatchId?: string): Promise<boolean>;
|
|
39
39
|
export declare function markSketchesHandedOff(entries: readonly {
|
|
40
40
|
readonly id: string;
|
|
41
41
|
readonly revision: number;
|
|
@@ -74,7 +74,6 @@ function randomId(prefix) {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
catch {
|
|
77
|
-
// Fall through to the deterministic-enough browser fallback.
|
|
78
77
|
}
|
|
79
78
|
return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
80
79
|
}
|
|
@@ -300,8 +299,8 @@ export function settleSketchDispatch(batchRevision, state, agentRequestId, local
|
|
|
300
299
|
if (hydration)
|
|
301
300
|
await hydration;
|
|
302
301
|
assertWritable(projectId, expectedGeneration);
|
|
303
|
-
//
|
|
304
|
-
//
|
|
302
|
+
// Resolved inside the write queue so an older completion event cannot
|
|
303
|
+
// remove a pending save or requeue.
|
|
305
304
|
const changes = snapshot.items.flatMap(({ document, handoff }) => {
|
|
306
305
|
if (!handoff || handoff.sketchRevision !== document.revision
|
|
307
306
|
|| handoff.transport !== "direct" || handoff.batchRevision !== batchRevision)
|
|
@@ -325,7 +324,7 @@ export function settleSketchDispatch(batchRevision, state, agentRequestId, local
|
|
|
325
324
|
}
|
|
326
325
|
return true;
|
|
327
326
|
}
|
|
328
|
-
const nextHandoffs = changes.map((handoff) => updateHandoff(handoff, state === "working" ? {
|
|
327
|
+
const nextHandoffs = changes.map((handoff) => updateHandoff(handoff, (state === "delivered" || state === "working") ? {
|
|
329
328
|
state: "handing-off",
|
|
330
329
|
transport: "direct",
|
|
331
330
|
...(agentRequestId ? { agentRequestId } : {}),
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Supplies still images to the DOM renderer while live videos stay mounted. */
|
|
2
|
+
export declare function prepareSketchVideoFrames(targetDocument: Document): {
|
|
3
|
+
readonly filter: (node: Node) => boolean;
|
|
4
|
+
readonly prepareClone: (node: Node) => void;
|
|
5
|
+
readonly restore: () => void;
|
|
6
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { SKETCH_LIMITS } from "./model.js";
|
|
2
|
+
const FRAME_ATTRIBUTE = "data-nudge-ui-video-frame";
|
|
3
|
+
const EMPTY_FRAME = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
|
|
4
|
+
function* videoElements(root) {
|
|
5
|
+
yield* root.querySelectorAll("video");
|
|
6
|
+
for (const element of root.querySelectorAll("*")) {
|
|
7
|
+
if (element.shadowRoot)
|
|
8
|
+
yield* videoElements(element.shadowRoot);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function videoFrame(video) {
|
|
12
|
+
const image = video.ownerDocument.createElement("img");
|
|
13
|
+
image.src = video.poster || EMPTY_FRAME;
|
|
14
|
+
image.width = video.videoWidth || video.clientWidth || 300;
|
|
15
|
+
image.height = video.videoHeight || video.clientHeight || 150;
|
|
16
|
+
const style = video.ownerDocument.defaultView?.getComputedStyle(video);
|
|
17
|
+
if (style) {
|
|
18
|
+
for (const property of style) {
|
|
19
|
+
image.style.setProperty(property, style.getPropertyValue(property), style.getPropertyPriority(property));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Preserve the replaced element's layout even when its CSS size is auto.
|
|
23
|
+
image.style.width = style?.width && style.width !== "auto" ? style.width : `${video.clientWidth}px`;
|
|
24
|
+
image.style.height = style?.height && style.height !== "auto" ? style.height : `${video.clientHeight}px`;
|
|
25
|
+
if (video.readyState >= 2 && video.videoWidth > 0 && video.videoHeight > 0) {
|
|
26
|
+
const canvas = video.ownerDocument.createElement("canvas");
|
|
27
|
+
const scale = Math.min(1, SKETCH_LIMITS.imageEdge / Math.max(video.videoWidth, video.videoHeight));
|
|
28
|
+
canvas.width = Math.max(1, Math.round(video.videoWidth * scale));
|
|
29
|
+
canvas.height = Math.max(1, Math.round(video.videoHeight * scale));
|
|
30
|
+
try {
|
|
31
|
+
const context = canvas.getContext("2d");
|
|
32
|
+
if (context) {
|
|
33
|
+
context.drawImage(video, 0, 0, canvas.width, canvas.height);
|
|
34
|
+
image.src = canvas.toDataURL("image/png");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Cross-origin frames can taint a canvas; the poster or empty frame is kept.
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return image;
|
|
42
|
+
}
|
|
43
|
+
/** Supplies still images to the DOM renderer while live videos stay mounted. */
|
|
44
|
+
export function prepareSketchVideoFrames(targetDocument) {
|
|
45
|
+
const frames = new Map();
|
|
46
|
+
const placeholders = [];
|
|
47
|
+
for (const video of videoElements(targetDocument)) {
|
|
48
|
+
const id = String(frames.size);
|
|
49
|
+
frames.set(id, videoFrame(video));
|
|
50
|
+
const placeholder = targetDocument.createElement("img");
|
|
51
|
+
placeholder.hidden = true;
|
|
52
|
+
placeholder.src = EMPTY_FRAME;
|
|
53
|
+
placeholder.setAttribute(FRAME_ATTRIBUTE, id);
|
|
54
|
+
// A hidden sibling placeholder preserves capture order without touching the live video.
|
|
55
|
+
video.before(placeholder);
|
|
56
|
+
placeholders.push(placeholder);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
filter: (node) => node.nodeType !== 1 || node.localName !== "video",
|
|
60
|
+
prepareClone: (node) => {
|
|
61
|
+
if (node.nodeType !== 1)
|
|
62
|
+
return;
|
|
63
|
+
const element = node;
|
|
64
|
+
const id = element.getAttribute(FRAME_ATTRIBUTE);
|
|
65
|
+
const frame = id === null ? undefined : frames.get(id);
|
|
66
|
+
if (!frame)
|
|
67
|
+
return;
|
|
68
|
+
element.removeAttribute(FRAME_ATTRIBUTE);
|
|
69
|
+
element.removeAttribute("hidden");
|
|
70
|
+
element.style.cssText = frame.style.cssText;
|
|
71
|
+
element.setAttribute("src", frame.src);
|
|
72
|
+
element.setAttribute("width", String(frame.width));
|
|
73
|
+
element.setAttribute("height", String(frame.height));
|
|
74
|
+
},
|
|
75
|
+
restore: () => {
|
|
76
|
+
for (const placeholder of placeholders)
|
|
77
|
+
placeholder.remove();
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
}
|
|
@@ -29,15 +29,7 @@ export interface InspectorSpacingProjection {
|
|
|
29
29
|
export interface InspectorProjection {
|
|
30
30
|
spacing: Record<ProjectionGroup, InspectorSpacingProjection>;
|
|
31
31
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Projects resolved physical side facts into the compact spacing UI shape.
|
|
34
|
-
* Authored value, token identity, computed value, and source property all
|
|
35
|
-
* participate in shared/mixed detection so visually equal values cannot
|
|
36
|
-
* accidentally discard authored CSS intent. Source properties remain on each
|
|
37
|
-
* field as provenance but do not by themselves force expansion.
|
|
38
|
-
*/
|
|
39
32
|
export declare function projectInspectorValues(el: HTMLElement, rows: ResolvedProperty[]): InspectorProjection;
|
|
40
|
-
/** Projects computed group values into the existing spacing editor model. */
|
|
41
33
|
export declare function projectInspectorValuesForSelection(selection: StyleSelection): InspectorProjection;
|
|
42
34
|
export declare function projectionSides(axis: ProjectionAxis): readonly [ProjectionSide, ProjectionSide];
|
|
43
35
|
export {};
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { getStateStyleValue } from "../shell/stateValue.js";
|
|
2
|
+
import { readAuthoredStyleValue } from "../styleEditors/layoutValue.js";
|
|
2
3
|
const SIDES = ["top", "right", "bottom", "left"];
|
|
3
4
|
const AXIS_SIDES = {
|
|
4
|
-
//
|
|
5
|
-
// horizontal value read as right, left and a mixed vertical value as top,
|
|
6
|
-
// bottom when the compact editor renders both values.
|
|
5
|
+
// CSS physical-side order per axis, so a mixed pair reads right/left, top/bottom.
|
|
7
6
|
horizontal: ["right", "left"],
|
|
8
7
|
vertical: ["top", "bottom"],
|
|
9
8
|
};
|
|
10
9
|
function fieldProjection(el, rows, property) {
|
|
11
10
|
const row = rows.find((candidate) => candidate.property === property) ?? null;
|
|
12
|
-
//
|
|
13
|
-
// one render behind while the debounced inspector refreshes, so use the
|
|
14
|
-
// live computed side value for grouping when available and retain the row
|
|
15
|
-
// for authored/token/source provenance.
|
|
11
|
+
// Resolved rows can be one render behind; the live value is the grouping authority, the row only supplies provenance.
|
|
16
12
|
const liveValue = getStateStyleValue(el, property);
|
|
17
13
|
const rowValue = row?.computed || row?.resolvedValue;
|
|
18
14
|
const rowIsCurrent = !liveValue || !row || Boolean(row.sourceProperty) || !rowValue || rowValue === liveValue;
|
|
19
15
|
const effectiveRow = rowIsCurrent ? row : null;
|
|
20
|
-
const
|
|
16
|
+
const computedValue = liveValue || row?.resolvedValue || "";
|
|
17
|
+
if (isInsetSide(property))
|
|
18
|
+
return insetFieldProjection(el, property, effectiveRow, computedValue);
|
|
19
|
+
const value = computedValue;
|
|
21
20
|
return {
|
|
22
21
|
property,
|
|
23
22
|
authoredValue: effectiveRow?.authored ?? effectiveRow?.declaredValue ?? value,
|
|
@@ -27,11 +26,23 @@ function fieldProjection(el, rows, property) {
|
|
|
27
26
|
row: effectiveRow,
|
|
28
27
|
};
|
|
29
28
|
}
|
|
29
|
+
function isInsetSide(property) {
|
|
30
|
+
return SIDES.includes(property);
|
|
31
|
+
}
|
|
32
|
+
/** Inset sides report the browser's used offset even when unauthored, so only authored values are shown. */
|
|
33
|
+
function insetFieldProjection(el, property, row, computedValue) {
|
|
34
|
+
const authoredValue = (row?.authored ?? row?.declaredValue ?? readAuthoredStyleValue(el, property) ?? "").trim() || "auto";
|
|
35
|
+
return {
|
|
36
|
+
property,
|
|
37
|
+
authoredValue,
|
|
38
|
+
value: authoredValue === "auto" ? "auto" : computedValue || authoredValue,
|
|
39
|
+
tokenName: row?.tokenName ?? null,
|
|
40
|
+
sourceProperty: row?.sourceProperty,
|
|
41
|
+
row,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
30
44
|
function fieldSignature(field) {
|
|
31
|
-
// Source property is provenance, not
|
|
32
|
-
// longhands with the same authored/token value may still use the compact
|
|
33
|
-
// axis control; the individual source properties remain attached to their
|
|
34
|
-
// fields for prompt generation and edit metadata.
|
|
45
|
+
// Source property is provenance, not value identity, so it stays out of the signature.
|
|
35
46
|
return [field.authoredValue, field.tokenName ?? "", field.value].join("|");
|
|
36
47
|
}
|
|
37
48
|
function axisProjection(axis, fields) {
|
|
@@ -61,13 +72,6 @@ function spacingProjection(el, rows, property) {
|
|
|
61
72
|
},
|
|
62
73
|
};
|
|
63
74
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Projects resolved physical side facts into the compact spacing UI shape.
|
|
66
|
-
* Authored value, token identity, computed value, and source property all
|
|
67
|
-
* participate in shared/mixed detection so visually equal values cannot
|
|
68
|
-
* accidentally discard authored CSS intent. Source properties remain on each
|
|
69
|
-
* field as provenance but do not by themselves force expansion.
|
|
70
|
-
*/
|
|
71
75
|
export function projectInspectorValues(el, rows) {
|
|
72
76
|
return {
|
|
73
77
|
spacing: {
|
|
@@ -82,6 +86,8 @@ function selectionField(selection, property) {
|
|
|
82
86
|
const mixed = selectedProperty?.value.kind === "mixed";
|
|
83
87
|
const value = selectedProperty?.value.kind === "common" ? selectedProperty.value.value : "";
|
|
84
88
|
const row = selectedProperty?.primaryRow ?? null;
|
|
89
|
+
if (isInsetSide(property))
|
|
90
|
+
return selectionInsetField(selection, property, row, selectedProperty?.token.kind === "common" ? selectedProperty.token.name : null);
|
|
85
91
|
return {
|
|
86
92
|
property,
|
|
87
93
|
authoredValue: mixed ? "Mixed" : value,
|
|
@@ -91,6 +97,19 @@ function selectionField(selection, property) {
|
|
|
91
97
|
row,
|
|
92
98
|
};
|
|
93
99
|
}
|
|
100
|
+
function selectionInsetField(selection, property, row, tokenName) {
|
|
101
|
+
const authored = selection.domElements.map((el) => readAuthoredStyleValue(el, property) ?? "auto");
|
|
102
|
+
const mixed = new Set(authored).size > 1;
|
|
103
|
+
const value = mixed ? "Mixed" : authored[0] ?? "auto";
|
|
104
|
+
return {
|
|
105
|
+
property,
|
|
106
|
+
authoredValue: value,
|
|
107
|
+
value,
|
|
108
|
+
tokenName: mixed || value === "auto" ? null : tokenName,
|
|
109
|
+
sourceProperty: row?.sourceProperty,
|
|
110
|
+
row,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
94
113
|
function selectionAxis(axis, fields) {
|
|
95
114
|
const sides = AXIS_SIDES[axis];
|
|
96
115
|
const pair = [fields[sides[0]], fields[sides[1]]];
|
|
@@ -118,7 +137,6 @@ function selectionSpacing(selection, property) {
|
|
|
118
137
|
},
|
|
119
138
|
};
|
|
120
139
|
}
|
|
121
|
-
/** Projects computed group values into the existing spacing editor model. */
|
|
122
140
|
export function projectInspectorValuesForSelection(selection) {
|
|
123
141
|
if (selection.elements.length === 1) {
|
|
124
142
|
return projectInspectorValues(selection.primary.domElement, [...selection.primaryRows]);
|
|
@@ -6,7 +6,8 @@ import { interpretTokenValue } from "../../css/value-semantics/tokenInterpretati
|
|
|
6
6
|
import { getNudgeUiTokenEntries } from "../runtime/runtimeConfig.js";
|
|
7
7
|
import { colorValueToHex, TokenValueField } from "../tokens/TokenField.js";
|
|
8
8
|
import { setStyles } from "../tokens/editActions.js";
|
|
9
|
-
import {
|
|
9
|
+
import { getActiveDraftChanges } from "../drafts/store.js";
|
|
10
|
+
import { createChangeHistoryGroup } from "../workspace/timeline.js";
|
|
10
11
|
import { getStateStyleValue } from "../shell/stateValue.js";
|
|
11
12
|
import { ControlSurface } from "../ui/ControlSurface.js";
|
|
12
13
|
import { IconButton } from "../ui/IconButton.js";
|
|
@@ -175,7 +176,7 @@ function BackgroundLayerEditor(props) {
|
|
|
175
176
|
const match = /^([+-]?(?:\d*\.)?\d+)(?:deg)?$/.exec(raw.trim());
|
|
176
177
|
if (match && Number.isFinite(Number(match[1])))
|
|
177
178
|
commitGradient({ ...gradient, angle: Number(match[1]) });
|
|
178
|
-
}) : null, _jsx(IconButton, { variant: "
|
|
179
|
+
}) : null, _jsx(IconButton, { variant: "secondary", label: "Reverse gradient", disabled: blockedBy !== null, onClick: () => commitGradient({ ...gradient, stops: [...gradient.stops].reverse().map((stop) => ({ ...stop, position: 100 - stop.position })) }), children: _jsx(IconArrowsDiff, { "aria-hidden": "true" }) }), _jsx(IconButton, { variant: "quiet", label: "Add gradient stop", disabled: blockedBy !== null, onClick: () => addStop(), children: _jsx(IconPlus, { "aria-hidden": "true" }) })] }), gradient.stops.map((stop, index) => ({ stop, index })).sort((a, b) => a.stop.position - b.stop.position).map(({ stop, index }) => {
|
|
179
180
|
const color = interpretTokenValue(stop.color, { table: tokenTable });
|
|
180
181
|
return _jsxs("div", { className: "background-editor__stop-row", role: "group", "aria-label": `Stop ${index + 1}`, children: [rawField(`Stop ${index + 1} position`, `${Number(stop.position.toFixed(3))}%`, (raw) => {
|
|
181
182
|
const match = /^([+-]?(?:\d*\.)?\d+)%?$/.exec(raw.trim());
|