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,13 +1,11 @@
|
|
|
1
|
-
import { draftIdForCard } from "../drafts/store.js";
|
|
2
|
-
import { isPreviewableChange, isTokenChange, } from "../changes/
|
|
1
|
+
import { draftIdForCard, getActiveDraftChanges } from "../drafts/store.js";
|
|
2
|
+
import { isPreviewableChange, isTokenChange, } from "../changes/types.js";
|
|
3
3
|
import { changeKey } from "../changes/model.js";
|
|
4
4
|
import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, notifyPreviewDiagnostics, publishPreviewDiagnostic, } from "../changes/previewDiagnostics.js";
|
|
5
|
-
import { getActiveDraftChanges } from "../changes/draftChanges.js";
|
|
6
5
|
import { getCanvasPreviewDocument, getRegisteredFrames } from "./projection.js";
|
|
7
|
-
import {
|
|
6
|
+
import { subscribeCanvasRendererMessages } from "./rendererMessageRouter.js";
|
|
8
7
|
import { getCanvasCards } from "./canvasStore.js";
|
|
9
8
|
import { getCanvasMode } from "./viewStore.js";
|
|
10
|
-
import { isRendererMessageFor } from "./frameProtocol.js";
|
|
11
9
|
import { getNudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
|
|
12
10
|
const VERIFICATION_TIMEOUT_MS = 5000;
|
|
13
11
|
const STALE_CHECK_DEBOUNCE_MS = 100;
|
|
@@ -15,6 +13,7 @@ let verificationTimer = null;
|
|
|
15
13
|
let debounceTimer = null;
|
|
16
14
|
let pendingChanges = null;
|
|
17
15
|
let pendingAttempts = new Map();
|
|
16
|
+
let stopFrameReady = null;
|
|
18
17
|
function checkSelectorInDocument(doc, selector) {
|
|
19
18
|
try {
|
|
20
19
|
return doc.querySelectorAll(selector).length > 0;
|
|
@@ -149,10 +148,7 @@ function applyStaleResults(changes, attempts) {
|
|
|
149
148
|
continue;
|
|
150
149
|
}
|
|
151
150
|
const routes = evidence.get(i);
|
|
152
|
-
//
|
|
153
|
-
// staleness. Publish target-missing only when the change matches nowhere;
|
|
154
|
-
// a Canvas-only match is verified, not a host conflict. When nowhere,
|
|
155
|
-
// every live document reports the same miss.
|
|
151
|
+
// Publish target-missing only when no live document matches; a Canvas-only match is verified, not a host conflict.
|
|
156
152
|
if (!routes || routes.length === 0) {
|
|
157
153
|
for (const attempt of attempts.values()) {
|
|
158
154
|
publishPreviewDiagnostic(attempt, changeKey(change), buildStaleResult(change.selector, getRequestedValue(change)));
|
|
@@ -189,22 +185,10 @@ export function startStaleDetection(changes) {
|
|
|
189
185
|
verificationTimer = null;
|
|
190
186
|
notifyPreviewDiagnostics();
|
|
191
187
|
}, VERIFICATION_TIMEOUT_MS);
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return;
|
|
197
|
-
const msg = event.data;
|
|
198
|
-
const frame = findCanvasFrameBySource(event.source);
|
|
199
|
-
if (!frame || !isRendererMessageFor(msg, {
|
|
200
|
-
projectId: PROJECT_ID,
|
|
201
|
-
workspaceId: WORKSPACE_ID,
|
|
202
|
-
cardId: frame.cardId,
|
|
203
|
-
}) || msg.type !== "frame-ready")
|
|
204
|
-
return;
|
|
205
|
-
if (!pendingChanges)
|
|
206
|
-
return;
|
|
207
|
-
scheduleStaleCheck();
|
|
188
|
+
stopFrameReady ??= subscribeCanvasRendererMessages(({ message }) => {
|
|
189
|
+
if (message.type === "frame-ready" && pendingChanges)
|
|
190
|
+
scheduleStaleCheck();
|
|
191
|
+
});
|
|
208
192
|
}
|
|
209
193
|
export function cancelStaleDetection() {
|
|
210
194
|
if (verificationTimer) {
|
|
@@ -217,7 +201,8 @@ export function cancelStaleDetection() {
|
|
|
217
201
|
}
|
|
218
202
|
pendingChanges = null;
|
|
219
203
|
pendingAttempts = new Map();
|
|
220
|
-
|
|
204
|
+
stopFrameReady?.();
|
|
205
|
+
stopFrameReady = null;
|
|
221
206
|
notifyPreviewDiagnostics();
|
|
222
207
|
}
|
|
223
208
|
export function isVerificationPending() {
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keep canvas card controls usable while the board is zoomed out without
|
|
3
|
-
* letting them grow without bound relative to the card.
|
|
4
|
-
*/
|
|
1
|
+
/** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
|
|
5
2
|
export declare const CANVAS_TOOLBAR_MAX_SCALE = 2;
|
|
6
3
|
export declare const CANVAS_TOOLBAR_SCALE_CAP_ZOOM: number;
|
|
7
4
|
export declare function getCanvasToolbarScale(zoom: number): number;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Keep canvas card controls usable while the board is zoomed out without
|
|
3
|
-
* letting them grow without bound relative to the card.
|
|
4
|
-
*/
|
|
1
|
+
/** Keeps card controls usable while the board is zoomed out, without letting them outgrow the card. */
|
|
5
2
|
export const CANVAS_TOOLBAR_MAX_SCALE = 2;
|
|
6
3
|
export const CANVAS_TOOLBAR_SCALE_CAP_ZOOM = 1 / CANVAS_TOOLBAR_MAX_SCALE;
|
|
7
4
|
export function getCanvasToolbarScale(zoom) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type RefObject } from "react";
|
|
2
2
|
import { type CanvasCard } from "./canvasStore.js";
|
|
3
3
|
import { type CanvasCamera, type CanvasPresentation } from "./viewStore.js";
|
|
4
|
-
/** Animates frame creation and layout changes without delaying direct manipulation. */
|
|
5
4
|
export declare function useCanvasLayoutAnimation(boardRef: RefObject<HTMLDivElement | null>, cards: readonly CanvasCard[], camera: CanvasCamera, presentation: CanvasPresentation): void;
|
|
@@ -4,7 +4,6 @@ import {} from "./canvasStore.js";
|
|
|
4
4
|
import { setCanvasLayoutTransitioning } from "./viewStore.js";
|
|
5
5
|
const SLIDE_OPTIONS = { duration: 300, easing: "ease-out" };
|
|
6
6
|
const CAMERA_OPTIONS = { duration: 150, easing: "ease-out" };
|
|
7
|
-
/** Animates frame creation and layout changes without delaying direct manipulation. */
|
|
8
7
|
export function useCanvasLayoutAnimation(boardRef, cards, camera, presentation) {
|
|
9
8
|
const previous = useRef({ cards, camera, presentation });
|
|
10
9
|
const animations = useRef([]);
|
|
@@ -2,7 +2,7 @@ import { useSyncExternalStore } from "react";
|
|
|
2
2
|
export const MIN_CAMERA_ZOOM = 0.25;
|
|
3
3
|
export const MAX_CAMERA_ZOOM = 3;
|
|
4
4
|
export const DEFAULT_CAMERA = { x: 0, y: 0, zoom: 1 };
|
|
5
|
-
/**
|
|
5
|
+
/** Frames, groups, and selection live in the canvas store. */
|
|
6
6
|
let mode = "inspect";
|
|
7
7
|
let presentation = "focus";
|
|
8
8
|
let presentationTransitioning = false;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
|
|
2
2
|
export declare function wheelPanDelta(event: Pick<WheelEvent, "deltaX" | "deltaY" | "deltaMode" | "shiftKey">, viewport: {
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/** deltaMode 1 is lines (16px) and 2 is pages, so both need converting to pixels. */
|
|
2
2
|
export function wheelPanDelta(event, viewport) {
|
|
3
3
|
const xUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.width : 1;
|
|
4
4
|
const yUnit = event.deltaMode === 1 ? 16 : event.deltaMode === 2 ? viewport.height : 1;
|
|
@@ -10,11 +10,7 @@ export declare function acquireLease(): boolean;
|
|
|
10
10
|
export declare function requestTakeover(): boolean;
|
|
11
11
|
/** Enable lease checks for state-changing controller actions in this document. */
|
|
12
12
|
export declare function enableWriteGuard(): void;
|
|
13
|
-
/**
|
|
14
|
-
* Unit-level modules are also used without the browser controller bootstrap.
|
|
15
|
-
* Once the controller enables the guard, only the current lease owner may
|
|
16
|
-
* mutate or persist its canonical workspace state.
|
|
17
|
-
*/
|
|
13
|
+
/** Off by default so unit-level modules work without the controller bootstrap. */
|
|
18
14
|
export declare function canWriteWorkspace(): boolean;
|
|
19
15
|
export declare function releaseLease(): void;
|
|
20
16
|
export declare function hasWriteLease(): boolean;
|
|
@@ -49,7 +49,6 @@ function deleteLease() {
|
|
|
49
49
|
localStorage.removeItem(leaseKey());
|
|
50
50
|
}
|
|
51
51
|
catch {
|
|
52
|
-
/* ignore */
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
export function isLeaseExpired(lease, now = Date.now()) {
|
|
@@ -67,7 +66,6 @@ function notifyOwnershipListeners() {
|
|
|
67
66
|
listener(snapshot);
|
|
68
67
|
}
|
|
69
68
|
catch {
|
|
70
|
-
/* ignore */
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
}
|
|
@@ -149,11 +147,7 @@ export function requestTakeover() {
|
|
|
149
147
|
export function enableWriteGuard() {
|
|
150
148
|
writeGuardEnabled = true;
|
|
151
149
|
}
|
|
152
|
-
/**
|
|
153
|
-
* Unit-level modules are also used without the browser controller bootstrap.
|
|
154
|
-
* Once the controller enables the guard, only the current lease owner may
|
|
155
|
-
* mutate or persist its canonical workspace state.
|
|
156
|
-
*/
|
|
150
|
+
/** Off by default so unit-level modules work without the controller bootstrap. */
|
|
157
151
|
export function canWriteWorkspace() {
|
|
158
152
|
return !writeGuardEnabled || hasWriteLease();
|
|
159
153
|
}
|
|
@@ -34,6 +34,7 @@ export interface SerializableElementChange {
|
|
|
34
34
|
runtimeEvidence?: NonNullable<ElementChangeRecord["runtimeEvidence"]>;
|
|
35
35
|
sourceEvidence?: NonNullable<ElementChangeRecord["sourceEvidence"]>;
|
|
36
36
|
scope?: EditScope;
|
|
37
|
+
sourceInstanceCount?: number;
|
|
37
38
|
instanceOverride?: RenderedInstanceOverride;
|
|
38
39
|
state?: NonNullable<ElementChangeRecord["state"]>;
|
|
39
40
|
}
|
|
@@ -16,7 +16,7 @@ export function isSerializableElementChangeValue(value) {
|
|
|
16
16
|
|| !hasOnlyKeys(value, [
|
|
17
17
|
"kind", "cid", "file", "line", "column", "selector", "property",
|
|
18
18
|
"sourceProperty", "sourceAuthoredValue", "oldToken", "newToken", "rawValue",
|
|
19
|
-
"oldRawValue", "source", "runtimeEvidence", "sourceEvidence", "scope", "instanceOverride", "state",
|
|
19
|
+
"oldRawValue", "source", "runtimeEvidence", "sourceEvidence", "scope", "sourceInstanceCount", "instanceOverride", "state",
|
|
20
20
|
])
|
|
21
21
|
|| (value.kind !== undefined && value.kind !== "element")
|
|
22
22
|
|| typeof value.cid !== "string"
|
|
@@ -35,6 +35,8 @@ export function isSerializableElementChangeValue(value) {
|
|
|
35
35
|
|| (value.runtimeEvidence !== undefined && !isRuntimeElementEvidenceValue(value.runtimeEvidence))
|
|
36
36
|
|| (value.sourceEvidence !== undefined && !isSourceElementEvidenceValue(value.sourceEvidence))
|
|
37
37
|
|| !isEditScopeValue(value.scope)
|
|
38
|
+
|| (value.sourceInstanceCount !== undefined
|
|
39
|
+
&& (!isNonNegativeSafeInteger(value.sourceInstanceCount) || value.sourceInstanceCount < 1))
|
|
38
40
|
|| (value.instanceOverride !== undefined && value.scope !== "rendered-instance")
|
|
39
41
|
|| (value.scope === "rendered-instance" && !isRenderedInstanceOverride(value.instanceOverride))
|
|
40
42
|
|| (value.state !== undefined && !isElementStateValue(value.state))) {
|
|
@@ -118,6 +120,7 @@ export function serializeElementChange(change) {
|
|
|
118
120
|
runtimeEvidence: change.runtimeEvidence ? { ...change.runtimeEvidence } : undefined,
|
|
119
121
|
sourceEvidence: change.sourceEvidence ? { ...change.sourceEvidence } : undefined,
|
|
120
122
|
scope: change.scope === "rendered-instance" ? "rendered-instance" : "source-site",
|
|
123
|
+
...(change.sourceInstanceCount !== undefined ? { sourceInstanceCount: change.sourceInstanceCount } : {}),
|
|
121
124
|
instanceOverride: change.scope === "rendered-instance" ? change.instanceOverride : undefined,
|
|
122
125
|
state: change.state,
|
|
123
126
|
};
|
|
@@ -163,6 +166,9 @@ export function serializeTextContentChange(change) {
|
|
|
163
166
|
props: change.target.props,
|
|
164
167
|
ariaLabel: change.target.ariaLabel,
|
|
165
168
|
beforeText: change.target.beforeText,
|
|
169
|
+
...(change.target.tagName !== undefined ? { tagName: change.target.tagName } : {}),
|
|
170
|
+
...(change.target.elementId !== undefined ? { elementId: change.target.elementId } : {}),
|
|
171
|
+
...(change.target.domPath !== undefined ? { domPath: change.target.domPath } : {}),
|
|
166
172
|
...(change.target.textNodePath?.length
|
|
167
173
|
? { textNodePath: [...change.target.textNodePath] }
|
|
168
174
|
: {}),
|
|
@@ -204,6 +210,7 @@ export function deserializeElementChange(serialized) {
|
|
|
204
210
|
runtimeEvidence: serialized.runtimeEvidence ? { ...serialized.runtimeEvidence } : undefined,
|
|
205
211
|
sourceEvidence: serialized.sourceEvidence ? { ...serialized.sourceEvidence } : undefined,
|
|
206
212
|
scope: serialized.scope ?? "source-site",
|
|
213
|
+
...(serialized.sourceInstanceCount !== undefined ? { sourceInstanceCount: serialized.sourceInstanceCount } : {}),
|
|
207
214
|
instanceOverride: serialized.scope === "rendered-instance" ? serialized.instanceOverride : undefined,
|
|
208
215
|
state: serialized.state,
|
|
209
216
|
};
|
|
@@ -248,6 +255,9 @@ export function deserializeTextContentChange(serialized) {
|
|
|
248
255
|
props: serialized.target.props,
|
|
249
256
|
ariaLabel: serialized.target.ariaLabel,
|
|
250
257
|
beforeText: serialized.target.beforeText,
|
|
258
|
+
...(serialized.target.tagName !== undefined ? { tagName: serialized.target.tagName } : {}),
|
|
259
|
+
...(serialized.target.elementId !== undefined ? { elementId: serialized.target.elementId } : {}),
|
|
260
|
+
...(serialized.target.domPath !== undefined ? { domPath: serialized.target.domPath } : {}),
|
|
251
261
|
...(serialized.target.textNodePath?.length
|
|
252
262
|
? { textNodePath: [...serialized.target.textNodePath] }
|
|
253
263
|
: {}),
|
|
@@ -327,18 +337,24 @@ function isComponentInvocationEvidenceValue(value) {
|
|
|
327
337
|
}
|
|
328
338
|
function isRuntimeElementEvidenceValue(value) {
|
|
329
339
|
return isRecord(value)
|
|
330
|
-
&& hasOnlyKeys(value, ["reason", "tagName", "text", "props", "ariaLabel"])
|
|
340
|
+
&& hasOnlyKeys(value, ["reason", "tagName", "text", "props", "ariaLabel", "domPath", "elementId"])
|
|
331
341
|
&& (value.reason === undefined || value.reason === "runtime-created" || value.reason === "unannotated")
|
|
332
342
|
&& typeof value.tagName === "string"
|
|
333
343
|
&& (typeof value.text === "string" || value.text === null)
|
|
334
344
|
&& (typeof value.props === "string" || value.props === null)
|
|
335
|
-
&& (typeof value.ariaLabel === "string" || value.ariaLabel === null)
|
|
345
|
+
&& (typeof value.ariaLabel === "string" || value.ariaLabel === null)
|
|
346
|
+
&& (value.domPath === undefined || typeof value.domPath === "string" || value.domPath === null)
|
|
347
|
+
&& (value.elementId === undefined || typeof value.elementId === "string" || value.elementId === null);
|
|
336
348
|
}
|
|
337
349
|
function isSourceElementEvidenceValue(value) {
|
|
338
350
|
return isRecord(value)
|
|
339
|
-
&& hasOnlyKeys(value, ["tagName", "props"])
|
|
351
|
+
&& hasOnlyKeys(value, ["tagName", "props", "text", "ariaLabel", "domPath", "elementId"])
|
|
340
352
|
&& typeof value.tagName === "string"
|
|
341
|
-
&& (typeof value.props === "string" || value.props === null)
|
|
353
|
+
&& (typeof value.props === "string" || value.props === null)
|
|
354
|
+
&& (value.text === undefined || typeof value.text === "string" || value.text === null)
|
|
355
|
+
&& (value.ariaLabel === undefined || typeof value.ariaLabel === "string" || value.ariaLabel === null)
|
|
356
|
+
&& (value.domPath === undefined || typeof value.domPath === "string" || value.domPath === null)
|
|
357
|
+
&& (value.elementId === undefined || typeof value.elementId === "string" || value.elementId === null);
|
|
342
358
|
}
|
|
343
359
|
function isTokenRefValue(value) {
|
|
344
360
|
if (value === null)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DraftChangesSnapshot, DraftProjectionEvent } from "../drafts/draftStore.js";
|
|
2
|
+
export interface DraftPreview {
|
|
3
|
+
project(snapshot: DraftChangesSnapshot, event: DraftProjectionEvent): void;
|
|
4
|
+
dispose(): void;
|
|
5
|
+
}
|
|
6
|
+
/** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
|
|
7
|
+
export declare function createDraftPreview(readActive: () => DraftChangesSnapshot): DraftPreview;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { getSelectedElement } from "../selection/selectionStore.js";
|
|
2
|
+
import { changeKey } from "./model.js";
|
|
3
|
+
import { beginPreviewAttempt, clearPreviewDiagnostics, getHostPreviewDocument, } from "./previewDiagnostics.js";
|
|
4
|
+
import { verifyPreviewChanges } from "./previewVerification.js";
|
|
5
|
+
import { clearStructuralProjectionReports, pruneStructuralProjectionReports } from "../projection/structuralProjection.js";
|
|
6
|
+
import { applyHostDraftProjection, compileDraftProjection } from "../projection/draftProjection.js";
|
|
7
|
+
import { isEditorShellDocument } from "../runtime/editorShell.js";
|
|
8
|
+
import { isOriginalPreviewActive, subscribeOriginalPreview } from "../shell/originalPreview.js";
|
|
9
|
+
/** Verification re-checks the full surviving set: a new rule can change cascade or specificity for earlier changes. */
|
|
10
|
+
export function createDraftPreview(readActive) {
|
|
11
|
+
let pendingTargets = new Map();
|
|
12
|
+
let handle = null;
|
|
13
|
+
function reapply(snapshot) {
|
|
14
|
+
if (isOriginalPreviewActive())
|
|
15
|
+
return;
|
|
16
|
+
if (!isEditorShellDocument())
|
|
17
|
+
applyHostDraftProjection(compileDraftProjection(snapshot));
|
|
18
|
+
}
|
|
19
|
+
function flushVerification() {
|
|
20
|
+
handle = null;
|
|
21
|
+
// Probing the original preview would report held-back changes as conflicts; keep the targets for re-verification on release.
|
|
22
|
+
if (isOriginalPreviewActive())
|
|
23
|
+
return;
|
|
24
|
+
const targets = pendingTargets;
|
|
25
|
+
pendingTargets = new Map();
|
|
26
|
+
// The editor shell has no application document to verify; renderer projection reports cover it.
|
|
27
|
+
if (targets.size === 0 || isEditorShellDocument())
|
|
28
|
+
return;
|
|
29
|
+
const current = readActive();
|
|
30
|
+
const attempt = beginPreviewAttempt(getHostPreviewDocument(), current.revision);
|
|
31
|
+
if (!attempt)
|
|
32
|
+
return;
|
|
33
|
+
const targeted = current.changes.filter((change) => targets.has(changeKey(change)));
|
|
34
|
+
verifyPreviewChanges({
|
|
35
|
+
changes: targeted,
|
|
36
|
+
document,
|
|
37
|
+
attempt,
|
|
38
|
+
targetFor: (change) => targets.get(changeKey(change)) ?? null,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function scheduleVerification() {
|
|
42
|
+
if (handle !== null)
|
|
43
|
+
return;
|
|
44
|
+
const view = typeof window !== "undefined" ? window : undefined;
|
|
45
|
+
if (view && typeof view.requestIdleCallback === "function") {
|
|
46
|
+
handle = view.requestIdleCallback(flushVerification, { timeout: 200 });
|
|
47
|
+
}
|
|
48
|
+
else if (view && typeof view.requestAnimationFrame === "function") {
|
|
49
|
+
handle = view.requestAnimationFrame(flushVerification);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
handle = setTimeout(flushVerification, 0);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function markForVerification(snapshot, verificationTargets) {
|
|
56
|
+
const selectedElement = getSelectedElement()?.domElement ?? null;
|
|
57
|
+
let added = false;
|
|
58
|
+
for (const key of snapshot.changes.map(changeKey)) {
|
|
59
|
+
if (!pendingTargets.has(key))
|
|
60
|
+
added = true;
|
|
61
|
+
// Latest commit context wins for a merged key; the element may live in an iframe, which fixes the verification document.
|
|
62
|
+
pendingTargets.set(key, verificationTargets?.get(key) ?? selectedElement);
|
|
63
|
+
}
|
|
64
|
+
if (added)
|
|
65
|
+
scheduleVerification();
|
|
66
|
+
}
|
|
67
|
+
const stopOriginalPreview = subscribeOriginalPreview(() => {
|
|
68
|
+
if (isEditorShellDocument())
|
|
69
|
+
return;
|
|
70
|
+
const snapshot = readActive();
|
|
71
|
+
if (isOriginalPreviewActive()) {
|
|
72
|
+
applyHostDraftProjection({
|
|
73
|
+
sourceRevision: snapshot.revision,
|
|
74
|
+
managedStyles: { rules: [], css: "" },
|
|
75
|
+
instanceOverrides: [],
|
|
76
|
+
structuralChanges: [],
|
|
77
|
+
textContentChanges: [],
|
|
78
|
+
componentOverrides: [],
|
|
79
|
+
});
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
reapply(snapshot);
|
|
83
|
+
// A flush during the hold kept its targets without scheduling, so markForVerification would find every key present and schedule nothing.
|
|
84
|
+
markForVerification(snapshot);
|
|
85
|
+
if (pendingTargets.size > 0)
|
|
86
|
+
scheduleVerification();
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
project(snapshot, event) {
|
|
90
|
+
switch (event.kind) {
|
|
91
|
+
case "edit":
|
|
92
|
+
reapply(snapshot);
|
|
93
|
+
markForVerification(snapshot, event.verificationTargets);
|
|
94
|
+
return;
|
|
95
|
+
case "reconcile":
|
|
96
|
+
reapply(snapshot);
|
|
97
|
+
pruneStructuralProjectionReports(event.structuralIds);
|
|
98
|
+
markForVerification(snapshot);
|
|
99
|
+
return;
|
|
100
|
+
case "switch":
|
|
101
|
+
pendingTargets.clear();
|
|
102
|
+
reapply(snapshot);
|
|
103
|
+
markForVerification(snapshot);
|
|
104
|
+
return;
|
|
105
|
+
case "reset":
|
|
106
|
+
// A deferred verification must not inspect a new record with the selection context of the cleared one.
|
|
107
|
+
pendingTargets.clear();
|
|
108
|
+
clearPreviewDiagnostics();
|
|
109
|
+
clearStructuralProjectionReports();
|
|
110
|
+
reapply(snapshot);
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
dispose() {
|
|
114
|
+
stopOriginalPreview();
|
|
115
|
+
pendingTargets.clear();
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import type { TokenContextWrapper } from "../../css/model/index.js";
|
|
2
2
|
export type EditScope = "source-site" | "rendered-instance";
|
|
3
|
-
/**
|
|
3
|
+
/** JSX instrumentation site; stable across documents. */
|
|
4
4
|
export interface SourceSiteRef {
|
|
5
5
|
cid: string;
|
|
6
6
|
src: string;
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
9
|
-
* Serializable identity for one rendered output. It deliberately contains no
|
|
10
|
-
* DOM reference or generated node id: each document resolves it independently.
|
|
11
|
-
*/
|
|
8
|
+
/** Deliberately free of DOM references and generated node ids; each document resolves it independently. */
|
|
12
9
|
export interface RenderedInstanceRef {
|
|
13
10
|
sourceSite: SourceSiteRef;
|
|
14
11
|
locator: {
|
|
@@ -18,14 +15,14 @@ export interface RenderedInstanceRef {
|
|
|
18
15
|
text: string | null;
|
|
19
16
|
/** An accessible name can distinguish icon-only repeated controls. */
|
|
20
17
|
ariaLabel?: string | null;
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
/** Rendered facts used to reattach generated identities after reload. */
|
|
19
|
+
tagName?: string;
|
|
20
|
+
domPath?: string | null;
|
|
21
|
+
elementId?: string | null;
|
|
22
|
+
/** Present only when evidence alone cannot tell identical outputs apart. */
|
|
25
23
|
invocation?: InvocationRef;
|
|
26
24
|
};
|
|
27
25
|
}
|
|
28
|
-
/** A component callsite, as stamped by the compiler, and its component name. */
|
|
29
26
|
export interface InvocationRef {
|
|
30
27
|
callsiteId: string;
|
|
31
28
|
componentName: string;
|
|
@@ -40,9 +37,7 @@ export interface StyleRuleContext {
|
|
|
40
37
|
}
|
|
41
38
|
export declare function isRenderedInstanceRef(value: unknown): value is RenderedInstanceRef;
|
|
42
39
|
export declare function isRenderedInstanceOverride(value: unknown): value is RenderedInstanceOverride;
|
|
43
|
-
/** Validates the serializable context carried by a token change. */
|
|
44
40
|
export declare function isStyleRuleContextValue(value: unknown): value is StyleRuleContext;
|
|
45
|
-
/** A source site shared by text and rendered-instance evidence. */
|
|
46
41
|
export type TextProjectionSourceSite = SourceSiteRef;
|
|
47
42
|
export interface TextProjectionTarget {
|
|
48
43
|
sourceSite: TextProjectionSourceSite;
|
|
@@ -50,11 +45,14 @@ export interface TextProjectionTarget {
|
|
|
50
45
|
props: string | null;
|
|
51
46
|
ariaLabel: string | null;
|
|
52
47
|
beforeText: string;
|
|
48
|
+
/** Optional prompt details; never used to resolve or group text targets. */
|
|
49
|
+
tagName?: string;
|
|
50
|
+
elementId?: string | null;
|
|
51
|
+
domPath?: string | null;
|
|
53
52
|
/** Document-local evidence for a text node inside safe mixed markup. */
|
|
54
53
|
textNodePath?: readonly number[];
|
|
55
54
|
}
|
|
56
55
|
export type TextProjectionScope = EditScope;
|
|
57
|
-
/** Bounded semantic evidence retained alongside an instance text projection. */
|
|
58
56
|
export interface TextBindingEvidence {
|
|
59
57
|
callsiteId: string;
|
|
60
58
|
componentName: string;
|
|
@@ -14,13 +14,16 @@ export function isRenderedInstanceRef(value) {
|
|
|
14
14
|
|| typeof source.cid !== "string"
|
|
15
15
|
|| typeof source.src !== "string"
|
|
16
16
|
|| !isRecord(locator)
|
|
17
|
-
|| !hasOnlyKeys(locator, ["kind", "occurrence", "props", "text", "ariaLabel", "invocation"]))
|
|
17
|
+
|| !hasOnlyKeys(locator, ["kind", "occurrence", "props", "text", "ariaLabel", "tagName", "domPath", "elementId", "invocation"]))
|
|
18
18
|
return false;
|
|
19
19
|
return locator.kind === "evidence"
|
|
20
|
-
&&
|
|
20
|
+
&& isNonNegativeSafeInteger(locator.occurrence)
|
|
21
21
|
&& (typeof locator.props === "string" || locator.props === null)
|
|
22
22
|
&& (typeof locator.text === "string" || locator.text === null)
|
|
23
23
|
&& (locator.ariaLabel === undefined || typeof locator.ariaLabel === "string" || locator.ariaLabel === null)
|
|
24
|
+
&& (locator.tagName === undefined || typeof locator.tagName === "string")
|
|
25
|
+
&& (locator.domPath === undefined || typeof locator.domPath === "string" || locator.domPath === null)
|
|
26
|
+
&& (locator.elementId === undefined || typeof locator.elementId === "string" || locator.elementId === null)
|
|
24
27
|
&& (locator.invocation === undefined || isInvocationRef(locator.invocation));
|
|
25
28
|
}
|
|
26
29
|
export function isRenderedInstanceOverride(value) {
|
|
@@ -29,7 +32,6 @@ export function isRenderedInstanceOverride(value) {
|
|
|
29
32
|
&& typeof value.id === "string"
|
|
30
33
|
&& isRenderedInstanceRef(value.target);
|
|
31
34
|
}
|
|
32
|
-
/** Validates the serializable context carried by a token change. */
|
|
33
35
|
export function isStyleRuleContextValue(value) {
|
|
34
36
|
if (!isRecord(value) || !hasOnlyKeys(value, ["wrappers"]))
|
|
35
37
|
return false;
|
|
@@ -46,7 +48,7 @@ export function isStyleRuleContextValue(value) {
|
|
|
46
48
|
}
|
|
47
49
|
export function isTextProjectionTargetValue(value) {
|
|
48
50
|
if (!isRecord(value)
|
|
49
|
-
|| !hasOnlyKeys(value, ["sourceSite", "occurrence", "props", "ariaLabel", "beforeText", "textNodePath"])) {
|
|
51
|
+
|| !hasOnlyKeys(value, ["sourceSite", "occurrence", "props", "ariaLabel", "beforeText", "textNodePath", "tagName", "elementId", "domPath"])) {
|
|
50
52
|
return false;
|
|
51
53
|
}
|
|
52
54
|
const occurrence = value.occurrence;
|
|
@@ -58,6 +60,9 @@ export function isTextProjectionTargetValue(value) {
|
|
|
58
60
|
|| (typeof props !== "string" && props !== null)
|
|
59
61
|
|| (typeof ariaLabel !== "string" && ariaLabel !== null)
|
|
60
62
|
|| typeof beforeText !== "string"
|
|
63
|
+
|| (value.tagName !== undefined && typeof value.tagName !== "string")
|
|
64
|
+
|| (value.elementId !== undefined && value.elementId !== null && typeof value.elementId !== "string")
|
|
65
|
+
|| (value.domPath !== undefined && value.domPath !== null && typeof value.domPath !== "string")
|
|
61
66
|
|| (textNodePath !== undefined
|
|
62
67
|
&& (!Array.isArray(textNodePath)
|
|
63
68
|
|| textNodePath.length === 0
|
|
@@ -2,6 +2,7 @@ import { verifyPreview } from "../projection/managedStylesheet.js";
|
|
|
2
2
|
import { getSelectedElement } from "../selection/selectionStore.js";
|
|
3
3
|
import { instanceSelector } from "../projection/renderedInstance.js";
|
|
4
4
|
import { selectorForInteractionState } from "../shell/styleState.js";
|
|
5
|
+
import { selectorForInteractionStatePreview } from "../shell/interactionStatePreview.js";
|
|
5
6
|
import { isComponentChange, isTextContentChange, isTokenChange, } from "./types.js";
|
|
6
7
|
import { tokenReference } from "./model.js";
|
|
7
8
|
function requestedStyleValue(change) {
|
|
@@ -59,38 +60,28 @@ export function buildManagedStyleRules(changes) {
|
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
// Source-site rules
|
|
63
|
-
// emitted afterwards so their additional marker specificity wins.
|
|
63
|
+
// Source-site rules are the default; rendered-instance rules come last so their extra marker specificity wins.
|
|
64
64
|
return [...sourceRules.values(), ...instanceRules.values()];
|
|
65
65
|
}
|
|
66
66
|
export function verifyManagedStyleProjection(change, selectedElement, ownerDocument = document) {
|
|
67
|
-
// Deferred verification must use the selection
|
|
68
|
-
// projection was committed. Reading the live selection here can make a
|
|
69
|
-
// host-document change verify against a later canvas selection (or vice
|
|
70
|
-
// versa) and manufacture a conflict for the wrong document.
|
|
67
|
+
// Deferred verification must use the selection from commit time; the live selection can belong to the wrong document and manufacture a conflict.
|
|
71
68
|
const selected = selectedElement === undefined
|
|
72
69
|
? getSelectedElement()?.domElement ?? null
|
|
73
70
|
: selectedElement;
|
|
74
71
|
const requestedValue = requestedStyleValue(change);
|
|
75
|
-
// A Canvas-only selection
|
|
76
|
-
// cannot verify it synchronously; leave its result unknown until the frame
|
|
77
|
-
// has received the canonical projection rather than claiming it is stale.
|
|
72
|
+
// A Canvas-only iframe selection cannot be verified synchronously; leave the result unknown rather than claiming it is stale.
|
|
78
73
|
if (selected && selected.ownerDocument !== ownerDocument) {
|
|
79
74
|
return null;
|
|
80
75
|
}
|
|
81
76
|
let targets = [];
|
|
82
77
|
try {
|
|
83
78
|
const selector = selectorForManagedChange(change);
|
|
84
|
-
targets = selector ? Array.from(ownerDocument.querySelectorAll(selector)) : [];
|
|
79
|
+
targets = selector ? Array.from(ownerDocument.querySelectorAll(selectorForInteractionStatePreview(selector))) : [];
|
|
85
80
|
}
|
|
86
81
|
catch {
|
|
87
82
|
targets = [];
|
|
88
83
|
}
|
|
89
|
-
//
|
|
90
|
-
// preview: the reported result is exactly "first conflict ?? first target",
|
|
91
|
-
// so probing the remaining instances cannot change the outcome. A
|
|
92
|
-
// source-site selector matched by many rendered instances (one callsite,
|
|
93
|
-
// hundreds of nodes) otherwise pays a probe + important-rule scan per match.
|
|
84
|
+
// Early exit is safe: the result is "first conflict ?? first target", so later probes cannot change it.
|
|
94
85
|
let firstApplied = null;
|
|
95
86
|
let previewResult = null;
|
|
96
87
|
for (const target of targets) {
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { TokenEntry } from "../../css/model/index.js";
|
|
2
2
|
import { type ChangeRecord } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* The CSS value a token swap writes into the managed stylesheet and the
|
|
5
|
-
* prompt must describe: an adapter-provided literal when present, otherwise a
|
|
6
|
-
* var() reference on the authored cssName (falling back to the entry name).
|
|
7
|
-
*/
|
|
8
3
|
export declare function tokenReference(token: TokenEntry): string;
|
|
9
4
|
export declare function changeKey(change: ChangeRecord): string;
|
|
10
5
|
export declare function mergeChange(current: ChangeRecord[], incoming: ChangeRecord): ChangeRecord[];
|
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { isComponentChange, isElementChange, isTextContentChange, isTokenChange, } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* The CSS value a token swap writes into the managed stylesheet and the
|
|
4
|
-
* prompt must describe: an adapter-provided literal when present, otherwise a
|
|
5
|
-
* var() reference on the authored cssName (falling back to the entry name).
|
|
6
|
-
*/
|
|
7
2
|
export function tokenReference(token) {
|
|
8
3
|
return token.cssValue ?? `var(${token.cssName ?? token.name})`;
|
|
9
4
|
}
|
|
@@ -27,9 +22,7 @@ export function changeKey(change) {
|
|
|
27
22
|
].join("\u0000");
|
|
28
23
|
}
|
|
29
24
|
if (isTextContentChange(change)) {
|
|
30
|
-
//
|
|
31
|
-
// part of the durable evidence: two outputs at one source site may have
|
|
32
|
-
// different initial copy and must remain distinct canonical intents.
|
|
25
|
+
// Two outputs at one source site may have different initial copy, so beforeText keeps them distinct.
|
|
33
26
|
return [
|
|
34
27
|
"text-content",
|
|
35
28
|
change.target.sourceSite.cid,
|
|
@@ -14,26 +14,16 @@ export interface PreviewDiagnostic extends PreviewAttempt {
|
|
|
14
14
|
readonly changeKey: string;
|
|
15
15
|
readonly result: PreviewResult;
|
|
16
16
|
}
|
|
17
|
-
/** Returns the stable host-document identity for this inspector lifetime. */
|
|
18
17
|
export declare function getHostPreviewDocument(): PreviewDocument;
|
|
19
|
-
/** Starts or replaces the live session for one logical document. */
|
|
20
18
|
export declare function startPreviewDocumentSession(document: PreviewDocument): void;
|
|
21
|
-
/**
|
|
19
|
+
/** Late results from an invalidated session are rejected. */
|
|
22
20
|
export declare function invalidatePreviewDocumentSession(logicalDocument: string, sessionId?: string): void;
|
|
23
|
-
/** Opens a verification attempt for the currently active document session. */
|
|
24
21
|
export declare function beginPreviewAttempt(document: PreviewDocument, revision?: number): PreviewAttempt | null;
|
|
25
|
-
/** Publishes only a result from the active revision, session, and attempt. */
|
|
26
22
|
export declare function publishPreviewDiagnostic(attempt: PreviewAttempt, changeKey: string, result: PreviewResult): boolean;
|
|
27
|
-
/** Removes diagnostics for the supplied canonical keys across live documents. */
|
|
28
23
|
export declare function clearPreviewDiagnostics(changeKeys?: Iterable<string>): void;
|
|
29
|
-
/** Notifies consumers when verification state changes without a result. */
|
|
30
24
|
export declare function notifyPreviewDiagnostics(): void;
|
|
31
25
|
export declare function getPreviewDiagnostic(changeKey: string, logicalDocument?: string, draftId?: string): PreviewDiagnostic | undefined;
|
|
32
|
-
/**
|
|
33
|
-
* Host-first read across live documents. The per-document store is observable
|
|
34
|
-
* here so a Canvas-only conflict is not write-only; host remains the default
|
|
35
|
-
* for single-document consumers.
|
|
36
|
-
*/
|
|
26
|
+
/** Also reads non-host documents so Canvas-only conflicts are not write-only. */
|
|
37
27
|
export declare function getAnyPreviewDiagnostic(changeKey: string): PreviewDiagnostic | undefined;
|
|
38
28
|
export declare function subscribePreviewDiagnostics(listener: () => void): () => void;
|
|
39
29
|
export declare function getPreviewDiagnosticRevision(): number;
|