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,15 +1,15 @@
|
|
|
1
|
+
import { type CanvasFrame } from "../canvas/canvasFrame.js";
|
|
1
2
|
import type { HtmlArtifactRevision } from "../../transport/artifacts.js";
|
|
2
|
-
import {
|
|
3
|
+
import type { DraftContents } from "../drafts/model.js";
|
|
3
4
|
/** Owned transport; tests use a working in-memory artifact store. */
|
|
4
5
|
export interface HtmlIterationStorage {
|
|
5
6
|
readRevision(id: string): Promise<HtmlArtifactRevision>;
|
|
6
7
|
commit(id: string, expected: HtmlArtifactRevision, html?: string): Promise<HtmlArtifactRevision>;
|
|
7
8
|
}
|
|
8
|
-
/** Owns save ordering, draft settlement, and external document promotion. */
|
|
9
9
|
export declare function createHtmlIterationCoordinator(storage: HtmlIterationStorage): {
|
|
10
10
|
prepare(cardId: string, artifactId: string, baseRevision: string, capture: () => Promise<string>): Promise<DraftContents>;
|
|
11
11
|
refresh(cardId: string, artifactId: string, baseRevision: string, available: () => boolean): Promise<boolean>;
|
|
12
12
|
};
|
|
13
13
|
/** Materializes pending intent before the agent can start editing document.html. */
|
|
14
|
-
export declare function prepareHtmlIterationHandoff(cardId: string, artifactId: string, frame:
|
|
15
|
-
export declare function refreshHtmlIteration(cardId: string, artifactId: string, frame:
|
|
14
|
+
export declare function prepareHtmlIterationHandoff(cardId: string, artifactId: string, frame: CanvasFrame): Promise<DraftContents>;
|
|
15
|
+
export declare function refreshHtmlIteration(cardId: string, artifactId: string, frame: CanvasFrame): Promise<boolean>;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
+
import { canvasFrameElement } from "../canvas/canvasFrame.js";
|
|
1
2
|
import { HTML_ARTIFACT_REVISION_ATTRIBUTE } from "../../transport/artifacts.js";
|
|
2
|
-
import { getDraftForCard, getDraftContentsForCard, clearSavedIterationDraft } from "../drafts/store.js";
|
|
3
|
-
import { lockDraft } from "../changes/draftChanges.js";
|
|
3
|
+
import { getDraftForCard, getDraftContentsForCard, clearSavedIterationDraft, lockDraft } from "../drafts/store.js";
|
|
4
4
|
import { canWriteWorkspace } from "../canvas/workspaceLease.js";
|
|
5
5
|
import { projectDraftToDocument, isCanvasProjectionRevisionCurrent, projectToAllReadyCards } from "../canvas/projection.js";
|
|
6
6
|
import { isInlineTextEditingActive } from "../inline-text/inlineTextEditor.js";
|
|
7
7
|
import { captureHtmlIteration } from "./capture.js";
|
|
8
8
|
import { artifactDocumentUrl, commitHtmlArtifact, readHtmlArtifactRevision } from "./client.js";
|
|
9
|
-
/** Owns save ordering, draft settlement, and external document promotion. */
|
|
10
9
|
export function createHtmlIterationCoordinator(storage) {
|
|
11
10
|
const operations = new Map();
|
|
12
11
|
async function serialize(id, operation) {
|
|
@@ -117,7 +116,9 @@ export async function prepareHtmlIterationHandoff(cardId, artifactId, frame) {
|
|
|
117
116
|
}
|
|
118
117
|
return html;
|
|
119
118
|
});
|
|
120
|
-
|
|
119
|
+
const element = canvasFrameElement(frame);
|
|
120
|
+
if (element)
|
|
121
|
+
element.src = `${artifactDocumentUrl(artifactId)}?revision=${Date.now()}`;
|
|
121
122
|
return workspace;
|
|
122
123
|
}
|
|
123
124
|
finally {
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/** Defines the edit destination for every HTML-iteration handoff, including fallback copies. */
|
|
2
1
|
export declare function htmlIterationPrompt(id: string, changes: string, noInspectorChanges: boolean, hasSketches: boolean, customInstructions?: string): string;
|
|
3
2
|
export declare function htmlIterationImplementationPrompt(id: string, label: string, page: string, changes: string): string;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
import { withPromptContext } from "../prompt/promptDocument.js";
|
|
2
2
|
export function htmlIterationPrompt(id, changes, noInspectorChanges, hasSketches, customInstructions = "") {
|
|
3
3
|
const directory = `.nudge/artifacts/${id}`;
|
|
4
|
-
return [
|
|
5
|
-
"
|
|
4
|
+
return withPromptContext([
|
|
5
|
+
"## Edit this HTML iteration",
|
|
6
6
|
"",
|
|
7
7
|
`Edit only \`${directory}/document.html\`. This is the standalone HTML and CSS shown in the selected Nudge iteration frame.`,
|
|
8
8
|
"Preserve its responsive CSS and existing design edits. Keep application source files unchanged. Any original source locations below identify captured elements; they are not files to edit.",
|
|
9
9
|
`Keep \`${directory}/baseline.html\`, \`${directory}/preview.html\`, and metadata unchanged. Nudge will reload the iteration from your updated document.`,
|
|
10
10
|
...(hasSketches ? ["Implement the attached sketch notes in this iteration's HTML and CSS. Match numbered notes to their marks in the image."] : []),
|
|
11
11
|
"",
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
], noInspectorChanges
|
|
13
|
+
? ["Use the current iteration as the editing base. Existing visual edits are already saved in its markup and styles.", ...(customInstructions.trim() ? ["", "## Custom instructions", "", customInstructions.trim()] : [])].join("\n")
|
|
14
|
+
: changes);
|
|
14
15
|
}
|
|
15
16
|
export function htmlIterationImplementationPrompt(id, label, page, changes) {
|
|
16
17
|
const directory = `.nudge/artifacts/${id}`;
|
|
17
|
-
return [
|
|
18
|
-
|
|
18
|
+
return withPromptContext([
|
|
19
|
+
`## Implement ${label} in the live app`,
|
|
19
20
|
"",
|
|
20
21
|
`Page: ${page}`,
|
|
21
22
|
`Use \`${directory}/document.html\` as the design reference, including all saved visual edits.`,
|
|
22
23
|
"Update application source for this page to match it. Reuse existing components and styles, and preserve app behavior and data.",
|
|
23
24
|
"Keep iteration files unchanged; captured source locations below are hints for finding app code.",
|
|
24
|
-
|
|
25
|
-
].join("\n");
|
|
25
|
+
], changes);
|
|
26
26
|
}
|
|
@@ -6,5 +6,7 @@ export interface DomNavigatorProps {
|
|
|
6
6
|
hierarchy: HTMLElement[];
|
|
7
7
|
anchor: Rect;
|
|
8
8
|
project: (element: HTMLElement) => Rect | null;
|
|
9
|
+
/** The selection is a component or shares its source with other elements. */
|
|
10
|
+
linked?: boolean;
|
|
9
11
|
}
|
|
10
|
-
export declare function DomNavigator({ selected, hierarchy, anchor, project }: DomNavigatorProps): ReactElement | null;
|
|
12
|
+
export declare function DomNavigator({ selected, hierarchy, anchor, project, linked }: DomNavigatorProps): ReactElement | null;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { IconMenu2 } from "@tabler/icons-react";
|
|
3
|
+
import { IconChevronDown, IconChevronRight, IconMenu2 } from "@tabler/icons-react";
|
|
4
4
|
import { Popover as BasePopover } from "@base-ui/react/popover";
|
|
5
5
|
import { setSelectedElement } from "../selection/selectionStore.js";
|
|
6
|
-
import {
|
|
6
|
+
import { computeNavigationParents, computeTrackedChildren, hasTrackedChildren } from "../selection/hierarchy.js";
|
|
7
7
|
import { resolveSelectionFromElement } from "../selection/resolveSelection.js";
|
|
8
8
|
import { portalContainer } from "../ui/portalContainer.js";
|
|
9
9
|
import { cx } from "../ui/classNames.js";
|
|
@@ -19,28 +19,52 @@ function selectNode(node) {
|
|
|
19
19
|
if (resolved)
|
|
20
20
|
setSelectedElement(resolved);
|
|
21
21
|
}
|
|
22
|
-
export function DomNavigator({ selected, hierarchy, anchor, project }) {
|
|
23
|
-
const
|
|
24
|
-
const parents =
|
|
25
|
-
const children = nodes.filter((node) => node.direction === "down");
|
|
22
|
+
export function DomNavigator({ selected, hierarchy, anchor, project, linked = false }) {
|
|
23
|
+
const children = computeTrackedChildren(selected.domElement);
|
|
24
|
+
const parents = computeNavigationParents(hierarchy, children.elements.length > 0);
|
|
26
25
|
const [expanded, setExpanded] = useState(false);
|
|
27
26
|
const [hovered, setHovered] = useState(null);
|
|
28
|
-
|
|
27
|
+
const [opened, setOpened] = useState(new Set());
|
|
28
|
+
if (parents.length === 0 && children.elements.length === 0)
|
|
29
29
|
return null;
|
|
30
30
|
const preview = hovered ? project(hovered) : null;
|
|
31
31
|
const setOpen = (next) => {
|
|
32
32
|
setExpanded(next);
|
|
33
|
-
if (!next)
|
|
33
|
+
if (!next) {
|
|
34
34
|
setHovered(null);
|
|
35
|
+
setOpened(new Set());
|
|
36
|
+
}
|
|
35
37
|
};
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
const toggleOpened = (element) => {
|
|
39
|
+
setOpened((current) => {
|
|
40
|
+
const next = new Set(current);
|
|
41
|
+
if (!next.delete(element))
|
|
42
|
+
next.add(element);
|
|
43
|
+
return next;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
const renderItem = (key, element, depth) => {
|
|
47
|
+
const current = element === null;
|
|
48
|
+
const target = element ?? selected.domElement;
|
|
49
|
+
return (_jsx("button", { type: "button", className: cx("dom-navigator__item", current && "dom-navigator__item--selected"), "data-test": "dom-navigator-item", "data-current": current ? "true" : undefined, "data-depth": depth, "data-cid": target.getAttribute("data-cid") ?? undefined, style: { paddingLeft: `calc(var(--space-8) + ${depth * 16}px)` }, role: "menuitem", "aria-current": current ? "true" : undefined, onMouseEnter: () => setHovered(current ? null : target), onClick: () => {
|
|
40
50
|
if (!current)
|
|
41
|
-
selectNode(
|
|
51
|
+
selectNode(target);
|
|
42
52
|
setOpen(false);
|
|
43
|
-
}, children: _jsx("span", { children: nodeDescription(
|
|
53
|
+
}, children: _jsx("span", { children: nodeDescription(target) }) }, key));
|
|
44
54
|
};
|
|
45
|
-
|
|
55
|
+
const renderChildren = (list, depth, path) => [
|
|
56
|
+
...list.elements.flatMap((element, index) => {
|
|
57
|
+
const key = `${path}/${index}`;
|
|
58
|
+
const nested = opened.has(element) ? computeTrackedChildren(element) : null;
|
|
59
|
+
const expandable = hasTrackedChildren(element);
|
|
60
|
+
return [
|
|
61
|
+
_jsxs("div", { className: "dom-navigator__row", "data-test": "dom-navigator-row", children: [expandable ? (_jsx("button", { type: "button", className: "dom-navigator__expander", "data-test": "dom-navigator-expander", "aria-label": `${nested ? "Collapse" : "Expand"} ${nodeDescription(element)}`, "aria-expanded": nested !== null, style: { left: `calc(var(--space-4) + ${(depth - 1) * 16}px)` }, onMouseEnter: () => setHovered(null), onClick: () => toggleOpened(element), children: nested ? _jsx(IconChevronDown, { size: 12, "aria-hidden": "true" }) : _jsx(IconChevronRight, { size: 12, "aria-hidden": "true" }) })) : null, renderItem(key, element, depth)] }, key),
|
|
62
|
+
...(nested ? renderChildren(nested, depth + 1, key) : []),
|
|
63
|
+
];
|
|
64
|
+
}),
|
|
65
|
+
...(list.hidden > 0
|
|
66
|
+
? [(_jsxs("div", { className: "dom-navigator__more", "data-test": "dom-navigator-more", style: { paddingLeft: `calc(var(--space-8) + ${depth * 16}px)` }, children: ["+", list.hidden, " more"] }, `${path}/more`))]
|
|
67
|
+
: []),
|
|
68
|
+
];
|
|
69
|
+
return (_jsxs(_Fragment, { children: [preview ? _jsx("div", { className: "dom-navigator-preview", "data-test": "dom-navigator-preview", style: preview, "aria-hidden": "true" }) : null, _jsx("div", { className: "dom-navigator", "data-test": "dom-navigator", "data-linked": linked ? "true" : undefined, "aria-label": "DOM navigator", style: { left: Math.max(4, anchor.left), top: Math.max(4, anchor.top - 28) }, children: _jsxs(BasePopover.Root, { open: expanded, onOpenChange: setOpen, children: [_jsx(BasePopover.Trigger, { render: _jsx("button", { type: "button", className: "dom-navigator__trigger", "data-test": "dom-navigator-trigger", "aria-label": "Open DOM navigator", "aria-haspopup": "menu", "aria-expanded": expanded, onMouseEnter: () => setHovered(null) }), children: _jsx(IconMenu2, { size: 14, "aria-hidden": "true" }) }), _jsx("span", { className: "dom-navigator__label", children: nodeDescription(selected.domElement) }), _jsx(BasePopover.Portal, { container: portalContainer(), children: _jsx(BasePopover.Positioner, { className: "dom-navigator__positioner", side: "top", align: "start", sideOffset: 4, children: _jsxs(BasePopover.Popup, { className: "dom-navigator__menu", role: "menu", "aria-label": "DOM navigator", onMouseLeave: () => setHovered(null), children: [parents.slice().reverse().map((element, index) => renderItem(`up-${index}`, element, index)), renderItem("current", null, parents.length), renderChildren(children, parents.length + 1, "down")] }) }) })] }) })] }));
|
|
46
70
|
}
|
|
@@ -12,6 +12,5 @@ interface DropGuideOverlayProps {
|
|
|
12
12
|
targetClassName?: string;
|
|
13
13
|
targetTestId?: string;
|
|
14
14
|
}
|
|
15
|
-
/** Shared visual wrapper; each view only supplies its projected viewport geometry. */
|
|
16
15
|
export declare function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }: DropGuideOverlayProps): ReactElement | null;
|
|
17
16
|
export {};
|
|
@@ -9,7 +9,6 @@ function fixedRect(rect) {
|
|
|
9
9
|
pointerEvents: "none",
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
/** Shared visual wrapper; each view only supplies its projected viewport geometry. */
|
|
13
12
|
export function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }) {
|
|
14
13
|
if (!guide)
|
|
15
14
|
return null;
|
|
@@ -2,18 +2,11 @@ import { type ReactElement } from "react";
|
|
|
2
2
|
import type { Rect } from "./overlayGeometry.js";
|
|
3
3
|
import type { MeasurementSegment } from "./measurementGeometry.js";
|
|
4
4
|
interface MeasurementGuideOverlayProps {
|
|
5
|
-
/** The selected element in the overlay's screen coordinate system. */
|
|
6
5
|
selectedRect: Rect;
|
|
7
|
-
/** The viewport that alignment guides should span. */
|
|
8
6
|
guideViewport?: Rect;
|
|
9
|
-
/** Measurement geometry in the overlay's screen coordinate system. */
|
|
10
7
|
segments: MeasurementSegment[];
|
|
11
8
|
testId?: string;
|
|
12
9
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Renders measurement geometry over a viewport. The Inspect surface passes
|
|
15
|
-
* browser coordinates directly; Canvas projects iframe-local coordinates into
|
|
16
|
-
* the same screen coordinate system before rendering here.
|
|
17
|
-
*/
|
|
10
|
+
/** Geometry arrives in the overlay's screen coordinates; Canvas projects iframe-local coordinates before rendering here. */
|
|
18
11
|
export declare function MeasurementGuideOverlay({ selectedRect, guideViewport, segments, testId, }: MeasurementGuideOverlayProps): ReactElement;
|
|
19
12
|
export {};
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
|
-
/**
|
|
4
|
-
* Renders measurement geometry over a viewport. The Inspect surface passes
|
|
5
|
-
* browser coordinates directly; Canvas projects iframe-local coordinates into
|
|
6
|
-
* the same screen coordinate system before rendering here.
|
|
7
|
-
*/
|
|
3
|
+
/** Geometry arrives in the overlay's screen coordinates; Canvas projects iframe-local coordinates before rendering here. */
|
|
8
4
|
export function MeasurementGuideOverlay({ selectedRect, guideViewport, segments, testId = "measurement-overlay", }) {
|
|
9
5
|
const [windowViewport, setWindowViewport] = useState(() => ({
|
|
10
6
|
width: window.innerWidth,
|
|
@@ -1,23 +1,12 @@
|
|
|
1
1
|
export type ClickModifiers = Pick<MouseEvent, "ctrlKey" | "metaKey" | "shiftKey">;
|
|
2
|
-
/**
|
|
3
|
-
* Press and release gestures that application widgets use to open menus,
|
|
4
|
-
* dialogs, and popovers before any `click` fires. The Design tool keeps them
|
|
5
|
-
* from reaching the application.
|
|
6
|
-
*/
|
|
2
|
+
/** Press/release gestures widgets use to open menus and popovers before any `click` fires. */
|
|
7
3
|
export declare const APPLICATION_GESTURE_EVENTS: readonly ["pointerdown", "pointerup", "mousedown", "mouseup", "touchstart", "touchend", "auxclick", "contextmenu"];
|
|
8
4
|
/** Command/Ctrl-click selects the deepest tracked element unless Shift is held. */
|
|
9
5
|
export declare function isDeepSelectionClick(event: ClickModifiers): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Only input from a person becomes inspector selection. Script events such
|
|
12
|
-
* as `element.click()` keep reaching the application.
|
|
13
|
-
*/
|
|
6
|
+
/** Synthetic events like `element.click()` keep reaching the application. */
|
|
14
7
|
export declare function isUserClick(event: Pick<Event, "isTrusted">): boolean;
|
|
15
8
|
/** The active inline text editor needs native press events for caret placement. */
|
|
16
9
|
export declare function isInlineEditorTarget(target: EventTarget | null): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Keeps an application press gesture from reaching application listeners.
|
|
19
|
-
* Listeners on the document itself, including the inspector's own, still run.
|
|
20
|
-
*/
|
|
10
|
+
/** Document-level listeners, including the inspector's own, still run. */
|
|
21
11
|
export declare function blockApplicationGesture(event: Event): void;
|
|
22
|
-
/** Prevent an inspected application click from reaching the host application. */
|
|
23
12
|
export declare function blockApplicationClick(event: MouseEvent): void;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Press and release gestures that application widgets use to open menus,
|
|
3
|
-
* dialogs, and popovers before any `click` fires. The Design tool keeps them
|
|
4
|
-
* from reaching the application.
|
|
5
|
-
*/
|
|
1
|
+
/** Press/release gestures widgets use to open menus and popovers before any `click` fires. */
|
|
6
2
|
export const APPLICATION_GESTURE_EVENTS = [
|
|
7
3
|
"pointerdown",
|
|
8
4
|
"pointerup",
|
|
@@ -17,10 +13,7 @@ export const APPLICATION_GESTURE_EVENTS = [
|
|
|
17
13
|
export function isDeepSelectionClick(event) {
|
|
18
14
|
return (event.ctrlKey || event.metaKey) && !event.shiftKey;
|
|
19
15
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Only input from a person becomes inspector selection. Script events such
|
|
22
|
-
* as `element.click()` keep reaching the application.
|
|
23
|
-
*/
|
|
16
|
+
/** Synthetic events like `element.click()` keep reaching the application. */
|
|
24
17
|
export function isUserClick(event) {
|
|
25
18
|
return event.isTrusted;
|
|
26
19
|
}
|
|
@@ -30,14 +23,10 @@ export function isInlineEditorTarget(target) {
|
|
|
30
23
|
&& target instanceof Element
|
|
31
24
|
&& target.closest('[data-inline-editor="true"]') !== null;
|
|
32
25
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Keeps an application press gesture from reaching application listeners.
|
|
35
|
-
* Listeners on the document itself, including the inspector's own, still run.
|
|
36
|
-
*/
|
|
26
|
+
/** Document-level listeners, including the inspector's own, still run. */
|
|
37
27
|
export function blockApplicationGesture(event) {
|
|
38
28
|
event.stopPropagation();
|
|
39
29
|
}
|
|
40
|
-
/** Prevent an inspected application click from reaching the host application. */
|
|
41
30
|
export function blockApplicationClick(event) {
|
|
42
31
|
event.preventDefault();
|
|
43
32
|
event.stopPropagation();
|
|
@@ -14,9 +14,6 @@ export interface DropGuide {
|
|
|
14
14
|
line: DropGuideRect;
|
|
15
15
|
target: DropGuideRect;
|
|
16
16
|
}
|
|
17
|
-
/** Publishes one guide model from a DOM insertion location. */
|
|
18
17
|
export declare function showDropGuide(owner: DropGuideOwner, document: Document, drop: DropLocation): void;
|
|
19
|
-
/** Clears only the guide belonging to the caller, preserving another active view. */
|
|
20
18
|
export declare function clearDropGuide(owner: DropGuideOwner): void;
|
|
21
|
-
/** Subscribes a visual adapter to its guide without exposing shared mutable state. */
|
|
22
19
|
export declare function useDropGuide(owner: DropGuideOwner): DropGuide | null;
|
|
@@ -17,7 +17,6 @@ function sameRect(left, right) {
|
|
|
17
17
|
&& left.width === right.width
|
|
18
18
|
&& left.height === right.height;
|
|
19
19
|
}
|
|
20
|
-
/** Publishes one guide model from a DOM insertion location. */
|
|
21
20
|
export function showDropGuide(owner, document, drop) {
|
|
22
21
|
const target = drop.parent.getBoundingClientRect();
|
|
23
22
|
const nextGuide = {
|
|
@@ -35,14 +34,12 @@ export function showDropGuide(owner, document, drop) {
|
|
|
35
34
|
currentGuide = nextGuide;
|
|
36
35
|
notify();
|
|
37
36
|
}
|
|
38
|
-
/** Clears only the guide belonging to the caller, preserving another active view. */
|
|
39
37
|
export function clearDropGuide(owner) {
|
|
40
38
|
if (currentGuide?.owner !== owner)
|
|
41
39
|
return;
|
|
42
40
|
currentGuide = null;
|
|
43
41
|
notify();
|
|
44
42
|
}
|
|
45
|
-
/** Subscribes a visual adapter to its guide without exposing shared mutable state. */
|
|
46
43
|
export function useDropGuide(owner) {
|
|
47
44
|
return useSyncExternalStore(subscribe, () => snapshotFor(owner), () => null);
|
|
48
45
|
}
|
|
@@ -2,7 +2,6 @@ export interface FrameScheduler {
|
|
|
2
2
|
request(callback: FrameRequestCallback): number;
|
|
3
3
|
cancel(handle: number): void;
|
|
4
4
|
}
|
|
5
|
-
/** Retains only the newest value and performs at most one update per frame. */
|
|
6
5
|
export declare function createFrameThrottle<T>(run: (value: T) => void, scheduler?: FrameScheduler): {
|
|
7
6
|
schedule(value: T): void;
|
|
8
7
|
flush: () => void;
|
|
@@ -2,7 +2,6 @@ const browserScheduler = {
|
|
|
2
2
|
request: (callback) => requestAnimationFrame(callback),
|
|
3
3
|
cancel: (handle) => cancelAnimationFrame(handle),
|
|
4
4
|
};
|
|
5
|
-
/** Retains only the newest value and performs at most one update per frame. */
|
|
6
5
|
export function createFrameThrottle(run, scheduler = browserScheduler) {
|
|
7
6
|
let handle = 0;
|
|
8
7
|
let latest = null;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare function isInteractionStylesInstalled(doc?: Document): boolean;
|
|
2
|
-
/** Installs
|
|
2
|
+
/** Installs affordances via a stylesheet, leaving tracked nodes untouched. */
|
|
3
3
|
export declare function installInteractionStyles(doc?: Document): () => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DESIGN_SELECT_CURSOR, INTERACTION_CURSOR_PROPERTY } from "../ui/customCursors.js";
|
|
2
|
+
import { adoptStylesheet, allowsStyleElements, releaseAdoptedStylesheet } from "../runtime/ownedStylesheets.js";
|
|
2
3
|
const INTERACTION_STYLE_ID = "nudge-ui-interaction-styles";
|
|
3
4
|
const interactionStyleDocuments = new Set();
|
|
4
5
|
const INTERACTION_CSS = `
|
|
@@ -19,13 +20,7 @@ const INTERACTION_CSS = `
|
|
|
19
20
|
outline: 0 !important;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
|
-
/*
|
|
23
|
-
* An empty rendered-text projection has no glyph for the browser to hit
|
|
24
|
-
* test. The projection module inserts this inspector-owned slot beside the
|
|
25
|
-
* original empty Text node. It is intentionally borderless: the blue fill
|
|
26
|
-
* is the affordance, while the normal selected-element outline remains a
|
|
27
|
-
* separate overlay.
|
|
28
|
-
*/
|
|
23
|
+
/* Inspector-owned hit target for empty text projections, which have no glyph to hit test. */
|
|
29
24
|
[data-empty-text] {
|
|
30
25
|
display: inline-block !important;
|
|
31
26
|
width: 0.75em !important;
|
|
@@ -45,8 +40,10 @@ const INTERACTION_CSS = `
|
|
|
45
40
|
export function isInteractionStylesInstalled(doc = document) {
|
|
46
41
|
return interactionStyleDocuments.has(doc);
|
|
47
42
|
}
|
|
48
|
-
/** Installs
|
|
43
|
+
/** Installs affordances via a stylesheet, leaving tracked nodes untouched. */
|
|
49
44
|
export function installInteractionStyles(doc = document) {
|
|
45
|
+
if (!allowsStyleElements(doc))
|
|
46
|
+
return installAdoptedInteractionStyles(doc);
|
|
50
47
|
// SAFETY: getElementById returns an Element; the style element is created as HTMLStyleElement below when missing.
|
|
51
48
|
let style = doc.getElementById(INTERACTION_STYLE_ID);
|
|
52
49
|
let created = false;
|
|
@@ -70,3 +67,17 @@ export function installInteractionStyles(doc = document) {
|
|
|
70
67
|
style?.remove();
|
|
71
68
|
};
|
|
72
69
|
}
|
|
70
|
+
function installAdoptedInteractionStyles(doc) {
|
|
71
|
+
adoptStylesheet(doc, INTERACTION_STYLE_ID, INTERACTION_CSS);
|
|
72
|
+
interactionStyleDocuments.add(doc);
|
|
73
|
+
for (const slot of Array.from(doc.querySelectorAll("[data-empty-text]"))) {
|
|
74
|
+
slot.hidden = false;
|
|
75
|
+
}
|
|
76
|
+
return () => {
|
|
77
|
+
interactionStyleDocuments.delete(doc);
|
|
78
|
+
for (const slot of Array.from(doc.querySelectorAll("[data-empty-text]"))) {
|
|
79
|
+
slot.hidden = true;
|
|
80
|
+
}
|
|
81
|
+
releaseAdoptedStylesheet(doc, INTERACTION_STYLE_ID);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
@@ -22,11 +22,7 @@ function centerFromBounds(range) {
|
|
|
22
22
|
function hasLength(from, to) {
|
|
23
23
|
return Math.abs(to - from) > EPSILON;
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Finds the labelled ruler(s) for one axis. A positive gap gets a single
|
|
27
|
-
* nearest-edge ruler. On overlap, the measurement changes to the hovered
|
|
28
|
-
* element's far edge; containment has two meaningful inset measurements.
|
|
29
|
-
*/
|
|
25
|
+
/** On overlap the ruler switches to the hovered element's far edge; containment gets two inset measurements. */
|
|
30
26
|
function getAxisRulers(selected, hovered, selectedInner, hoveredInner) {
|
|
31
27
|
if (selected.max < hovered.min - EPSILON) {
|
|
32
28
|
return [{ selectedEdge: selected.max, hoveredEdge: hovered.min }];
|
|
@@ -56,8 +52,8 @@ function getAxisRulers(selected, hovered, selectedInner, hoveredInner) {
|
|
|
56
52
|
{ selectedEdge: selected.max, hoveredEdge: hoveredInner.max },
|
|
57
53
|
].filter((ruler) => hasLength(ruler.selectedEdge, ruler.hoveredEdge));
|
|
58
54
|
}
|
|
59
|
-
//
|
|
60
|
-
//
|
|
55
|
+
// Partially overlapping boxes measure from the selected outside edge to the
|
|
56
|
+
// hover's far edge rather than a zero or negative gap.
|
|
61
57
|
if (centerFromBounds(selected) >= centerFromBounds(hovered)) {
|
|
62
58
|
return [{ selectedEdge: selected.min, hoveredEdge: hovered.min }];
|
|
63
59
|
}
|
|
@@ -74,11 +70,7 @@ function createSegment(id, kind, axis, from, to, cross) {
|
|
|
74
70
|
...(kind === "ruler" ? { distance: Math.abs(to - from) } : {}),
|
|
75
71
|
};
|
|
76
72
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Solid rulers always run through the selected element's centerline. If the
|
|
79
|
-
* centerline does not meet the hovered edge, a perpendicular dotted extension
|
|
80
|
-
* starts at that hovered edge and joins the ruler.
|
|
81
|
-
*/
|
|
73
|
+
/** A perpendicular dotted extension joins the centerline ruler when it misses the hovered edge. */
|
|
82
74
|
function appendPrimaryRulers(segments, selected, hovered, axis, options) {
|
|
83
75
|
const crossAxis = axis === "horizontal" ? "vertical" : "horizontal";
|
|
84
76
|
const cross = center(selected, crossAxis);
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Watches the small set of browser events that can change a selected element's
|
|
3
|
-
* viewport rect without changing its selection identity. Structural gestures
|
|
4
|
-
* can move a selected element between containers, so the child-list observer
|
|
5
|
-
* follows the element's current parent after each mutation.
|
|
6
|
-
*/
|
|
1
|
+
/** Follows the element's current parent after mutations, since gestures can move it between containers. */
|
|
7
2
|
export declare function observeSelectedGeometry(element: HTMLElement, onChange: () => void): () => void;
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
import { getElementWindow } from "../runtime/domRealm.js";
|
|
2
|
-
/**
|
|
3
|
-
* Watches the small set of browser events that can change a selected element's
|
|
4
|
-
* viewport rect without changing its selection identity. Structural gestures
|
|
5
|
-
* can move a selected element between containers, so the child-list observer
|
|
6
|
-
* follows the element's current parent after each mutation.
|
|
7
|
-
*/
|
|
2
|
+
/** Follows the element's current parent after mutations, since gestures can move it between containers. */
|
|
8
3
|
export function observeSelectedGeometry(element, onChange) {
|
|
9
4
|
const view = getElementWindow(element);
|
|
10
|
-
// getElementWindow returns the cross-realm Window interface, while the
|
|
11
|
-
// project-wide browser global also carries the observer constructors.
|
|
12
5
|
// SAFETY: view is a same-realm Window, and the runtime realm exposes the observer constructors as project-wide globals.
|
|
13
6
|
const { ResizeObserver: ResizeObserverCtor, MutationObserver: MutationObserverCtor } = view;
|
|
14
7
|
let frame = null;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Rect } from "./overlayGeometry.js";
|
|
2
|
-
export type
|
|
3
|
-
export type SpacingKind = "padding" | "gap";
|
|
2
|
+
export type BoxSide = "top" | "right" | "bottom" | "left";
|
|
3
|
+
export type SpacingKind = "padding" | "margin" | "gap";
|
|
4
4
|
export type SpacingAxis = "horizontal" | "vertical";
|
|
5
5
|
export type SpacingDragAxis = "x" | "y";
|
|
6
|
-
export type SpacingProperty = `padding-${
|
|
6
|
+
export type SpacingProperty = `padding-${BoxSide}` | `margin-${BoxSide}` | "row-gap" | "column-gap";
|
|
7
7
|
export interface SpacingGuideData {
|
|
8
8
|
kind: SpacingKind;
|
|
9
9
|
property: SpacingProperty;
|
|
10
|
-
side:
|
|
10
|
+
side: BoxSide | null;
|
|
11
11
|
axis: SpacingAxis;
|
|
12
12
|
dragAxis: SpacingDragAxis;
|
|
13
13
|
value: number;
|
|
@@ -16,7 +16,7 @@ export interface SpacingGuideData {
|
|
|
16
16
|
guide: Rect;
|
|
17
17
|
affectedGuides: Rect[];
|
|
18
18
|
affectedAreas: Rect[];
|
|
19
|
-
/**
|
|
19
|
+
/** Pointer target centred on the visible guide handle. */
|
|
20
20
|
hit: Rect;
|
|
21
21
|
}
|
|
22
22
|
export interface SpacingAffordance extends SpacingGuideData {
|
|
@@ -25,26 +25,19 @@ export interface SpacingAffordance extends SpacingGuideData {
|
|
|
25
25
|
export interface SpacingDescriptor {
|
|
26
26
|
kind: SpacingKind;
|
|
27
27
|
property: SpacingProperty;
|
|
28
|
-
side:
|
|
28
|
+
side: BoxSide | null;
|
|
29
29
|
}
|
|
30
30
|
export declare const SPACING_GUIDE_HANDLE_LENGTH = 40;
|
|
31
|
-
/** Finds the spacing target under a document-local pointer location. */
|
|
32
31
|
export declare function getSpacingAffordanceAtPoint(doc: Document, x: number, y: number): SpacingAffordance | null;
|
|
33
|
-
/**
|
|
34
|
-
* pointer, even when the pointer is outside the drag handle. Hover previews use
|
|
35
|
-
* this; drags and the resize cursor still require the handle hit from
|
|
36
|
-
* getSpacingAffordanceAtPoint. */
|
|
32
|
+
/** Hover previews use this; drags and the resize cursor require the handle from getSpacingAffordanceAtPoint. */
|
|
37
33
|
export declare function getSpacingHoverAtPoint(doc: Document, x: number, y: number): SpacingAffordance | null;
|
|
38
|
-
|
|
34
|
+
export declare function getElementSpacingHandleAtPoint(doc: Document, element: HTMLElement, x: number, y: number): SpacingAffordance | null;
|
|
35
|
+
export declare function getElementSpacingAtPoint(doc: Document, element: HTMLElement, x: number, y: number): {
|
|
36
|
+
handle: SpacingAffordance | null;
|
|
37
|
+
area: SpacingAffordance | null;
|
|
38
|
+
};
|
|
39
39
|
export declare function getSpacingAffordanceForDescriptor(element: HTMLElement, descriptor: SpacingDescriptor): SpacingAffordance | null;
|
|
40
|
-
/**
|
|
41
|
-
* Calculates a direct-manipulation value, optionally stepping changes by 8px.
|
|
42
|
-
* While Shift is held the value snaps to a step anchor: the first displacement
|
|
43
|
-
* picks the nearest multiple of 8 from the authored value in the drag
|
|
44
|
-
* direction (ties resolve upward), and further movement adds whole 8px steps
|
|
45
|
-
* from that anchor, so the result is always a multiple of 8 once the drag
|
|
46
|
-
* moves. At the exact start point the authored value is preserved.
|
|
47
|
-
*/
|
|
40
|
+
/** With Shift, snaps to a multiple of 8 from the authored value in the drag direction. */
|
|
48
41
|
export declare function spacingValueForDrag(affordance: Pick<SpacingAffordance, "dragAxis" | "direction" | "value">, start: {
|
|
49
42
|
x: number;
|
|
50
43
|
y: number;
|
|
@@ -53,5 +46,5 @@ export declare function spacingValueForDrag(affordance: Pick<SpacingAffordance,
|
|
|
53
46
|
y: number;
|
|
54
47
|
}, shiftKey?: boolean): number;
|
|
55
48
|
export declare function spacingValueCss(value: number): string;
|
|
56
|
-
/**
|
|
49
|
+
/** The stable subset sent across the renderer boundary. */
|
|
57
50
|
export declare function toSpacingDescriptor(affordance: SpacingAffordance): SpacingDescriptor;
|