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,9 +1,10 @@
|
|
|
1
|
-
import { getActiveDraftChanges, getDraftChanges } from "../
|
|
1
|
+
import { getActiveDraftChanges, getDraftChanges } from "../drafts/store.js";
|
|
2
2
|
import { inspectRootInvocations } from "../componentSemantics/adapterRegistry.js";
|
|
3
3
|
import { escapeAttrValue } from "./cssEscapes.js";
|
|
4
4
|
import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
5
5
|
import { relocateSourceSite, sourceSiteSelector } from "../selection/sourceSite.js";
|
|
6
6
|
import { isRenderedInstanceOverride } from "../changes/editModel.js";
|
|
7
|
+
import { boundRuntimeEvidence, isRuntimeGeneratedSource, normalizeRuntimeTag, runtimeDomPath } from "../runtime/staticHtmlRuntimeIdentity.js";
|
|
7
8
|
export { isRenderedInstanceOverride, isRenderedInstanceRef } from "../changes/editModel.js";
|
|
8
9
|
const PROJECTION_ATTR = "data-projection-instance";
|
|
9
10
|
let nextOverrideId = 1;
|
|
@@ -28,7 +29,6 @@ function candidates(doc, sourceSite) {
|
|
|
28
29
|
return [];
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
/** Captures conservative, serializable identity at the moment of the action. */
|
|
32
32
|
export function captureRenderedInstance(el) {
|
|
33
33
|
const cid = el.getAttribute("data-cid") ?? "";
|
|
34
34
|
const src = el.getAttribute("data-src") ?? "";
|
|
@@ -45,19 +45,18 @@ export function captureRenderedInstance(el) {
|
|
|
45
45
|
props: el.getAttribute("data-cprops"),
|
|
46
46
|
text: normalizedText(el),
|
|
47
47
|
ariaLabel: el.getAttribute("aria-label"),
|
|
48
|
+
...(isRuntimeGeneratedSource(src) ? {
|
|
49
|
+
tagName: normalizeRuntimeTag(el.tagName),
|
|
50
|
+
domPath: runtimeDomPath(el),
|
|
51
|
+
elementId: boundRuntimeEvidence(el.id || null),
|
|
52
|
+
} : {}),
|
|
48
53
|
},
|
|
49
54
|
};
|
|
50
55
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Resolves exactly one element, or declines to apply. Occurrence documents the
|
|
53
|
-
* captured placement, but structural previews can legitimately change it.
|
|
54
|
-
* Evidence, narrowed by a recorded invocation when present, must therefore
|
|
55
|
-
* identify one current candidate before an edit can be applied.
|
|
56
|
-
*/
|
|
56
|
+
/** Occurrence documents captured placement, but structural previews can change it; evidence must identify exactly one current candidate. */
|
|
57
57
|
export function resolveRenderedInstance(doc, ref) {
|
|
58
58
|
const sourceCandidates = candidates(doc, ref.sourceSite);
|
|
59
59
|
const { props, text, ariaLabel = null, invocation } = ref.locator;
|
|
60
|
-
// An ordinal alone is not an identity for a repeated source site.
|
|
61
60
|
if (!invocation && sourceCandidates.length > 1 && props === null && text === null && ariaLabel === null) {
|
|
62
61
|
return { status: "ambiguous" };
|
|
63
62
|
}
|
|
@@ -78,18 +77,12 @@ export function resolveRenderedInstance(doc, ref) {
|
|
|
78
77
|
}
|
|
79
78
|
if (matchingEvidence.length === 0)
|
|
80
79
|
return { status: "missing" };
|
|
81
|
-
// Evidence alone
|
|
82
|
-
// outputs. This is particularly important for structural anchors: applying
|
|
83
|
-
// one move to an arbitrary identical parent would reorder the wrong group.
|
|
80
|
+
// Evidence alone never chooses between identical outputs; an arbitrary pick would reorder the wrong group.
|
|
84
81
|
if (matchingEvidence.length > 1)
|
|
85
82
|
return { status: "ambiguous" };
|
|
86
83
|
return { status: "resolved", element: matchingEvidence[0] };
|
|
87
84
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Resolves a reference whose source position may have moved since capture.
|
|
90
|
-
* A relocated site still renders matching authored evidence, so an evidence
|
|
91
|
-
* miss there is reported as ambiguous rather than as proof of absence.
|
|
92
|
-
*/
|
|
85
|
+
/** A relocated site still renders matching evidence, so an evidence miss is reported as ambiguous, not missing. */
|
|
93
86
|
export function resolveMovedRenderedInstance(doc, ref) {
|
|
94
87
|
const exact = resolveRenderedInstance(doc, ref);
|
|
95
88
|
if (exact.status !== "missing")
|
|
@@ -101,12 +94,7 @@ export function resolveMovedRenderedInstance(doc, ref) {
|
|
|
101
94
|
const moved = resolveRenderedInstance(doc, { ...ref, sourceSite });
|
|
102
95
|
return moved.status === "missing" ? { status: "ambiguous" } : moved;
|
|
103
96
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Captures identity for a structural target. When evidence matches several
|
|
106
|
-
* identical outputs, the nearest component invocation whose entire output is
|
|
107
|
-
* this element can still identify it. Otherwise the evidence-only reference
|
|
108
|
-
* is returned and resolves as ambiguous.
|
|
109
|
-
*/
|
|
97
|
+
/** Falls back to the nearest component invocation when evidence matches several identical outputs. */
|
|
110
98
|
export function captureStructuralTarget(el) {
|
|
111
99
|
const ref = captureRenderedInstance(el);
|
|
112
100
|
if (!ref || resolveRenderedInstance(el.ownerDocument, ref).status !== "ambiguous")
|
|
@@ -119,7 +107,7 @@ export function captureStructuralTarget(el) {
|
|
|
119
107
|
}
|
|
120
108
|
return ref;
|
|
121
109
|
}
|
|
122
|
-
/**
|
|
110
|
+
/** Ignores the ordinal, which is not identity after a move. */
|
|
123
111
|
export function matchesRenderedInstanceEvidence(el, ref) {
|
|
124
112
|
const { props, text, ariaLabel = null } = ref.locator;
|
|
125
113
|
return (el.getAttribute("data-cid") ?? "") === ref.sourceSite.cid
|
|
@@ -128,14 +116,12 @@ export function matchesRenderedInstanceEvidence(el, ref) {
|
|
|
128
116
|
&& normalizedText(el) === text
|
|
129
117
|
&& el.getAttribute("aria-label") === ariaLabel;
|
|
130
118
|
}
|
|
131
|
-
/** Builds an instance override without changing the element's transient edit scope. */
|
|
132
119
|
export function buildRenderedInstanceOverride(el) {
|
|
133
120
|
const target = captureRenderedInstance(el);
|
|
134
121
|
if (!target)
|
|
135
122
|
return null;
|
|
136
123
|
return buildRenderedInstanceOverrideForTarget(target);
|
|
137
124
|
}
|
|
138
|
-
/** Creates a serializable override for identity that was already validated. */
|
|
139
125
|
export function buildRenderedInstanceOverrideForTarget(target) {
|
|
140
126
|
return {
|
|
141
127
|
id: `override-${crypto.randomUUID?.() ?? nextOverrideId++}`,
|
|
@@ -149,7 +135,6 @@ export function createRenderedInstanceOverride(el) {
|
|
|
149
135
|
transientTargets.set(el, override);
|
|
150
136
|
return override;
|
|
151
137
|
}
|
|
152
|
-
/** Returns an active transient target or the canonical target projected here. */
|
|
153
138
|
export function getRenderedInstanceOverride(el) {
|
|
154
139
|
const transient = transientTargets.get(el);
|
|
155
140
|
if (transient)
|
|
@@ -166,7 +151,6 @@ export function instanceSelector(override) {
|
|
|
166
151
|
const source = sourceSiteSelector(override.target.sourceSite.cid, override.target.sourceSite.src);
|
|
167
152
|
return source ? `${source}[${PROJECTION_ATTR}="${escapeAttrValue(override.id)}"]` : null;
|
|
168
153
|
}
|
|
169
|
-
/** Extracts the distinct canonical targets which renderers must resolve. */
|
|
170
154
|
export function collectRenderedInstanceOverrides(changes) {
|
|
171
155
|
const result = new Map();
|
|
172
156
|
for (const change of changes) {
|
|
@@ -253,10 +237,7 @@ function getDocumentState(doc) {
|
|
|
253
237
|
documentStates.set(doc, state);
|
|
254
238
|
return state;
|
|
255
239
|
}
|
|
256
|
-
/**
|
|
257
|
-
* The document-projection adapter only applies a new canonical snapshot. A
|
|
258
|
-
* later reconciliation changes diagnostics but never starts a reapply loop.
|
|
259
|
-
*/
|
|
240
|
+
/** A later reconciliation changes diagnostics but never starts a reapply loop. */
|
|
260
241
|
export function applyRenderedInstanceProjection(doc, overrides) {
|
|
261
242
|
if (!isNudgeUiDev())
|
|
262
243
|
return [];
|
|
@@ -294,7 +275,6 @@ export function setCanonicalRenderedInstanceOverrides(overrides) {
|
|
|
294
275
|
export function getRenderedInstanceProjectionReports(doc) {
|
|
295
276
|
return reportsByDocument.get(doc) ?? [];
|
|
296
277
|
}
|
|
297
|
-
/** Diagnostics arrive independently when a renderer reports or React reconciles. */
|
|
298
278
|
export function subscribeRenderedInstanceDiagnostics(listener) {
|
|
299
279
|
diagnosticListeners.add(listener);
|
|
300
280
|
return () => diagnosticListeners.delete(listener);
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import type { FrameProjection } from "../canvas/projection.js";
|
|
2
2
|
import type { StructuralChange, StructuralDelete, StructuralMove, StructuralProjectionReason, StructuralProjectionReport } from "../changes/structuralTypes.js";
|
|
3
3
|
export { isStructuralChange, isStructuralDelete, isStructuralMove, isStructuralProjectionReport, } from "./structuralProjectionBoundary.js";
|
|
4
|
-
/**
|
|
5
|
-
* Controller-owned structural intent. It contains no DOM node, placeholder,
|
|
6
|
-
* position, or renderer-local identity. Each document resolves a snapshot for
|
|
7
|
-
* itself and keeps any physical preview artefacts private to that document.
|
|
8
|
-
*/
|
|
4
|
+
/** Canonical intent carries no DOM node, placeholder, or renderer-local identity; each document keeps its own preview artefacts. */
|
|
9
5
|
export type { StructuralChange, StructuralDelete, StructuralMove, StructuralProjectionReason, StructuralProjectionReport, StructuralProjectionStatus, } from "../changes/structuralTypes.js";
|
|
10
|
-
/** Conservative HTML containment policy shared by gesture and projection code. */
|
|
11
6
|
export declare function canContainElement(parent: HTMLElement, child: HTMLElement): boolean;
|
|
12
7
|
export type StructuralMoveLegality = {
|
|
13
8
|
valid: true;
|
|
@@ -18,11 +13,7 @@ export type StructuralMoveLegality = {
|
|
|
18
13
|
valid: false;
|
|
19
14
|
reason: StructuralProjectionReason;
|
|
20
15
|
};
|
|
21
|
-
/**
|
|
22
|
-
* Applies the one conservative move policy used by guide calculation, commit,
|
|
23
|
-
* and resolved document projection. The returned elements are document-local
|
|
24
|
-
* and must never be stored in canonical structural intent.
|
|
25
|
-
*/
|
|
16
|
+
/** Returned elements are document-local and must never be stored in canonical intent. */
|
|
26
17
|
export declare function getStructuralMoveLegality(element: HTMLElement, destination: {
|
|
27
18
|
parent: HTMLElement;
|
|
28
19
|
before: Node | null;
|
|
@@ -32,65 +23,33 @@ export interface StructuralChangeDiagnostic extends StructuralProjectionReport {
|
|
|
32
23
|
}
|
|
33
24
|
/** Returns bounded view state used to verify a delete in the same rendered view. */
|
|
34
25
|
export declare function documentStateKey(doc: Document, excluded?: HTMLElement): string | undefined;
|
|
35
|
-
/** Captures a delete intent once, in the controller, at the user gesture. */
|
|
36
26
|
export declare function createStructuralDelete(element: HTMLElement, id?: string): StructuralDelete | null;
|
|
37
|
-
/**
|
|
38
|
-
* Capture a move only when every address can be represented by durable
|
|
39
|
-
* rendered-instance references. Local DOM positions are deliberately never a
|
|
40
|
-
* fallback: a missed preview is safer than moving the wrong item.
|
|
41
|
-
*/
|
|
27
|
+
/** Local DOM positions are never a fallback: a missed preview beats moving the wrong item. */
|
|
42
28
|
export declare function createStructuralMove(element: HTMLElement, destination: {
|
|
43
29
|
parent: HTMLElement;
|
|
44
30
|
before: Node | null;
|
|
45
31
|
}, id?: string): StructuralMove | null;
|
|
46
32
|
export declare function getStructuralChanges(): readonly StructuralChange[];
|
|
47
33
|
export declare function getStructuralDeletes(): readonly StructuralDelete[];
|
|
48
|
-
/** Revert removes one canonical intent and leaves every other intent intact. */
|
|
49
34
|
export declare function revertStructuralChange(changeId: string): boolean;
|
|
50
|
-
/**
|
|
51
|
-
* Removes source-verified structural intents without leaving an undo path that
|
|
52
|
-
* can recreate their browser-only previews.
|
|
53
|
-
*
|
|
54
|
-
* Agent completion can verify a subset of one dispatched snapshot. The
|
|
55
|
-
* remaining records and their useful history stay intact while every verified
|
|
56
|
-
* ID is pruned from canonical state, undo/redo snapshots, and Canvas reports.
|
|
57
|
-
*/
|
|
58
|
-
export declare function reconcileVerifiedStructuralChanges(verifiedIds: ReadonlySet<string>): number;
|
|
59
35
|
/** State changes drive controller-to-renderer projection. Diagnostics do not. */
|
|
60
36
|
export declare function subscribeStructuralChanges(listener: () => void): () => void;
|
|
61
37
|
/** Compatibility name retained while the controller moved to a full union. */
|
|
62
38
|
export declare const subscribeStructuralDeletes: typeof subscribeStructuralChanges;
|
|
63
|
-
/** Diagnostics change after host/frame resolution or a one-shot conflict check. */
|
|
64
39
|
export declare function subscribeStructuralDiagnostics(listener: () => void): () => void;
|
|
65
|
-
/** Monotonic snapshot for React consumers of document-local diagnostics. */
|
|
66
40
|
export declare function getStructuralDiagnosticRevision(): number;
|
|
67
|
-
/**
|
|
68
|
-
* Apply one full controller snapshot to one document. Physical nodes and
|
|
69
|
-
* placeholders stay in the document state only; history stays serializable in
|
|
70
|
-
* the controller. A same snapshot never reapplies an overridden preview.
|
|
71
|
-
*/
|
|
41
|
+
/** Physical nodes stay document-local; an unchanged snapshot never reapplies an overridden preview. */
|
|
72
42
|
export declare function applyStructuralProjection(doc: Document, snapshot: readonly StructuralChange[]): StructuralProjectionReport[];
|
|
73
|
-
/** Compatibility entry point for
|
|
43
|
+
/** Compatibility entry point for delete-only callers. */
|
|
74
44
|
export declare function applyStructuralDeleteProjection(doc: Document, snapshot: readonly StructuralDelete[]): StructuralProjectionReport[];
|
|
75
45
|
export declare function getStructuralProjectionReports(doc: Document): readonly StructuralProjectionReport[];
|
|
76
|
-
/**
|
|
77
|
-
* Frames may report only their document-local outcome. The controller owns
|
|
78
|
-
* these reports and filters them against its current canonical change set.
|
|
79
|
-
*/
|
|
46
|
+
/** Frames report document-local outcomes; the controller filters them against its canonical change set. */
|
|
80
47
|
export declare function recordCanvasStructuralProjectionReports(cardId: string, revision: number, reports: readonly StructuralProjectionReport[], projection?: FrameProjection): void;
|
|
81
48
|
export declare function clearCanvasStructuralProjectionReports(cardId: string): void;
|
|
82
|
-
/** Removes document-local reports for canonical intents that no longer exist. */
|
|
83
49
|
export declare function pruneStructuralProjectionReports(changeIds: ReadonlySet<string>): void;
|
|
84
|
-
/** Clears reports before restoring or clearing an atomic workspace snapshot. */
|
|
85
50
|
export declare function clearStructuralProjectionReports(): void;
|
|
86
51
|
export declare function getStructuralChangeDiagnostics(changeId: string): StructuralChangeDiagnostic[];
|
|
87
52
|
/** Controller teardown/test hook. It is not a user-visible history operation. */
|
|
88
53
|
export declare function resetStructuralDeleteProjection(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Releases one document's structural projection without touching canonical
|
|
91
|
-
* workspace intent. Applied deletes/moves owned by this document are restored
|
|
92
|
-
* and the document observer is disconnected; the controller snapshot stays
|
|
93
|
-
* intact so a later remount can re-project from canonical state. Register as
|
|
94
|
-
* a document-session cleanup alongside disposeBrowserCssInspection.
|
|
95
|
-
*/
|
|
54
|
+
/** Restores this document's previews and disconnects its observer; canonical intent stays intact for a later remount. */
|
|
96
55
|
export declare function releaseDocumentProjection(doc: Document): void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { getActiveDraftChanges, getDraftChanges } from "../
|
|
1
|
+
import { commitStructuralChange, getActiveDraftChanges, getDraftChanges, revertStructuralChange as revertDraftStructuralChange, subscribeActiveDraftChanges, } from "../drafts/store.js";
|
|
2
2
|
import { captureRenderedInstance, captureStructuralTarget, matchesRenderedInstanceEvidence, resolveRenderedInstance, } from "./renderedInstance.js";
|
|
3
3
|
import { isStructuralProjectionReport } from "./structuralProjectionBoundary.js";
|
|
4
|
-
import { resetDraftChanges, draftChangeStore, } from "../changes/draftChanges.js";
|
|
5
4
|
export { isStructuralChange, isStructuralDelete, isStructuralMove, isStructuralProjectionReport, } from "./structuralProjectionBoundary.js";
|
|
6
5
|
const VOID_PARENT_TAGS = new Set([
|
|
7
6
|
"area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr",
|
|
@@ -24,7 +23,6 @@ function isUnsupportedWrappedFlexRow(element) {
|
|
|
24
23
|
&& (style.flexDirection || "row").startsWith("row")
|
|
25
24
|
&& Boolean(style.flexWrap && style.flexWrap !== "nowrap");
|
|
26
25
|
}
|
|
27
|
-
/** Conservative HTML containment policy shared by gesture and projection code. */
|
|
28
26
|
export function canContainElement(parent, child) {
|
|
29
27
|
const parentTag = parent.tagName.toLowerCase();
|
|
30
28
|
if (VOID_PARENT_TAGS.has(parentTag)
|
|
@@ -34,11 +32,7 @@ export function canContainElement(parent, child) {
|
|
|
34
32
|
return false;
|
|
35
33
|
return !PHRASING_PARENT_TAGS.has(parentTag) || isPhrasingElement(child);
|
|
36
34
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Applies the one conservative move policy used by guide calculation, commit,
|
|
39
|
-
* and resolved document projection. The returned elements are document-local
|
|
40
|
-
* and must never be stored in canonical structural intent.
|
|
41
|
-
*/
|
|
35
|
+
/** Returned elements are document-local and must never be stored in canonical intent. */
|
|
42
36
|
export function getStructuralMoveLegality(element, destination) {
|
|
43
37
|
if (!element.isConnected)
|
|
44
38
|
return { valid: false, reason: "target" };
|
|
@@ -109,8 +103,10 @@ function documentRoute(doc) {
|
|
|
109
103
|
}
|
|
110
104
|
}
|
|
111
105
|
function stableStateValue(value, seen = new WeakSet()) {
|
|
112
|
-
if (
|
|
106
|
+
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
113
107
|
return value;
|
|
108
|
+
if (typeof value !== "object")
|
|
109
|
+
return String(value);
|
|
114
110
|
if (seen.has(value))
|
|
115
111
|
return "[Circular]";
|
|
116
112
|
seen.add(value);
|
|
@@ -173,14 +169,15 @@ export function documentStateKey(doc, excluded) {
|
|
|
173
169
|
}
|
|
174
170
|
}
|
|
175
171
|
function cloneSnapshot(snapshot) {
|
|
176
|
-
//
|
|
177
|
-
// array is enough: no operation mutates a change or its nested references.
|
|
172
|
+
// Shallow clone is enough: no operation mutates a change or its nested references.
|
|
178
173
|
return [...snapshot];
|
|
179
174
|
}
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
/** The Draft store already re-projected the host; this covers every other known document. */
|
|
176
|
+
function projectStructuralChanges() {
|
|
177
|
+
const changes = getStructuralChanges();
|
|
178
|
+
for (const doc of documentStates.keys())
|
|
179
|
+
applyStructuralProjection(doc, changes);
|
|
182
180
|
}
|
|
183
|
-
/** Captures a delete intent once, in the controller, at the user gesture. */
|
|
184
181
|
export function createStructuralDelete(element, id = structuralId()) {
|
|
185
182
|
const target = captureStructuralTarget(element);
|
|
186
183
|
if (!target)
|
|
@@ -194,16 +191,12 @@ export function createStructuralDelete(element, id = structuralId()) {
|
|
|
194
191
|
...(route ? { route } : {}),
|
|
195
192
|
...(state ? { state } : {}),
|
|
196
193
|
};
|
|
197
|
-
if (!
|
|
194
|
+
if (!commitStructuralChange(change))
|
|
198
195
|
return null;
|
|
199
|
-
projectStructuralChanges(
|
|
196
|
+
projectStructuralChanges();
|
|
200
197
|
return change;
|
|
201
198
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Capture a move only when every address can be represented by durable
|
|
204
|
-
* rendered-instance references. Local DOM positions are deliberately never a
|
|
205
|
-
* fallback: a missed preview is safer than moving the wrong item.
|
|
206
|
-
*/
|
|
199
|
+
/** Local DOM positions are never a fallback: a missed preview beats moving the wrong item. */
|
|
207
200
|
export function createStructuralMove(element, destination, id = structuralId()) {
|
|
208
201
|
const legality = getStructuralMoveLegality(element, destination);
|
|
209
202
|
if (!legality.valid)
|
|
@@ -237,60 +230,33 @@ export function createStructuralMove(element, destination, id = structuralId())
|
|
|
237
230
|
: destinationChildren.length - (sameParent ? 1 : 0),
|
|
238
231
|
},
|
|
239
232
|
};
|
|
240
|
-
if (!
|
|
233
|
+
if (!commitStructuralChange(change))
|
|
241
234
|
return null;
|
|
242
|
-
projectStructuralChanges(
|
|
235
|
+
projectStructuralChanges();
|
|
243
236
|
return change;
|
|
244
237
|
}
|
|
245
238
|
export function getStructuralChanges() {
|
|
246
|
-
return
|
|
239
|
+
return getActiveDraftChanges().structuralChanges;
|
|
247
240
|
}
|
|
248
241
|
export function getStructuralDeletes() {
|
|
249
242
|
return getStructuralChanges().filter((change) => change.kind === "delete");
|
|
250
243
|
}
|
|
251
|
-
/** Revert removes one canonical intent and leaves every other intent intact. */
|
|
252
244
|
export function revertStructuralChange(changeId) {
|
|
253
|
-
const changed =
|
|
245
|
+
const changed = revertDraftStructuralChange(changeId);
|
|
254
246
|
if (changed)
|
|
255
|
-
projectStructuralChanges(
|
|
247
|
+
projectStructuralChanges();
|
|
256
248
|
return changed;
|
|
257
249
|
}
|
|
258
|
-
/**
|
|
259
|
-
* Removes source-verified structural intents without leaving an undo path that
|
|
260
|
-
* can recreate their browser-only previews.
|
|
261
|
-
*
|
|
262
|
-
* Agent completion can verify a subset of one dispatched snapshot. The
|
|
263
|
-
* remaining records and their useful history stay intact while every verified
|
|
264
|
-
* ID is pruned from canonical state, undo/redo snapshots, and Canvas reports.
|
|
265
|
-
*/
|
|
266
|
-
export function reconcileVerifiedStructuralChanges(verifiedIds) {
|
|
267
|
-
if (verifiedIds.size === 0)
|
|
268
|
-
return 0;
|
|
269
|
-
const removed = draftChangeStore.reconcileActiveDraftChanges(new Set(), verifiedIds);
|
|
270
|
-
if (removed === 0)
|
|
271
|
-
return 0;
|
|
272
|
-
projectStructuralChanges(draftChangeStore.getSnapshot());
|
|
273
|
-
for (const [cardId, canvasReports] of reportsByCanvasCard) {
|
|
274
|
-
reportsByCanvasCard.set(cardId, {
|
|
275
|
-
...canvasReports,
|
|
276
|
-
reports: canvasReports.reports.filter((report) => !verifiedIds.has(report.changeId)),
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
notifyDiagnostics();
|
|
280
|
-
return removed;
|
|
281
|
-
}
|
|
282
250
|
/** State changes drive controller-to-renderer projection. Diagnostics do not. */
|
|
283
251
|
export function subscribeStructuralChanges(listener) {
|
|
284
|
-
return
|
|
252
|
+
return subscribeActiveDraftChanges(listener);
|
|
285
253
|
}
|
|
286
254
|
/** Compatibility name retained while the controller moved to a full union. */
|
|
287
255
|
export const subscribeStructuralDeletes = subscribeStructuralChanges;
|
|
288
|
-
/** Diagnostics change after host/frame resolution or a one-shot conflict check. */
|
|
289
256
|
export function subscribeStructuralDiagnostics(listener) {
|
|
290
257
|
diagnosticListeners.add(listener);
|
|
291
258
|
return () => diagnosticListeners.delete(listener);
|
|
292
259
|
}
|
|
293
|
-
/** Monotonic snapshot for React consumers of document-local diagnostics. */
|
|
294
260
|
export function getStructuralDiagnosticRevision() {
|
|
295
261
|
return diagnosticRevision;
|
|
296
262
|
}
|
|
@@ -311,6 +277,7 @@ function getDocumentState(doc) {
|
|
|
311
277
|
return state;
|
|
312
278
|
}
|
|
313
279
|
function installDocumentObserver(doc, state) {
|
|
280
|
+
// SAFETY: attaches are read from the document's own realm so cross-origin frames use their own MutationObserver.
|
|
314
281
|
const viewWithObserver = doc.defaultView;
|
|
315
282
|
const Observer = viewWithObserver?.MutationObserver
|
|
316
283
|
?? (typeof MutationObserver !== "undefined" ? MutationObserver : undefined);
|
|
@@ -338,14 +305,10 @@ function scheduleValidation(doc, state) {
|
|
|
338
305
|
state.validationQueued = true;
|
|
339
306
|
queueMicrotask(() => {
|
|
340
307
|
state.validationQueued = false;
|
|
341
|
-
//
|
|
342
|
-
// mounted. Retry unresolved records after that tree changes so a valid
|
|
343
|
-
// late mount converges without requiring another controller message.
|
|
308
|
+
// Retry unresolved records when the tree changes so a late-mounting renderer converges without another controller message.
|
|
344
309
|
if (hasUnresolvedAppliedChange(state)) {
|
|
345
310
|
rebuildForSnapshot(doc, state, state.snapshot, false);
|
|
346
|
-
// The replay is synchronous, so
|
|
347
|
-
// interleave with it. Discard only the records produced by the replay;
|
|
348
|
-
// future renderer mutations remain observed and can trigger another try.
|
|
311
|
+
// The replay is synchronous, so discarding its records only drops the replay's own mutations.
|
|
349
312
|
state.observer?.takeRecords();
|
|
350
313
|
storeReports(doc, reportsForSnapshot(state, state.snapshot));
|
|
351
314
|
return;
|
|
@@ -379,8 +342,7 @@ function restoreApplied(local) {
|
|
|
379
342
|
if (local.kind === "unresolved")
|
|
380
343
|
return;
|
|
381
344
|
if (local.kind === "delete") {
|
|
382
|
-
//
|
|
383
|
-
// detached node. The observer will (or already did) report overridden.
|
|
345
|
+
// Never reinsert a stale detached node when React already replaced our placeholder.
|
|
384
346
|
if (local.placeholder.isConnected)
|
|
385
347
|
local.placeholder.replaceWith(local.element);
|
|
386
348
|
return;
|
|
@@ -391,8 +353,7 @@ function restoreApplied(local) {
|
|
|
391
353
|
local.fromParent.insertBefore(local.element, anchor);
|
|
392
354
|
}
|
|
393
355
|
function rebuildForSnapshot(doc, state, snapshot, schedulePostReplayValidation = true) {
|
|
394
|
-
// React may have changed a projected node before its mutation callback ran.
|
|
395
|
-
// Validate synchronously so a rebuild never restores a framework-owned node.
|
|
356
|
+
// React may have changed a projected node before its mutation callback ran; validate before rebuilding.
|
|
396
357
|
validateAppliedPreview(doc, state);
|
|
397
358
|
const activeIds = new Set(snapshot.map((change) => change.id));
|
|
398
359
|
const retainedOverrides = new Map();
|
|
@@ -400,9 +361,7 @@ function rebuildForSnapshot(doc, state, snapshot, schedulePostReplayValidation =
|
|
|
400
361
|
if (local.status === "overridden" && activeIds.has(id))
|
|
401
362
|
retainedOverrides.set(id, local);
|
|
402
363
|
}
|
|
403
|
-
// Undo in reverse
|
|
404
|
-
// baseline before replaying the desired canonical sequence. This is what
|
|
405
|
-
// makes reverting an earlier move correct when later moves remain.
|
|
364
|
+
// Undo in reverse order to reconstruct the source baseline; this is what makes reverting an earlier move correct when later moves remain.
|
|
406
365
|
for (const id of [...state.appliedOrder].reverse()) {
|
|
407
366
|
const local = state.applied.get(id);
|
|
408
367
|
if (local && local.status !== "overridden")
|
|
@@ -418,8 +377,7 @@ function rebuildForSnapshot(doc, state, snapshot, schedulePostReplayValidation =
|
|
|
418
377
|
continue;
|
|
419
378
|
applyChangeToDocument(doc, state, change);
|
|
420
379
|
}
|
|
421
|
-
//
|
|
422
|
-
// operations have replayed, rather than the transient first insertion.
|
|
380
|
+
// Verify the final placement after all later canonical operations replayed, not the transient first insertion.
|
|
423
381
|
for (const local of state.applied.values()) {
|
|
424
382
|
if (local.kind === "move" && local.status === "applied") {
|
|
425
383
|
local.expectedParent = local.element.parentElement ?? local.expectedParent;
|
|
@@ -503,13 +461,6 @@ function validationStatus(local) {
|
|
|
503
461
|
? "applied"
|
|
504
462
|
: "overridden";
|
|
505
463
|
}
|
|
506
|
-
/** Rebuild already-mounted document adapters from canonical data only. */
|
|
507
|
-
function reprojectKnownDocuments(changes = getStructuralChanges()) {
|
|
508
|
-
for (const [doc, state] of documentStates) {
|
|
509
|
-
rebuildForSnapshot(doc, state, changes);
|
|
510
|
-
storeReports(doc, reportsForSnapshot(state, state.snapshot));
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
464
|
function validateAppliedPreview(doc, state) {
|
|
514
465
|
let changed = false;
|
|
515
466
|
for (const local of state.applied.values()) {
|
|
@@ -525,11 +476,7 @@ function validateAppliedPreview(doc, state) {
|
|
|
525
476
|
return;
|
|
526
477
|
storeReports(doc, reportsForSnapshot(state, state.snapshot));
|
|
527
478
|
}
|
|
528
|
-
/**
|
|
529
|
-
* Apply one full controller snapshot to one document. Physical nodes and
|
|
530
|
-
* placeholders stay in the document state only; history stays serializable in
|
|
531
|
-
* the controller. A same snapshot never reapplies an overridden preview.
|
|
532
|
-
*/
|
|
479
|
+
/** Physical nodes stay document-local; an unchanged snapshot never reapplies an overridden preview. */
|
|
533
480
|
export function applyStructuralProjection(doc, snapshot) {
|
|
534
481
|
const state = getDocumentState(doc);
|
|
535
482
|
const key = JSON.stringify(snapshot);
|
|
@@ -539,17 +486,14 @@ export function applyStructuralProjection(doc, snapshot) {
|
|
|
539
486
|
storeReports(doc, reports);
|
|
540
487
|
return reports;
|
|
541
488
|
}
|
|
542
|
-
/** Compatibility entry point for
|
|
489
|
+
/** Compatibility entry point for delete-only callers. */
|
|
543
490
|
export function applyStructuralDeleteProjection(doc, snapshot) {
|
|
544
491
|
return applyStructuralProjection(doc, snapshot);
|
|
545
492
|
}
|
|
546
493
|
export function getStructuralProjectionReports(doc) {
|
|
547
494
|
return reportsByDocument.get(doc) ?? [];
|
|
548
495
|
}
|
|
549
|
-
/**
|
|
550
|
-
* Frames may report only their document-local outcome. The controller owns
|
|
551
|
-
* these reports and filters them against its current canonical change set.
|
|
552
|
-
*/
|
|
496
|
+
/** Frames report document-local outcomes; the controller filters them against its canonical change set. */
|
|
553
497
|
export function recordCanvasStructuralProjectionReports(cardId, revision, reports, projection) {
|
|
554
498
|
if (!Number.isSafeInteger(revision) || revision < 0 || !reports.every(isStructuralProjectionReport))
|
|
555
499
|
return;
|
|
@@ -572,7 +516,6 @@ export function clearCanvasStructuralProjectionReports(cardId) {
|
|
|
572
516
|
return;
|
|
573
517
|
notifyDiagnostics();
|
|
574
518
|
}
|
|
575
|
-
/** Removes document-local reports for canonical intents that no longer exist. */
|
|
576
519
|
export function pruneStructuralProjectionReports(changeIds) {
|
|
577
520
|
if (changeIds.size === 0)
|
|
578
521
|
return;
|
|
@@ -584,7 +527,6 @@ export function pruneStructuralProjectionReports(changeIds) {
|
|
|
584
527
|
}
|
|
585
528
|
notifyDiagnostics();
|
|
586
529
|
}
|
|
587
|
-
/** Clears reports before restoring or clearing an atomic workspace snapshot. */
|
|
588
530
|
export function clearStructuralProjectionReports() {
|
|
589
531
|
reportsByCanvasCard.clear();
|
|
590
532
|
reportsByDocument = new WeakMap();
|
|
@@ -619,16 +561,9 @@ export function resetStructuralDeleteProjection() {
|
|
|
619
561
|
reportsByCanvasCard.clear();
|
|
620
562
|
nextStructuralId = 1;
|
|
621
563
|
diagnosticRevision = 0;
|
|
622
|
-
resetDraftChanges();
|
|
623
564
|
notifyDiagnostics();
|
|
624
565
|
}
|
|
625
|
-
/**
|
|
626
|
-
* Releases one document's structural projection without touching canonical
|
|
627
|
-
* workspace intent. Applied deletes/moves owned by this document are restored
|
|
628
|
-
* and the document observer is disconnected; the controller snapshot stays
|
|
629
|
-
* intact so a later remount can re-project from canonical state. Register as
|
|
630
|
-
* a document-session cleanup alongside disposeBrowserCssInspection.
|
|
631
|
-
*/
|
|
566
|
+
/** Restores this document's previews and disconnects its observer; canonical intent stays intact for a later remount. */
|
|
632
567
|
export function releaseDocumentProjection(doc) {
|
|
633
568
|
const state = documentStates.get(doc);
|
|
634
569
|
if (!state) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { FrameProjection } from "../canvas/projection.js";
|
|
2
|
-
import { isTextProjectionTargetValue, type TextContentChangeRecord, type TextProjectionTarget, type TextProjectionScope, type TextBindingEvidence } from "../
|
|
2
|
+
import { isTextProjectionTargetValue, type TextContentChangeRecord, type TextProjectionTarget, type TextProjectionScope, type TextBindingEvidence } from "../changes/editModel.js";
|
|
3
3
|
/** Strict JSON boundary guard for a text projection target. */
|
|
4
4
|
export declare const isTextProjectionTarget: typeof isTextProjectionTargetValue;
|
|
5
|
-
export type { TextProjectionTarget } from "../
|
|
5
|
+
export type { TextProjectionTarget } from "../changes/editModel.js";
|
|
6
6
|
export type TextProjectionStatus = "applied" | "missing" | "ambiguous" | "overridden";
|
|
7
7
|
export interface TextProjectionReport {
|
|
8
8
|
changeId: string;
|
|
@@ -17,7 +17,6 @@ export interface TextContentProjectionDiagnostic extends TextProjectionReport {
|
|
|
17
17
|
export declare const TEXT_PROJECTION_ATTR = "data-projection-text";
|
|
18
18
|
/** Inspector-owned hit target for a projected text node whose value is empty. */
|
|
19
19
|
export declare const EMPTY_TEXT_PROJECTION_ATTR = "data-empty-text";
|
|
20
|
-
/** Inspector-owned exact-node evidence paired with EMPTY_TEXT_PROJECTION_ATTR. */
|
|
21
20
|
export declare const EMPTY_TEXT_PROJECTION_PATH_ATTR = "data-empty-text-path";
|
|
22
21
|
export type TextProjectionResolution = {
|
|
23
22
|
status: "resolved";
|
|
@@ -27,22 +26,17 @@ export type TextProjectionResolution = {
|
|
|
27
26
|
} | {
|
|
28
27
|
status: "ambiguous";
|
|
29
28
|
};
|
|
30
|
-
/**
|
|
31
|
-
* child path only when one bounded before/after text node remains unique. */
|
|
29
|
+
/** Tolerates a changed child path only when one before/after text node remains unique. */
|
|
32
30
|
export declare function resolveTextProjectionTextNode(element: HTMLElement, target: Pick<TextProjectionTarget, "textNodePath"> & Partial<Pick<TextProjectionTarget, "beforeText">>, expectedText?: string | undefined): Text | null;
|
|
33
|
-
|
|
31
|
+
export declare function isUnsafeTextHost(element: Element): boolean;
|
|
32
|
+
export declare function isInApplicationEditingHost(element: Element): boolean;
|
|
33
|
+
export declare function hasSafeMixedDescendants(element: HTMLElement): boolean;
|
|
34
34
|
export declare function captureTextProjectionTarget(element: HTMLElement, beforeText?: string, selectedTextNode?: Text): TextProjectionTarget | null;
|
|
35
|
-
/**
|
|
36
|
-
* Resolve against source identity and bounded evidence. Occurrence is kept as
|
|
37
|
-
* presentation metadata only and is never used to choose among identical
|
|
38
|
-
* repeated outputs.
|
|
39
|
-
*/
|
|
35
|
+
/** Occurrence is presentation metadata only; identical repeated outputs resolve as ambiguous. */
|
|
40
36
|
export declare function resolveTextProjectionTarget(doc: Document, target: TextProjectionTarget, afterText?: string): TextProjectionResolution;
|
|
41
37
|
export declare function textProjectionSelector(target: TextProjectionTarget): string | null;
|
|
42
38
|
export declare function collectTextContentChanges(changes: ReadonlyArray<unknown>): TextContentChangeRecord[];
|
|
43
|
-
/** Returns the canonical record represented by an inspector empty-text slot. */
|
|
44
39
|
export declare function getTextContentChangeById(changeId: string): TextContentChangeRecord | null;
|
|
45
|
-
/** Apply one controller-owned text snapshot to a document adapter. */
|
|
46
40
|
export declare function applyTextContentProjection(doc: Document, changes: ReadonlyArray<TextContentChangeRecord>): TextProjectionReport[];
|
|
47
41
|
/** Registers controller-owned text changes without projecting them into the editor shell. */
|
|
48
42
|
export declare function setCanonicalTextContentChanges(changes: ReadonlyArray<TextContentChangeRecord>): void;
|