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,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);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ComponentChangeTarget, EditableComponentTarget } from "./types.js";
|
|
2
|
-
import type { TextProjectionTarget } from "../
|
|
3
|
-
import type { TextBindingEvidence, TextProjectionScope } from "../inline-text/textChangeBoundary.js";
|
|
2
|
+
import type { TextBindingEvidence, TextProjectionScope, TextProjectionTarget } from "../changes/editModel.js";
|
|
4
3
|
/** The order used when more than one visible prop has the same value. */
|
|
5
4
|
export declare const VISIBLE_TEXT_PROP_PRIORITY: readonly ["children", "label", "text", "caption", "description", "title"];
|
|
6
5
|
export type TextEditRejectionReason = "no-text" | "no-binding" | "ambiguous-binding" | "editing-active" | "unsafe-target";
|
|
@@ -36,20 +35,16 @@ export interface TextBindingChoice {
|
|
|
36
35
|
editableTarget: EditableComponentTarget;
|
|
37
36
|
mountedCount: number;
|
|
38
37
|
authoredAs: "literal" | "expression" | "spread" | "default";
|
|
39
|
-
/** Durable target/source evidence for an item-only commit. */
|
|
40
38
|
renderedTarget: TextProjectionTarget | null;
|
|
41
39
|
renderedSource?: TextBindingRenderedSource;
|
|
42
40
|
}
|
|
43
41
|
export interface TextBindingCandidate {
|
|
44
42
|
binding: TextEditBinding;
|
|
45
|
-
/** Runtime target retained privately for semantic canonical records. */
|
|
46
43
|
editableTarget?: EditableComponentTarget;
|
|
47
44
|
element: HTMLElement;
|
|
48
45
|
textNode: Text;
|
|
49
46
|
before: string;
|
|
50
|
-
/** Equal-priority semantic candidates are selected by the inline chooser. */
|
|
51
47
|
bindingChoices?: TextBindingChoice[];
|
|
52
|
-
/** Repeated literal invocations expose this scope choice before commit. */
|
|
53
48
|
scope?: TextProjectionScope;
|
|
54
49
|
scopeChoices?: TextProjectionScope[];
|
|
55
50
|
mountedCount?: number;
|
|
@@ -58,11 +53,7 @@ export interface TextBindingCandidate {
|
|
|
58
53
|
/** Existing inspector affordance hidden while its empty node is edited. */
|
|
59
54
|
emptyProjectionMarker?: HTMLElement;
|
|
60
55
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Resolves only a confidently matched semantic string binding. Text nodes and
|
|
63
|
-
* the temporary editor host are not identity: the returned component target is
|
|
64
|
-
* the durable callsite used by the canonical component-prop record.
|
|
65
|
-
*/
|
|
56
|
+
/** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
|
|
66
57
|
export declare function resolveTextBinding(element: HTMLElement, point?: {
|
|
67
58
|
x: number;
|
|
68
59
|
y: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { callsiteMultiplicity, editableComponentTargets, inspectComponentTargets, } from "./adapterRegistry.js";
|
|
2
|
-
import { captureTextProjectionTarget, resolveTextProjectionTextNode, textProjectionSelector, } from "../projection/textProjection.js";
|
|
2
|
+
import { captureTextProjectionTarget, hasSafeMixedDescendants, isInApplicationEditingHost, isUnsafeTextHost, resolveTextProjectionTextNode, textProjectionSelector, } from "../projection/textProjection.js";
|
|
3
3
|
/** The order used when more than one visible prop has the same value. */
|
|
4
4
|
export const VISIBLE_TEXT_PROP_PRIORITY = [
|
|
5
5
|
"children",
|
|
@@ -17,24 +17,6 @@ const STRUCTURAL_TEXT_PROPS = new Set([
|
|
|
17
17
|
"role",
|
|
18
18
|
"style",
|
|
19
19
|
]);
|
|
20
|
-
const UNSAFE_TEXT_TAGS = new Set(["SCRIPT", "STYLE", "TEXTAREA", "OPTION"]);
|
|
21
|
-
const UNSAFE_MIXED_DESCENDANT_TAGS = new Set([
|
|
22
|
-
...UNSAFE_TEXT_TAGS,
|
|
23
|
-
"INPUT",
|
|
24
|
-
"SELECT",
|
|
25
|
-
"BUTTON",
|
|
26
|
-
"A",
|
|
27
|
-
"B",
|
|
28
|
-
"STRONG",
|
|
29
|
-
"I",
|
|
30
|
-
"EM",
|
|
31
|
-
"U",
|
|
32
|
-
"MARK",
|
|
33
|
-
"CODE",
|
|
34
|
-
"S",
|
|
35
|
-
"DEL",
|
|
36
|
-
"INS",
|
|
37
|
-
]);
|
|
38
20
|
function isStructuralTextProp(name) {
|
|
39
21
|
return STRUCTURAL_TEXT_PROPS.has(name)
|
|
40
22
|
|| name.startsWith("data")
|
|
@@ -52,9 +34,8 @@ function isApplicationEditingHost(element) {
|
|
|
52
34
|
&& host.getAttribute("contenteditable") !== "false";
|
|
53
35
|
}
|
|
54
36
|
function isApplicationEditingTextNode(element, textNode) {
|
|
55
|
-
// `element.closest()` only checks the selected root
|
|
56
|
-
//
|
|
57
|
-
// 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.
|
|
58
39
|
const editingHost = textNode.parentElement?.closest("[contenteditable]");
|
|
59
40
|
if (!editingHost)
|
|
60
41
|
return false;
|
|
@@ -62,9 +43,6 @@ function isApplicationEditingTextNode(element, textNode) {
|
|
|
62
43
|
&& editingHost.getAttribute("contenteditable") !== "false"
|
|
63
44
|
&& (editingHost === element || element.contains(editingHost) || editingHost.contains(element));
|
|
64
45
|
}
|
|
65
|
-
function isUnsafeSemanticHost(element) {
|
|
66
|
-
return UNSAFE_TEXT_TAGS.has(element.tagName);
|
|
67
|
-
}
|
|
68
46
|
function isVisibleTextProp(name) {
|
|
69
47
|
return VISIBLE_TEXT_PROP_PRIORITY.some((candidate) => candidate === name);
|
|
70
48
|
}
|
|
@@ -107,33 +85,13 @@ function textNodesFor(element) {
|
|
|
107
85
|
return nodes;
|
|
108
86
|
}
|
|
109
87
|
function isSafeRenderedTextHost(element, textNode) {
|
|
110
|
-
if (
|
|
111
|
-
return false;
|
|
112
|
-
const editingHost = element.closest("[contenteditable]");
|
|
113
|
-
if (editingHost
|
|
114
|
-
&& editingHost.getAttribute("data-inline-editor") !== "true"
|
|
115
|
-
&& editingHost.getAttribute("contenteditable") !== "false")
|
|
88
|
+
if (isUnsafeTextHost(element) || isInApplicationEditingHost(element))
|
|
116
89
|
return false;
|
|
117
90
|
if (element.children.length === 0) {
|
|
118
91
|
const directTextNodes = Array.from(element.childNodes).filter((node) => node.nodeType === 3);
|
|
119
92
|
return directTextNodes.length === 1 && directTextNodes[0] === textNode;
|
|
120
93
|
}
|
|
121
|
-
|
|
122
|
-
return false;
|
|
123
|
-
// A line break is layout structure, not rich text content. When the exact
|
|
124
|
-
// text node is captured, wrapping that node leaves the <br> in place and
|
|
125
|
-
// preserves both lines. Other inline formatting remains rejected because
|
|
126
|
-
// replacing text inside it would silently flatten authored markup.
|
|
127
|
-
for (const descendant of Array.from(element.querySelectorAll("*"))) {
|
|
128
|
-
if (UNSAFE_MIXED_DESCENDANT_TAGS.has(descendant.tagName))
|
|
129
|
-
return false;
|
|
130
|
-
const descendantEditingHost = descendant.closest("[contenteditable]");
|
|
131
|
-
if (descendantEditingHost
|
|
132
|
-
&& descendantEditingHost.getAttribute("data-inline-editor") !== "true"
|
|
133
|
-
&& descendantEditingHost.getAttribute("contenteditable") !== "false")
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
return true;
|
|
94
|
+
return element.contains(textNode) && hasSafeMixedDescendants(element);
|
|
137
95
|
}
|
|
138
96
|
function textNodeAtPoint(element, point) {
|
|
139
97
|
const nodes = textNodesFor(element);
|
|
@@ -177,9 +135,8 @@ function mountedCountFor(element, target) {
|
|
|
177
135
|
const mountedCount = callsiteMultiplicity(target);
|
|
178
136
|
if (mountedCount !== null)
|
|
179
137
|
return mountedCount;
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
// 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.
|
|
183
140
|
return hasUniqueInvocationEvidence(element, target.meta.callsiteId) ? 1 : null;
|
|
184
141
|
}
|
|
185
142
|
function candidatesForText(element, renderedText) {
|
|
@@ -229,10 +186,8 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
|
|
|
229
186
|
}
|
|
230
187
|
const componentTarget = semantic?.target ?? inspectComponentTargets(element)[0];
|
|
231
188
|
const semanticProperty = semantic?.property;
|
|
232
|
-
// A component target is
|
|
233
|
-
//
|
|
234
|
-
// nearest boundary is the enclosing component invocation, so the element's
|
|
235
|
-
// 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.
|
|
236
191
|
const elementDataSrc = element.getAttribute("data-src");
|
|
237
192
|
const elementSource = parseRenderedSource(elementDataSrc ?? "");
|
|
238
193
|
const matchingComponentTarget = componentTarget
|
|
@@ -280,7 +235,6 @@ function renderedTextCandidate(element, textNode, before, semantic, requireUniqu
|
|
|
280
235
|
element,
|
|
281
236
|
textNode,
|
|
282
237
|
before,
|
|
283
|
-
// Keep this private metadata on the candidate for canonical source data.
|
|
284
238
|
renderedSource: {
|
|
285
239
|
file: source.file,
|
|
286
240
|
line: source.line,
|
|
@@ -331,11 +285,6 @@ function parseRenderedSource(src) {
|
|
|
331
285
|
return { file: src, line: 0, column: 0 };
|
|
332
286
|
return { file: match[1] ?? src, line: Number(match[2]), column: Number(match[3]) };
|
|
333
287
|
}
|
|
334
|
-
/**
|
|
335
|
-
* Compatibility evidence for adapters that predate the mounted-count seam.
|
|
336
|
-
* React itself reports multiplicity through the runtime Adapter registry; this
|
|
337
|
-
* fallback is only a one-root proof and is never used to pick an occurrence.
|
|
338
|
-
*/
|
|
339
288
|
function hasUniqueInvocationEvidence(element, callsiteId) {
|
|
340
289
|
const nodes = Array.from(element.ownerDocument.querySelectorAll("[data-cid]"));
|
|
341
290
|
const matches = new Set();
|
|
@@ -366,11 +315,7 @@ function hasUniqueInvocationEvidence(element, callsiteId) {
|
|
|
366
315
|
}
|
|
367
316
|
return roots === 1;
|
|
368
317
|
}
|
|
369
|
-
/**
|
|
370
|
-
* Resolves only a confidently matched semantic string binding. Text nodes and
|
|
371
|
-
* the temporary editor host are not identity: the returned component target is
|
|
372
|
-
* the durable callsite used by the canonical component-prop record.
|
|
373
|
-
*/
|
|
318
|
+
/** Text nodes and the temporary editor host are not identity; the returned callsite is the durable one. */
|
|
374
319
|
export function resolveTextBinding(element, point) {
|
|
375
320
|
if (isApplicationEditingHost(element)) {
|
|
376
321
|
return {
|
|
@@ -379,11 +324,9 @@ export function resolveTextBinding(element, point) {
|
|
|
379
324
|
message: "Application-owned editing surfaces are not managed by the inspector.",
|
|
380
325
|
};
|
|
381
326
|
}
|
|
382
|
-
//
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
// its stricter direct-leaf requirement.
|
|
386
|
-
if (isUnsafeSemanticHost(element)) {
|
|
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.
|
|
329
|
+
if (isUnsafeTextHost(element)) {
|
|
387
330
|
return {
|
|
388
331
|
kind: "rejected",
|
|
389
332
|
reason: "unsafe-target",
|
|
@@ -439,9 +382,7 @@ export function resolveTextBinding(element, point) {
|
|
|
439
382
|
renderedSource: rendered?.source,
|
|
440
383
|
};
|
|
441
384
|
});
|
|
442
|
-
//
|
|
443
|
-
// session exposes these choices to the inline chooser and blocks commit
|
|
444
|
-
// until the user picks one.
|
|
385
|
+
// Equal-priority candidates are handed to the inline chooser, never guessed.
|
|
445
386
|
if (choices.length > 1) {
|
|
446
387
|
return {
|
|
447
388
|
binding: firstBinding,
|
|
@@ -463,16 +404,13 @@ export function resolveTextBinding(element, point) {
|
|
|
463
404
|
const authoredAs = authoredAsFor(match.target, match.property);
|
|
464
405
|
const binding = targetBinding(match.target, match.property);
|
|
465
406
|
if (match.mountedCount > 1 && authoredAs !== "literal") {
|
|
466
|
-
// Expressions/spreads are source-logic intent
|
|
467
|
-
//
|
|
468
|
-
// 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.
|
|
469
409
|
return renderedTextCandidate(element, textNode, before, match);
|
|
470
410
|
}
|
|
471
411
|
if (match.mountedCount > 1 && authoredAs === "literal") {
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
// when identical outputs make an instance impossible to distinguish, but
|
|
475
|
-
// 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.
|
|
476
414
|
const rendered = renderedTextCandidate(element, textNode, before, match, false);
|
|
477
415
|
if (!("kind" in rendered)) {
|
|
478
416
|
return {
|
|
@@ -484,10 +422,8 @@ export function resolveTextBinding(element, point) {
|
|
|
484
422
|
scopeChoices: ["rendered-instance", "source-site"],
|
|
485
423
|
};
|
|
486
424
|
}
|
|
487
|
-
//
|
|
488
|
-
//
|
|
489
|
-
// canonical component-prop change and must not be rejected because the
|
|
490
|
-
// 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.
|
|
491
427
|
return {
|
|
492
428
|
binding,
|
|
493
429
|
editableTarget: match.target,
|
|
@@ -499,9 +435,6 @@ export function resolveTextBinding(element, point) {
|
|
|
499
435
|
scopeChoices: ["source-site"],
|
|
500
436
|
};
|
|
501
437
|
}
|
|
502
|
-
// Unique invocation (mountedCount === 1): the callsite is unambiguous, so
|
|
503
|
-
// the source-site edit is always safe and no scope choice is offered. The
|
|
504
|
-
// mountedCount > 1 cases all returned above.
|
|
505
438
|
return {
|
|
506
439
|
binding,
|
|
507
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[];
|