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,10 +1,9 @@
|
|
|
1
|
-
import { iterationId, contentSourceUrl
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { iterationId, contentSourceUrl } from "./frameContent.js";
|
|
2
|
+
import { frameLifecycle } from "./frameLifecycle.js";
|
|
3
|
+
import { recordCanvasChange, discardCanvasHistory } from "../workspace/timeline.js";
|
|
4
4
|
import { useSyncExternalStore } from "react";
|
|
5
5
|
import { DEFAULT_CAMERA, getBoardCamera, placeBoardCamera, restoreCanvasView, setCanvasMode, } from "./viewStore.js";
|
|
6
6
|
import { normalizeUrl, normalizedUrlKey } from "./normalizeUrl.js";
|
|
7
|
-
import { removeHtmlArtifact } from "../iterations/client.js";
|
|
8
7
|
import { applyLayoutShifts, boundsOf, centerCamera, fitCamera, layoutShifts, nextCardPosition, pushOverlappingCards, reinsertInRecordedOrder, iterationPosition, } from "./layout.js";
|
|
9
8
|
const frameGroups = new Map();
|
|
10
9
|
export function setFrameGroup(group) { frameGroups.set(group.id, group); }
|
|
@@ -75,7 +74,7 @@ function notify() {
|
|
|
75
74
|
}
|
|
76
75
|
listeners.forEach((l) => l());
|
|
77
76
|
}
|
|
78
|
-
/** Adds one card
|
|
77
|
+
/** Adds one card to the end of the row. */
|
|
79
78
|
export function addCanvasCard(url, title) {
|
|
80
79
|
const before = cards;
|
|
81
80
|
const size = lastUsedCardSize ?? defaultViewportSize();
|
|
@@ -139,8 +138,7 @@ function recordCreation(before, created) {
|
|
|
139
138
|
const shifts = layoutShifts(before, cards);
|
|
140
139
|
const restore = (redo) => {
|
|
141
140
|
if (!redo) {
|
|
142
|
-
// Direct creation drags finish placement after the
|
|
143
|
-
// Redo must recover the dropped position, dimensions, and loaded title.
|
|
141
|
+
// Direct creation drags finish placement after recording, so redo must recover the dropped geometry and title.
|
|
144
142
|
for (const [index, recorded] of after.entries()) {
|
|
145
143
|
const current = createdIds.has(recorded.id) && cards.find((card) => card.id === recorded.id);
|
|
146
144
|
if (current)
|
|
@@ -183,14 +181,11 @@ function selectFallbackAfterRemoval(removedIds) {
|
|
|
183
181
|
if (removedIds.has(focusedCardId ?? ""))
|
|
184
182
|
focusedCardId = fallbackId;
|
|
185
183
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (!
|
|
184
|
+
/** Reports removed iteration content; the drafts/artifacts owner decides what to release. */
|
|
185
|
+
function releaseUnusedIteration(card, remaining = cards) {
|
|
186
|
+
if (!iterationId(card.content))
|
|
189
187
|
return;
|
|
190
|
-
|
|
191
|
-
void removeHtmlArtifact(artifactId).catch((error) => {
|
|
192
|
-
console.warn("Nudge UI could not remove an unused HTML iteration:", error);
|
|
193
|
-
});
|
|
188
|
+
frameLifecycle().release(card.content, remaining.map((candidate) => candidate.content));
|
|
194
189
|
}
|
|
195
190
|
function recordRemoval(before, removed) {
|
|
196
191
|
let snapshot = removed;
|
|
@@ -215,7 +210,7 @@ function recordRemoval(before, removed) {
|
|
|
215
210
|
});
|
|
216
211
|
}
|
|
217
212
|
export function removeCanvasCard(id, { undoable = false } = {}) {
|
|
218
|
-
if (
|
|
213
|
+
if (!frameLifecycle().canEdit())
|
|
219
214
|
return;
|
|
220
215
|
const removed = cards.find((card) => card.id === id);
|
|
221
216
|
if (!removed)
|
|
@@ -231,10 +226,7 @@ export function removeCanvasCard(id, { undoable = false } = {}) {
|
|
|
231
226
|
if (!undoable)
|
|
232
227
|
releaseUnusedIteration(removed);
|
|
233
228
|
}
|
|
234
|
-
/**
|
|
235
|
-
* Opens one editor target in the iframe workspace without replacing restored
|
|
236
|
-
* cards or their dimensions.
|
|
237
|
-
*/
|
|
229
|
+
/** Opens one editor target without replacing restored cards or their dimensions. */
|
|
238
230
|
export function activateIframeWorkspace(url, viewport, options = {}) {
|
|
239
231
|
const normalized = normalizeUrl(url);
|
|
240
232
|
if (!normalized || normalized.origin !== window.location.origin)
|
|
@@ -368,7 +360,7 @@ export function fitAllCards(viewport) {
|
|
|
368
360
|
return;
|
|
369
361
|
placeBoardCamera(fitCamera(bounds, viewport ?? windowViewport(), FIT_ALL_PADDING) ?? DEFAULT_CAMERA);
|
|
370
362
|
}
|
|
371
|
-
/** Centers
|
|
363
|
+
/** Centers the cards without changing the current zoom. */
|
|
372
364
|
export function focusCanvasCards(cardIds, viewport) {
|
|
373
365
|
const bounds = selectedBounds(cardIds);
|
|
374
366
|
if (!bounds)
|
|
@@ -424,6 +416,36 @@ export function setCardPosition(id, x, y) {
|
|
|
424
416
|
cards = cards.map((c) => (c.id === id ? { ...c, x, y } : c));
|
|
425
417
|
notify();
|
|
426
418
|
}
|
|
419
|
+
function cardGeometry(id) {
|
|
420
|
+
const card = cards.find((candidate) => candidate.id === id);
|
|
421
|
+
return card ? { x: card.x, y: card.y, width: card.width, height: card.height } : null;
|
|
422
|
+
}
|
|
423
|
+
/** The returned commit records the whole gesture as one undo step; programmatic placement stays out of history. */
|
|
424
|
+
export function beginCardGeometryChange(id) {
|
|
425
|
+
const before = cardGeometry(id);
|
|
426
|
+
let committed = false;
|
|
427
|
+
return () => {
|
|
428
|
+
if (committed || !before)
|
|
429
|
+
return;
|
|
430
|
+
committed = true;
|
|
431
|
+
const after = cardGeometry(id);
|
|
432
|
+
if (!after || (after.x === before.x && after.y === before.y && after.width === before.width && after.height === before.height))
|
|
433
|
+
return;
|
|
434
|
+
const restore = (geometry) => {
|
|
435
|
+
if (!cards.some((card) => card.id === id))
|
|
436
|
+
return;
|
|
437
|
+
cards = cards.map((card) => card.id === id ? { ...card, ...geometry } : card);
|
|
438
|
+
selectCard(id);
|
|
439
|
+
activateHistoryCard(id);
|
|
440
|
+
};
|
|
441
|
+
recordCanvasChange({
|
|
442
|
+
cardIds: [id],
|
|
443
|
+
undo: () => restore(before),
|
|
444
|
+
redo: () => restore(after),
|
|
445
|
+
dispose: () => undefined,
|
|
446
|
+
});
|
|
447
|
+
};
|
|
448
|
+
}
|
|
427
449
|
export function hydrateCanvasStore(newMode, newCards, newCamera, restoredFocusedCardId = null, restoredPresentation = "focus", restoredGroups = []) {
|
|
428
450
|
frameGroups.clear();
|
|
429
451
|
for (const group of restoredGroups)
|
|
@@ -469,7 +491,6 @@ function frameRoute(card) {
|
|
|
469
491
|
label: normalized.pathname,
|
|
470
492
|
};
|
|
471
493
|
}
|
|
472
|
-
/** Returns a route-based label that distinguishes copies and HTML iterations. */
|
|
473
494
|
export function getCanvasCardLabel(card, frameCards = cards) {
|
|
474
495
|
const route = frameRoute(card);
|
|
475
496
|
const candidates = frameCards.some((candidate) => candidate.id === card.id) ? frameCards : [...frameCards, card];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { CanvasFrame } from "./canvasFrame.js";
|
|
2
|
+
import type { Rect } from "../overlay/overlayGeometry.js";
|
|
3
|
+
import { type ControllerToRendererMessage, type FrameIdentity } from "./frameProtocol.js";
|
|
4
|
+
export declare const PROJECT_ID: string;
|
|
5
|
+
export declare const WORKSPACE_ID: string;
|
|
6
|
+
export interface FramePoint {
|
|
7
|
+
readonly x: number;
|
|
8
|
+
readonly y: number;
|
|
9
|
+
}
|
|
10
|
+
/** Measured, not read from the camera: correct on the board, in focus view, and mid-transition. */
|
|
11
|
+
export interface FrameViewport extends Readonly<Rect> {
|
|
12
|
+
readonly scale: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RendererElementRef {
|
|
15
|
+
readonly elementId: string;
|
|
16
|
+
readonly cid: string;
|
|
17
|
+
readonly src: string;
|
|
18
|
+
}
|
|
19
|
+
type Envelope = "protocolVersion" | "projectId" | "workspaceId" | "cardId";
|
|
20
|
+
type WithoutEnvelope<T> = T extends unknown ? Omit<T, Envelope> : never;
|
|
21
|
+
export type ControllerMessageBody = WithoutEnvelope<ControllerToRendererMessage>;
|
|
22
|
+
export interface FrameConnection {
|
|
23
|
+
readonly cardId: string;
|
|
24
|
+
readonly iframe: CanvasFrame;
|
|
25
|
+
readonly identity: FrameIdentity;
|
|
26
|
+
/** The renderer's document; null while the frame navigates or blocks access. */
|
|
27
|
+
document(): Document | null;
|
|
28
|
+
/** Null unless exactly one element carries the renderer ID and its source identity still matches. */
|
|
29
|
+
element(ref: RendererElementRef): HTMLElement | null;
|
|
30
|
+
viewport(): FrameViewport;
|
|
31
|
+
post(message: ControllerMessageBody): void;
|
|
32
|
+
}
|
|
33
|
+
export declare function measureFrameViewport(iframe: CanvasFrame): FrameViewport;
|
|
34
|
+
export declare function toViewportPoint(viewport: FrameViewport, point: FramePoint): FramePoint;
|
|
35
|
+
/** Pass `false` for an axis whose size is a guide thickness in controller pixels. */
|
|
36
|
+
export declare function toViewportRect(viewport: FrameViewport, rect: Rect, scaleSize?: {
|
|
37
|
+
readonly width: boolean;
|
|
38
|
+
readonly height: boolean;
|
|
39
|
+
}): Rect;
|
|
40
|
+
export declare function findRendererElement(doc: Document | null, ref: RendererElementRef): HTMLElement | null;
|
|
41
|
+
export declare function connectFrame(cardId: string, iframe: CanvasFrame): FrameConnection;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { PROTOCOL_VERSION, } from "./frameProtocol.js";
|
|
2
|
+
import { RENDERER_ELEMENT_ID_ATTR } from "./rendererCidIndex.js";
|
|
3
|
+
export const PROJECT_ID = typeof window !== "undefined" && window.location?.origin
|
|
4
|
+
? window.location.origin
|
|
5
|
+
: "";
|
|
6
|
+
export const WORKSPACE_ID = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function"
|
|
7
|
+
? crypto.randomUUID()
|
|
8
|
+
: `ws-${Date.now()}`;
|
|
9
|
+
const RENDERER_ELEMENT_ID = /^r\d+$/;
|
|
10
|
+
const connections = new WeakMap();
|
|
11
|
+
export function measureFrameViewport(iframe) {
|
|
12
|
+
const rect = iframe.getBoundingClientRect();
|
|
13
|
+
return {
|
|
14
|
+
left: rect.left,
|
|
15
|
+
top: rect.top,
|
|
16
|
+
width: rect.width,
|
|
17
|
+
height: rect.height,
|
|
18
|
+
scale: iframe.clientWidth > 0 ? rect.width / iframe.clientWidth : 1,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function toViewportPoint(viewport, point) {
|
|
22
|
+
return {
|
|
23
|
+
x: viewport.left + point.x * viewport.scale,
|
|
24
|
+
y: viewport.top + point.y * viewport.scale,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Pass `false` for an axis whose size is a guide thickness in controller pixels. */
|
|
28
|
+
export function toViewportRect(viewport, rect, scaleSize = { width: true, height: true }) {
|
|
29
|
+
return {
|
|
30
|
+
left: viewport.left + rect.left * viewport.scale,
|
|
31
|
+
top: viewport.top + rect.top * viewport.scale,
|
|
32
|
+
width: scaleSize.width ? rect.width * viewport.scale : rect.width,
|
|
33
|
+
height: scaleSize.height ? rect.height * viewport.scale : rect.height,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function findRendererElement(doc, ref) {
|
|
37
|
+
if (!doc || !RENDERER_ELEMENT_ID.test(ref.elementId))
|
|
38
|
+
return null;
|
|
39
|
+
const candidates = doc.querySelectorAll(`[${RENDERER_ELEMENT_ID_ATTR}="${ref.elementId}"]`);
|
|
40
|
+
const candidate = candidates.length === 1 ? candidates[0] : null;
|
|
41
|
+
if (!candidate
|
|
42
|
+
|| candidate.getAttribute("data-cid") !== ref.cid
|
|
43
|
+
|| (candidate.getAttribute("data-src") ?? "") !== ref.src)
|
|
44
|
+
return null;
|
|
45
|
+
const frameWindow = doc.defaultView;
|
|
46
|
+
return frameWindow && candidate instanceof frameWindow.HTMLElement ? candidate : null;
|
|
47
|
+
}
|
|
48
|
+
export function connectFrame(cardId, iframe) {
|
|
49
|
+
const existing = connections.get(iframe);
|
|
50
|
+
if (existing?.cardId === cardId)
|
|
51
|
+
return existing;
|
|
52
|
+
const identity = { projectId: PROJECT_ID, workspaceId: WORKSPACE_ID, cardId };
|
|
53
|
+
const connection = {
|
|
54
|
+
cardId,
|
|
55
|
+
iframe,
|
|
56
|
+
identity,
|
|
57
|
+
document() {
|
|
58
|
+
try {
|
|
59
|
+
return iframe.contentDocument;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
element: (ref) => findRendererElement(connection.document(), ref),
|
|
66
|
+
viewport: () => measureFrameViewport(iframe),
|
|
67
|
+
post(message) {
|
|
68
|
+
iframe.contentWindow?.postMessage({ ...message, protocolVersion: PROTOCOL_VERSION, ...identity }, window.location.origin);
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
connections.set(iframe, connection);
|
|
72
|
+
return connection;
|
|
73
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FrameContent } from "./frameContent.js";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-store effects a frame removal needs: whether drafts allow editing, and
|
|
4
|
+
* who releases the frame's draft and HTML artifact. Canvas registers nothing
|
|
5
|
+
* itself, so it never imports drafts or the iteration client.
|
|
6
|
+
*/
|
|
7
|
+
export interface FrameLifecycle {
|
|
8
|
+
readonly canEdit: () => boolean;
|
|
9
|
+
readonly release: (released: FrameContent, remaining: readonly FrameContent[]) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function setFrameLifecycle(next: FrameLifecycle | null): void;
|
|
12
|
+
export declare function frameLifecycle(): FrameLifecycle;
|
|
@@ -2,17 +2,13 @@ import type { ComponentOverride } from "../componentSemantics/types.js";
|
|
|
2
2
|
import type { RenderedInstanceOverride } from "../changes/editModel.js";
|
|
3
3
|
import type { NudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
|
|
4
4
|
import type { SpacingDescriptor } from "../overlay/spacingGestures.js";
|
|
5
|
+
import type { RendererCursor } from "../ui/customCursors.js";
|
|
5
6
|
export declare const PROTOCOL_VERSION = 21;
|
|
6
7
|
export interface FrameMessage {
|
|
7
8
|
type: string;
|
|
8
9
|
protocolVersion: number;
|
|
9
10
|
}
|
|
10
|
-
/**
|
|
11
|
-
* Pre-identity solicitation from a renderer whose bootstrap finished after
|
|
12
|
-
* the controller's load-time parent-ready (or whose document never received
|
|
13
|
-
* one). Carries no FrameIdentity: the whole point is that the renderer does
|
|
14
|
-
* not have one yet. The controller answers with ParentReadyMessage.
|
|
15
|
-
*/
|
|
11
|
+
/** Pre-identity solicitation from a renderer that missed parent-ready; carries no FrameIdentity. */
|
|
16
12
|
export interface RendererHelloMessage extends FrameMessage {
|
|
17
13
|
type: "renderer-hello";
|
|
18
14
|
}
|
|
@@ -59,32 +55,26 @@ export interface ReplaceStylesMessage extends FrameMessage {
|
|
|
59
55
|
instanceOverrides: RenderedInstanceOverride[];
|
|
60
56
|
/** Controller-owned structural intent; renderers never own this change log. */
|
|
61
57
|
structuralChanges: import("../projection/structuralProjection.js").StructuralChange[];
|
|
62
|
-
/** Controller-owned durable rendered text intent. */
|
|
63
58
|
textContentChanges: import("../changes/types.js").TextContentChangeRecord[];
|
|
64
|
-
/** Controller-owned semantic component overrides for Canvas runtimes. */
|
|
65
59
|
componentOverrides: ComponentOverride[];
|
|
60
|
+
/** Generated identities the edits refer to; omitted while edits are hidden. */
|
|
61
|
+
runtimeIdentities?: import("../runtime/runtimeIdentityClaims.js").RuntimeIdentityClaim[];
|
|
66
62
|
}
|
|
67
|
-
/** Renderer acknowledgement that one complete controller snapshot is applied. */
|
|
68
63
|
export interface ProjectionAppliedMessage extends RendererMessage {
|
|
69
64
|
type: "projection-applied";
|
|
70
65
|
revision: number;
|
|
71
66
|
}
|
|
72
|
-
/**
|
|
73
|
-
* Renderer-local outcomes for one controller snapshot. This is diagnostic
|
|
74
|
-
* data only: accepting it never changes controller-owned structural intent.
|
|
75
|
-
*/
|
|
67
|
+
/** Diagnostics only: accepting these never changes controller-owned structural intent. */
|
|
76
68
|
export interface StructuralProjectionReportMessage extends RendererMessage {
|
|
77
69
|
type: "structural-projection-report";
|
|
78
70
|
revision: number;
|
|
79
71
|
reports: import("../projection/structuralProjection.js").StructuralProjectionReport[];
|
|
80
72
|
}
|
|
81
|
-
/** Renderer-local CSS-instance outcomes for one controller snapshot. */
|
|
82
73
|
export interface RenderedInstanceProjectionReportMessage extends RendererMessage {
|
|
83
74
|
type: "rendered-instance-projection-report";
|
|
84
75
|
revision: number;
|
|
85
76
|
reports: import("../projection/renderedInstance.js").DocumentProjectionReport[];
|
|
86
77
|
}
|
|
87
|
-
/** Renderer-local outcomes for one controller-owned text snapshot. */
|
|
88
78
|
export interface TextProjectionReportMessage extends RendererMessage {
|
|
89
79
|
type: "text-projection-report";
|
|
90
80
|
revision: number;
|
|
@@ -96,7 +86,6 @@ export interface NavigationIntentMessage extends RendererMessage {
|
|
|
96
86
|
/** The renderer kept its own route and asks the controller for a card instead. */
|
|
97
87
|
openInCard?: boolean;
|
|
98
88
|
}
|
|
99
|
-
/** Tells a renderer whether ordinary link clicks open a new canvas card. */
|
|
100
89
|
export interface LinkTargetStateMessage extends RendererMessage {
|
|
101
90
|
type: "link-target-state";
|
|
102
91
|
openInCard: boolean;
|
|
@@ -130,15 +119,12 @@ export interface ElementHoverMessage extends RendererMessage {
|
|
|
130
119
|
x: number;
|
|
131
120
|
y: number;
|
|
132
121
|
} | null;
|
|
133
|
-
/** The spacing handle under the pointer
|
|
134
|
-
* start; only present when the pointer is inside the handle hit area. */
|
|
122
|
+
/** The spacing handle under the pointer; only present inside the handle hit area. */
|
|
135
123
|
spacing?: SpacingDescriptor | null;
|
|
136
|
-
/** The padding bar or layout gap area under the pointer, regardless of the
|
|
137
|
-
* handle. Drives the hover fill overlay across the whole area. */
|
|
124
|
+
/** The padding bar or layout gap area under the pointer, regardless of the handle. */
|
|
138
125
|
hoverSpacing?: SpacingDescriptor | null;
|
|
139
126
|
}
|
|
140
|
-
/**
|
|
141
|
-
* from its own keyboard events because focus lives in the iframe. */
|
|
127
|
+
/** The parent never infers modifier state: focus lives in the iframe. */
|
|
142
128
|
export interface ElementMeasureStateMessage extends RendererMessage {
|
|
143
129
|
type: "element-measure-state";
|
|
144
130
|
altKey: boolean;
|
|
@@ -156,7 +142,6 @@ export interface ElementClickMessage extends RendererMessage {
|
|
|
156
142
|
/** True for a Shift-click that toggles this target in the selection group. */
|
|
157
143
|
additive?: boolean;
|
|
158
144
|
}
|
|
159
|
-
/** Requests controller-owned inline text editing for an element in this frame. */
|
|
160
145
|
export interface InlineTextIntentMessage extends RendererMessage {
|
|
161
146
|
type: "inline-text-intent";
|
|
162
147
|
intent: "pointer-down" | "double-click";
|
|
@@ -170,7 +155,6 @@ export interface InlineTextIntentMessage extends RendererMessage {
|
|
|
170
155
|
clickCount?: number;
|
|
171
156
|
emptyProjectionId?: string;
|
|
172
157
|
}
|
|
173
|
-
/** Renderer request to clear the controller-owned element selection. */
|
|
174
158
|
export interface ElementDeselectMessage extends RendererMessage {
|
|
175
159
|
type: "element-deselect";
|
|
176
160
|
}
|
|
@@ -199,7 +183,6 @@ export interface ElementDragMoveMessage extends RendererMessage {
|
|
|
199
183
|
x: number;
|
|
200
184
|
y: number;
|
|
201
185
|
};
|
|
202
|
-
/** True while Shift is held; spacing drags use this to snap by 8px steps. */
|
|
203
186
|
shiftKey?: boolean;
|
|
204
187
|
}
|
|
205
188
|
export interface ElementDragEndMessage extends RendererMessage {
|
|
@@ -208,7 +191,6 @@ export interface ElementDragEndMessage extends RendererMessage {
|
|
|
208
191
|
x: number;
|
|
209
192
|
y: number;
|
|
210
193
|
};
|
|
211
|
-
/** True while Shift is held; spacing drags use this to snap by 8px steps. */
|
|
212
194
|
shiftKey?: boolean;
|
|
213
195
|
/** True when the renderer lost the gesture before the pointer was released. */
|
|
214
196
|
cancelled?: boolean;
|
|
@@ -231,7 +213,6 @@ export interface HistoryRequestMessage extends RendererMessage {
|
|
|
231
213
|
type: "history-request";
|
|
232
214
|
action: "undo" | "redo";
|
|
233
215
|
}
|
|
234
|
-
/** Requests the parent-owned inspector visibility toggle from frame focus. */
|
|
235
216
|
export interface InspectorToggleRequestMessage extends RendererMessage {
|
|
236
217
|
type: "inspector-toggle-request";
|
|
237
218
|
}
|
|
@@ -241,7 +222,6 @@ export interface InspectorOpenRequestMessage extends RendererMessage {
|
|
|
241
222
|
}
|
|
242
223
|
export type KeyboardShortcutCode = "Backslash" | "KeyI" | "KeyV" | "KeyC" | "KeyP" | "KeyS";
|
|
243
224
|
export type KeyboardShortcutPhase = "keydown" | "keyup";
|
|
244
|
-
/** Forwards controller-owned keyboard shortcuts from an iframe document. */
|
|
245
225
|
export interface KeyboardShortcutMessage extends RendererMessage {
|
|
246
226
|
type: "keyboard-shortcut";
|
|
247
227
|
phase: KeyboardShortcutPhase;
|
|
@@ -281,7 +261,6 @@ export interface BoardGestureStateMessage extends RendererMessage {
|
|
|
281
261
|
/** Ordinary wheel gestures pan the board instead of scrolling the app. */
|
|
282
262
|
panScroll?: boolean;
|
|
283
263
|
}
|
|
284
|
-
/** Proxies modified wheel gestures that originate inside an iframe card. */
|
|
285
264
|
export interface ZoomMessage extends RendererMessage {
|
|
286
265
|
type: "zoom";
|
|
287
266
|
deltaY: number;
|
|
@@ -290,7 +269,6 @@ export interface ZoomMessage extends RendererMessage {
|
|
|
290
269
|
y: number;
|
|
291
270
|
};
|
|
292
271
|
}
|
|
293
|
-
/** Proxies ordinary wheel gestures as normalized pixel distances. */
|
|
294
272
|
export interface WheelPanMessage extends RendererMessage {
|
|
295
273
|
type: "wheel-pan";
|
|
296
274
|
deltaX: number;
|
|
@@ -301,25 +279,29 @@ export interface AppInteractionModifierMessage extends RendererMessage {
|
|
|
301
279
|
type: "app-interaction-modifier";
|
|
302
280
|
held: boolean;
|
|
303
281
|
}
|
|
304
|
-
export
|
|
282
|
+
export interface InspectorInteractionStateMessage extends RendererMessage {
|
|
283
|
+
type: "inspector-interaction-state";
|
|
284
|
+
open: boolean;
|
|
285
|
+
interactionsEnabled: boolean;
|
|
286
|
+
cursor: RendererCursor;
|
|
287
|
+
/** CSS cursor for the Comment tool; the controller renders it. */
|
|
288
|
+
commentCursor?: string;
|
|
289
|
+
}
|
|
290
|
+
export type RendererToControllerMessage = RendererHelloMessage | FrameReadyMessage | FrameRuntimeMessage | FrameMetadataMessage | FrameLoadError | ProjectionAppliedMessage | StructuralProjectionReportMessage | RenderedInstanceProjectionReportMessage | TextProjectionReportMessage | NavigationIntentMessage | ElementHoverMessage | ElementMeasureStateMessage | ElementClickMessage | InlineTextIntentMessage | ElementDeselectMessage | ElementDragStartMessage | ElementDragMoveMessage | ElementDragEndMessage | ElementDeleteMessage | ElementNudgeMessage | HistoryRequestMessage | InspectorToggleRequestMessage | InspectorOpenRequestMessage | KeyboardShortcutMessage | PanStartMessage | PanMoveMessage | PanEndMessage | PanModifierMessage | ZoomMessage | WheelPanMessage | AppInteractionModifierMessage;
|
|
291
|
+
export type ControllerToRendererMessage = ParentReadyMessage | ReplaceStylesMessage | LinkTargetStateMessage | PanModifierMessage | MeasureModifierMessage | BoardGestureStateMessage | InspectorInteractionStateMessage;
|
|
292
|
+
export declare function isRendererMessageType(type: unknown): type is RendererToControllerMessage["type"];
|
|
293
|
+
export type FrameProtocolMessage = ParentReadyMessage | RendererHelloMessage | FrameReadyMessage | FrameRuntimeMessage | FrameMetadataMessage | FrameLoadError | ReplaceStylesMessage | ProjectionAppliedMessage | StructuralProjectionReportMessage | RenderedInstanceProjectionReportMessage | TextProjectionReportMessage | NavigationIntentMessage | LinkTargetStateMessage | ElementHoverMessage | ElementMeasureStateMessage | ElementClickMessage | InlineTextIntentMessage | ElementDeselectMessage | ElementDragStartMessage | ElementDragMoveMessage | ElementDragEndMessage | ElementDeleteMessage | ElementNudgeMessage | HistoryRequestMessage | InspectorToggleRequestMessage | InspectorOpenRequestMessage | KeyboardShortcutMessage | PanStartMessage | PanMoveMessage | PanEndMessage | PanModifierMessage | MeasureModifierMessage | BoardGestureStateMessage | ZoomMessage | WheelPanMessage | AppInteractionModifierMessage | InspectorInteractionStateMessage;
|
|
305
294
|
export declare function setRendererIdentity(identity: FrameIdentity): void;
|
|
306
295
|
export declare function clearRendererIdentity(expected?: FrameIdentity): void;
|
|
307
296
|
export declare function getRendererIdentity(): FrameIdentity | null;
|
|
308
297
|
export declare function isRendererMessageFor(value: unknown, identity: FrameIdentity): value is RendererMessage;
|
|
309
298
|
export declare function isKeyboardShortcutCode(value: unknown): value is KeyboardShortcutCode;
|
|
310
|
-
/** Strict JSON-only schema for renderer-originated global keyboard shortcuts. */
|
|
311
299
|
export declare function isKeyboardShortcutMessage(value: unknown, identity: FrameIdentity): value is KeyboardShortcutMessage;
|
|
312
|
-
/** Strict JSON-only schema for selecting an element from a renderer frame. */
|
|
313
300
|
export declare function isElementClickMessage(value: unknown, identity: FrameIdentity): value is ElementClickMessage;
|
|
314
|
-
/** Strict JSON-only schema for starting controller-owned inline text editing. */
|
|
315
301
|
export declare function isInlineTextIntentMessage(value: unknown, identity: FrameIdentity): value is InlineTextIntentMessage;
|
|
316
|
-
/** Strict JSON-only schema for renderer diagnostics before the parent records them. */
|
|
317
302
|
export declare function isStructuralProjectionReportMessage(value: unknown, identity: FrameIdentity): value is StructuralProjectionReportMessage;
|
|
318
|
-
/** Strict JSON-only schema for renderer CSS-instance diagnostics. */
|
|
319
303
|
export declare function isRenderedInstanceProjectionReportMessage(value: unknown, identity: FrameIdentity): value is RenderedInstanceProjectionReportMessage;
|
|
320
|
-
/** Strict JSON-only schema for renderer rendered-text diagnostics. */
|
|
321
304
|
export declare function isTextProjectionReportMessage(value: unknown, identity: FrameIdentity): value is TextProjectionReportMessage;
|
|
322
|
-
/** Strict JSON-only acknowledgement for a fully applied Canvas snapshot. */
|
|
323
305
|
export declare function isProjectionAppliedMessage(value: unknown, identity: FrameIdentity): value is ProjectionAppliedMessage;
|
|
324
306
|
export declare function isComponentOverrideList(value: unknown): value is ComponentOverride[];
|
|
325
307
|
export declare function sendToParent(msg: FrameProtocolMessage): void;
|
|
@@ -1,24 +1,44 @@
|
|
|
1
1
|
import { isDocumentProjectionReport } from "../projection/renderedInstance.js";
|
|
2
2
|
import { isTextProjectionReport } from "../projection/textProjection.js";
|
|
3
3
|
import { isStructuralProjectionReport } from "../projection/structuralProjectionBoundary.js";
|
|
4
|
-
//
|
|
5
|
-
// v20 adds Shift state to element drag messages so spacing handles can snap
|
|
6
|
-
// changes to 8px increments.
|
|
7
|
-
// v19 adds spacing drag gestures (hover point, spacing descriptor, start
|
|
8
|
-
// point, and cancelled drag-end) plus renderer-to-controller keyboard shortcut
|
|
9
|
-
// forwarding for Canvas frames.
|
|
10
|
-
// v18 adds parent-to-renderer Alt modifier forwarding for Canvas measurements.
|
|
11
|
-
// v17 adds an idempotent renderer request to open the parent inspector. v16
|
|
12
|
-
// adds controller-owned inline-text intents for Canvas frames. v15 adds
|
|
13
|
-
// renderer-to-controller element deselection for Canvas frames. v14
|
|
14
|
-
// adds border widths to hover geometry so containment measurements can exclude
|
|
15
|
-
// the container border. v13 adds source-parent-aware structural moves and
|
|
16
|
-
// bounded structural failure reasons to the full projection snapshot. v12
|
|
17
|
-
// added the projection-applied acknowledgement: the controller can avoid
|
|
18
|
-
// rereading a Canvas iframe until the renderer has applied its revision. v11
|
|
19
|
-
// added the renderer-hello handshake solicitation for runtimes whose boot
|
|
20
|
-
// completes after the controller's load-time parent-ready.
|
|
4
|
+
// Bumped on every message-shape change; the controller and renderer must agree exactly.
|
|
21
5
|
export const PROTOCOL_VERSION = 21;
|
|
6
|
+
const RENDERER_MESSAGE_TYPES = {
|
|
7
|
+
"renderer-hello": true,
|
|
8
|
+
"frame-ready": true,
|
|
9
|
+
"frame-runtime": true,
|
|
10
|
+
"frame-metadata": true,
|
|
11
|
+
"frame-error": true,
|
|
12
|
+
"projection-applied": true,
|
|
13
|
+
"structural-projection-report": true,
|
|
14
|
+
"rendered-instance-projection-report": true,
|
|
15
|
+
"text-projection-report": true,
|
|
16
|
+
"navigation-intent": true,
|
|
17
|
+
"element-hover": true,
|
|
18
|
+
"element-measure-state": true,
|
|
19
|
+
"element-click": true,
|
|
20
|
+
"inline-text-intent": true,
|
|
21
|
+
"element-deselect": true,
|
|
22
|
+
"element-drag-start": true,
|
|
23
|
+
"element-drag-move": true,
|
|
24
|
+
"element-drag-end": true,
|
|
25
|
+
"element-delete": true,
|
|
26
|
+
"element-nudge": true,
|
|
27
|
+
"history-request": true,
|
|
28
|
+
"inspector-toggle-request": true,
|
|
29
|
+
"inspector-open-request": true,
|
|
30
|
+
"keyboard-shortcut": true,
|
|
31
|
+
"pan-start": true,
|
|
32
|
+
"pan-move": true,
|
|
33
|
+
"pan-end": true,
|
|
34
|
+
"pan-modifier": true,
|
|
35
|
+
"zoom": true,
|
|
36
|
+
"wheel-pan": true,
|
|
37
|
+
"app-interaction-modifier": true,
|
|
38
|
+
};
|
|
39
|
+
export function isRendererMessageType(type) {
|
|
40
|
+
return typeof type === "string" && Object.hasOwn(RENDERER_MESSAGE_TYPES, type);
|
|
41
|
+
}
|
|
22
42
|
let rendererIdentity = null;
|
|
23
43
|
export function setRendererIdentity(identity) {
|
|
24
44
|
rendererIdentity = identity;
|
|
@@ -46,7 +66,6 @@ export function isKeyboardShortcutCode(value) {
|
|
|
46
66
|
|| value === "KeyP"
|
|
47
67
|
|| value === "KeyS";
|
|
48
68
|
}
|
|
49
|
-
/** Strict JSON-only schema for renderer-originated global keyboard shortcuts. */
|
|
50
69
|
export function isKeyboardShortcutMessage(value, identity) {
|
|
51
70
|
if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
|
|
52
71
|
return false;
|
|
@@ -58,7 +77,6 @@ export function isKeyboardShortcutMessage(value, identity) {
|
|
|
58
77
|
&& (ownValue(value, "phase") === "keydown" || ownValue(value, "phase") === "keyup")
|
|
59
78
|
&& isKeyboardShortcutCode(ownValue(value, "code"));
|
|
60
79
|
}
|
|
61
|
-
/** Strict JSON-only schema for selecting an element from a renderer frame. */
|
|
62
80
|
export function isElementClickMessage(value, identity) {
|
|
63
81
|
if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
|
|
64
82
|
return false;
|
|
@@ -79,7 +97,6 @@ export function isElementClickMessage(value, identity) {
|
|
|
79
97
|
&& typeof ownValue(value, "component") === "string"
|
|
80
98
|
&& (additive === undefined || typeof additive === "boolean");
|
|
81
99
|
}
|
|
82
|
-
/** Strict JSON-only schema for starting controller-owned inline text editing. */
|
|
83
100
|
export function isInlineTextIntentMessage(value, identity) {
|
|
84
101
|
if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
|
|
85
102
|
return false;
|
|
@@ -104,7 +121,6 @@ export function isInlineTextIntentMessage(value, identity) {
|
|
|
104
121
|
&& (clickCount === undefined || (typeof clickCount === "number" && Number.isSafeInteger(clickCount) && clickCount >= 0))
|
|
105
122
|
&& (emptyProjectionId === undefined || typeof emptyProjectionId === "string");
|
|
106
123
|
}
|
|
107
|
-
/** Strict JSON-only schema for renderer diagnostics before the parent records them. */
|
|
108
124
|
export function isStructuralProjectionReportMessage(value, identity) {
|
|
109
125
|
if (!isRendererMessageFor(value, identity) || !value || typeof value !== "object")
|
|
110
126
|
return false;
|
|
@@ -119,7 +135,6 @@ export function isStructuralProjectionReportMessage(value, identity) {
|
|
|
119
135
|
&& Array.isArray(message.reports)
|
|
120
136
|
&& message.reports.every(isStructuralProjectionReport);
|
|
121
137
|
}
|
|
122
|
-
/** Strict JSON-only schema for renderer CSS-instance diagnostics. */
|
|
123
138
|
export function isRenderedInstanceProjectionReportMessage(value, identity) {
|
|
124
139
|
if (!isRendererMessageFor(value, identity) || !value || typeof value !== "object")
|
|
125
140
|
return false;
|
|
@@ -134,7 +149,6 @@ export function isRenderedInstanceProjectionReportMessage(value, identity) {
|
|
|
134
149
|
&& Array.isArray(message.reports)
|
|
135
150
|
&& message.reports.every(isDocumentProjectionReport);
|
|
136
151
|
}
|
|
137
|
-
/** Strict JSON-only schema for renderer rendered-text diagnostics. */
|
|
138
152
|
export function isTextProjectionReportMessage(value, identity) {
|
|
139
153
|
if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
|
|
140
154
|
return false;
|
|
@@ -150,7 +164,6 @@ export function isTextProjectionReportMessage(value, identity) {
|
|
|
150
164
|
&& Array.isArray(reports)
|
|
151
165
|
&& reports.every(isTextProjectionReport);
|
|
152
166
|
}
|
|
153
|
-
/** Strict JSON-only acknowledgement for a fully applied Canvas snapshot. */
|
|
154
167
|
export function isProjectionAppliedMessage(value, identity) {
|
|
155
168
|
if (!isRendererMessageFor(value, identity) || !isProtocolObject(value))
|
|
156
169
|
return false;
|
|
@@ -9,7 +9,6 @@ const FRAME_SCROLLBAR_CSS = `
|
|
|
9
9
|
scrollbar-width: thin;
|
|
10
10
|
}
|
|
11
11
|
`;
|
|
12
|
-
/** Gives frame documents thin scrollbars over a transparent track by default. */
|
|
13
12
|
export function installFrameScrollbarStyles(doc) {
|
|
14
13
|
if (!doc.head || doc.getElementById(FRAME_SCROLLBAR_STYLE_ID))
|
|
15
14
|
return () => undefined;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type CanvasCamera } from "./viewStore.js";
|
|
1
2
|
export interface LayoutCard {
|
|
2
3
|
readonly id: string;
|
|
3
4
|
readonly x: number;
|
|
@@ -11,42 +12,29 @@ export interface Bounds {
|
|
|
11
12
|
readonly maxX: number;
|
|
12
13
|
readonly maxY: number;
|
|
13
14
|
}
|
|
14
|
-
/**
|
|
15
|
+
/** Where a new card or iteration is placed on the board. */
|
|
16
|
+
export interface CardPosition {
|
|
17
|
+
readonly x: number;
|
|
18
|
+
readonly y: number;
|
|
19
|
+
}
|
|
15
20
|
export interface LayoutShift {
|
|
16
21
|
readonly id: string;
|
|
17
22
|
readonly from: Pick<LayoutCard, "x" | "y">;
|
|
18
23
|
readonly to: Pick<LayoutCard, "x" | "y">;
|
|
19
24
|
}
|
|
20
25
|
export declare function boundsOf(cards: readonly LayoutCard[]): Bounds;
|
|
21
|
-
|
|
22
|
-
export declare function nextCardPosition(cards: readonly LayoutCard[], gap: number): {
|
|
23
|
-
x: number;
|
|
24
|
-
y: number;
|
|
25
|
-
};
|
|
26
|
+
export declare function nextCardPosition(cards: readonly LayoutCard[], gap: number): CardPosition;
|
|
26
27
|
export declare function pushOverlappingCards<T extends LayoutCard>(cards: readonly T[], protectedIds: ReadonlySet<string>, gap: number): T[];
|
|
27
|
-
export declare function iterationPosition(cards: readonly LayoutCard[], source: LayoutCard, gap: number):
|
|
28
|
-
x: number;
|
|
29
|
-
y: number;
|
|
30
|
-
};
|
|
31
|
-
/** Zooms and centers content inside the padded viewport; null for empty content. */
|
|
28
|
+
export declare function iterationPosition(cards: readonly LayoutCard[], source: LayoutCard, gap: number): CardPosition;
|
|
32
29
|
export declare function fitCamera(bounds: Bounds, viewport: {
|
|
33
30
|
width: number;
|
|
34
31
|
height: number;
|
|
35
|
-
}, padding: number):
|
|
36
|
-
x: number;
|
|
37
|
-
y: number;
|
|
38
|
-
zoom: number;
|
|
39
|
-
} | null;
|
|
32
|
+
}, padding: number): CanvasCamera | null;
|
|
40
33
|
export declare function centerCamera(bounds: Bounds, zoom: number, viewport: {
|
|
41
34
|
width: number;
|
|
42
35
|
height: number;
|
|
43
|
-
}):
|
|
44
|
-
x: number;
|
|
45
|
-
y: number;
|
|
46
|
-
zoom: number;
|
|
47
|
-
};
|
|
36
|
+
}): CanvasCamera;
|
|
48
37
|
export declare function layoutShifts(before: readonly LayoutCard[], after: readonly LayoutCard[]): LayoutShift[];
|
|
49
38
|
/** Replays recorded shifts as deltas, so frames moved since the creation keep their later moves. */
|
|
50
39
|
export declare function applyLayoutShifts<T extends LayoutCard>(cards: readonly T[], shifts: readonly LayoutShift[], forward: boolean): T[];
|
|
51
|
-
/** Reinserts recorded frames after their nearest recorded predecessor that still exists. */
|
|
52
40
|
export declare function reinsertInRecordedOrder<T extends LayoutCard>(cards: readonly T[], recorded: readonly T[], ids: ReadonlySet<string>): T[];
|