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
|
@@ -12,7 +12,6 @@ export function boundsOf(cards) {
|
|
|
12
12
|
}
|
|
13
13
|
return { minX, minY, maxX, maxY };
|
|
14
14
|
}
|
|
15
|
-
/** Places a new frame to the right of every frame, on the first frame's row. */
|
|
16
15
|
export function nextCardPosition(cards, gap) {
|
|
17
16
|
if (cards.length === 0)
|
|
18
17
|
return { x: 0, y: 0 };
|
|
@@ -55,7 +54,6 @@ export function iterationPosition(cards, source, gap) {
|
|
|
55
54
|
}
|
|
56
55
|
return { x, y };
|
|
57
56
|
}
|
|
58
|
-
/** Zooms and centers content inside the padded viewport; null for empty content. */
|
|
59
57
|
export function fitCamera(bounds, viewport, padding) {
|
|
60
58
|
const width = bounds.maxX - bounds.minX;
|
|
61
59
|
const height = bounds.maxY - bounds.minY;
|
|
@@ -92,7 +90,6 @@ export function applyLayoutShifts(cards, shifts, forward) {
|
|
|
92
90
|
return { ...card, x: card.x + to.x - from.x, y: card.y + to.y - from.y };
|
|
93
91
|
});
|
|
94
92
|
}
|
|
95
|
-
/** Reinserts recorded frames after their nearest recorded predecessor that still exists. */
|
|
96
93
|
export function reinsertInRecordedOrder(cards, recorded, ids) {
|
|
97
94
|
let next = [...cards];
|
|
98
95
|
for (const [index, added] of recorded.entries()) {
|
|
@@ -14,14 +14,7 @@ export function normalizeUrl(url) {
|
|
|
14
14
|
export function normalizedUrlKey(normalized) {
|
|
15
15
|
return `${normalized.origin}${canonicalRoutePath(normalized.pathname)}${normalized.search}`;
|
|
16
16
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Directory-index pages resolve to the directory URL: `/` and `/index.html`
|
|
19
|
-
* are one route served from one file on every supported dev server, so card
|
|
20
|
-
* deduplication must treat them as the same key or link discovery spawns a
|
|
21
|
-
* duplicate card for the page already on the board.
|
|
22
|
-
*/
|
|
17
|
+
/** Dev servers serve `/` and `/index.html` from one file, so dedup must treat them as the same key. */
|
|
23
18
|
function canonicalRoutePath(pathname) {
|
|
24
|
-
// "/docs/index.html" becomes the directory form "/docs/"; a bare
|
|
25
|
-
// "/index.html" becomes "/".
|
|
26
19
|
return pathname.replace(/\/index\.html?$/i, "/");
|
|
27
20
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CanvasFrame } from "./canvasFrame.js";
|
|
2
|
+
/** Runs renderer and controller in the inspected window so no iframe or framing permission is needed. */
|
|
3
|
+
export declare function enablePageSurface(): void;
|
|
4
|
+
export declare function isPageSurface(): boolean;
|
|
5
|
+
export declare function getPageFrame(win?: Window): CanvasFrame;
|
|
6
|
+
export declare function isInspectorUiEvent(event: Event): boolean;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { NUDGE_UI_MOUNT_ID } from "../../transport/routes.js";
|
|
2
|
+
let pageSurface = false;
|
|
3
|
+
/** Runs renderer and controller in the inspected window so no iframe or framing permission is needed. */
|
|
4
|
+
export function enablePageSurface() {
|
|
5
|
+
pageSurface = true;
|
|
6
|
+
}
|
|
7
|
+
export function isPageSurface() {
|
|
8
|
+
return pageSurface;
|
|
9
|
+
}
|
|
10
|
+
const pageFrames = new WeakMap();
|
|
11
|
+
export function getPageFrame(win = window) {
|
|
12
|
+
const existing = pageFrames.get(win);
|
|
13
|
+
if (existing)
|
|
14
|
+
return existing;
|
|
15
|
+
const root = win.document.documentElement;
|
|
16
|
+
const frame = {
|
|
17
|
+
contentWindow: win,
|
|
18
|
+
contentDocument: win.document,
|
|
19
|
+
isConnected: true,
|
|
20
|
+
get clientWidth() { return root.clientWidth; },
|
|
21
|
+
get clientHeight() { return root.clientHeight; },
|
|
22
|
+
getBoundingClientRect: () => new DOMRect(0, 0, root.clientWidth, root.clientHeight),
|
|
23
|
+
};
|
|
24
|
+
pageFrames.set(win, frame);
|
|
25
|
+
return frame;
|
|
26
|
+
}
|
|
27
|
+
export function isInspectorUiEvent(event) {
|
|
28
|
+
return pageSurface && event.composedPath().some((node) => node instanceof Element && node.id === NUDGE_UI_MOUNT_ID);
|
|
29
|
+
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CanvasFrame } from "./canvasFrame.js";
|
|
2
|
+
import type { DraftContents } from "../drafts/model.js";
|
|
2
3
|
import type { CanvasCard } from "./canvasStore.js";
|
|
3
4
|
import { type PreviewDocument } from "../changes/previewDiagnostics.js";
|
|
4
5
|
import { type CompiledManagedStyles, type DraftProjectionPlan } from "../projection/draftProjection.js";
|
|
5
|
-
export declare const PROJECT_ID: string;
|
|
6
|
-
export declare const WORKSPACE_ID: string;
|
|
7
6
|
export interface FrameProjection extends DraftProjectionPlan<CompiledManagedStyles> {
|
|
8
7
|
readonly draftId: string;
|
|
9
8
|
readonly draftRevision: number;
|
|
@@ -14,45 +13,35 @@ export interface CanvasProjectionStatus {
|
|
|
14
13
|
sentRevision: number;
|
|
15
14
|
appliedRevision: number;
|
|
16
15
|
}
|
|
17
|
-
/** Returns the current value-based identity for one Canvas card document. */
|
|
18
16
|
export declare function getCanvasPreviewDocument(cardId: string): PreviewDocument;
|
|
19
17
|
/** Invalidates a card's current document before its iframe is replaced. */
|
|
20
18
|
export declare function invalidateCanvasPreviewDocument(cardId: string): void;
|
|
21
|
-
export declare function computeProjection(): {
|
|
22
|
-
css: string;
|
|
23
|
-
revision: number;
|
|
24
|
-
sourceRevision: number;
|
|
25
|
-
managedStyles: CompiledManagedStyles;
|
|
26
|
-
instanceOverrides: readonly import("../changes/editModel.js").RenderedInstanceOverride[];
|
|
27
|
-
structuralChanges: readonly import("../changes/structuralTypes.js").StructuralChange[];
|
|
28
|
-
textContentChanges: readonly import("../changes/editModel.js").TextContentChangeRecord[];
|
|
29
|
-
componentOverrides: readonly import("../componentSemantics/types.js").ComponentOverride[];
|
|
30
|
-
};
|
|
31
19
|
export declare function computeProjectionForCard(cardId: string): FrameProjection;
|
|
32
20
|
export declare function getCanonicalFrameProjection(cardId: string, expectedRevision: number): FrameProjection | null;
|
|
33
|
-
|
|
21
|
+
/** Re-sends the canonical projection and settles on acknowledgement, so callers can rely on its stylesheet invalidation. */
|
|
22
|
+
export declare function restoreCanonicalFrameProjection(doc: Document): Promise<void>;
|
|
34
23
|
export declare function getCanvasCardIdForDocument(doc: Document): string | null;
|
|
35
24
|
export declare function resetProjectionRevision(): void;
|
|
36
|
-
export declare function sendProjectionToCard(card: Pick<CanvasCard, "id">, iframe:
|
|
37
|
-
/** Temporarily projects a snapshot through the renderer that owns the document. */
|
|
25
|
+
export declare function sendProjectionToCard(card: Pick<CanvasCard, "id">, iframe: CanvasFrame): number | null;
|
|
38
26
|
export declare function projectDraftToDocument(doc: Document, snapshot: DraftContents): Promise<number | null>;
|
|
39
|
-
/**
|
|
27
|
+
/** Whether an acknowledged temporary projection is still authoritative. */
|
|
40
28
|
export declare function isCanvasProjectionRevisionCurrent(doc: Document, expectedRevision: number): boolean;
|
|
41
|
-
/** Returns whether the live frame acknowledged its latest canonical workspace projection. */
|
|
42
29
|
export declare function isCanvasCanonicalProjectionRevisionCurrent(doc: Document, expectedRevision: number): boolean;
|
|
43
|
-
export declare function registerCardFrameSource(cardId: string, iframe:
|
|
44
|
-
export declare function registerCardFrame(cardId: string, iframe:
|
|
30
|
+
export declare function registerCardFrameSource(cardId: string, iframe: CanvasFrame): void;
|
|
31
|
+
export declare function registerCardFrame(cardId: string, iframe: CanvasFrame): void;
|
|
45
32
|
export declare function unregisterCardFrame(cardId: string): void;
|
|
46
|
-
export declare function getRegisteredFrames(): ReadonlyMap<string,
|
|
33
|
+
export declare function getRegisteredFrames(): ReadonlyMap<string, CanvasFrame>;
|
|
47
34
|
export declare function findCanvasFrameBySource(source: MessageEventSource | null): {
|
|
48
35
|
cardId: string;
|
|
49
|
-
iframe:
|
|
36
|
+
iframe: CanvasFrame;
|
|
50
37
|
} | null;
|
|
38
|
+
/** The registered frame rendering `doc`; on the page surface this is the controller document. */
|
|
39
|
+
export declare function findCanvasFrameByDocument(doc: Document | null | undefined): CanvasFrame | null;
|
|
51
40
|
export declare function subscribeFrameRegistry(listener: () => void): () => void;
|
|
52
|
-
/** Records the highest complete projection revision accepted by one frame. */
|
|
53
41
|
export declare function recordCanvasProjectionApplied(cardId: string, appliedRevision: number): void;
|
|
54
|
-
/** Returns projection progress for the document containing a selected element. */
|
|
55
42
|
export declare function getCanvasProjectionStatus(doc: Document): CanvasProjectionStatus | null;
|
|
56
43
|
export declare function subscribeCanvasProjectionAcknowledgements(listener: () => void): () => void;
|
|
57
44
|
export declare function getCanvasProjectionAcknowledgementVersion(): number;
|
|
45
|
+
/** Bumped whenever a frame registers or unregisters, for `useSyncExternalStore`. */
|
|
46
|
+
export declare function getFrameRegistryVersion(): number;
|
|
58
47
|
export declare function projectToAllReadyCards(): void;
|
|
@@ -1,24 +1,15 @@
|
|
|
1
|
-
import { draftIdForCard } from "../drafts/store.js";
|
|
2
|
-
import { getDraftChanges, getActiveDraftChanges } from "../changes/draftChanges.js";
|
|
1
|
+
import { draftIdForCard, getDraftChanges, getActiveDraftChanges } from "../drafts/store.js";
|
|
3
2
|
import { getCanvasCards } from "./canvasStore.js";
|
|
4
3
|
import { getCanvasMode } from "./viewStore.js";
|
|
5
|
-
import {
|
|
6
|
-
import { clearCanvasRenderedInstanceProjectionReports
|
|
7
|
-
import { clearCanvasTextProjectionReports
|
|
4
|
+
import { connectFrame } from "./frameConnection.js";
|
|
5
|
+
import { clearCanvasRenderedInstanceProjectionReports } from "../projection/renderedInstance.js";
|
|
6
|
+
import { clearCanvasTextProjectionReports } from "../projection/textProjection.js";
|
|
8
7
|
import { clearCanvasStructuralProjectionReports } from "../projection/structuralProjection.js";
|
|
9
8
|
import { invalidatePreviewDocumentSession, startPreviewDocumentSession, } from "../changes/previewDiagnostics.js";
|
|
10
9
|
import { compileDraftProjection, } from "../projection/draftProjection.js";
|
|
11
10
|
import { isOriginalPreviewActive } from "../shell/originalPreview.js";
|
|
12
|
-
import { disposeBrowserCssInspection } from "../inspection/browserCssInspectionRegistry.js";
|
|
13
|
-
export const PROJECT_ID = typeof window !== "undefined" && window.location?.origin
|
|
14
|
-
? window.location.origin
|
|
15
|
-
: "";
|
|
16
|
-
export const WORKSPACE_ID = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
|
|
17
|
-
? crypto.randomUUID()
|
|
18
|
-
: `ws-${Date.now()}`;
|
|
11
|
+
import { disposeBrowserCssInspection, notifyBrowserStylesheetChange } from "../inspection/browserCssInspectionRegistry.js";
|
|
19
12
|
let revision = 0;
|
|
20
|
-
let lastRulesKey = null;
|
|
21
|
-
let lastPeekActive = false;
|
|
22
13
|
const draftPlans = new Map();
|
|
23
14
|
const frameProjectionStates = new Map();
|
|
24
15
|
const previewDocuments = new Map();
|
|
@@ -34,10 +25,8 @@ function createPreviewDocumentIdentity(cardId) {
|
|
|
34
25
|
previewDocuments.set(cardId, previewDocument);
|
|
35
26
|
return previewDocument;
|
|
36
27
|
}
|
|
37
|
-
/** Returns the current value-based identity for one Canvas card document. */
|
|
38
28
|
export function getCanvasPreviewDocument(cardId) {
|
|
39
|
-
// Pure getter:
|
|
40
|
-
// idempotent here; registerCardFrame owns session activation.
|
|
29
|
+
// Pure getter: registerCardFrame owns session activation; creating the identity here is idempotent.
|
|
41
30
|
return previewDocuments.get(cardId) ?? createPreviewDocumentIdentity(cardId);
|
|
42
31
|
}
|
|
43
32
|
/** Invalidates a card's current document before its iframe is replaced. */
|
|
@@ -51,47 +40,6 @@ export function invalidateCanvasPreviewDocument(cardId) {
|
|
|
51
40
|
invalidatePreviewDocumentSession(previewDocument.logicalDocument, previewDocument.sessionId);
|
|
52
41
|
previewDocuments.delete(cardId);
|
|
53
42
|
}
|
|
54
|
-
function projectionKey(plan) {
|
|
55
|
-
// Revision ordering protects every controller-owned projection dimension.
|
|
56
|
-
// In particular, a delete-only snapshot has empty CSS but must still advance
|
|
57
|
-
// past the snapshot already accepted by ready Canvas renderers.
|
|
58
|
-
return `${plan.managedStyles.css}\u0000${JSON.stringify(plan.instanceOverrides)}\u0000${JSON.stringify(plan.structuralChanges)}\u0000${JSON.stringify(plan.textContentChanges)}\u0000${JSON.stringify(plan.componentOverrides)}`;
|
|
59
|
-
}
|
|
60
|
-
export function computeProjection() {
|
|
61
|
-
const plan = compileDraftProjection(getActiveDraftChanges());
|
|
62
|
-
if (isOriginalPreviewActive()) {
|
|
63
|
-
// Hold-to-view-original: frames show the page without inspector changes
|
|
64
|
-
// while canonical intent (and its projection key) stays untouched.
|
|
65
|
-
if (!lastPeekActive) {
|
|
66
|
-
lastPeekActive = true;
|
|
67
|
-
revision += 1;
|
|
68
|
-
}
|
|
69
|
-
return {
|
|
70
|
-
...plan,
|
|
71
|
-
managedStyles: { rules: [], css: "" },
|
|
72
|
-
css: "",
|
|
73
|
-
instanceOverrides: [],
|
|
74
|
-
structuralChanges: [],
|
|
75
|
-
textContentChanges: [],
|
|
76
|
-
componentOverrides: [],
|
|
77
|
-
revision,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
if (lastPeekActive) {
|
|
81
|
-
// Force the canonical projection to resend after a peek even though its
|
|
82
|
-
// key is unchanged since the peek began.
|
|
83
|
-
lastPeekActive = false;
|
|
84
|
-
lastRulesKey = null;
|
|
85
|
-
}
|
|
86
|
-
setCanonicalRenderedInstanceOverrides(plan.instanceOverrides);
|
|
87
|
-
setCanonicalTextContentChanges(plan.textContentChanges);
|
|
88
|
-
const key = projectionKey(plan);
|
|
89
|
-
if (key !== lastRulesKey) {
|
|
90
|
-
lastRulesKey = key;
|
|
91
|
-
revision += 1;
|
|
92
|
-
}
|
|
93
|
-
return { ...plan, css: plan.managedStyles.css, revision };
|
|
94
|
-
}
|
|
95
43
|
export function computeProjectionForCard(cardId) {
|
|
96
44
|
const draftId = draftIdForCard(cardId);
|
|
97
45
|
const workspace = draftId ? getDraftChanges(draftId) : getActiveDraftChanges();
|
|
@@ -116,12 +64,16 @@ export function getCanonicalFrameProjection(cardId, expectedRevision) {
|
|
|
116
64
|
return null;
|
|
117
65
|
return plan;
|
|
118
66
|
}
|
|
119
|
-
|
|
67
|
+
/** Re-sends the canonical projection and settles on acknowledgement, so callers can rely on its stylesheet invalidation. */
|
|
68
|
+
export async function restoreCanonicalFrameProjection(doc) {
|
|
120
69
|
const id = getCanvasCardIdForDocument(doc);
|
|
121
70
|
const card = getCanvasCards().find((card) => card.id === id);
|
|
122
71
|
const frame = id ? frameRegistry.get(id) : undefined;
|
|
123
|
-
if (card
|
|
124
|
-
|
|
72
|
+
if (!card || !frame)
|
|
73
|
+
return;
|
|
74
|
+
const sent = sendProjectionToCard(card, frame);
|
|
75
|
+
if (sent !== null)
|
|
76
|
+
await waitForProjectionApplied(card.id, doc, sent);
|
|
125
77
|
}
|
|
126
78
|
export function getCanvasCardIdForDocument(doc) {
|
|
127
79
|
for (const [id, state] of frameProjectionStates)
|
|
@@ -131,8 +83,6 @@ export function getCanvasCardIdForDocument(doc) {
|
|
|
131
83
|
}
|
|
132
84
|
export function resetProjectionRevision() {
|
|
133
85
|
revision = 0;
|
|
134
|
-
lastRulesKey = null;
|
|
135
|
-
lastPeekActive = false;
|
|
136
86
|
draftPlans.clear();
|
|
137
87
|
for (const state of frameProjectionStates.values()) {
|
|
138
88
|
state.sentRevision = -1;
|
|
@@ -146,7 +96,7 @@ export function resetProjectionRevision() {
|
|
|
146
96
|
export function sendProjectionToCard(card, iframe) {
|
|
147
97
|
const win = iframe.contentWindow;
|
|
148
98
|
if (!win)
|
|
149
|
-
return;
|
|
99
|
+
return null;
|
|
150
100
|
let plan = computeProjectionForCard(card.id);
|
|
151
101
|
const state = frameProjectionStates.get(card.id);
|
|
152
102
|
if (state && plan.revision < state.sentRevision) {
|
|
@@ -155,30 +105,25 @@ export function sendProjectionToCard(card, iframe) {
|
|
|
155
105
|
}
|
|
156
106
|
if (state)
|
|
157
107
|
state.canonicalProjection = plan;
|
|
158
|
-
const { css, revision: rev, instanceOverrides, structuralChanges, textContentChanges, componentOverrides } = plan;
|
|
159
|
-
sendProjectionMessage(card.id, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, true);
|
|
108
|
+
const { css, revision: rev, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities } = plan;
|
|
109
|
+
sendProjectionMessage(card.id, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities, true);
|
|
110
|
+
return rev;
|
|
160
111
|
}
|
|
161
|
-
function sendProjectionMessage(cardId, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, canonical = false) {
|
|
162
|
-
|
|
163
|
-
if (!win)
|
|
112
|
+
function sendProjectionMessage(cardId, iframe, rev, css, instanceOverrides, structuralChanges, textContentChanges, componentOverrides, runtimeIdentities, canonical = false) {
|
|
113
|
+
if (!iframe.contentWindow)
|
|
164
114
|
return;
|
|
165
|
-
|
|
115
|
+
markProjectionSent(cardId, iframe, rev, css, canonical);
|
|
116
|
+
connectFrame(cardId, iframe).post({
|
|
166
117
|
type: "replace-styles",
|
|
167
|
-
protocolVersion: PROTOCOL_VERSION,
|
|
168
|
-
projectId: PROJECT_ID,
|
|
169
|
-
workspaceId: WORKSPACE_ID,
|
|
170
|
-
cardId,
|
|
171
118
|
css,
|
|
172
119
|
revision: rev,
|
|
173
120
|
instanceOverrides: [...instanceOverrides],
|
|
174
121
|
structuralChanges: [...structuralChanges],
|
|
175
122
|
textContentChanges: [...textContentChanges],
|
|
176
123
|
componentOverrides: [...componentOverrides],
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
win.postMessage(msg, window.location.origin);
|
|
124
|
+
...(runtimeIdentities ? { runtimeIdentities: [...runtimeIdentities] } : {}),
|
|
125
|
+
});
|
|
180
126
|
}
|
|
181
|
-
/** Temporarily projects a snapshot through the renderer that owns the document. */
|
|
182
127
|
export async function projectDraftToDocument(doc, snapshot) {
|
|
183
128
|
const entry = [...frameProjectionStates.entries()].find(([, state]) => state.document === doc);
|
|
184
129
|
if (!entry)
|
|
@@ -186,10 +131,15 @@ export async function projectDraftToDocument(doc, snapshot) {
|
|
|
186
131
|
const [cardId, state] = entry;
|
|
187
132
|
const plan = compileDraftProjection({ ...snapshot, revision: 0 });
|
|
188
133
|
revision += 1;
|
|
189
|
-
sendProjectionMessage(cardId, state.iframe, revision, plan.managedStyles.css, plan.instanceOverrides, plan.structuralChanges, plan.textContentChanges, plan.componentOverrides);
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
134
|
+
sendProjectionMessage(cardId, state.iframe, revision, plan.managedStyles.css, plan.instanceOverrides, plan.structuralChanges, plan.textContentChanges, plan.componentOverrides, plan.runtimeIdentities);
|
|
135
|
+
return waitForProjectionApplied(cardId, doc, revision);
|
|
136
|
+
}
|
|
137
|
+
/** Resolves with `requestedRevision` on acknowledgement; null when superseded, replaced, or after 2s. */
|
|
138
|
+
function waitForProjectionApplied(cardId, doc, requestedRevision) {
|
|
139
|
+
const initial = frameProjectionStates.get(cardId);
|
|
140
|
+
if (initial?.appliedRevision === requestedRevision && initial.sentRevision === requestedRevision) {
|
|
141
|
+
return Promise.resolve(requestedRevision);
|
|
142
|
+
}
|
|
193
143
|
return new Promise((resolve) => {
|
|
194
144
|
let settled = false;
|
|
195
145
|
let timer;
|
|
@@ -214,7 +164,7 @@ export async function projectDraftToDocument(doc, snapshot) {
|
|
|
214
164
|
timer = setTimeout(() => finish(null), 2_000);
|
|
215
165
|
});
|
|
216
166
|
}
|
|
217
|
-
/**
|
|
167
|
+
/** Whether an acknowledged temporary projection is still authoritative. */
|
|
218
168
|
export function isCanvasProjectionRevisionCurrent(doc, expectedRevision) {
|
|
219
169
|
for (const state of frameProjectionStates.values()) {
|
|
220
170
|
if (state.document !== doc)
|
|
@@ -230,7 +180,6 @@ export function isCanvasProjectionRevisionCurrent(doc, expectedRevision) {
|
|
|
230
180
|
}
|
|
231
181
|
return false;
|
|
232
182
|
}
|
|
233
|
-
/** Returns whether the live frame acknowledged its latest canonical workspace projection. */
|
|
234
183
|
export function isCanvasCanonicalProjectionRevisionCurrent(doc, expectedRevision) {
|
|
235
184
|
for (const state of frameProjectionStates.values()) {
|
|
236
185
|
if (state.document !== doc)
|
|
@@ -273,6 +222,8 @@ export function registerCardFrame(cardId, iframe) {
|
|
|
273
222
|
appliedRevision: -1,
|
|
274
223
|
canonicalSentRevision: -1,
|
|
275
224
|
canonicalProjection: null,
|
|
225
|
+
sentCss: new Map(),
|
|
226
|
+
appliedCss: null,
|
|
276
227
|
});
|
|
277
228
|
}
|
|
278
229
|
else {
|
|
@@ -304,6 +255,16 @@ export function findCanvasFrameBySource(source) {
|
|
|
304
255
|
}
|
|
305
256
|
return null;
|
|
306
257
|
}
|
|
258
|
+
/** The registered frame rendering `doc`; on the page surface this is the controller document. */
|
|
259
|
+
export function findCanvasFrameByDocument(doc) {
|
|
260
|
+
if (!doc)
|
|
261
|
+
return null;
|
|
262
|
+
for (const iframe of frameRegistry.values()) {
|
|
263
|
+
if (getFrameDocument(iframe) === doc)
|
|
264
|
+
return iframe;
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
307
268
|
const frameRegistryListeners = new Set();
|
|
308
269
|
export function subscribeFrameRegistry(listener) {
|
|
309
270
|
frameRegistryListeners.add(listener);
|
|
@@ -319,24 +280,34 @@ function getFrameDocument(iframe) {
|
|
|
319
280
|
return null;
|
|
320
281
|
}
|
|
321
282
|
}
|
|
322
|
-
function markProjectionSent(cardId, iframe, sentRevision, canonical = false) {
|
|
283
|
+
function markProjectionSent(cardId, iframe, sentRevision, css, canonical = false) {
|
|
323
284
|
const state = frameProjectionStates.get(cardId);
|
|
324
285
|
if (!state || state.iframe !== iframe)
|
|
325
286
|
return;
|
|
326
287
|
state.sentRevision = Math.max(state.sentRevision, sentRevision);
|
|
288
|
+
state.sentCss.set(sentRevision, css);
|
|
327
289
|
if (canonical)
|
|
328
290
|
state.canonicalSentRevision = sentRevision;
|
|
329
291
|
}
|
|
330
|
-
/** Records the highest complete projection revision accepted by one frame. */
|
|
331
292
|
export function recordCanvasProjectionApplied(cardId, appliedRevision) {
|
|
332
293
|
const state = frameProjectionStates.get(cardId);
|
|
333
294
|
if (!state || appliedRevision > state.sentRevision || appliedRevision <= state.appliedRevision)
|
|
334
295
|
return;
|
|
335
296
|
state.appliedRevision = appliedRevision;
|
|
297
|
+
const css = state.sentCss.get(appliedRevision);
|
|
298
|
+
for (const sent of state.sentCss.keys()) {
|
|
299
|
+
if (sent <= appliedRevision)
|
|
300
|
+
state.sentCss.delete(sent);
|
|
301
|
+
}
|
|
302
|
+
// Renderer stylesheet writes don't invalidate the controller's CSSOM cache, so only a CSS change needs a refresh.
|
|
303
|
+
const cssChanged = css === undefined || css !== state.appliedCss;
|
|
304
|
+
state.appliedCss = css ?? null;
|
|
305
|
+
if (cssChanged && state.document && state.iframe.contentDocument === state.document) {
|
|
306
|
+
notifyBrowserStylesheetChange(state.document);
|
|
307
|
+
}
|
|
336
308
|
projectionAcknowledgementVersion += 1;
|
|
337
309
|
notifyProjectionAcknowledgementListeners();
|
|
338
310
|
}
|
|
339
|
-
/** Returns projection progress for the document containing a selected element. */
|
|
340
311
|
export function getCanvasProjectionStatus(doc) {
|
|
341
312
|
for (const state of frameProjectionStates.values()) {
|
|
342
313
|
if (state.document !== doc)
|
|
@@ -365,7 +336,13 @@ function notifyProjectionAcknowledgementListeners() {
|
|
|
365
336
|
catch { /* ignore */ }
|
|
366
337
|
}
|
|
367
338
|
}
|
|
339
|
+
let frameRegistryVersion = 0;
|
|
340
|
+
/** Bumped whenever a frame registers or unregisters, for `useSyncExternalStore`. */
|
|
341
|
+
export function getFrameRegistryVersion() {
|
|
342
|
+
return frameRegistryVersion;
|
|
343
|
+
}
|
|
368
344
|
function notifyFrameRegistryListeners() {
|
|
345
|
+
frameRegistryVersion += 1;
|
|
369
346
|
for (const listener of frameRegistryListeners) {
|
|
370
347
|
try {
|
|
371
348
|
listener();
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { startRendererProjectionDiagnostics } from "./rendererStylesheet.js";
|
|
2
|
+
import { installRendererElementSelector } from "./rendererElementSelector.js";
|
|
1
3
|
export interface RendererBootstrapHandle {
|
|
2
4
|
teardown(): void;
|
|
3
5
|
}
|
|
4
|
-
|
|
6
|
+
/** Replaces the renderer resources a caller cannot exercise directly, such as jsdom-based browser tests. */
|
|
7
|
+
export interface RendererBootstrapResources {
|
|
8
|
+
readonly installElementSelector?: typeof installRendererElementSelector;
|
|
9
|
+
readonly startProjectionDiagnostics?: typeof startRendererProjectionDiagnostics;
|
|
10
|
+
}
|
|
11
|
+
export declare function bootstrapRenderer(resources?: RendererBootstrapResources): RendererBootstrapHandle | undefined;
|
|
@@ -7,6 +7,8 @@ import { createFrameThrottle } from "../overlay/frameThrottle.js";
|
|
|
7
7
|
import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
8
8
|
import { getNudgeUiRuntimeConfig, subscribeNudgeUiRuntime } from "../runtime/runtimeConfig.js";
|
|
9
9
|
import { APP_INTERACTION_KEY } from "./keyboardShortcuts.js";
|
|
10
|
+
import { isInspectorUiEvent } from "./pageSurface.js";
|
|
11
|
+
import { disposeRuntimeIdentityClaims } from "../runtime/runtimeIdentityClaims.js";
|
|
10
12
|
let activeRendererBootstrap = null;
|
|
11
13
|
function ownsRendererBootstrap(owner) {
|
|
12
14
|
return owner.active && activeRendererBootstrap?.owner === owner;
|
|
@@ -104,8 +106,7 @@ function scheduleRendererTimer(owner, callback, delay) {
|
|
|
104
106
|
function teardownRenderer(owner) {
|
|
105
107
|
if (!owner.active)
|
|
106
108
|
return;
|
|
107
|
-
// Invalidate callbacks before releasing
|
|
108
|
-
// frame can still run after its source has been cancelled.
|
|
109
|
+
// Invalidate callbacks before releasing resources: queued microtasks or frames can still run.
|
|
109
110
|
owner.active = false;
|
|
110
111
|
if (activeRendererBootstrap?.owner === owner) {
|
|
111
112
|
activeRendererBootstrap = null;
|
|
@@ -127,7 +128,7 @@ function teardownRenderer(owner) {
|
|
|
127
128
|
restoreHistoryPatch();
|
|
128
129
|
clearRendererIdentity();
|
|
129
130
|
}
|
|
130
|
-
export function bootstrapRenderer() {
|
|
131
|
+
export function bootstrapRenderer(resources = {}) {
|
|
131
132
|
if (!getNudgeUiRuntimeConfig().capabilities.canvas)
|
|
132
133
|
return;
|
|
133
134
|
if (!isNudgeUiDev())
|
|
@@ -149,11 +150,12 @@ export function bootstrapRenderer() {
|
|
|
149
150
|
activeRendererBootstrap = { owner, handle };
|
|
150
151
|
try {
|
|
151
152
|
observeFrameMetadata(owner);
|
|
153
|
+
owner.resourceDisposers.push(() => disposeRuntimeIdentityClaims(document));
|
|
152
154
|
owner.resourceDisposers.push(subscribeNudgeUiRuntime(() => sendFrameRuntime(owner)));
|
|
153
|
-
const disposeDiagnostics = startRendererProjectionDiagnostics();
|
|
155
|
+
const disposeDiagnostics = (resources.startProjectionDiagnostics ?? startRendererProjectionDiagnostics)();
|
|
154
156
|
if (disposeDiagnostics)
|
|
155
157
|
owner.resourceDisposers.push(disposeDiagnostics);
|
|
156
|
-
const disposeSelector = installRendererElementSelector();
|
|
158
|
+
const disposeSelector = (resources.installElementSelector ?? installRendererElementSelector)();
|
|
157
159
|
if (disposeSelector)
|
|
158
160
|
owner.resourceDisposers.push(disposeSelector);
|
|
159
161
|
installRendererPanProxy(owner);
|
|
@@ -223,13 +225,7 @@ export function bootstrapRenderer() {
|
|
|
223
225
|
};
|
|
224
226
|
window.addEventListener("message", onMessage);
|
|
225
227
|
owner.listenerRemovers.push(() => window.removeEventListener("message", onMessage));
|
|
226
|
-
//
|
|
227
|
-
// iframe load AND on every hello it receives, but its answering listener
|
|
228
|
-
// attaches when the card component commits — normally long before any
|
|
229
|
-
// renderer finishes booting. The retries cover the residual window where
|
|
230
|
-
// a renderer's listeners go live before the controller's do (fast boot,
|
|
231
|
-
// slow controller compile). Every path is idempotent: setRendererIdentity
|
|
232
|
-
// overwrites, re-registration replaces, projection re-sends are safe.
|
|
228
|
+
// The controller's listener may attach after the renderer boots; retry briefly, and every path is idempotent.
|
|
233
229
|
let helloAttempts = 0;
|
|
234
230
|
const solicitHandshake = () => {
|
|
235
231
|
if (!ownsRendererBootstrap(owner) || getRendererIdentity() || helloAttempts >= 5)
|
|
@@ -319,7 +315,7 @@ function installRendererPanProxy(owner) {
|
|
|
319
315
|
sendToParent({ type: "app-interaction-modifier", protocolVersion: PROTOCOL_VERSION, held, ...identity });
|
|
320
316
|
}
|
|
321
317
|
const onKeyDown = (event) => {
|
|
322
|
-
if (!ownsRendererBootstrap(owner))
|
|
318
|
+
if (!ownsRendererBootstrap(owner) || isInspectorUiEvent(event))
|
|
323
319
|
return;
|
|
324
320
|
if (event.code === APP_INTERACTION_KEY && !event.repeat && !isEditableTarget(event.target))
|
|
325
321
|
sendAppInteractionModifier(true);
|
|
@@ -354,8 +350,7 @@ function installRendererPanProxy(owner) {
|
|
|
354
350
|
panMoveUpdate.cancel();
|
|
355
351
|
return;
|
|
356
352
|
}
|
|
357
|
-
// Pointer-up can arrive before the next
|
|
358
|
-
// latest point before pan-end so the final drag position is not lost.
|
|
353
|
+
// Pointer-up can arrive before the next frame; flush the latest point so the final position is not lost.
|
|
359
354
|
panMoveUpdate.flush();
|
|
360
355
|
panning = false;
|
|
361
356
|
const identity = getRendererIdentity();
|
|
@@ -3,9 +3,4 @@ export declare const RENDERER_ELEMENT_ID_ATTR = "data-renderer-id";
|
|
|
3
3
|
export interface CidIndex {
|
|
4
4
|
elementId(el: HTMLElement): string;
|
|
5
5
|
}
|
|
6
|
-
/**
|
|
7
|
-
* Retains the historical factory name while replacing positional indexes with
|
|
8
|
-
* node identities. IDs are attached to the actual DOM node, so reorders and
|
|
9
|
-
* sibling insertions cannot redirect a delayed controller message.
|
|
10
|
-
*/
|
|
11
6
|
export declare function createCidIndex(_doc: Document): CidIndex;
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
/** Renderer-owned identity that survives DOM reorders for the lifetime of a node. */
|
|
2
2
|
export const RENDERER_ELEMENT_ID_ATTR = "data-renderer-id";
|
|
3
|
-
/**
|
|
4
|
-
* Retains the historical factory name while replacing positional indexes with
|
|
5
|
-
* node identities. IDs are attached to the actual DOM node, so reorders and
|
|
6
|
-
* sibling insertions cannot redirect a delayed controller message.
|
|
7
|
-
*/
|
|
8
3
|
export function createCidIndex(_doc) {
|
|
9
4
|
let nextId = 1;
|
|
10
5
|
const ids = new WeakMap();
|