nudge-ui 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +0 -1
- package/dist/client.mjs +238 -122
- 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 +13 -64
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +0 -2
- 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 +1 -6
- package/dist/inspector/agent/activity.d.ts +1 -1
- package/dist/inspector/agent/activity.js +1 -1
- package/dist/inspector/agent/client.d.ts +2 -26
- package/dist/inspector/agent/client.js +17 -64
- package/dist/inspector/agent/connectionStatus.d.ts +0 -1
- package/dist/inspector/agent/connectionStatus.js +0 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +21 -39
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +2 -19
- package/dist/inspector/agent/verification.js +7 -43
- package/dist/inspector/boot.d.ts +3 -1
- package/dist/inspector/boot.js +12 -20
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
- package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
- package/dist/inspector/canvas/CanvasCard.js +7 -14
- package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
- package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
- package/dist/inspector/canvas/PageCard.d.ts +0 -1
- package/dist/inspector/canvas/PageCard.js +0 -1
- package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
- package/dist/inspector/canvas/SketchToolOptions.js +0 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
- 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/canvasFrame.d.ts +2 -6
- package/dist/inspector/canvas/canvasFrame.js +1 -2
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +4 -12
- package/dist/inspector/canvas/canvasStore.js +12 -26
- package/dist/inspector/canvas/frameConnection.d.ts +1 -7
- 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 +5 -40
- package/dist/inspector/canvas/frameProtocol.js +1 -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 +1 -6
- package/dist/inspector/canvas/pageSurface.js +1 -6
- package/dist/inspector/canvas/projection.d.ts +4 -25
- package/dist/inspector/canvas/projection.js +22 -72
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +6 -14
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +29 -27
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
- package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
- package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +9 -2
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +1 -7
- package/dist/inspector/canvas/sessionStore.js +21 -34
- package/dist/inspector/canvas/staleChangeDetector.js +1 -4
- 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.js +2 -1
- package/dist/inspector/changes/draftPreview.d.ts +1 -6
- package/dist/inspector/changes/draftPreview.js +15 -30
- package/dist/inspector/changes/editModel.d.ts +3 -13
- package/dist/inspector/changes/editModel.js +1 -2
- package/dist/inspector/changes/managedStyleProjection.js +4 -14
- 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 +4 -20
- 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 +3 -10
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +48 -7
- 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 +1 -1
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +18 -10
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- 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 +1 -9
- package/dist/inspector/componentSemantics/textBinding.js +16 -42
- 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 +7 -21
- package/dist/inspector/drafts/draftStore.js +15 -5
- package/dist/inspector/drafts/model.d.ts +7 -15
- package/dist/inspector/drafts/model.js +0 -2
- package/dist/inspector/drafts/store.d.ts +1 -8
- package/dist/inspector/drafts/store.js +3 -10
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- 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 +2 -8
- package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
- package/dist/inspector/inspection/bridge.d.ts +2 -6
- package/dist/inspector/inspection/bridge.js +4 -12
- package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
- package/dist/inspector/inspection/browserCssInspection.js +4 -8
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- 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 +5 -21
- package/dist/inspector/iterations/capture.d.ts +0 -1
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +0 -1
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +0 -1
- package/dist/inspector/iterations/coordinator.js +0 -1
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +0 -1
- 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 +2 -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 +4 -13
- package/dist/inspector/pageInspector.js +25 -32
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +2 -14
- package/dist/inspector/projection/draftProjection.js +1 -8
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +4 -22
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +6 -32
- package/dist/inspector/projection/structuralProjection.d.ts +7 -39
- package/dist/inspector/projection/structuralProjection.js +17 -52
- package/dist/inspector/projection/textProjection.d.ts +2 -14
- package/dist/inspector/projection/textProjection.js +17 -70
- 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 -9
- package/dist/inspector/prompt/clipboardHandoff.js +1 -9
- package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
- package/dist/inspector/prompt/generatePrompt.js +10 -25
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +0 -3
- 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 +1 -7
- package/dist/inspector/runtime/inspectorStorage.js +1 -6
- package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
- package/dist/inspector/runtime/ownedStylesheets.js +2 -8
- package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
- package/dist/inspector/runtime/runtimeConfig.js +9 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
- package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +1 -7
- package/dist/inspector/selection/editScope.js +2 -12
- 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 +5 -5
- package/dist/inspector/shell/ChangesLog.js +3 -4
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +12 -11
- 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.js +26 -48
- 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 +0 -5
- 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 +1 -4
- package/dist/inspector/shell/interactionStatePreview.js +3 -8
- package/dist/inspector/shell/originalPreview.d.ts +1 -6
- package/dist/inspector/shell/originalPreview.js +1 -6
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +2 -5
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +0 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
- package/dist/inspector/sketch/SketchOverlay.js +5 -6
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
- package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
- package/dist/inspector/sketch/SketchWorkspace.js +2 -4
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +12 -11
- package/dist/inspector/sketch/copySketch.d.ts +1 -7
- package/dist/inspector/sketch/copySketch.js +2 -11
- package/dist/inspector/sketch/drawingTools.d.ts +1 -3
- package/dist/inspector/sketch/drawingTools.js +1 -2
- package/dist/inspector/sketch/frameHeading.d.ts +1 -7
- package/dist/inspector/sketch/frameHeading.js +1 -8
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +0 -1
- package/dist/inspector/sketch/geometry.d.ts +1 -6
- package/dist/inspector/sketch/geometry.js +1 -6
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +1 -5
- package/dist/inspector/sketch/history.js +1 -4
- package/dist/inspector/sketch/interaction.d.ts +2 -2
- package/dist/inspector/sketch/interaction.js +2 -2
- package/dist/inspector/sketch/model.d.ts +2 -9
- package/dist/inspector/sketch/model.js +2 -19
- package/dist/inspector/sketch/persistence.d.ts +0 -1
- package/dist/inspector/sketch/persistence.js +2 -2
- package/dist/inspector/sketch/raster.d.ts +1 -4
- package/dist/inspector/sketch/raster.js +2 -8
- package/dist/inspector/sketch/store.js +2 -3
- package/dist/inspector/sketch/videoFrames.js +2 -3
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
- package/dist/inspector/styleEditors/BorderEditor.js +1 -6
- 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 +0 -1
- 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 +1 -7
- package/dist/inspector/styleEditors/borderModel.js +2 -11
- 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 +4 -12
- 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 +19 -29
- 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 +1 -1
- package/dist/inspector/tokens/editActions.js +2 -4
- 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 +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
- package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
- 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 +5 -24
- package/dist/inspector/tokens/resolution.js +16 -71
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- 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/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- 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 +0 -4
- package/dist/inspector/ui/Toast.js +0 -4
- 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 +7 -1
- package/dist/inspector/ui/customCursors.js +2 -6
- package/dist/inspector/ui/styles.js +18 -20
- package/dist/inspector/workspace/controller.js +20 -1
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +1 -5
- package/dist/inspector/workspace/timeline.d.ts +5 -2
- package/dist/inspector/workspace/timeline.js +0 -1
- package/dist/internal/agent-protocol.d.ts +20 -42
- package/dist/internal/agent-protocol.js +18 -35
- package/dist/nudge-ui.mjs +75 -28
- 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 +1 -6
- package/dist/project/mcpPackage.js +2 -7
- 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 +5 -4
- 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,19 +1,18 @@
|
|
|
1
1
|
import { cloneElement, createElement, forwardRef, useEffect, useMemo, useSyncExternalStore, version as reactVersion, } from "react";
|
|
2
|
-
import { registerHostRuntimeAdapter } from "
|
|
3
|
-
import { getNudgeUiRuntimeConfig } from "
|
|
2
|
+
import { registerHostRuntimeAdapter } from "../runtimeBridge.js";
|
|
3
|
+
import { getNudgeUiRuntimeConfig } from "../../runtime/runtimeConfig.js";
|
|
4
|
+
import { findFiber, hostOutputCount, isHostOutput } from "./fibers.js";
|
|
5
|
+
import { canPreviewLive, invocationProps, replaceTaggedOverrides, resetTaggedCallsites, taggedCallsiteMultiplicity, taggedInvocationsAbove, taggedRootInvocations, } from "./callsites.js";
|
|
6
|
+
export { registerReactCallsites } from "./callsites.js";
|
|
4
7
|
const BOUNDARY_MARKER = Symbol.for("nudge-ui.react-component-boundary");
|
|
5
8
|
const EMPTY_OVERRIDE = Object.freeze({});
|
|
6
9
|
const REACT_MAJOR_VERSION = Number.parseInt(reactVersion, 10);
|
|
7
|
-
/** React work tags for host output that has no string element type. */
|
|
8
|
-
const HOST_PORTAL_TAG = 4;
|
|
9
|
-
const HOST_TEXT_TAG = 6;
|
|
10
10
|
let overridesByCallsite = new Map();
|
|
11
11
|
const listeners = new Set();
|
|
12
12
|
/**
|
|
13
|
-
* Mounted invocation accounting is runtime state, not canonical identity
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* each Canvas iframe owns an independent registry/module instance.
|
|
13
|
+
* Mounted invocation accounting is runtime state, not canonical identity: a boundary
|
|
14
|
+
* registers by its stable transformed callsite and unregisters on unmount, surviving
|
|
15
|
+
* rerenders and React Strict Mode's effect probe.
|
|
17
16
|
*/
|
|
18
17
|
const mountedCallsites = new Map();
|
|
19
18
|
function registerMountedCallsite(callsiteId) {
|
|
@@ -30,7 +29,6 @@ function registerMountedCallsite(callsiteId) {
|
|
|
30
29
|
mountedCallsites.delete(callsiteId);
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
|
-
/** Returns null when this runtime has no mounted boundary for the callsite. */
|
|
34
32
|
export function getReactCallsiteMultiplicity(callsiteId) {
|
|
35
33
|
return mountedCallsites.get(callsiteId) ?? null;
|
|
36
34
|
}
|
|
@@ -39,6 +37,7 @@ export function resetReactComponentRuntime() {
|
|
|
39
37
|
mountedCallsites.clear();
|
|
40
38
|
overridesByCallsite = new Map();
|
|
41
39
|
listeners.clear();
|
|
40
|
+
resetTaggedCallsites();
|
|
42
41
|
}
|
|
43
42
|
function subscribe(listener) {
|
|
44
43
|
listeners.add(listener);
|
|
@@ -119,9 +118,8 @@ const ReactComponentOverride = forwardRef(function ReactComponentOverride({ elem
|
|
|
119
118
|
const props = {
|
|
120
119
|
...injectedProps,
|
|
121
120
|
...override,
|
|
121
|
+
...(forwardedRef === null ? {} : { ref: mergedRef }),
|
|
122
122
|
};
|
|
123
|
-
if (forwardedRef !== null)
|
|
124
|
-
props.ref = mergedRef;
|
|
125
123
|
return cloneElement(element, props);
|
|
126
124
|
});
|
|
127
125
|
ReactComponentOverride[BOUNDARY_MARKER] = true;
|
|
@@ -131,26 +129,40 @@ function isBoundaryType(value) {
|
|
|
131
129
|
return false;
|
|
132
130
|
return Reflect.get(value, BOUNDARY_MARKER) === true;
|
|
133
131
|
}
|
|
134
|
-
function findFiber(element) {
|
|
135
|
-
for (const key of Object.keys(element)) {
|
|
136
|
-
if (/^__reactFiber\$/.test(key) || /^__reactInternalInstance\$/.test(key)) {
|
|
137
|
-
return Reflect.get(element, key) ?? null;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
132
|
export function instrumentReactComponent(element, meta) {
|
|
143
133
|
return createElement(ReactComponentOverride, { key: element.key ?? undefined, element, meta });
|
|
144
134
|
}
|
|
135
|
+
function boundaryOf(fiber) {
|
|
136
|
+
if (!isBoundaryType(fiber.type))
|
|
137
|
+
return null;
|
|
138
|
+
// SAFETY: a boundary fiber's props are the `{ element, meta }` it was created with; both are checked below.
|
|
139
|
+
const props = (fiber.memoizedProps ?? {});
|
|
140
|
+
return props.meta && props.element ? { meta: props.meta, element: props.element } : null;
|
|
141
|
+
}
|
|
142
|
+
function nearestFirst(boundaries, tagged) {
|
|
143
|
+
const wrapped = new Set(boundaries.map((entry) => entry.callsiteId));
|
|
144
|
+
return [...boundaries, ...tagged.filter((entry) => !wrapped.has(entry.callsiteId))]
|
|
145
|
+
.sort((left, right) => left.depth - right.depth)
|
|
146
|
+
.map((entry) => entry.value);
|
|
147
|
+
}
|
|
148
|
+
/** Wrapped callsites answer through their boundary, others through their fiber's identity tag; both merge nearest first. */
|
|
145
149
|
export function inspectReactComponentTargets(element) {
|
|
146
150
|
if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
|
|
147
151
|
return [];
|
|
148
|
-
const
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
const host = findFiber(element);
|
|
153
|
+
if (!host)
|
|
154
|
+
return [];
|
|
155
|
+
const boundaries = [];
|
|
156
|
+
let depth = 0;
|
|
157
|
+
for (let fiber = host; fiber; fiber = fiber.return ?? null, depth += 1) {
|
|
158
|
+
const boundary = boundaryOf(fiber);
|
|
159
|
+
if (!boundary)
|
|
160
|
+
continue;
|
|
161
|
+
const { meta, element: sourceElement } = boundary;
|
|
162
|
+
boundaries.push({
|
|
163
|
+
depth,
|
|
164
|
+
callsiteId: meta.callsiteId,
|
|
165
|
+
value: {
|
|
154
166
|
framework: "react",
|
|
155
167
|
meta,
|
|
156
168
|
props: {
|
|
@@ -158,28 +170,21 @@ export function inspectReactComponentTargets(element) {
|
|
|
158
170
|
...overrideFor(meta.callsiteId),
|
|
159
171
|
},
|
|
160
172
|
mountedCount: getReactCallsiteMultiplicity(meta.callsiteId) ?? undefined,
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
fiber = fiber.return ?? null;
|
|
173
|
+
},
|
|
174
|
+
});
|
|
164
175
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
else
|
|
178
|
-
visit(child);
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
visit(fiber);
|
|
182
|
-
return count;
|
|
176
|
+
const tagged = taggedInvocationsAbove(host).map((invocation) => ({
|
|
177
|
+
depth: invocation.depth,
|
|
178
|
+
callsiteId: invocation.meta.callsiteId,
|
|
179
|
+
value: {
|
|
180
|
+
framework: "react",
|
|
181
|
+
meta: invocation.meta,
|
|
182
|
+
props: invocationProps(invocation.fiber),
|
|
183
|
+
mountedCount: taggedCallsiteMultiplicity(invocation.meta.callsiteId, invocation.root) ?? undefined,
|
|
184
|
+
...(canPreviewLive(invocation.root) ? {} : { livePreview: false }),
|
|
185
|
+
},
|
|
186
|
+
}));
|
|
187
|
+
return nearestFirst(boundaries, tagged);
|
|
183
188
|
}
|
|
184
189
|
export function inspectReactRootInvocations(element) {
|
|
185
190
|
if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
|
|
@@ -187,16 +192,27 @@ export function inspectReactRootInvocations(element) {
|
|
|
187
192
|
const host = findFiber(element);
|
|
188
193
|
if (!host)
|
|
189
194
|
return null;
|
|
190
|
-
const
|
|
195
|
+
const boundaries = [];
|
|
196
|
+
let depth = 0;
|
|
191
197
|
for (let fiber = host.return ?? null; fiber && !isHostOutput(fiber); fiber = fiber.return ?? null) {
|
|
192
|
-
|
|
198
|
+
depth += 1;
|
|
199
|
+
const boundary = boundaryOf(fiber);
|
|
200
|
+
if (!boundary)
|
|
193
201
|
continue;
|
|
194
202
|
if (hostOutputCount(fiber) !== 1)
|
|
195
203
|
break;
|
|
196
|
-
const { callsiteId, componentName } =
|
|
197
|
-
|
|
204
|
+
const { callsiteId, componentName } = boundary.meta;
|
|
205
|
+
boundaries.push({ depth, callsiteId, value: { callsiteId, componentName } });
|
|
198
206
|
}
|
|
199
|
-
|
|
207
|
+
const tagged = taggedRootInvocations(host).map(({ depth: taggedDepth, callsiteId, componentName }) => ({
|
|
208
|
+
depth: taggedDepth,
|
|
209
|
+
callsiteId,
|
|
210
|
+
value: { callsiteId, componentName },
|
|
211
|
+
}));
|
|
212
|
+
return nearestFirst(boundaries, tagged);
|
|
213
|
+
}
|
|
214
|
+
function callsiteMultiplicity(callsiteId) {
|
|
215
|
+
return getReactCallsiteMultiplicity(callsiteId) ?? taggedCallsiteMultiplicity(callsiteId);
|
|
200
216
|
}
|
|
201
217
|
export function replaceReactComponentOverrides(overrides) {
|
|
202
218
|
if (!getNudgeUiRuntimeConfig().capabilities.componentSemantics)
|
|
@@ -209,6 +225,7 @@ export function replaceReactComponentOverrides(overrides) {
|
|
|
209
225
|
props[override.prop] = override.value;
|
|
210
226
|
next.set(override.callsiteId, props);
|
|
211
227
|
}
|
|
228
|
+
replaceTaggedOverrides(next);
|
|
212
229
|
if (sameOverrideProjection(next))
|
|
213
230
|
return;
|
|
214
231
|
overridesByCallsite = next;
|
|
@@ -218,7 +235,7 @@ export const reactComponentRuntimeAdapter = {
|
|
|
218
235
|
framework: "react",
|
|
219
236
|
inspect: inspectReactComponentTargets,
|
|
220
237
|
replaceOverrides: replaceReactComponentOverrides,
|
|
221
|
-
getCallsiteMultiplicity:
|
|
238
|
+
getCallsiteMultiplicity: callsiteMultiplicity,
|
|
222
239
|
rootInvocations: inspectReactRootInvocations,
|
|
223
240
|
};
|
|
224
241
|
registerHostRuntimeAdapter(reactComponentRuntimeAdapter);
|
|
@@ -1,27 +1,11 @@
|
|
|
1
1
|
import type { ComponentOverride, ComponentRootInvocation, ComponentRuntimeAdapter, RuntimeComponentTarget } from "./types.js";
|
|
2
2
|
export type { ComponentFramework, ComponentInvocationMeta, ComponentOverride, ComponentRootInvocation, ComponentRuntimeAdapter, RuntimeComponentTarget, } from "./types.js";
|
|
3
|
-
/** Version of the page-global host runtime Adapter Interface. */
|
|
4
3
|
export declare const NUDGE_UI_HOST_RUNTIME_VERSION = 1;
|
|
5
|
-
/**
|
|
6
|
-
* Registers a framework runtime Adapter in the host application's module graph.
|
|
7
|
-
*
|
|
8
|
-
* The registry lives on the page global because the self-contained inspector
|
|
9
|
-
* client and the host Adapter intentionally have separate dependency graphs.
|
|
10
|
-
* Registration replaces an older Adapter for the same framework so HMR does
|
|
11
|
-
* not accumulate stale implementations.
|
|
12
|
-
*/
|
|
4
|
+
/** The registry lives on the page global because the inspector client and the host Adapter have separate dependency graphs. */
|
|
13
5
|
export declare function registerHostRuntimeAdapter(adapter: ComponentRuntimeAdapter): () => void;
|
|
14
|
-
/** Returns the active host runtime Adapters for the requested browser realm. */
|
|
15
6
|
export declare function getHostRuntimeAdapters(ownerGlobal?: typeof globalThis): readonly ComponentRuntimeAdapter[];
|
|
16
|
-
/** Stores the latest projection and sends it to every registered host Adapter. */
|
|
17
7
|
export declare function replaceHostRuntimeAdapterOverrides(overrides: readonly ComponentOverride[]): void;
|
|
18
|
-
/**
|
|
19
|
-
* Copies a host Adapter result into the protocol's plain-data value space.
|
|
20
|
-
* React elements, functions, and other reconciler-owned values never cross
|
|
21
|
-
* the host/client seam.
|
|
22
|
-
*/
|
|
8
|
+
/** Reconciler-owned values never cross the host/client seam. */
|
|
23
9
|
export declare function copyRuntimeTarget(target: RuntimeComponentTarget): RuntimeComponentTarget;
|
|
24
|
-
/** Copies a host Adapter's root invocations into plain protocol data. */
|
|
25
10
|
export declare function copyRootInvocations(invocations: readonly ComponentRootInvocation[]): ComponentRootInvocation[];
|
|
26
|
-
/** Copies override commands before dispatching them into a host Adapter. */
|
|
27
11
|
export declare function copyComponentOverrides(overrides: readonly ComponentOverride[]): ComponentOverride[];
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { isComponentFramework } from "./types.js";
|
|
2
|
-
/** Version of the page-global host runtime Adapter Interface. */
|
|
3
2
|
export const NUDGE_UI_HOST_RUNTIME_VERSION = 1;
|
|
4
3
|
const HOST_RUNTIME_KEY = Symbol.for("nudge-ui.host-runtime.v1");
|
|
5
4
|
function registry() {
|
|
@@ -21,14 +20,7 @@ function registry() {
|
|
|
21
20
|
target[HOST_RUNTIME_KEY] = created;
|
|
22
21
|
return created;
|
|
23
22
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Registers a framework runtime Adapter in the host application's module graph.
|
|
26
|
-
*
|
|
27
|
-
* The registry lives on the page global because the self-contained inspector
|
|
28
|
-
* client and the host Adapter intentionally have separate dependency graphs.
|
|
29
|
-
* Registration replaces an older Adapter for the same framework so HMR does
|
|
30
|
-
* not accumulate stale implementations.
|
|
31
|
-
*/
|
|
23
|
+
/** The registry lives on the page global because the inspector client and the host Adapter have separate dependency graphs. */
|
|
32
24
|
export function registerHostRuntimeAdapter(adapter) {
|
|
33
25
|
assertRuntimeAdapter(adapter);
|
|
34
26
|
const hostRegistry = registry();
|
|
@@ -42,14 +34,14 @@ export function registerHostRuntimeAdapter(adapter) {
|
|
|
42
34
|
}
|
|
43
35
|
};
|
|
44
36
|
}
|
|
45
|
-
/** Returns the active host runtime Adapters for the requested browser realm. */
|
|
46
37
|
export function getHostRuntimeAdapters(ownerGlobal = globalThis) {
|
|
47
38
|
if (ownerGlobal === globalThis)
|
|
48
39
|
return [...registry().adapters.values()];
|
|
40
|
+
// SAFETY: the symbol key is this module's private registry slot; symbol lookup works across realms.
|
|
49
41
|
const current = ownerGlobal[HOST_RUNTIME_KEY];
|
|
50
42
|
if (current === undefined)
|
|
51
43
|
return [];
|
|
52
|
-
const mapConstructor =
|
|
44
|
+
const mapConstructor = ownerGlobal.Map;
|
|
53
45
|
if (!mapConstructor
|
|
54
46
|
|| typeof current !== "object"
|
|
55
47
|
|| current === null
|
|
@@ -59,7 +51,6 @@ export function getHostRuntimeAdapters(ownerGlobal = globalThis) {
|
|
|
59
51
|
}
|
|
60
52
|
return [...(current.adapters.values())];
|
|
61
53
|
}
|
|
62
|
-
/** Stores the latest projection and sends it to every registered host Adapter. */
|
|
63
54
|
export function replaceHostRuntimeAdapterOverrides(overrides) {
|
|
64
55
|
const hostRegistry = registry();
|
|
65
56
|
const frameworks = new Set([
|
|
@@ -76,11 +67,7 @@ export function replaceHostRuntimeAdapterOverrides(overrides) {
|
|
|
76
67
|
hostRegistry.adapters.get(framework)?.replaceOverrides(copyComponentOverrides(projection));
|
|
77
68
|
}
|
|
78
69
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Copies a host Adapter result into the protocol's plain-data value space.
|
|
81
|
-
* React elements, functions, and other reconciler-owned values never cross
|
|
82
|
-
* the host/client seam.
|
|
83
|
-
*/
|
|
70
|
+
/** Reconciler-owned values never cross the host/client seam. */
|
|
84
71
|
export function copyRuntimeTarget(target) {
|
|
85
72
|
assertRuntimeTarget(target);
|
|
86
73
|
const props = {};
|
|
@@ -102,9 +89,9 @@ export function copyRuntimeTarget(target) {
|
|
|
102
89
|
},
|
|
103
90
|
props,
|
|
104
91
|
...(target.mountedCount === undefined ? {} : { mountedCount: target.mountedCount }),
|
|
92
|
+
...(target.livePreview === false ? { livePreview: false } : {}),
|
|
105
93
|
};
|
|
106
94
|
}
|
|
107
|
-
/** Copies a host Adapter's root invocations into plain protocol data. */
|
|
108
95
|
export function copyRootInvocations(invocations) {
|
|
109
96
|
if (!Array.isArray(invocations)) {
|
|
110
97
|
throw new TypeError("Nudge UI received invalid root invocations from a host Adapter.");
|
|
@@ -121,7 +108,6 @@ export function copyRootInvocations(invocations) {
|
|
|
121
108
|
return { callsiteId: invocation.callsiteId, componentName: invocation.componentName };
|
|
122
109
|
});
|
|
123
110
|
}
|
|
124
|
-
/** Copies override commands before dispatching them into a host Adapter. */
|
|
125
111
|
export function copyComponentOverrides(overrides) {
|
|
126
112
|
return overrides.map((override) => {
|
|
127
113
|
assertComponentOverride(override);
|
|
@@ -35,20 +35,16 @@ export interface TextBindingChoice {
|
|
|
35
35
|
editableTarget: EditableComponentTarget;
|
|
36
36
|
mountedCount: number;
|
|
37
37
|
authoredAs: "literal" | "expression" | "spread" | "default";
|
|
38
|
-
/** Durable target/source evidence for an item-only commit. */
|
|
39
38
|
renderedTarget: TextProjectionTarget | null;
|
|
40
39
|
renderedSource?: TextBindingRenderedSource;
|
|
41
40
|
}
|
|
42
41
|
export interface TextBindingCandidate {
|
|
43
42
|
binding: TextEditBinding;
|
|
44
|
-
/** Runtime target retained privately for semantic canonical records. */
|
|
45
43
|
editableTarget?: EditableComponentTarget;
|
|
46
44
|
element: HTMLElement;
|
|
47
45
|
textNode: Text;
|
|
48
46
|
before: string;
|
|
49
|
-
/** Equal-priority semantic candidates are selected by the inline chooser. */
|
|
50
47
|
bindingChoices?: TextBindingChoice[];
|
|
51
|
-
/** Repeated literal invocations expose this scope choice before commit. */
|
|
52
48
|
scope?: TextProjectionScope;
|
|
53
49
|
scopeChoices?: TextProjectionScope[];
|
|
54
50
|
mountedCount?: number;
|
|
@@ -57,11 +53,7 @@ export interface TextBindingCandidate {
|
|
|
57
53
|
/** Existing inspector affordance hidden while its empty node is edited. */
|
|
58
54
|
emptyProjectionMarker?: HTMLElement;
|
|
59
55
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Resolves only a confidently matched semantic string binding. Text nodes and
|
|
62
|
-
* the temporary editor host are not identity: the returned component target is
|
|
63
|
-
* the durable callsite used by the canonical component-prop record.
|
|
64
|
-
*/
|
|
56
|
+
/** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
|
|
65
57
|
export declare function resolveTextBinding(element: HTMLElement, point?: {
|
|
66
58
|
x: number;
|
|
67
59
|
y: number;
|
|
@@ -34,9 +34,8 @@ function isApplicationEditingHost(element) {
|
|
|
34
34
|
&& host.getAttribute("contenteditable") !== "false";
|
|
35
35
|
}
|
|
36
36
|
function isApplicationEditingTextNode(element, textNode) {
|
|
37
|
-
// `element.closest()` only checks the selected root
|
|
38
|
-
//
|
|
39
|
-
// complete ancestor chain as well.
|
|
37
|
+
// `element.closest()` only checks the selected root; an editing island can
|
|
38
|
+
// live deeper, so inspect the text node's own chain as well.
|
|
40
39
|
const editingHost = textNode.parentElement?.closest("[contenteditable]");
|
|
41
40
|
if (!editingHost)
|
|
42
41
|
return false;
|
|
@@ -136,9 +135,8 @@ function mountedCountFor(element, target) {
|
|
|
136
135
|
const mountedCount = callsiteMultiplicity(target);
|
|
137
136
|
if (mountedCount !== null)
|
|
138
137
|
return mountedCount;
|
|
139
|
-
//
|
|
140
|
-
//
|
|
141
|
-
// it can prove one root, but it can never prove an arbitrary count.
|
|
138
|
+
// Compatibility fallback for adapters predating multiplicity: it can prove
|
|
139
|
+
// one root, never an arbitrary count.
|
|
142
140
|
return hasUniqueInvocationEvidence(element, target.meta.callsiteId) ? 1 : null;
|
|
143
141
|
}
|
|
144
142
|
function candidatesForText(element, renderedText) {
|
|
@@ -188,10 +186,8 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
|
|
|
188
186
|
}
|
|
189
187
|
const componentTarget = semantic?.target ?? inspectComponentTargets(element)[0];
|
|
190
188
|
const semanticProperty = semantic?.property;
|
|
191
|
-
// A component target is
|
|
192
|
-
//
|
|
193
|
-
// nearest boundary is the enclosing component invocation, so the element's
|
|
194
|
-
// own data-src must remain the prompt/change source.
|
|
189
|
+
// A component target is source evidence only when its callsite produced this
|
|
190
|
+
// exact DOM root; otherwise the element's own data-src remains the source.
|
|
195
191
|
const elementDataSrc = element.getAttribute("data-src");
|
|
196
192
|
const elementSource = parseRenderedSource(elementDataSrc ?? "");
|
|
197
193
|
const matchingComponentTarget = componentTarget
|
|
@@ -239,7 +235,6 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
|
|
|
239
235
|
element,
|
|
240
236
|
textNode,
|
|
241
237
|
before,
|
|
242
|
-
// Keep this private metadata on the candidate for canonical source data.
|
|
243
238
|
renderedSource: {
|
|
244
239
|
file: source.file,
|
|
245
240
|
line: source.line,
|
|
@@ -290,11 +285,6 @@ function parseRenderedSource(src) {
|
|
|
290
285
|
return { file: src, line: 0, column: 0 };
|
|
291
286
|
return { file: match[1] ?? src, line: Number(match[2]), column: Number(match[3]) };
|
|
292
287
|
}
|
|
293
|
-
/**
|
|
294
|
-
* Compatibility evidence for adapters that predate the mounted-count seam.
|
|
295
|
-
* React itself reports multiplicity through the runtime Adapter registry; this
|
|
296
|
-
* fallback is only a one-root proof and is never used to pick an occurrence.
|
|
297
|
-
*/
|
|
298
288
|
function hasUniqueInvocationEvidence(element, callsiteId) {
|
|
299
289
|
const nodes = Array.from(element.ownerDocument.querySelectorAll("[data-cid]"));
|
|
300
290
|
const matches = new Set();
|
|
@@ -325,11 +315,7 @@ function hasUniqueInvocationEvidence(element, callsiteId) {
|
|
|
325
315
|
}
|
|
326
316
|
return roots === 1;
|
|
327
317
|
}
|
|
328
|
-
/**
|
|
329
|
-
* Resolves only a confidently matched semantic string binding. Text nodes and
|
|
330
|
-
* the temporary editor host are not identity: the returned component target is
|
|
331
|
-
* the durable callsite used by the canonical component-prop record.
|
|
332
|
-
*/
|
|
318
|
+
/** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
|
|
333
319
|
export function resolveTextBinding(element, point) {
|
|
334
320
|
if (isApplicationEditingHost(element)) {
|
|
335
321
|
return {
|
|
@@ -338,10 +324,8 @@ export function resolveTextBinding(element, point) {
|
|
|
338
324
|
message: "Application-owned editing surfaces are not managed by the inspector.",
|
|
339
325
|
};
|
|
340
326
|
}
|
|
341
|
-
//
|
|
342
|
-
//
|
|
343
|
-
// binding may still own a nested text node, while rendered fallback keeps
|
|
344
|
-
// its stricter direct-leaf requirement.
|
|
327
|
+
// Descendant markup is intentionally not included: a semantic binding may still own a
|
|
328
|
+
// nested text node, while the rendered fallback keeps its stricter direct-leaf rule.
|
|
345
329
|
if (isUnsafeTextHost(element)) {
|
|
346
330
|
return {
|
|
347
331
|
kind: "rejected",
|
|
@@ -398,9 +382,7 @@ export function resolveTextBinding(element, point) {
|
|
|
398
382
|
renderedSource: rendered?.source,
|
|
399
383
|
};
|
|
400
384
|
});
|
|
401
|
-
//
|
|
402
|
-
// session exposes these choices to the inline chooser and blocks commit
|
|
403
|
-
// until the user picks one.
|
|
385
|
+
// Equal-priority candidates are handed to the inline chooser, never guessed.
|
|
404
386
|
if (choices.length > 1) {
|
|
405
387
|
return {
|
|
406
388
|
binding: firstBinding,
|
|
@@ -422,16 +404,13 @@ export function resolveTextBinding(element, point) {
|
|
|
422
404
|
const authoredAs = authoredAsFor(match.target, match.property);
|
|
423
405
|
const binding = targetBinding(match.target, match.property);
|
|
424
406
|
if (match.mountedCount > 1 && authoredAs !== "literal") {
|
|
425
|
-
// Expressions/spreads are source-logic intent
|
|
426
|
-
//
|
|
427
|
-
// and tell the prompt to update the data/source logic.
|
|
407
|
+
// Expressions/spreads are source-logic intent; a callsite override would
|
|
408
|
+
// fan out to every item, so keep one durable text target instead.
|
|
428
409
|
return renderedTextCandidate(element, textNode, before, match);
|
|
429
410
|
}
|
|
430
411
|
if (match.mountedCount > 1 && authoredAs === "literal") {
|
|
431
|
-
//
|
|
432
|
-
//
|
|
433
|
-
// when identical outputs make an instance impossible to distinguish, but
|
|
434
|
-
// an item-only session is never allowed to guess.
|
|
412
|
+
// Item-only scope must validate against the same bounded before-text
|
|
413
|
+
// evidence as the durable projection; source-site stays safe either way.
|
|
435
414
|
const rendered = renderedTextCandidate(element, textNode, before, match, false);
|
|
436
415
|
if (!("kind" in rendered)) {
|
|
437
416
|
return {
|
|
@@ -443,10 +422,8 @@ export function resolveTextBinding(element, point) {
|
|
|
443
422
|
scopeChoices: ["rendered-instance", "source-site"],
|
|
444
423
|
};
|
|
445
424
|
}
|
|
446
|
-
//
|
|
447
|
-
//
|
|
448
|
-
// canonical component-prop change and must not be rejected because the
|
|
449
|
-
// DOM fallback cannot capture bounded instance evidence.
|
|
425
|
+
// A missing rendered projection only removes the item-scoped option; the
|
|
426
|
+
// all-output source-site edit is still a safe canonical change.
|
|
450
427
|
return {
|
|
451
428
|
binding,
|
|
452
429
|
editableTarget: match.target,
|
|
@@ -458,9 +435,6 @@ export function resolveTextBinding(element, point) {
|
|
|
458
435
|
scopeChoices: ["source-site"],
|
|
459
436
|
};
|
|
460
437
|
}
|
|
461
|
-
// Unique invocation (mountedCount === 1): the callsite is unambiguous, so
|
|
462
|
-
// the source-site edit is always safe and no scope choice is offered. The
|
|
463
|
-
// mountedCount > 1 cases all returned above.
|
|
464
438
|
return {
|
|
465
439
|
binding,
|
|
466
440
|
editableTarget: match.target,
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
import type { RuntimeProps } from "./runtimeTypes.js";
|
|
2
2
|
import type { EditScope } from "../editScope.js";
|
|
3
|
+
import type { ComponentInvocationMeta } from "../../compiler/componentContractTypes.js";
|
|
3
4
|
export type ComponentPropValue = string | number | boolean;
|
|
4
5
|
export type AuthoredPropKind = "literal" | "expression" | "spread" | "default";
|
|
5
6
|
export declare const COMPONENT_FRAMEWORKS: readonly ["react"];
|
|
6
7
|
export type ComponentFramework = (typeof COMPONENT_FRAMEWORKS)[number];
|
|
7
8
|
export type ComponentChangeScope = EditScope;
|
|
8
|
-
/** Returns whether a host value names a supported component framework. */
|
|
9
9
|
export declare function isComponentFramework(value: string): value is ComponentFramework;
|
|
10
|
-
/**
|
|
11
|
-
* Bounded evidence for the rendered invocation that a text edit started from.
|
|
12
|
-
* This is deliberately JSON data, never a DOM node or a React fiber.
|
|
13
|
-
*/
|
|
10
|
+
/** Deliberately JSON data, never a DOM node or a React fiber. */
|
|
14
11
|
export interface ComponentInvocationEvidence {
|
|
15
12
|
occurrence: number;
|
|
16
13
|
props: string | null;
|
|
@@ -40,26 +37,18 @@ export interface ComponentChangeRecord {
|
|
|
40
37
|
before: ComponentPropBaseline;
|
|
41
38
|
after: ComponentPropValue;
|
|
42
39
|
authoredAs: AuthoredPropKind;
|
|
43
|
-
/** `source-site` is the historical/default semantic projection scope. */
|
|
44
40
|
scope?: ComponentChangeScope;
|
|
45
|
-
/** Present when an inline scope decision was made from one rendered item. */
|
|
46
41
|
evidence?: ComponentInvocationEvidence;
|
|
47
42
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
componentId: string;
|
|
51
|
-
componentName: string;
|
|
52
|
-
file: string;
|
|
53
|
-
line: number;
|
|
54
|
-
column: number;
|
|
55
|
-
authoredProps: Record<string, Exclude<AuthoredPropKind, "default">>;
|
|
56
|
-
}
|
|
43
|
+
/** The compiler owns this wire format; the runtime only reads it. */
|
|
44
|
+
export type { ComponentInvocationMeta };
|
|
57
45
|
export interface RuntimeComponentTarget {
|
|
58
46
|
framework: ComponentFramework;
|
|
59
47
|
meta: ComponentInvocationMeta;
|
|
60
48
|
props: RuntimeProps;
|
|
61
|
-
/** Adapter-reported mounted invocation count for this callsite. */
|
|
62
49
|
mountedCount?: number;
|
|
50
|
+
/** False when the runtime cannot render a prop change (the change still reaches the prompt); absent means live. */
|
|
51
|
+
livePreview?: boolean;
|
|
63
52
|
}
|
|
64
53
|
/** A component invocation whose entire rendered output is one DOM element. */
|
|
65
54
|
export interface ComponentRootInvocation {
|
|
@@ -92,16 +81,8 @@ export interface ComponentRuntimeAdapter {
|
|
|
92
81
|
framework: ComponentFramework;
|
|
93
82
|
inspect(element: HTMLElement): RuntimeComponentTarget[];
|
|
94
83
|
replaceOverrides(overrides: ComponentOverride[]): void;
|
|
95
|
-
/**
|
|
96
|
-
* Return the number of currently mounted invocations for a callsite. A
|
|
97
|
-
* runtime that cannot prove this must return null/undefined so callers can
|
|
98
|
-
* fail closed instead of broadening a semantic override.
|
|
99
|
-
*/
|
|
84
|
+
/** A runtime that cannot prove the count must return null so callers fail closed. */
|
|
100
85
|
getCallsiteMultiplicity?(callsiteId: string): number | null | undefined;
|
|
101
|
-
/**
|
|
102
|
-
* Return, nearest first, the invocations whose entire rendered output is
|
|
103
|
-
* this element. A runtime that cannot read the element's ancestry must
|
|
104
|
-
* return null so structural identity fails closed.
|
|
105
|
-
*/
|
|
86
|
+
/** Nearest first; null when the runtime cannot read the element's ancestry, so structural identity fails closed. */
|
|
106
87
|
rootInvocations?(element: HTMLElement): ComponentRootInvocation[] | null;
|
|
107
88
|
}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import type { ConformanceFixture } from "./fixture.js";
|
|
2
|
-
/**
|
|
3
|
-
* Framework-neutral border corpus. Covers shorthand decomposition into width,
|
|
4
|
-
* style, and color longhands (including omitted CSS initials), side-specific
|
|
5
|
-
* shorthands, token attribution, border-radius, and true raw fallbacks.
|
|
6
|
-
*/
|
|
7
2
|
export declare const BORDER_CASES: ConformanceFixture[];
|
|
@@ -21,11 +21,6 @@ function structuredProps(authored, structure, properties) {
|
|
|
21
21
|
},
|
|
22
22
|
]));
|
|
23
23
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Framework-neutral border corpus. Covers shorthand decomposition into width,
|
|
26
|
-
* style, and color longhands (including omitted CSS initials), side-specific
|
|
27
|
-
* shorthands, token attribution, border-radius, and true raw fallbacks.
|
|
28
|
-
*/
|
|
29
24
|
export const BORDER_CASES = [
|
|
30
25
|
{
|
|
31
26
|
id: "border-shorthand-literal",
|
|
@@ -1,8 +1,2 @@
|
|
|
1
1
|
import type { ConformanceFixture } from "./fixture.js";
|
|
2
|
-
/**
|
|
3
|
-
* Framework-neutral color corpus covering `color` and `background-color`.
|
|
4
|
-
* Each fixture asserts authored CSS values and capability against the
|
|
5
|
-
* inspector's resolution pipeline. The gallery lets a human exercise the
|
|
6
|
-
* same cases through the real inspector UI.
|
|
7
|
-
*/
|
|
8
2
|
export declare const COLOR_CASES: ConformanceFixture[];
|
|
@@ -14,12 +14,6 @@ const COLOR_ACCENT = token("--color-accent", "oklch(63% .2 25)", "fixtures/color
|
|
|
14
14
|
const COLOR_PRIMARY = token("--color-primary", "#2563eb", "fixtures/color.css:7");
|
|
15
15
|
const COLOR_DANGER = token("--color-danger", "#dc2626", "fixtures/color.css:8");
|
|
16
16
|
const OPACITY_MUTED = token("--opacity-muted", "0.35", "fixtures/color.css:9");
|
|
17
|
-
/**
|
|
18
|
-
* Framework-neutral color corpus covering `color` and `background-color`.
|
|
19
|
-
* Each fixture asserts authored CSS values and capability against the
|
|
20
|
-
* inspector's resolution pipeline. The gallery lets a human exercise the
|
|
21
|
-
* same cases through the real inspector UI.
|
|
22
|
-
*/
|
|
23
17
|
export const COLOR_CASES = [
|
|
24
18
|
{
|
|
25
19
|
id: "color-named-keywords",
|
|
@@ -59,10 +59,6 @@ export interface ConformanceResult {
|
|
|
59
59
|
preview: PreviewResult | null;
|
|
60
60
|
cleanup(): void;
|
|
61
61
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Mounts one data-led fixture and runs it through the same CSSOM resolver used
|
|
64
|
-
* by the inspector. The caller owns assertions; this module only owns setup,
|
|
65
|
-
* teardown, and the public inspection result.
|
|
66
|
-
*/
|
|
62
|
+
/** Runs a fixture through the same CSSOM resolver the inspector uses; the caller owns assertions. */
|
|
67
63
|
export declare function runConformanceFixture(fixture: ConformanceFixture, doc?: Document): ConformanceResult;
|
|
68
64
|
export declare function assertConformanceFixture(result: ConformanceResult, fixture: ConformanceFixture): string[];
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { applyRules, verifyPreview } from "../projection/managedStylesheet.js";
|
|
2
2
|
import { projectInspectorValues } from "../spacing/projection.js";
|
|
3
3
|
import { createBrowserCssInspection } from "../inspection/browserCssInspection.js";
|
|
4
|
-
/**
|
|
5
|
-
* Mounts one data-led fixture and runs it through the same CSSOM resolver used
|
|
6
|
-
* by the inspector. The caller owns assertions; this module only owns setup,
|
|
7
|
-
* teardown, and the public inspection result.
|
|
8
|
-
*/
|
|
4
|
+
/** Runs a fixture through the same CSSOM resolver the inspector uses; the caller owns assertions. */
|
|
9
5
|
export function runConformanceFixture(fixture, doc = document) {
|
|
10
6
|
const style = doc.createElement("style");
|
|
11
7
|
style.dataset.conformanceFixture = fixture.id;
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
import type { ConformanceFixture } from "./fixture.js";
|
|
2
|
-
/**
|
|
3
|
-
* Shared spacing corpus. Unit tests run every case through the fixture runner;
|
|
4
|
-
* browser tests select representative cases where real CSSOM behaviour matters.
|
|
5
|
-
*/
|
|
6
2
|
export declare const SPACING_CASES: ConformanceFixture[];
|
|
@@ -10,10 +10,6 @@ const SPACE_ALIAS = token("--space-alias", "var(--space-4)", "fixtures/spacing.c
|
|
|
10
10
|
function boxProperties(values, capability = "box-sides") {
|
|
11
11
|
return Object.fromEntries(Object.entries(values).map(([property, authored]) => [property, { authored, capability }]));
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Shared spacing corpus. Unit tests run every case through the fixture runner;
|
|
15
|
-
* browser tests select representative cases where real CSSOM behaviour matters.
|
|
16
|
-
*/
|
|
17
13
|
export const SPACING_CASES = [
|
|
18
14
|
{
|
|
19
15
|
id: "spacing-physical-four-value",
|