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
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/** Loads the inspector into a page without a host Adapter; everything a host normally supplies is derived from the live document. */
|
|
2
|
+
import { bootstrapNudgeUi, configureNudgeUiRuntime, getNudgeUiRuntimeConfig, isCanvasRenderer, readNudgeUiEditorTarget, setInspectorOpen, unmountInspector, } from "./index.js";
|
|
3
|
+
import { CANVAS_RENDERER_ATTR } from "./canvas/roleDetection.js";
|
|
4
|
+
import { releaseLease } from "./canvas/workspaceLease.js";
|
|
5
|
+
import { enablePageSurface } from "./canvas/pageSurface.js";
|
|
6
|
+
import { setNudgeUiHostDevFlag } from "./runtime/devFlag.js";
|
|
7
|
+
import { configureInspectorStorage } from "./runtime/inspectorStorage.js";
|
|
8
|
+
import { configureSketchStorage } from "./sketch/persistence.js";
|
|
9
|
+
import { preferAdoptedStylesheets } from "./runtime/ownedStylesheets.js";
|
|
10
|
+
import { enableInspectionPerformanceDiagnostics } from "./inspection/performanceDiagnostics.js";
|
|
11
|
+
import { installLazyRuntimeIdentity } from "./runtime/staticHtmlRuntimeIdentity.js";
|
|
12
|
+
import { createTokenInventory } from "../css/token-inventory/inventory.js";
|
|
13
|
+
export { createMirroredStorage } from "./runtime/inspectorStorage.js";
|
|
14
|
+
export { isSketchDocument, isSketchHandoffRecord } from "./sketch/model.js";
|
|
15
|
+
const MOUNT_ID = "nudge-ui-root";
|
|
16
|
+
const LOADED_FLAG = "__NUDGE_UI_PAGE_INSPECTOR__";
|
|
17
|
+
const COMPUTED_ROOT_ID = "computed:root";
|
|
18
|
+
function isNudgeOwnedSheet(sheet) {
|
|
19
|
+
const owner = sheet.ownerNode;
|
|
20
|
+
return owner instanceof Element && owner.hasAttribute("data-nudge-ui");
|
|
21
|
+
}
|
|
22
|
+
function sheetId(sheet, index, base) {
|
|
23
|
+
const owner = sheet.ownerNode;
|
|
24
|
+
const viteId = owner instanceof HTMLElement ? owner.dataset.viteDevId : undefined;
|
|
25
|
+
if (viteId)
|
|
26
|
+
return viteId;
|
|
27
|
+
if (sheet.href) {
|
|
28
|
+
const url = new URL(sheet.href, base);
|
|
29
|
+
return url.origin === new URL(base).origin ? url.pathname : url.href;
|
|
30
|
+
}
|
|
31
|
+
return `inline-style-${index + 1}`;
|
|
32
|
+
}
|
|
33
|
+
function serializeRules(sheet) {
|
|
34
|
+
return Array.from(sheet.cssRules, (rule) => rule.cssText).join("\n");
|
|
35
|
+
}
|
|
36
|
+
async function collectSheet(sheet, index, base) {
|
|
37
|
+
const id = sheetId(sheet, index, base);
|
|
38
|
+
try {
|
|
39
|
+
return { id, content: serializeRules(sheet) };
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
if (!sheet.href)
|
|
43
|
+
return { id, readError: "stylesheet rules are not readable" };
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const response = await fetch(sheet.href, { mode: "cors", credentials: "omit" });
|
|
47
|
+
if (!response.ok)
|
|
48
|
+
return { id, readError: `HTTP ${response.status}` };
|
|
49
|
+
return { id, content: await response.text() };
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return { id, readError: "cross-origin stylesheet without CORS access" };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Root custom properties missing from readable stylesheets: CORS-blocked sheets, rejected scoped rules, or JS-set variables. */
|
|
56
|
+
function computedRootDeclarations(doc, definedNames) {
|
|
57
|
+
const declarations = [];
|
|
58
|
+
const view = doc.defaultView ?? window;
|
|
59
|
+
for (const element of [doc.documentElement, doc.body]) {
|
|
60
|
+
if (!element)
|
|
61
|
+
continue;
|
|
62
|
+
const style = view.getComputedStyle(element);
|
|
63
|
+
for (let index = 0; index < style.length; index += 1) {
|
|
64
|
+
const name = style.item(index);
|
|
65
|
+
if (!name.startsWith("--") || definedNames.has(name))
|
|
66
|
+
continue;
|
|
67
|
+
const value = style.getPropertyValue(name).trim();
|
|
68
|
+
if (!value)
|
|
69
|
+
continue;
|
|
70
|
+
definedNames.add(name);
|
|
71
|
+
declarations.push(` ${name}: ${value};`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return declarations.length > 0 ? `:root {\n${declarations.join("\n")}\n}` : null;
|
|
75
|
+
}
|
|
76
|
+
function mapDiagnostic(diagnostic) {
|
|
77
|
+
return {
|
|
78
|
+
code: diagnostic.code,
|
|
79
|
+
message: diagnostic.message,
|
|
80
|
+
module: diagnostic.module ?? diagnostic.artifact ?? "document",
|
|
81
|
+
...(diagnostic.exportName !== undefined ? { exportName: diagnostic.exportName } : {}),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
async function collectDocumentTokens(doc) {
|
|
85
|
+
const sheets = Array.from(doc.styleSheets).filter((sheet) => !isNudgeOwnedSheet(sheet));
|
|
86
|
+
const collected = await Promise.all(sheets.map((sheet, index) => collectSheet(sheet, index, doc.location.href)));
|
|
87
|
+
const inventory = createTokenInventory();
|
|
88
|
+
for (const [order, sheet] of collected.entries()) {
|
|
89
|
+
const artifact = {
|
|
90
|
+
buildTool: "browser",
|
|
91
|
+
id: sheet.id,
|
|
92
|
+
stage: "authored",
|
|
93
|
+
provenance: "project",
|
|
94
|
+
order,
|
|
95
|
+
...(sheet.content !== undefined ? { content: sheet.content } : {}),
|
|
96
|
+
...(sheet.readError ? {
|
|
97
|
+
diagnostics: [{
|
|
98
|
+
code: "stylesheet-unreadable",
|
|
99
|
+
message: `Stylesheet "${sheet.id}" could not be read: ${sheet.readError}`,
|
|
100
|
+
module: sheet.id,
|
|
101
|
+
}],
|
|
102
|
+
} : {}),
|
|
103
|
+
};
|
|
104
|
+
inventory.apply(artifact);
|
|
105
|
+
}
|
|
106
|
+
const definedNames = new Set(inventory.snapshot().definitions.map((definition) => definition.cssName));
|
|
107
|
+
const computed = computedRootDeclarations(doc, definedNames);
|
|
108
|
+
if (computed) {
|
|
109
|
+
inventory.apply({
|
|
110
|
+
buildTool: "browser",
|
|
111
|
+
id: COMPUTED_ROOT_ID,
|
|
112
|
+
stage: "authored",
|
|
113
|
+
provenance: "project",
|
|
114
|
+
order: -1,
|
|
115
|
+
content: computed,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const snapshot = inventory.snapshot();
|
|
119
|
+
return {
|
|
120
|
+
tokenCatalog: snapshot.definitions.map((definition) => ({
|
|
121
|
+
...definition,
|
|
122
|
+
declarations: definition.declarations.map((declaration) => ({
|
|
123
|
+
id: declaration.id,
|
|
124
|
+
order: declaration.order,
|
|
125
|
+
value: declaration.value,
|
|
126
|
+
source: declaration.source,
|
|
127
|
+
important: declaration.important,
|
|
128
|
+
context: declaration.context,
|
|
129
|
+
})),
|
|
130
|
+
})),
|
|
131
|
+
tokens: snapshot.tokens,
|
|
132
|
+
tokenDiagnostics: snapshot.diagnostics.map(mapDiagnostic),
|
|
133
|
+
tokenGeneration: `browser:${snapshot.generation}`,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const NO_TOKENS = { tokenCatalog: [], tokens: [], tokenDiagnostics: [], tokenGeneration: "" };
|
|
137
|
+
function runtimeConfig(tokens, unavailableReason) {
|
|
138
|
+
return {
|
|
139
|
+
projectId: `page:${location.origin}`,
|
|
140
|
+
host: "static-html",
|
|
141
|
+
framework: "HTML",
|
|
142
|
+
stylingSystem: "CSS custom properties",
|
|
143
|
+
capabilities: { canvas: !unavailableReason, componentSemantics: false, domNavigation: !unavailableReason },
|
|
144
|
+
features: { canvasIterations: false, mcp: false, ...(unavailableReason ? { sketch: false } : {}) },
|
|
145
|
+
...(unavailableReason ? { inspectionUnavailableReason: unavailableReason } : {}),
|
|
146
|
+
componentContracts: [],
|
|
147
|
+
...tokens,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function createMount() {
|
|
151
|
+
const mount = document.createElement("div");
|
|
152
|
+
mount.id = MOUNT_ID;
|
|
153
|
+
document.body.append(mount);
|
|
154
|
+
return mount;
|
|
155
|
+
}
|
|
156
|
+
/** Mounts the inspector and returns a toggle that fully unmounts and remounts it. */
|
|
157
|
+
function mountPageInspector() {
|
|
158
|
+
let mount = null;
|
|
159
|
+
let removeIdentityListeners = null;
|
|
160
|
+
const enable = () => {
|
|
161
|
+
setNudgeUiHostDevFlag(true);
|
|
162
|
+
removeIdentityListeners = installLazyRuntimeIdentity(document);
|
|
163
|
+
mount = createMount();
|
|
164
|
+
bootstrapNudgeUi(mount);
|
|
165
|
+
setInspectorOpen(true);
|
|
166
|
+
};
|
|
167
|
+
const disable = (target) => {
|
|
168
|
+
unmountInspector();
|
|
169
|
+
removeIdentityListeners?.();
|
|
170
|
+
removeIdentityListeners = null;
|
|
171
|
+
releaseLease();
|
|
172
|
+
setInspectorOpen(false);
|
|
173
|
+
setNudgeUiHostDevFlag(false);
|
|
174
|
+
target.remove();
|
|
175
|
+
mount = null;
|
|
176
|
+
};
|
|
177
|
+
enable();
|
|
178
|
+
return () => {
|
|
179
|
+
if (mount)
|
|
180
|
+
disable(mount);
|
|
181
|
+
else
|
|
182
|
+
enable();
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** Replaces the page content with the iframe editor; the caller loads the inspector into its renderer frames. */
|
|
186
|
+
function mountEditor(onRendererFrameLoad) {
|
|
187
|
+
// The editor never owns the tab title; it shows the application's own title.
|
|
188
|
+
const pageTitle = document.title;
|
|
189
|
+
document.head.replaceChildren();
|
|
190
|
+
document.body.replaceChildren();
|
|
191
|
+
for (const element of [document.documentElement, document.body]) {
|
|
192
|
+
element.removeAttribute("style");
|
|
193
|
+
element.removeAttribute("hidden");
|
|
194
|
+
element.removeAttribute("inert");
|
|
195
|
+
}
|
|
196
|
+
document.title = pageTitle;
|
|
197
|
+
const layout = new CSSStyleSheet();
|
|
198
|
+
layout.replaceSync(`html, body, #${MOUNT_ID} { display: block; width: 100%; height: 100%; margin: 0; overflow: hidden; }`);
|
|
199
|
+
document.adoptedStyleSheets = [layout];
|
|
200
|
+
// A parsed meta policy remains active even after the original head is removed.
|
|
201
|
+
document.addEventListener("securitypolicyviolation", (event) => {
|
|
202
|
+
if (event.disposition !== "enforce" || event.effectiveDirective !== "frame-src")
|
|
203
|
+
return;
|
|
204
|
+
if (getNudgeUiRuntimeConfig().inspectionUnavailableReason)
|
|
205
|
+
return;
|
|
206
|
+
configureNudgeUiRuntime(runtimeConfig(NO_TOKENS, "its security policy"));
|
|
207
|
+
});
|
|
208
|
+
setNudgeUiHostDevFlag(true);
|
|
209
|
+
const mount = createMount();
|
|
210
|
+
bootstrapNudgeUi(mount);
|
|
211
|
+
setInspectorOpen(true);
|
|
212
|
+
// Storage hydration can delay the controller mount; watch its host now.
|
|
213
|
+
const root = mount.shadowRoot ?? mount.attachShadow({ mode: "open" });
|
|
214
|
+
const frames = () => root.querySelectorAll(`iframe[${CANVAS_RENDERER_ATTR}]`);
|
|
215
|
+
const applicationDocument = (frame) => {
|
|
216
|
+
const frameDocument = frame.contentDocument;
|
|
217
|
+
return frameDocument && frameDocument.location.href !== "about:blank" ? frameDocument : null;
|
|
218
|
+
};
|
|
219
|
+
// A frame's `load` waits for every image, so renderers start once the DOM is ready.
|
|
220
|
+
const announced = new WeakSet();
|
|
221
|
+
const announceReadyDocuments = () => {
|
|
222
|
+
for (const frame of frames()) {
|
|
223
|
+
const frameDocument = applicationDocument(frame);
|
|
224
|
+
if (!frameDocument || frameDocument.readyState === "loading" || announced.has(frameDocument))
|
|
225
|
+
continue;
|
|
226
|
+
announced.add(frameDocument);
|
|
227
|
+
onRendererFrameLoad?.();
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
// Mirrors the primary application frame's title, which follows its navigation.
|
|
231
|
+
const syncApplicationTitle = () => {
|
|
232
|
+
for (const frame of frames()) {
|
|
233
|
+
const frameTitle = applicationDocument(frame)?.title;
|
|
234
|
+
if (frameTitle) {
|
|
235
|
+
if (document.title !== frameTitle)
|
|
236
|
+
document.title = frameTitle;
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
window.setInterval(() => {
|
|
242
|
+
announceReadyDocuments();
|
|
243
|
+
syncApplicationTitle();
|
|
244
|
+
}, 100);
|
|
245
|
+
// Script-built styles exist only in the application frames, not in this document.
|
|
246
|
+
const collectFrameTokens = (frame) => {
|
|
247
|
+
const frameDocument = applicationDocument(frame);
|
|
248
|
+
if (!frameDocument)
|
|
249
|
+
return;
|
|
250
|
+
void collectDocumentTokens(frameDocument).then((tokens) => {
|
|
251
|
+
if (getNudgeUiRuntimeConfig().inspectionUnavailableReason)
|
|
252
|
+
return;
|
|
253
|
+
if (tokens.tokenGeneration !== getNudgeUiRuntimeConfig().tokenGeneration) {
|
|
254
|
+
configureNudgeUiRuntime(runtimeConfig(tokens));
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
};
|
|
258
|
+
const watched = new WeakSet();
|
|
259
|
+
const watch = () => {
|
|
260
|
+
for (const frame of frames()) {
|
|
261
|
+
if (watched.has(frame))
|
|
262
|
+
continue;
|
|
263
|
+
watched.add(frame);
|
|
264
|
+
frame.addEventListener("load", () => collectFrameTokens(frame));
|
|
265
|
+
collectFrameTokens(frame);
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
new MutationObserver(watch).observe(root, { childList: true, subtree: true });
|
|
269
|
+
watch();
|
|
270
|
+
}
|
|
271
|
+
function exitEditor() {
|
|
272
|
+
location.replace(readNudgeUiEditorTarget(location.href) ?? location.href);
|
|
273
|
+
}
|
|
274
|
+
/** A second bundle copy in the same window toggles the first instance, whose stores own the UI. */
|
|
275
|
+
export async function startPageInspector(options = {}) {
|
|
276
|
+
const target = window;
|
|
277
|
+
const loaded = target[LOADED_FLAG];
|
|
278
|
+
if (loaded) {
|
|
279
|
+
loaded.toggle();
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const editor = options.surface === "editor" && readNudgeUiEditorTarget(location.href) !== null;
|
|
283
|
+
let toggle = editor ? exitEditor : null;
|
|
284
|
+
target[LOADED_FLAG] = {
|
|
285
|
+
surface: editor ? "editor" : "page",
|
|
286
|
+
toggle: () => toggle?.(),
|
|
287
|
+
enablePerformanceDiagnostics: () => enableInspectionPerformanceDiagnostics(document),
|
|
288
|
+
};
|
|
289
|
+
if (options.storage)
|
|
290
|
+
configureInspectorStorage(options.storage);
|
|
291
|
+
if (options.sketchStorage)
|
|
292
|
+
configureSketchStorage(options.sketchStorage);
|
|
293
|
+
if (options.adoptStylesheets)
|
|
294
|
+
preferAdoptedStylesheets();
|
|
295
|
+
const tokens = options.unavailableReason ? NO_TOKENS : await collectDocumentTokens(document);
|
|
296
|
+
configureNudgeUiRuntime(runtimeConfig(tokens, options.unavailableReason));
|
|
297
|
+
if (editor) {
|
|
298
|
+
mountEditor(options.onRendererFrameLoad);
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
if (!options.unavailableReason)
|
|
302
|
+
enablePageSurface();
|
|
303
|
+
toggle = mountPageInspector();
|
|
304
|
+
}
|
|
305
|
+
console.info(`[nudge-ui] Inspector loaded in ${editor ? "editor" : "page"} mode with ${tokens.tokenCatalog.length} tokens`
|
|
306
|
+
+ (tokens.tokenDiagnostics.length > 0 ? ` and ${tokens.tokenDiagnostics.length} stylesheet diagnostics.` : "."), tokens.tokenDiagnostics);
|
|
307
|
+
}
|
|
308
|
+
/** Only acts inside an editor Canvas frame that has no renderer yet. */
|
|
309
|
+
export function startCanvasRenderer(options = {}) {
|
|
310
|
+
const target = window;
|
|
311
|
+
if (!isCanvasRenderer() || target[LOADED_FLAG])
|
|
312
|
+
return;
|
|
313
|
+
target[LOADED_FLAG] = {
|
|
314
|
+
surface: "renderer",
|
|
315
|
+
toggle: () => undefined,
|
|
316
|
+
enablePerformanceDiagnostics: () => enableInspectionPerformanceDiagnostics(document),
|
|
317
|
+
};
|
|
318
|
+
if (options.adoptStylesheets)
|
|
319
|
+
preferAdoptedStylesheets();
|
|
320
|
+
setNudgeUiHostDevFlag(true);
|
|
321
|
+
installLazyRuntimeIdentity(document);
|
|
322
|
+
configureNudgeUiRuntime(runtimeConfig(NO_TOKENS));
|
|
323
|
+
bootstrapNudgeUi(createMount());
|
|
324
|
+
// Renderers inspect their own elements, so they need this document's tokens.
|
|
325
|
+
const collectTokens = () => {
|
|
326
|
+
void collectDocumentTokens(document).then((tokens) => {
|
|
327
|
+
if (tokens.tokenGeneration !== getNudgeUiRuntimeConfig().tokenGeneration) {
|
|
328
|
+
configureNudgeUiRuntime(runtimeConfig(tokens));
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
collectTokens();
|
|
333
|
+
if (document.readyState !== "complete")
|
|
334
|
+
window.addEventListener("load", collectTokens, { once: true });
|
|
335
|
+
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
/** CSS-string escaping for selectors assembled from runtime DOM metadata. */
|
|
2
1
|
export function escapeCssString(value) {
|
|
3
|
-
// Keep ordinary
|
|
4
|
-
//
|
|
5
|
-
// complete value so punctuation cannot terminate the CSS string early.
|
|
2
|
+
// Keep ordinary selectors byte-compatible; a value containing a quote,
|
|
3
|
+
// backslash, or control character is hex-escaped whole to prevent an early string end.
|
|
6
4
|
if (!/["\\\0-\x1f\x7f]/.test(value))
|
|
7
5
|
return value;
|
|
8
6
|
let escaped = "";
|
|
@@ -3,7 +3,8 @@ import type { RenderedInstanceOverride } from "../changes/editModel.js";
|
|
|
3
3
|
import { type StructuralChange } from "./structuralProjection.js";
|
|
4
4
|
import type { ComponentOverride } from "../componentSemantics/types.js";
|
|
5
5
|
import { type TextContentChangeRecord } from "../changes/types.js";
|
|
6
|
-
import type { DraftContents } from "../
|
|
6
|
+
import type { DraftContents } from "../drafts/model.js";
|
|
7
|
+
import { type RuntimeIdentityClaim } from "../runtime/runtimeIdentityClaims.js";
|
|
7
8
|
export interface DraftProjectionSource extends DraftContents {
|
|
8
9
|
readonly revision: number;
|
|
9
10
|
}
|
|
@@ -14,7 +15,6 @@ export interface CompiledManagedStyles {
|
|
|
14
15
|
export interface SerializedManagedStyles {
|
|
15
16
|
readonly css: string;
|
|
16
17
|
}
|
|
17
|
-
/** A complete, read-only projection for one document-local runtime. */
|
|
18
18
|
export interface DraftProjectionPlan<ManagedStyles> {
|
|
19
19
|
readonly sourceRevision: number;
|
|
20
20
|
readonly managedStyles: ManagedStyles;
|
|
@@ -22,9 +22,11 @@ export interface DraftProjectionPlan<ManagedStyles> {
|
|
|
22
22
|
readonly structuralChanges: readonly StructuralChange[];
|
|
23
23
|
readonly textContentChanges: readonly TextContentChangeRecord[];
|
|
24
24
|
readonly componentOverrides: readonly ComponentOverride[];
|
|
25
|
+
/** Omitted by hold-to-view-original plans, which keep the attached identities. */
|
|
26
|
+
readonly runtimeIdentities?: readonly RuntimeIdentityClaim[];
|
|
25
27
|
}
|
|
26
|
-
/** Applies every projection dimension to one document-local runtime. */
|
|
27
28
|
export interface DocumentProjectionAdapter<ManagedStyles> {
|
|
29
|
+
applyRuntimeIdentities(claims: readonly RuntimeIdentityClaim[]): void;
|
|
28
30
|
applyStructural(changes: readonly StructuralChange[]): void;
|
|
29
31
|
applyRenderedInstances(overrides: readonly RenderedInstanceOverride[]): void;
|
|
30
32
|
applyText(changes: readonly TextContentChangeRecord[]): void;
|
|
@@ -32,12 +34,6 @@ export interface DocumentProjectionAdapter<ManagedStyles> {
|
|
|
32
34
|
applyManagedStyles(styles: ManagedStyles): void;
|
|
33
35
|
}
|
|
34
36
|
export declare function compileDraftProjection(snapshot: DraftProjectionSource): DraftProjectionPlan<CompiledManagedStyles>;
|
|
35
|
-
/**
|
|
36
|
-
* Replaces one document projection in the required order.
|
|
37
|
-
*
|
|
38
|
-
* Structural intent is applied first because later rendered-instance evidence
|
|
39
|
-
* can depend on the restored element order. Managed CSS is applied last so
|
|
40
|
-
* selectors can use the document-local instance markers installed above.
|
|
41
|
-
*/
|
|
37
|
+
/** Order matters: identities first (selectors resolve by them), then structural, then managed CSS last (selectors use the instance markers above). */
|
|
42
38
|
export declare function applyDraftProjection<ManagedStyles>(adapter: DocumentProjectionAdapter<ManagedStyles>, plan: DraftProjectionPlan<ManagedStyles>): void;
|
|
43
39
|
export declare function applyHostDraftProjection(plan: DraftProjectionPlan<CompiledManagedStyles>): void;
|
|
@@ -6,6 +6,7 @@ import { replaceComponentOverrideProjection } from "../componentSemantics/index.
|
|
|
6
6
|
import { componentChangeToOverride } from "../componentSemantics/changeModel.js";
|
|
7
7
|
import { isComponentChange } from "../changes/types.js";
|
|
8
8
|
import { buildManagedStyleRules } from "../changes/managedStyleProjection.js";
|
|
9
|
+
import { applyRuntimeIdentityClaims, collectRuntimeIdentityClaims, } from "../runtime/runtimeIdentityClaims.js";
|
|
9
10
|
export function compileDraftProjection(snapshot) {
|
|
10
11
|
const changes = [...snapshot.changes];
|
|
11
12
|
const rules = buildManagedStyleRules(changes);
|
|
@@ -22,16 +23,13 @@ export function compileDraftProjection(snapshot) {
|
|
|
22
23
|
.filter(isComponentChange)
|
|
23
24
|
.map(componentChangeToOverride)
|
|
24
25
|
.filter((override) => override !== null),
|
|
26
|
+
runtimeIdentities: collectRuntimeIdentityClaims(snapshot),
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Replaces one document projection in the required order.
|
|
29
|
-
*
|
|
30
|
-
* Structural intent is applied first because later rendered-instance evidence
|
|
31
|
-
* can depend on the restored element order. Managed CSS is applied last so
|
|
32
|
-
* selectors can use the document-local instance markers installed above.
|
|
33
|
-
*/
|
|
29
|
+
/** Order matters: identities first (selectors resolve by them), then structural, then managed CSS last (selectors use the instance markers above). */
|
|
34
30
|
export function applyDraftProjection(adapter, plan) {
|
|
31
|
+
if (plan.runtimeIdentities)
|
|
32
|
+
adapter.applyRuntimeIdentities(plan.runtimeIdentities);
|
|
35
33
|
adapter.applyStructural(plan.structuralChanges);
|
|
36
34
|
adapter.applyRenderedInstances(plan.instanceOverrides);
|
|
37
35
|
adapter.applyText(plan.textContentChanges);
|
|
@@ -39,6 +37,9 @@ export function applyDraftProjection(adapter, plan) {
|
|
|
39
37
|
adapter.applyManagedStyles(plan.managedStyles);
|
|
40
38
|
}
|
|
41
39
|
const hostDocumentProjectionAdapter = {
|
|
40
|
+
applyRuntimeIdentities: (claims) => {
|
|
41
|
+
applyRuntimeIdentityClaims(document, claims);
|
|
42
|
+
},
|
|
42
43
|
applyStructural: (changes) => {
|
|
43
44
|
applyStructuralProjection(document, changes);
|
|
44
45
|
},
|
|
@@ -20,14 +20,8 @@ export interface PreviewResult {
|
|
|
20
20
|
}
|
|
21
21
|
export declare function ensureManagedSheet(): void;
|
|
22
22
|
export declare function rulesToCssText(rules: StyleRule[]): string;
|
|
23
|
-
/** Synchronous serialized view of the rules currently projected into the managed sheet. */
|
|
24
23
|
export declare function getManagedSheetText(): string;
|
|
25
|
-
/**
|
|
26
|
-
* Replaces the managed sheet with the canonical projection. Keeping the
|
|
27
|
-
* serialized rules authoritative avoids stale CSSStyleRule references when a
|
|
28
|
-
* framework dev server reparses or reattaches style nodes during a render.
|
|
29
|
-
*/
|
|
24
|
+
/** Serialized rules stay authoritative to avoid stale CSSStyleRule references when a framework reparses style nodes. */
|
|
30
25
|
export declare function applyRules(rules: StyleRule[]): void;
|
|
31
|
-
/** Verify what the browser painted after the managed sheet was projected. */
|
|
32
26
|
export declare function verifyPreview(el: HTMLElement | null, property: string, requestedValue: string): PreviewResult;
|
|
33
27
|
export declare function removeManagedSheet(): void;
|
|
@@ -2,6 +2,7 @@ import { getElementComputedStyle } from "../runtime/domRealm.js";
|
|
|
2
2
|
import { notifyBrowserStylesheetChange } from "../inspection/browserCssInspectionRegistry.js";
|
|
3
3
|
import { escapeAttrValue, escapeCssString } from "./cssEscapes.js";
|
|
4
4
|
import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
5
|
+
import { adoptStylesheet, allowsStyleElements, releaseAdoptedStylesheet } from "../runtime/ownedStylesheets.js";
|
|
5
6
|
export { escapeAttrValue, escapeCssString } from "./cssEscapes.js";
|
|
6
7
|
const SHEET_ID = "nudge-ui-styles";
|
|
7
8
|
let managedHeadGuardDocument = null;
|
|
@@ -25,6 +26,12 @@ function installManagedHeadGuard(doc) {
|
|
|
25
26
|
}
|
|
26
27
|
export function ensureManagedSheet() {
|
|
27
28
|
const doc = document;
|
|
29
|
+
if (!allowsStyleElements(doc)) {
|
|
30
|
+
// Adopted sheets already cascade after every document stylesheet.
|
|
31
|
+
adoptStylesheet(doc, SHEET_ID, rulesToCssText(managedRules));
|
|
32
|
+
exposeManagedSheetText(doc);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
28
35
|
// SAFETY: getElementById returns an Element; the managed style element is created as HTMLStyleElement when missing.
|
|
29
36
|
let el = doc.getElementById(SHEET_ID);
|
|
30
37
|
if (!el) {
|
|
@@ -35,9 +42,7 @@ export function ensureManagedSheet() {
|
|
|
35
42
|
}
|
|
36
43
|
let sheet = el.sheet;
|
|
37
44
|
if (!sheet) {
|
|
38
|
-
//
|
|
39
|
-
// not implement it). Recreate the managed element so later clear/revert
|
|
40
|
-
// operations can always recover instead of leaving history wedged.
|
|
45
|
+
// Recreate the element when the browser rejects the sheet so clear/revert can still recover.
|
|
41
46
|
el.remove();
|
|
42
47
|
el = doc.createElement("style");
|
|
43
48
|
el.id = SHEET_ID;
|
|
@@ -53,8 +58,10 @@ export function ensureManagedSheet() {
|
|
|
53
58
|
rehydrateManagedSheet(doc, el);
|
|
54
59
|
}
|
|
55
60
|
installManagedHeadGuard(doc);
|
|
61
|
+
exposeManagedSheetText(doc);
|
|
62
|
+
}
|
|
63
|
+
function exposeManagedSheetText(doc) {
|
|
56
64
|
if (isNudgeUiDev() && doc.defaultView) {
|
|
57
|
-
// Keep the canonical CSS available to dev diagnostics.
|
|
58
65
|
doc.defaultView.__nudgeUiGetManagedSheetText = getManagedSheetText;
|
|
59
66
|
}
|
|
60
67
|
}
|
|
@@ -88,18 +95,12 @@ export function rulesToCssText(rules) {
|
|
|
88
95
|
}
|
|
89
96
|
return lines.join("\n");
|
|
90
97
|
}
|
|
91
|
-
/**
|
|
98
|
+
/** Retained so a framework can rehydrate a moved style node. */
|
|
92
99
|
let managedRules = [];
|
|
93
|
-
/** Synchronous serialized view of the rules currently projected into the managed sheet. */
|
|
94
100
|
export function getManagedSheetText() {
|
|
95
101
|
return rulesToCssText(managedRules);
|
|
96
102
|
}
|
|
97
|
-
/**
|
|
98
|
-
* Rehydrate the CSSOM after moving the managed style element in <head>.
|
|
99
|
-
*
|
|
100
|
-
* Some browsers replace the CSSStyleSheet when that element is reattached.
|
|
101
|
-
* Rewriting the canonical text keeps the new sheet and the model aligned.
|
|
102
|
-
*/
|
|
103
|
+
/** Some browsers replace the CSSStyleSheet when the style element is reattached, so rewrite the canonical text. */
|
|
103
104
|
function rehydrateManagedSheet(doc, el) {
|
|
104
105
|
const sheet = el.sheet;
|
|
105
106
|
if (!sheet)
|
|
@@ -120,20 +121,25 @@ function rehydrateManagedSheet(doc, el) {
|
|
|
120
121
|
failedRehydrationCssText = el.sheet.cssRules.length === rules.length ? null : cssText;
|
|
121
122
|
notifyBrowserStylesheetChange(doc);
|
|
122
123
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Writes the canonical projection to the managed style element and retains a
|
|
125
|
-
* copy for rehydration if a framework moves or reparses that element.
|
|
126
|
-
*/
|
|
127
124
|
function rebuildSheetText(rules) {
|
|
128
|
-
// SAFETY: getElementById returns an Element; the managed style element is created as HTMLStyleElement when missing.
|
|
129
|
-
const el = document.getElementById(SHEET_ID);
|
|
130
|
-
if (!el)
|
|
131
|
-
return;
|
|
132
125
|
const desired = rules.map((rule) => ({
|
|
133
126
|
...rule,
|
|
134
127
|
declarations: { ...rule.declarations },
|
|
135
128
|
}));
|
|
136
129
|
const cssText = rulesToCssText(desired);
|
|
130
|
+
if (!allowsStyleElements(document)) {
|
|
131
|
+
const rulesChanged = rulesToCssText(managedRules) !== cssText;
|
|
132
|
+
managedRules = desired;
|
|
133
|
+
if (!rulesChanged)
|
|
134
|
+
return;
|
|
135
|
+
adoptStylesheet(document, SHEET_ID, cssText);
|
|
136
|
+
notifyBrowserStylesheetChange(document);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// SAFETY: getElementById returns an Element; the managed style element is created as HTMLStyleElement when missing.
|
|
140
|
+
const el = document.getElementById(SHEET_ID);
|
|
141
|
+
if (!el)
|
|
142
|
+
return;
|
|
137
143
|
const rulesChanged = rulesToCssText(managedRules) !== cssText;
|
|
138
144
|
const shouldRetryDroppedRules = el.sheet !== null
|
|
139
145
|
&& el.sheet.cssRules.length !== desired.length
|
|
@@ -147,11 +153,7 @@ function rebuildSheetText(rules) {
|
|
|
147
153
|
: null;
|
|
148
154
|
notifyBrowserStylesheetChange(document);
|
|
149
155
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Replaces the managed sheet with the canonical projection. Keeping the
|
|
152
|
-
* serialized rules authoritative avoids stale CSSStyleRule references when a
|
|
153
|
-
* framework dev server reparses or reattaches style nodes during a render.
|
|
154
|
-
*/
|
|
156
|
+
/** Serialized rules stay authoritative to avoid stale CSSStyleRule references when a framework reparses style nodes. */
|
|
155
157
|
export function applyRules(rules) {
|
|
156
158
|
ensureManagedSheet();
|
|
157
159
|
const desired = [];
|
|
@@ -194,7 +196,6 @@ function hasImportantAuthorRule(el, property) {
|
|
|
194
196
|
}
|
|
195
197
|
return false;
|
|
196
198
|
}
|
|
197
|
-
/** Verify what the browser painted after the managed sheet was projected. */
|
|
198
199
|
export function verifyPreview(el, property, requestedValue) {
|
|
199
200
|
if (!el || !el.isConnected) {
|
|
200
201
|
return { requestedValue, computedValue: "", status: "conflict", reason: "target-missing" };
|
|
@@ -237,6 +238,7 @@ export function removeManagedSheet() {
|
|
|
237
238
|
const el = document.getElementById(SHEET_ID);
|
|
238
239
|
if (el)
|
|
239
240
|
el.remove();
|
|
241
|
+
releaseAdoptedStylesheet(document, SHEET_ID);
|
|
240
242
|
managedRules = [];
|
|
241
243
|
failedRehydrationCssText = null;
|
|
242
244
|
notifyBrowserStylesheetChange(document);
|
|
@@ -18,50 +18,27 @@ export interface DocumentProjectionReport {
|
|
|
18
18
|
export interface RenderedInstanceChangeDiagnostic extends DocumentProjectionReport {
|
|
19
19
|
document: "Inspect" | `Canvas ${string}`;
|
|
20
20
|
}
|
|
21
|
-
/** Captures conservative, serializable identity at the moment of the action. */
|
|
22
21
|
export declare function captureRenderedInstance(el: HTMLElement): RenderedInstanceRef | null;
|
|
23
|
-
/**
|
|
24
|
-
* Resolves exactly one element, or declines to apply. Occurrence documents the
|
|
25
|
-
* captured placement, but structural previews can legitimately change it.
|
|
26
|
-
* Evidence, narrowed by a recorded invocation when present, must therefore
|
|
27
|
-
* identify one current candidate before an edit can be applied.
|
|
28
|
-
*/
|
|
22
|
+
/** Occurrence documents captured placement, but structural previews can change it; evidence must identify exactly one current candidate. */
|
|
29
23
|
export declare function resolveRenderedInstance(doc: Document, ref: RenderedInstanceRef): ResolutionResult;
|
|
30
|
-
/**
|
|
31
|
-
* Resolves a reference whose source position may have moved since capture.
|
|
32
|
-
* A relocated site still renders matching authored evidence, so an evidence
|
|
33
|
-
* miss there is reported as ambiguous rather than as proof of absence.
|
|
34
|
-
*/
|
|
24
|
+
/** A relocated site still renders matching evidence, so an evidence miss is reported as ambiguous, not missing. */
|
|
35
25
|
export declare function resolveMovedRenderedInstance(doc: Document, ref: RenderedInstanceRef): ResolutionResult;
|
|
36
|
-
/**
|
|
37
|
-
* Captures identity for a structural target. When evidence matches several
|
|
38
|
-
* identical outputs, the nearest component invocation whose entire output is
|
|
39
|
-
* this element can still identify it. Otherwise the evidence-only reference
|
|
40
|
-
* is returned and resolves as ambiguous.
|
|
41
|
-
*/
|
|
26
|
+
/** Falls back to the nearest component invocation when evidence matches several identical outputs. */
|
|
42
27
|
export declare function captureStructuralTarget(el: HTMLElement): RenderedInstanceRef | null;
|
|
43
|
-
/**
|
|
28
|
+
/** Ignores the ordinal, which is not identity after a move. */
|
|
44
29
|
export declare function matchesRenderedInstanceEvidence(el: HTMLElement, ref: RenderedInstanceRef): boolean;
|
|
45
|
-
/** Builds an instance override without changing the element's transient edit scope. */
|
|
46
30
|
export declare function buildRenderedInstanceOverride(el: HTMLElement): RenderedInstanceOverride | null;
|
|
47
|
-
/** Creates a serializable override for identity that was already validated. */
|
|
48
31
|
export declare function buildRenderedInstanceOverrideForTarget(target: RenderedInstanceRef): RenderedInstanceOverride;
|
|
49
32
|
export declare function createRenderedInstanceOverride(el: HTMLElement): RenderedInstanceOverride | null;
|
|
50
|
-
/** Returns an active transient target or the canonical target projected here. */
|
|
51
33
|
export declare function getRenderedInstanceOverride(el: HTMLElement): RenderedInstanceOverride | null;
|
|
52
34
|
export declare function clearRenderedInstanceOverride(el: HTMLElement): RenderedInstanceOverride | null;
|
|
53
35
|
export declare function instanceSelector(override: RenderedInstanceOverride): string | null;
|
|
54
|
-
/** Extracts the distinct canonical targets which renderers must resolve. */
|
|
55
36
|
export declare function collectRenderedInstanceOverrides(changes: ReadonlyArray<unknown>): RenderedInstanceOverride[];
|
|
56
|
-
/**
|
|
57
|
-
* The document-projection adapter only applies a new canonical snapshot. A
|
|
58
|
-
* later reconciliation changes diagnostics but never starts a reapply loop.
|
|
59
|
-
*/
|
|
37
|
+
/** A later reconciliation changes diagnostics but never starts a reapply loop. */
|
|
60
38
|
export declare function applyRenderedInstanceProjection(doc: Document, overrides: ReadonlyArray<RenderedInstanceOverride>): DocumentProjectionReport[];
|
|
61
39
|
/** Registers controller-owned overrides without projecting them into the editor shell. */
|
|
62
40
|
export declare function setCanonicalRenderedInstanceOverrides(overrides: ReadonlyArray<RenderedInstanceOverride>): void;
|
|
63
41
|
export declare function getRenderedInstanceProjectionReports(doc: Document): readonly DocumentProjectionReport[];
|
|
64
|
-
/** Diagnostics arrive independently when a renderer reports or React reconciles. */
|
|
65
42
|
export declare function subscribeRenderedInstanceDiagnostics(listener: () => void): () => void;
|
|
66
43
|
export declare function getRenderedInstanceDiagnosticRevision(): number;
|
|
67
44
|
export declare function recordCanvasRenderedInstanceProjectionReports(cardId: string, revision: number, reports: readonly DocumentProjectionReport[], projection?: FrameProjection): void;
|