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,43 +1,36 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { InspectorPanel } from "./InspectorPanel.js";
|
|
3
|
+
import { InspectorSelection } from "./InspectorSelection.js";
|
|
4
|
+
import { describeElement } from "./elementName.js";
|
|
5
|
+
import { InspectorEditors } from "./InspectorEditors.js";
|
|
6
|
+
import { useEffect, useMemo, useState, useSyncExternalStore } from "react";
|
|
7
|
+
import { useInspectorOpen, setInspectorOpen } from "./openStore.js";
|
|
5
8
|
import { useSelectedElement, useSelectedElements, setSelectedElement, removeSelectedElement, } from "../selection/selectionStore.js";
|
|
6
9
|
import { findTokenRow } from "../styleEditors/rowLookup.js";
|
|
7
10
|
import { useBrowserCssInspection } from "../inspection/useBrowserCssInspection.js";
|
|
8
11
|
import { resolveSelectionFromElement } from "../selection/resolveSelection.js";
|
|
9
12
|
import { AgentStatusButton } from "./AgentStatusButton.js";
|
|
10
|
-
import { SpacingBox } from "../styleEditors/SpacingBox.js";
|
|
11
|
-
import { Typography } from "../styleEditors/Typography.js";
|
|
12
13
|
import { isTextRelevant } from "../styleEditors/textRelevance.js";
|
|
13
|
-
import { BackgroundEditor } from "../styleEditors/BackgroundEditor.js";
|
|
14
|
-
import { ColorPicker } from "../styleEditors/ColorPicker.js";
|
|
15
|
-
import { BorderEditor } from "../styleEditors/BorderEditor.js";
|
|
16
|
-
import { AppearanceSection } from "../styleEditors/AppearanceSection.js";
|
|
17
|
-
import { BoxShadowEditor } from "../styleEditors/BoxShadowEditor.js";
|
|
18
|
-
import { LayoutSection } from "../styleEditors/LayoutSection.js";
|
|
19
14
|
import { ChangesLog } from "./ChangesLog.js";
|
|
20
|
-
import { discardChangesForInstanceOverride, undo, redo } from "../
|
|
15
|
+
import { discardChangesForInstanceOverride, undo, redo } from "../drafts/store.js";
|
|
21
16
|
import { countSourceSiteMatches, getEditScope, relinkElement, sourceSiteSelector, unlinkElement } from "../selection/editScope.js";
|
|
22
17
|
import { canEditStyles } from "../tokens/editActions.js";
|
|
23
|
-
import { Button } from "../ui/Button.js";
|
|
24
18
|
import { CopyPromptButton } from "./CopyPromptButton.js";
|
|
25
19
|
import { PeekOriginalButton } from "./PeekOriginalButton.js";
|
|
20
|
+
import { NudgeLogoIcon } from "./NudgeLogoIcon.js";
|
|
26
21
|
import { StatusCallout } from "../ui/StatusCallout.js";
|
|
27
|
-
import { IconButton } from "../ui/IconButton.js";
|
|
28
22
|
import { UI_STYLES } from "../ui/styles.js";
|
|
29
23
|
import { getActiveStyleState, setActiveStyleState } from "./styleState.js";
|
|
24
|
+
import { useInteractionStatePreview } from "./interactionStatePreview.js";
|
|
30
25
|
import { getInspectorToggleShortcutLabel, isEditableEvent } from "./shortcuts.js";
|
|
31
|
-
import { formatInspectorLabel } from "../ui/labels.js";
|
|
32
|
-
import { FieldRow } from "../ui/FieldRow.js";
|
|
33
|
-
import { Select } from "../ui/Select.js";
|
|
34
26
|
import { clearSelectedFrameChanges } from "../canvas/sessionStore.js";
|
|
35
27
|
import { useFocusedCardId, useSelectedCardId, } from "../canvas/canvasStore.js";
|
|
36
28
|
import { getActiveCanvasFrame } from "../canvas/activeCanvasDocument.js";
|
|
29
|
+
import { canvasFrameHost } from "../canvas/canvasFrame.js";
|
|
30
|
+
import { getFrameRegistryVersion, subscribeFrameRegistry } from "../canvas/projection.js";
|
|
37
31
|
import { getElementWindow } from "../runtime/domRealm.js";
|
|
38
32
|
import { deleteElement, nudgeElement } from "../overlay/structuralGestures.js";
|
|
39
|
-
import {
|
|
40
|
-
import { ComponentPropsSection } from "../componentSemantics/ComponentPropsSection.js";
|
|
33
|
+
import { ComponentPropsSection, useComponentProps } from "../componentSemantics/ComponentPropsSection.js";
|
|
41
34
|
import { cancelInlineTextEdit, isInlineTextEditingActive, useInlineTextDiagnostic, } from "../inline-text/inlineTextEditor.js";
|
|
42
35
|
import { getInlineTextFeedback } from "../inline-text/inlineTextFeedback.js";
|
|
43
36
|
import { useNudgeUiRuntimeConfig } from "../runtime/useRuntimeConfig.js";
|
|
@@ -45,10 +38,10 @@ import { EmptyState } from "./EmptyState.js";
|
|
|
45
38
|
import { createStyleSelection } from "../selection/styleSelection.js";
|
|
46
39
|
import { intersectTokenEntries } from "../inspection/selectionProperty.js";
|
|
47
40
|
import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
48
|
-
import { isDemoRuntime } from "../runtime/runtimeConfig.js";
|
|
41
|
+
import { isDemoRuntime, isNudgeUiFeatureEnabled } from "../runtime/runtimeConfig.js";
|
|
49
42
|
import { SketchWorkspace } from "../sketch/SketchWorkspace.js";
|
|
50
43
|
import { useSketchInteractionActive } from "../sketch/interaction.js";
|
|
51
|
-
import {
|
|
44
|
+
import { InspectorStyle } from "../ui/InspectorStyle.js";
|
|
52
45
|
function findFirstTokenRow(rows, properties) {
|
|
53
46
|
for (const property of properties) {
|
|
54
47
|
const row = findTokenRow(rows, property);
|
|
@@ -62,7 +55,6 @@ function findFirstTokenRow(rows, properties) {
|
|
|
62
55
|
}
|
|
63
56
|
return null;
|
|
64
57
|
}
|
|
65
|
-
export { toggleInspector, setInspectorOpen };
|
|
66
58
|
function nodeMatchesSelector(node, selector) {
|
|
67
59
|
if (!selector || node.nodeType !== node.ELEMENT_NODE)
|
|
68
60
|
return false;
|
|
@@ -88,32 +80,34 @@ function scopeMutationAffectsSelection(records, selected) {
|
|
|
88
80
|
export function InspectorShell() {
|
|
89
81
|
const isOpen = useInspectorOpen();
|
|
90
82
|
const runtimeConfig = useNudgeUiRuntimeConfig();
|
|
91
|
-
const sketchEnabled = isNudgeUiDev()
|
|
83
|
+
const sketchEnabled = isNudgeUiDev()
|
|
84
|
+
&& !runtimeConfig.inspectionUnavailableReason
|
|
85
|
+
&& (!isDemoRuntime() || isNudgeUiFeatureEnabled(runtimeConfig.features, "sketch"));
|
|
92
86
|
const sketchActive = useSketchInteractionActive();
|
|
93
87
|
const selectedCardId = useSelectedCardId();
|
|
94
88
|
const focusedCardId = useFocusedCardId();
|
|
95
|
-
|
|
89
|
+
useSyncExternalStore(subscribeFrameRegistry, getFrameRegistryVersion);
|
|
90
|
+
const sketchHost = selectedCardId || focusedCardId ? canvasFrameHost(getActiveCanvasFrame()) : null;
|
|
96
91
|
const selected = useSelectedElement();
|
|
97
92
|
const selectedElements = useSelectedElements();
|
|
93
|
+
const componentProps = useComponentProps(selected);
|
|
98
94
|
const inlineTextFeedback = getInlineTextFeedback(useInlineTextDiagnostic());
|
|
99
95
|
const [settingsOpen, setSettingsOpen] = useState(false);
|
|
100
96
|
const [settingsSection, setSettingsSection] = useState("instructions");
|
|
101
97
|
const [scopeRevision, refreshScope] = useState(0);
|
|
102
98
|
const [styleState, setStyleState] = useState(getActiveStyleState());
|
|
99
|
+
useInteractionStatePreview(selectedElements.length === 1 ? selectedElements[0].domElement : null, styleState);
|
|
103
100
|
const cssInspection = useBrowserCssInspection(selectedElements, styleState);
|
|
104
101
|
const isMultiSelection = selectedElements.length > 1;
|
|
105
102
|
useEffect(() => {
|
|
106
|
-
// A new selection
|
|
107
|
-
// previous element. Base is the inspector's deliberate default.
|
|
103
|
+
// A new selection must not inherit an incidental state from the previous element; base is the deliberate default.
|
|
108
104
|
setActiveStyleState("base");
|
|
109
105
|
setStyleState("base");
|
|
110
106
|
}, [selected?.domElement, isMultiSelection]);
|
|
111
107
|
useEffect(() => {
|
|
112
108
|
if (!selected)
|
|
113
109
|
return;
|
|
114
|
-
//
|
|
115
|
-
// its own ownerDocument rather than the parent app's document, otherwise
|
|
116
|
-
// removal inside the iframe would never be noticed.
|
|
110
|
+
// In canvas mode the element can live in a card iframe, so observe its ownerDocument, not the parent app's.
|
|
117
111
|
const observers = [];
|
|
118
112
|
const roots = new Map();
|
|
119
113
|
for (const target of selectedElements) {
|
|
@@ -144,7 +138,7 @@ export function InspectorShell() {
|
|
|
144
138
|
return () => observers.forEach((observer) => observer.disconnect());
|
|
145
139
|
}, [selectedElements, scopeRevision]);
|
|
146
140
|
useEffect(() => {
|
|
147
|
-
if (sketchActive)
|
|
141
|
+
if (sketchActive || runtimeConfig.inspectionUnavailableReason)
|
|
148
142
|
return;
|
|
149
143
|
function onKeydown(event) {
|
|
150
144
|
if (isInlineTextEditingActive())
|
|
@@ -177,8 +171,7 @@ export function InspectorShell() {
|
|
|
177
171
|
setSelectedElement(null);
|
|
178
172
|
return;
|
|
179
173
|
}
|
|
180
|
-
// macOS labels the physical Backspace key as Delete
|
|
181
|
-
// report it as "Backspace". Support both without stealing text edits.
|
|
174
|
+
// macOS labels the physical Backspace key as Delete; browsers report "Backspace". Support both.
|
|
182
175
|
if (event.key === "Delete" || event.key === "Backspace") {
|
|
183
176
|
event.preventDefault();
|
|
184
177
|
if (!isMultiSelection && deleteElement(selected))
|
|
@@ -197,7 +190,7 @@ export function InspectorShell() {
|
|
|
197
190
|
}
|
|
198
191
|
window.addEventListener("keydown", onKeydown);
|
|
199
192
|
return () => window.removeEventListener("keydown", onKeydown);
|
|
200
|
-
}, [isMultiSelection, selected, sketchActive]);
|
|
193
|
+
}, [isMultiSelection, selected, sketchActive, runtimeConfig.inspectionUnavailableReason]);
|
|
201
194
|
const inspectionSnapshot = cssInspection.element;
|
|
202
195
|
const styleSelection = useMemo(() => createStyleSelection(selectedElements, cssInspection.elements, selected), [cssInspection.elements, selected, selectedElements]);
|
|
203
196
|
const selectionEditable = useMemo(() => styleSelection ? canEditStyles(styleSelection.target) : false, [scopeRevision, styleSelection]);
|
|
@@ -205,7 +198,6 @@ export function InspectorShell() {
|
|
|
205
198
|
const tokenRows = useMemo(() => styleSelection ? [...styleSelection.primaryRows] : [], [styleSelection]);
|
|
206
199
|
const availableInteractionStates = inspectionSnapshot?.availableStates ?? [];
|
|
207
200
|
const showText = selectedElements.length > 0 && selectedElements.every((element, index) => isTextRelevant(element.domElement, cssInspection.elements[index]?.properties ?? []));
|
|
208
|
-
const showInteractionState = !isMultiSelection && availableInteractionStates.length > 2;
|
|
209
201
|
const paintedBackgroundRow = findFirstTokenRow(tokenRows, ["background-color", "background"]);
|
|
210
202
|
const backgroundTokenRow = useMemo(() => {
|
|
211
203
|
if (!selected)
|
|
@@ -220,8 +212,6 @@ export function InspectorShell() {
|
|
|
220
212
|
const sourceSiteMatchCount = selected && editScope === "source-site"
|
|
221
213
|
? countSourceSiteMatches(selected.domElement, scopeRevision)
|
|
222
214
|
: 0;
|
|
223
|
-
const hasEditScopeCallout = !isMultiSelection
|
|
224
|
-
&& (editScope === "rendered-instance" || sourceSiteMatchCount > 1);
|
|
225
215
|
function refreshScopeState() {
|
|
226
216
|
refreshScope((revision) => revision + 1);
|
|
227
217
|
}
|
|
@@ -230,27 +220,23 @@ export function InspectorShell() {
|
|
|
230
220
|
setSettingsOpen(true);
|
|
231
221
|
}
|
|
232
222
|
function clearInspectorSession() {
|
|
233
|
-
|
|
223
|
+
// Sketch persistence failures are reported by the sketch store in the panel.
|
|
224
|
+
void clearSelectedFrameChanges().catch(() => undefined);
|
|
234
225
|
}
|
|
235
|
-
return (_jsxs(_Fragment, { children: [_jsx(
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
if (!nextState)
|
|
252
|
-
return;
|
|
253
|
-
setActiveStyleState(nextState);
|
|
254
|
-
setStyleState(nextState);
|
|
255
|
-
} }) })) : null] })) : null, !isMultiSelection ? _jsx(ComponentPropsSection, { selected: selected }) : null, selectionEditable ? (_jsx(AtRuleContextProvider, { rows: tokenRows, children: _jsxs("div", { className: "style-editors", "data-test": "style-editors", children: [_jsx(LayoutSection, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `layout-${styleState}`), _jsx(SpacingBox, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `spacing-${styleState}`), _jsx(AppearanceSection, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `appearance-${styleState}`), showText ? _jsxs(_Fragment, { children: [_jsx(Typography, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `type-${styleState}`), _jsx(ColorPicker, { element: selected, selection: styleSelection, property: "color", entries: tokenEntries, tokenRow: findTokenRow(tokenRows, "color") }, `color-${styleState}`)] }) : null, _jsx(BackgroundEditor, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRow: backgroundTokenRow }, `background-${styleState}`), _jsx(BorderEditor, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `border-${styleState}`), _jsx(BoxShadowEditor, { element: selected, selection: styleSelection, entries: tokenEntries, tokenRows: tokenRows }, `box-shadow-${styleState}`)] }) })) : (_jsx(StatusCallout, { tone: "neutral", "data-test": "multi-selection-uneditable", children: "These repeated items are indistinguishable, so Nudge UI cannot safely target only part of the group. Select every repeated item to edit them together." }))] })) : (_jsx(EmptyState, {})), _jsx(ChangesLog, { onClearSession: clearInspectorSession })] })] }), sketchEnabled ? (_jsx(SketchWorkspace, { hostElement: sketchHost, projectId: runtimeConfig.projectId })) : null, !isOpen ? (_jsx("div", { className: "panel__restore", children: _jsx(Tooltip, { children: _jsx(IconButton, { variant: "quiet", label: "Show inspector", className: "panel__restore-button", "data-test": "show-inspector", onClick: () => setInspectorOpen(true), children: _jsx(IconLayoutSidebarRight, { size: "var(--icon-size-small)", stroke: "var(--icon-stroke-width)", "aria-hidden": "true" }) }) }) })) : null] }));
|
|
226
|
+
return (_jsxs(_Fragment, { children: [_jsx(InspectorStyle, { testId: "inspector-styles", css: UI_STYLES }), _jsxs(InspectorPanel, { isOpen: isOpen, collapseDisabled: sketchActive, toggleShortcut: getInspectorToggleShortcutLabel(), onOpenChange: (open) => {
|
|
227
|
+
if (!open)
|
|
228
|
+
cancelInlineTextEdit();
|
|
229
|
+
setInspectorOpen(open);
|
|
230
|
+
}, headerActions: _jsxs(_Fragment, { children: [_jsx(PeekOriginalButton, {}), _jsx(AgentStatusButton, { onOpenSettings: openSettings })] }), prompt: _jsx(CopyPromptButton, { settingsOpen: settingsOpen, settingsSection: settingsSection, onOpenSettings: openSettings, onSettingsOpenChange: setSettingsOpen, onClearChanges: clearInspectorSession }), children: [inlineTextFeedback ? (_jsx(StatusCallout, { tone: "danger", className: "inline-text-diagnostic", "data-test": "inline-text-diagnostic", role: "status", "aria-live": "polite", "aria-atomic": "true", children: _jsx("span", { children: inlineTextFeedback.message }) })) : null, runtimeConfig.inspectionUnavailableReason ? (_jsxs(StatusCallout, { tone: "danger", "data-test": "page-inspection-error", role: "status", children: ["Can\u2019t load Nudge on this page due to ", runtimeConfig.inspectionUnavailableReason, "."] })) : selected ? (_jsxs(_Fragment, { children: [_jsx(InspectorSelection, { identity: selected, count: selectedElements.length, isComponent: !isMultiSelection && componentProps !== null, name: isMultiSelection ? { title: `${selectedElements.length} elements` } : componentProps ? { title: componentProps.target.meta.componentName } : describeElement(selected.domElement), editScope: editScope, sourceSiteMatchCount: sourceSiteMatchCount, styleState: styleState, availableInteractionStates: availableInteractionStates, onStyleStateChange: (state) => {
|
|
231
|
+
setActiveStyleState(state);
|
|
232
|
+
setStyleState(state);
|
|
233
|
+
}, onRelink: () => {
|
|
234
|
+
const overrideId = relinkElement(selected.domElement);
|
|
235
|
+
if (overrideId)
|
|
236
|
+
discardChangesForInstanceOverride(overrideId);
|
|
237
|
+
refreshScopeState();
|
|
238
|
+
}, onUnlink: () => {
|
|
239
|
+
unlinkElement(selected.domElement);
|
|
240
|
+
refreshScopeState();
|
|
241
|
+
}, children: !isMultiSelection ? _jsx(ComponentPropsSection, { selected: selected }) : null }), selectionEditable ? (_jsx(InspectorEditors, { selected: selected, styleSelection: styleSelection, tokenEntries: tokenEntries, tokenRows: tokenRows, styleState: styleState, showText: showText, backgroundTokenRow: backgroundTokenRow })) : (_jsx(StatusCallout, { tone: "neutral", "data-test": "multi-selection-uneditable", children: "These repeated items are indistinguishable, so Nudge UI cannot safely target only part of the group. Select every repeated item to edit them together." }))] })) : (_jsx(EmptyState, {})), _jsx(ChangesLog, { onClearSession: clearInspectorSession })] }), sketchEnabled ? (_jsx(SketchWorkspace, { hostElement: sketchHost, projectId: runtimeConfig.projectId })) : null] }));
|
|
256
242
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** Same artwork as the extension and landing favicons. */
|
|
3
|
+
export function NudgeLogoIcon({ size = "var(--icon-size-small)" }) {
|
|
4
|
+
return (_jsxs("svg", { viewBox: "5 4 35 35", width: size, height: size, fill: "currentColor", "aria-hidden": "true", children: [_jsx("path", { d: "M14.7742 6C27.6015 6 38 16.569 38 29.6066V38H30.7742V29.6066C30.7742 20.6251 23.6107 13.3443 14.7742 13.3443H13.2258V38H6V6H14.7742Z" }), _jsx("path", { d: "M39 15.6629C37 11.5 33 7 28.4919 5H39V15.6629Z" })] }));
|
|
5
|
+
}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Press-and-hold button that previews the page without inspector changes
|
|
4
|
-
* (NUD-30). Releasing restores the edited preview; canonical intent is never
|
|
5
|
-
* cleared, so nothing is lost while held.
|
|
6
|
-
*/
|
|
7
2
|
export declare function PeekOriginalButton(): ReactElement;
|
|
@@ -3,19 +3,14 @@ import { useEffect, useSyncExternalStore } from "react";
|
|
|
3
3
|
import { IconButton } from "../ui/IconButton.js";
|
|
4
4
|
import { Tooltip } from "../ui/Tooltip.js";
|
|
5
5
|
import { PeekOriginalIcon } from "./PeekOriginalIcon.js";
|
|
6
|
-
import {
|
|
6
|
+
import { getActiveDraftChanges, subscribeActiveDraftChanges } from "../drafts/store.js";
|
|
7
7
|
import { setOriginalPreviewActive, useOriginalPreviewActive, } from "./originalPreview.js";
|
|
8
8
|
function useDraftChangeCount() {
|
|
9
|
-
return useSyncExternalStore(
|
|
10
|
-
const snapshot =
|
|
9
|
+
return useSyncExternalStore(subscribeActiveDraftChanges, () => {
|
|
10
|
+
const snapshot = getActiveDraftChanges();
|
|
11
11
|
return snapshot.changes.length + snapshot.structuralChanges.length;
|
|
12
12
|
}, () => 0);
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Press-and-hold button that previews the page without inspector changes
|
|
16
|
-
* (NUD-30). Releasing restores the edited preview; canonical intent is never
|
|
17
|
-
* cleared, so nothing is lost while held.
|
|
18
|
-
*/
|
|
19
14
|
export function PeekOriginalButton() {
|
|
20
15
|
const active = useOriginalPreviewActive();
|
|
21
16
|
const changeCount = useDraftChangeCount();
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Before/after comparison glyph for the hold-to-view-original button.
|
|
4
|
-
* Custom artwork rendered with the shared inspector icon tokens so it
|
|
5
|
-
* matches the neighboring header icons.
|
|
6
|
-
*/
|
|
7
2
|
export declare function PeekOriginalIcon(): ReactElement;
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Before/after comparison glyph for the hold-to-view-original button.
|
|
4
|
-
* Custom artwork rendered with the shared inspector icon tokens so it
|
|
5
|
-
* matches the neighboring header icons.
|
|
6
|
-
*/
|
|
7
2
|
export function PeekOriginalIcon() {
|
|
8
3
|
return (_jsxs("svg", { viewBox: "0 0 24 24", width: "var(--icon-size-small)", height: "var(--icon-size-small)", "aria-hidden": "true", children: [_jsx("path", { d: "M8.66667 5L6 5C4.34315 5 3 6.34315 3 8L3 16C3 17.6569 4.34315 19 6 19L12 19", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "var(--icon-stroke-width)" }), _jsx("path", { d: "M13 5L18 5C19.6569 5 21 6.34315 21 8L21 16C21 17.6569 19.6569 19 18 19L16.3333 19", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "var(--icon-stroke-width)" }), _jsx("line", { x1: "13.7721", y1: "22.2984", x2: "8.29835", y2: "2.22788", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeWidth: "var(--icon-stroke-width)" })] }));
|
|
9
4
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { type ButtonProps } from "../ui/Button.js";
|
|
3
|
+
export interface PromptActionButtonProps extends ButtonProps {
|
|
4
|
+
readonly copied?: boolean;
|
|
5
|
+
readonly agentState?: string;
|
|
6
|
+
readonly busy?: boolean;
|
|
7
|
+
readonly icon?: ReactNode;
|
|
8
|
+
readonly label?: ReactNode;
|
|
9
|
+
readonly badgeCount?: number;
|
|
10
|
+
readonly hasMenu?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/** Presents a prompt action without owning clipboard or agent connections. */
|
|
13
|
+
export declare const PromptActionButton: import("react").ForwardRefExoticComponent<PromptActionButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
14
|
+
export interface PromptActionRowProps {
|
|
15
|
+
readonly children: ReactNode;
|
|
16
|
+
/** Clears the pending changes; the clear changes action stays beside the prompt action and disables without changes. */
|
|
17
|
+
readonly onClear?: () => void;
|
|
18
|
+
readonly hasChanges?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** A prompt action with a matching clear changes action beside it, disabled until there are changes. */
|
|
21
|
+
export declare function PromptActionRow({ children, onClear, hasChanges }: PromptActionRowProps): ReactElement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import { IconChevronDown, IconCopy, IconRestore } from "@tabler/icons-react";
|
|
4
|
+
import { Button } from "../ui/Button.js";
|
|
5
|
+
import { IconButton } from "../ui/IconButton.js";
|
|
6
|
+
import { Tooltip } from "../ui/Tooltip.js";
|
|
7
|
+
/** Presents a prompt action without owning clipboard or agent connections. */
|
|
8
|
+
export const PromptActionButton = forwardRef(function PromptActionButton({ copied = false, agentState = "disconnected", busy = false, icon = _jsx(IconCopy, { size: "var(--icon-size-small)", stroke: "var(--icon-stroke-width)", "aria-hidden": "true" }), label = "Copy prompt", badgeCount = 0, hasMenu = false, ...props }, ref) {
|
|
9
|
+
return _jsxs(Button, { ref: ref, variant: "primary", className: "copy-prompt__main", "data-test": "copy-prompt", type: "button", "data-copied": copied ? "true" : "false", "data-agent-state": agentState, "aria-busy": busy ? "true" : undefined, ...props, children: [icon, label, badgeCount > 0 ? _jsx("span", { className: "copy-prompt__change-count", "data-test": "copy-prompt-change-count", children: badgeCount }) : null, hasMenu ? _jsx(IconChevronDown, { size: "var(--icon-size-small)", stroke: "var(--icon-stroke-width)", "aria-hidden": "true" }) : null] });
|
|
10
|
+
});
|
|
11
|
+
/** A prompt action with a matching clear changes action beside it, disabled until there are changes. */
|
|
12
|
+
export function PromptActionRow({ children, onClear, hasChanges = false }) {
|
|
13
|
+
return (_jsxs("div", { className: "copy-prompt__row", children: [children, onClear ? (_jsx(Tooltip, { children: _jsx(IconButton, { className: "copy-prompt__clear-changes", variant: "secondary", label: "Clear changes", "data-test": "copy-prompt-clear", disabled: !hasChanges, onClick: onClear, children: _jsx(IconRestore, { size: "var(--icon-size-small)", "aria-hidden": "true" }) }) })) : null] }));
|
|
14
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const TAG_LABELS = new Map([
|
|
2
|
+
["a", "Link"],
|
|
3
|
+
["article", "Article"],
|
|
4
|
+
["aside", "Aside"],
|
|
5
|
+
["button", "Button"],
|
|
6
|
+
["footer", "Footer"],
|
|
7
|
+
["form", "Form"],
|
|
8
|
+
["header", "Header"],
|
|
9
|
+
["img", "Image"],
|
|
10
|
+
["input", "Input"],
|
|
11
|
+
["label", "Label"],
|
|
12
|
+
["li", "List item"],
|
|
13
|
+
["main", "Main"],
|
|
14
|
+
["nav", "Navigation"],
|
|
15
|
+
["ol", "List"],
|
|
16
|
+
["p", "Paragraph"],
|
|
17
|
+
["section", "Section"],
|
|
18
|
+
["select", "Select"],
|
|
19
|
+
["svg", "Icon"],
|
|
20
|
+
["textarea", "Text area"],
|
|
21
|
+
["ul", "List"],
|
|
22
|
+
]);
|
|
23
|
+
/** The title is derived from the tag, with an accessible name when the author gave one. */
|
|
24
|
+
export function describeElement(element) {
|
|
25
|
+
const tag = element.localName.toLowerCase();
|
|
26
|
+
const base = /^h[1-6]$/.test(tag) ? `Heading ${tag.slice(1)}` : TAG_LABELS.get(tag) ?? (tag.charAt(0).toUpperCase() + tag.slice(1));
|
|
27
|
+
const accessible = element.getAttribute("aria-label")?.trim();
|
|
28
|
+
return { title: accessible ? `${base} · ${accessible}` : base };
|
|
29
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type InteractionState } from "./styleState.js";
|
|
2
|
+
/** Matches native interaction states and the Inspector's temporary CSS state. */
|
|
3
|
+
export declare function selectorForInteractionStatePreview(selector: string): string;
|
|
4
|
+
/** Previews interaction states without dispatching events or changing application state. */
|
|
5
|
+
export declare function startInteractionStatePreview(element: HTMLElement, state: InteractionState): () => void;
|
|
6
|
+
export declare function useInteractionStatePreview(element: HTMLElement | null, state: InteractionState): void;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { useLayoutEffect } from "react";
|
|
2
|
+
import { collectRules, invalidateStyleResolutionCache, subscribeDocumentRevision } from "../tokens/resolution/cssomCollector.js";
|
|
3
|
+
import { selectorPseudoClasses, splitSelectorAtTopLevel } from "../tokens/resolution/selectorSemantics.js";
|
|
4
|
+
import { adoptStylesheet, allowsStyleElements, releaseAdoptedStylesheet, STATE_PREVIEW_SHEET_ID } from "../runtime/ownedStylesheets.js";
|
|
5
|
+
import { INTERACTION_STATES } from "./styleState.js";
|
|
6
|
+
const MARKER = "data-nudge-ui-state-preview";
|
|
7
|
+
const interactionStates = new Set(INTERACTION_STATES);
|
|
8
|
+
/** Matches native interaction states and the Inspector's temporary CSS state. */
|
|
9
|
+
export function selectorForInteractionStatePreview(selector) {
|
|
10
|
+
let transformed = selector;
|
|
11
|
+
for (const pseudo of [...selectorPseudoClasses(selector)].reverse()) {
|
|
12
|
+
if (!interactionStates.has(pseudo.name))
|
|
13
|
+
continue;
|
|
14
|
+
// :where() keeps the replacement at the original pseudo-class specificity.
|
|
15
|
+
const replacement = `:is(:${pseudo.name}:where(:not([${MARKER}])), [${MARKER}="${pseudo.name}"])`;
|
|
16
|
+
transformed = transformed.slice(0, pseudo.start) + replacement + transformed.slice(pseudo.end);
|
|
17
|
+
}
|
|
18
|
+
return transformed;
|
|
19
|
+
}
|
|
20
|
+
function previewSelector(selector) {
|
|
21
|
+
const transformed = selectorForInteractionStatePreview(selector);
|
|
22
|
+
// Same added specificity on every branch preserves their relative cascade while overriding native pointer states.
|
|
23
|
+
const scope = `:where([${MARKER}], [${MARKER}] *):is(#${STATE_PREVIEW_SHEET_ID}, *)`;
|
|
24
|
+
// A scope must precede a pseudo-element, which cannot take an attribute.
|
|
25
|
+
let parentheses = 0;
|
|
26
|
+
let brackets = 0;
|
|
27
|
+
let quote = null;
|
|
28
|
+
for (let index = 0; index < transformed.length; index++) {
|
|
29
|
+
const character = transformed[index];
|
|
30
|
+
if (character === "\\") {
|
|
31
|
+
index++;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (quote) {
|
|
35
|
+
if (character === quote)
|
|
36
|
+
quote = null;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (character === '"' || character === "'") {
|
|
40
|
+
quote = character;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (character === "[")
|
|
44
|
+
brackets++;
|
|
45
|
+
else if (character === "]")
|
|
46
|
+
brackets--;
|
|
47
|
+
else if (brackets === 0) {
|
|
48
|
+
if (character === "(")
|
|
49
|
+
parentheses++;
|
|
50
|
+
else if (character === ")")
|
|
51
|
+
parentheses--;
|
|
52
|
+
else if (parentheses === 0 && /^::|^:(?:before|after|first-line|first-letter)\b/.test(transformed.slice(index))) {
|
|
53
|
+
return transformed.slice(0, index) + scope + transformed.slice(index);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return transformed + scope;
|
|
58
|
+
}
|
|
59
|
+
/** Previews interaction states without dispatching events or changing application state. */
|
|
60
|
+
export function startInteractionStatePreview(element, state) {
|
|
61
|
+
if (state === "base")
|
|
62
|
+
return () => undefined;
|
|
63
|
+
const doc = element.ownerDocument;
|
|
64
|
+
const previousMarker = element.getAttribute(MARKER);
|
|
65
|
+
element.setAttribute(MARKER, state);
|
|
66
|
+
const style = allowsStyleElements(doc) ? doc.createElement("style") : null;
|
|
67
|
+
if (style) {
|
|
68
|
+
style.id = STATE_PREVIEW_SHEET_ID;
|
|
69
|
+
style.setAttribute("data-nudge-ui", "state-preview");
|
|
70
|
+
(doc.head ?? doc.documentElement).appendChild(style);
|
|
71
|
+
}
|
|
72
|
+
const refresh = () => {
|
|
73
|
+
const css = collectRules(doc).rules.map((rule) => {
|
|
74
|
+
const selector = splitSelectorAtTopLevel(rule.selectorText, ",")
|
|
75
|
+
.map((branch) => previewSelector(branch.trim())).join(", ");
|
|
76
|
+
const declarations = rule.declarations.map(({ property, value, important }) => `${property}: ${value}${important ? " !important" : ""};`).join(" ");
|
|
77
|
+
let text = `${selector} { ${declarations} }`;
|
|
78
|
+
for (const wrapper of [...(rule.atRules ?? [])].reverse()) {
|
|
79
|
+
text = `@${wrapper.kind} ${wrapper.params} { ${text} }`;
|
|
80
|
+
}
|
|
81
|
+
if (rule.layer)
|
|
82
|
+
text = `@layer ${rule.layer} { ${text} }`;
|
|
83
|
+
return text;
|
|
84
|
+
}).join("\n");
|
|
85
|
+
if (style)
|
|
86
|
+
style.textContent = css;
|
|
87
|
+
else
|
|
88
|
+
adoptStylesheet(doc, STATE_PREVIEW_SHEET_ID, css);
|
|
89
|
+
};
|
|
90
|
+
refresh();
|
|
91
|
+
// Inspection excludes the preview sheet, but its painted values have changed.
|
|
92
|
+
invalidateStyleResolutionCache(doc);
|
|
93
|
+
const unsubscribe = subscribeDocumentRevision(doc, refresh);
|
|
94
|
+
return () => {
|
|
95
|
+
unsubscribe();
|
|
96
|
+
style?.remove();
|
|
97
|
+
releaseAdoptedStylesheet(doc, STATE_PREVIEW_SHEET_ID);
|
|
98
|
+
if (previousMarker === null)
|
|
99
|
+
element.removeAttribute(MARKER);
|
|
100
|
+
else
|
|
101
|
+
element.setAttribute(MARKER, previousMarker);
|
|
102
|
+
invalidateStyleResolutionCache(doc);
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function useInteractionStatePreview(element, state) {
|
|
106
|
+
useLayoutEffect(() => element ? startInteractionStatePreview(element, state) : undefined, [element, state]);
|
|
107
|
+
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export declare function isOriginalPreviewActive(): boolean;
|
|
2
2
|
export declare function subscribeOriginalPreview(listener: () => void): () => void;
|
|
3
3
|
export declare function useOriginalPreviewActive(): boolean;
|
|
4
|
-
/**
|
|
5
|
-
* Hold-to-view-original (NUD-30). While active the host document shows the
|
|
6
|
-
* page without any inspector changes. Canonical intent stays in the workspace
|
|
7
|
-
* store, so releasing restores the edited preview without loss.
|
|
8
|
-
*/
|
|
4
|
+
/** While active the document shows the page without inspector changes; canonical intent is never cleared. */
|
|
9
5
|
export declare function setOriginalPreviewActive(next: boolean): void;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { useSyncExternalStore } from "react";
|
|
2
|
-
import { draftChangeStore } from "../changes/draftChanges.js";
|
|
3
|
-
import { applyHostDraftProjection, compileDraftProjection, } from "../projection/draftProjection.js";
|
|
4
|
-
import { isEditorShellDocument } from "../runtime/editorShell.js";
|
|
5
2
|
let previewingOriginal = false;
|
|
6
3
|
const listeners = new Set();
|
|
7
4
|
export function isOriginalPreviewActive() {
|
|
@@ -16,7 +13,11 @@ export function subscribeOriginalPreview(listener) {
|
|
|
16
13
|
export function useOriginalPreviewActive() {
|
|
17
14
|
return useSyncExternalStore(subscribeOriginalPreview, () => previewingOriginal, () => false);
|
|
18
15
|
}
|
|
19
|
-
|
|
16
|
+
/** While active the document shows the page without inspector changes; canonical intent is never cleared. */
|
|
17
|
+
export function setOriginalPreviewActive(next) {
|
|
18
|
+
if (next === previewingOriginal)
|
|
19
|
+
return;
|
|
20
|
+
previewingOriginal = next;
|
|
20
21
|
for (const listener of listeners) {
|
|
21
22
|
try {
|
|
22
23
|
listener();
|
|
@@ -26,36 +27,3 @@ function notifyOriginalPreviewListeners() {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
function applyEmptyHostProjection() {
|
|
30
|
-
if (isEditorShellDocument())
|
|
31
|
-
return;
|
|
32
|
-
const { revision } = draftChangeStore.getSnapshot();
|
|
33
|
-
applyHostDraftProjection({
|
|
34
|
-
sourceRevision: revision,
|
|
35
|
-
managedStyles: { rules: [], css: "" },
|
|
36
|
-
instanceOverrides: [],
|
|
37
|
-
structuralChanges: [],
|
|
38
|
-
textContentChanges: [],
|
|
39
|
-
componentOverrides: [],
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
function applyCanonicalHostProjection() {
|
|
43
|
-
if (isEditorShellDocument())
|
|
44
|
-
return;
|
|
45
|
-
applyHostDraftProjection(compileDraftProjection(draftChangeStore.getSnapshot()));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Hold-to-view-original (NUD-30). While active the host document shows the
|
|
49
|
-
* page without any inspector changes. Canonical intent stays in the workspace
|
|
50
|
-
* store, so releasing restores the edited preview without loss.
|
|
51
|
-
*/
|
|
52
|
-
export function setOriginalPreviewActive(next) {
|
|
53
|
-
if (next === previewingOriginal)
|
|
54
|
-
return;
|
|
55
|
-
previewingOriginal = next;
|
|
56
|
-
if (previewingOriginal)
|
|
57
|
-
applyEmptyHostProjection();
|
|
58
|
-
else
|
|
59
|
-
applyCanonicalHostProjection();
|
|
60
|
-
notifyOriginalPreviewListeners();
|
|
61
|
-
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* the browser only when CSSOM has no declaration to attribute. */
|
|
1
|
+
/** Reads from the authored state; the browser is only the fallback when CSSOM has no declaration to attribute. */
|
|
3
2
|
export declare function getStateStyleValue(el: HTMLElement, property: string, fallback?: string): string;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { getActiveStyleState } from "./styleState.js";
|
|
2
|
-
import {
|
|
2
|
+
import { readInspectionSnapshot } from "../inspection/inspectionSnapshot.js";
|
|
3
3
|
import { getElementComputedStyle } from "../runtime/domRealm.js";
|
|
4
|
-
/**
|
|
5
|
-
* the browser only when CSSOM has no declaration to attribute. */
|
|
4
|
+
/** Reads from the authored state; the browser is only the fallback when CSSOM has no declaration to attribute. */
|
|
6
5
|
export function getStateStyleValue(el, property, fallback = "") {
|
|
7
6
|
try {
|
|
8
7
|
const state = getActiveStyleState();
|
|
9
|
-
//
|
|
10
|
-
// Authored resolution is needed when the live element is transiently
|
|
11
|
-
// interacted with, or when the user explicitly selected another state.
|
|
8
|
+
// Base inspection uses the browser's computed value unless the element is transiently hovered or focused.
|
|
12
9
|
const hasLiveInteraction = [":hover", ":active", ":focus", ":focus-visible"].some((selector) => {
|
|
13
10
|
try {
|
|
14
11
|
return el.matches(selector);
|
|
@@ -20,8 +17,7 @@ export function getStateStyleValue(el, property, fallback = "") {
|
|
|
20
17
|
if (state === "base" && !hasLiveInteraction) {
|
|
21
18
|
return getElementComputedStyle(el).getPropertyValue(property).trim() || fallback;
|
|
22
19
|
}
|
|
23
|
-
const rows =
|
|
24
|
-
.inspect(el, { state }).properties;
|
|
20
|
+
const rows = readInspectionSnapshot(el, state)?.properties ?? [];
|
|
25
21
|
const row = rows.find((candidate) => candidate.property === property)
|
|
26
22
|
?? (property === "background-color" ? rows.find((candidate) => candidate.property === "background") : undefined);
|
|
27
23
|
if (row?.resolvedValue)
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare const INTERACTION_STATES: readonly ["hover", "active", "focus", "focus-visible", "disabled"];
|
|
2
2
|
export type InteractionState = "base" | (typeof INTERACTION_STATES)[number];
|
|
3
|
-
/**
|
|
4
|
-
* and history have the same context as the panel that initiated an edit. */
|
|
3
|
+
/** Kept outside React so edit actions and history share the panel's context. */
|
|
5
4
|
export declare function getActiveStyleState(): InteractionState;
|
|
6
5
|
export declare function setActiveStyleState(state: InteractionState): void;
|
|
7
6
|
export declare function selectorForInteractionState(selector: string, state: InteractionState): string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export const INTERACTION_STATES = ["hover", "active", "focus", "focus-visible", "disabled"];
|
|
2
2
|
let activeState = "base";
|
|
3
|
-
/**
|
|
4
|
-
* and history have the same context as the panel that initiated an edit. */
|
|
3
|
+
/** Kept outside React so edit actions and history share the panel's context. */
|
|
5
4
|
export function getActiveStyleState() {
|
|
6
5
|
return activeState;
|
|
7
6
|
}
|