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,5 +1,5 @@
|
|
|
1
1
|
import type { TokenDefinition, TokenEntry } from "../../css/model/index.js";
|
|
2
|
-
import { getChangesList, getPendingRules } from "../
|
|
2
|
+
import { getChangesList, getPendingRules } from "../drafts/store.js";
|
|
3
3
|
import type { InspectorProjection } from "../spacing/projection.js";
|
|
4
4
|
import type { ResolvedProperty } from "../../css/model/index.js";
|
|
5
5
|
export declare const NUDGE_UI_INSPECTION_VERSION: 1;
|
|
@@ -53,11 +53,7 @@ export interface InspectElementOptions {
|
|
|
53
53
|
catalog?: readonly TokenDefinition[];
|
|
54
54
|
tokens?: readonly TokenEntry[];
|
|
55
55
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Returns the inspector's stable, read-only facts for one rendered element.
|
|
58
|
-
* Compatibility tests and the React UI cross the same resolver/projection seam;
|
|
59
|
-
* this function deliberately performs no selection or edit side effects.
|
|
60
|
-
*/
|
|
56
|
+
/** Deliberately performs no selection or edit side effects. */
|
|
61
57
|
export declare function inspectElement(element: HTMLElement, options?: InspectElementOptions): ElementInspection;
|
|
62
58
|
export interface NudgeUiInspectionBridge {
|
|
63
59
|
version: typeof NUDGE_UI_INSPECTION_VERSION;
|
|
@@ -68,5 +64,5 @@ declare global {
|
|
|
68
64
|
__nudgeUi?: NudgeUiInspectionBridge;
|
|
69
65
|
}
|
|
70
66
|
}
|
|
71
|
-
/**
|
|
67
|
+
/** Dev-only seam used by compatibility applications. */
|
|
72
68
|
export declare function installInspectionBridge(target?: Window): () => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { getChangesList, getPendingRules
|
|
1
|
+
import { getChangesList, getPendingRules } from "../drafts/store.js";
|
|
2
|
+
import { isPreviewableChange } from "../changes/types.js";
|
|
2
3
|
import { changeKey } from "../changes/model.js";
|
|
3
4
|
import { getAnyPreviewDiagnostic } from "../changes/previewDiagnostics.js";
|
|
4
5
|
import { detectFramework } from "../prompt/detectFramework.js";
|
|
@@ -20,9 +21,7 @@ function inspectBrowserFacts(element, definitions, entries) {
|
|
|
20
21
|
tokens: session.inspectTokens(element),
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
|
-
//
|
|
24
|
-
// Adapter isolated from the document registry so one caller cannot replace
|
|
25
|
-
// the token knowledge used by the live inspector session.
|
|
24
|
+
// Fixture-local catalogs stay out of the document registry so they cannot replace the live session's token knowledge.
|
|
26
25
|
const session = createBrowserCssInspection({
|
|
27
26
|
document: doc,
|
|
28
27
|
tokenKnowledge: { definitions, entries, generation: "compatibility" },
|
|
@@ -52,11 +51,7 @@ function catalogEntry(definition) {
|
|
|
52
51
|
})),
|
|
53
52
|
};
|
|
54
53
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Returns the inspector's stable, read-only facts for one rendered element.
|
|
57
|
-
* Compatibility tests and the React UI cross the same resolver/projection seam;
|
|
58
|
-
* this function deliberately performs no selection or edit side effects.
|
|
59
|
-
*/
|
|
54
|
+
/** Deliberately performs no selection or edit side effects. */
|
|
60
55
|
export function inspectElement(element, options = {}) {
|
|
61
56
|
const runtimeConfig = getNudgeUiRuntimeConfig();
|
|
62
57
|
const definitions = options.catalog ?? runtimeConfig.tokenCatalog;
|
|
@@ -81,9 +76,7 @@ export function inspectElement(element, options = {}) {
|
|
|
81
76
|
return diagnostic ? [{ property: change.property, ...diagnostic.result }] : [];
|
|
82
77
|
}),
|
|
83
78
|
};
|
|
84
|
-
//
|
|
85
|
-
// not necessarily :root. The selected element is therefore the correct
|
|
86
|
-
// availability context for an element inspection.
|
|
79
|
+
// vanilla-extract themes attach contract variables to a theme class, not :root, so the element is the availability context.
|
|
87
80
|
const controls = properties
|
|
88
81
|
.filter((property) => !property.property.startsWith("--"))
|
|
89
82
|
.map((property) => ({
|
|
@@ -117,7 +110,7 @@ export function inspectElement(element, options = {}) {
|
|
|
117
110
|
: null,
|
|
118
111
|
};
|
|
119
112
|
}
|
|
120
|
-
/**
|
|
113
|
+
/** Dev-only seam used by compatibility applications. */
|
|
121
114
|
export function installInspectionBridge(target = window) {
|
|
122
115
|
const bridge = {
|
|
123
116
|
version: NUDGE_UI_INSPECTION_VERSION,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ContainerQueryEvaluator } from "../tokens/resolution/containerQueryEvaluator.js";
|
|
1
2
|
import type { TokenDefinition, TokenEntry } from "../../css/model/index.js";
|
|
2
3
|
import type { ResolvedProperty } from "../../css/model/index.js";
|
|
3
4
|
import type { InteractionState } from "../shell/styleState.js";
|
|
@@ -5,8 +6,7 @@ import { type TokenCatalogRow } from "../tokens/catalog.js";
|
|
|
5
6
|
export interface BrowserTokenKnowledge {
|
|
6
7
|
/** Build-time definitions normalized by a build-tool Adapter. */
|
|
7
8
|
definitions: readonly TokenDefinition[];
|
|
8
|
-
/**
|
|
9
|
-
* intentionally not mounted as custom properties in the current document. */
|
|
9
|
+
/** Compiler entries for authored references intentionally not mounted as custom properties. */
|
|
10
10
|
entries?: readonly TokenEntry[];
|
|
11
11
|
/** Changes whenever the Adapter publishes a new token inventory. */
|
|
12
12
|
generation: string | number;
|
|
@@ -15,16 +15,13 @@ export interface BrowserCssInspectionConfig {
|
|
|
15
15
|
document: Document;
|
|
16
16
|
tokenKnowledge: BrowserTokenKnowledge;
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Cascade transform owned exclusively by this module:
|
|
20
|
-
* - authored: interaction-state attribution (default; state defaults to base)
|
|
21
|
-
* - live: raw CSSOM matching as currently painted
|
|
22
|
-
* - stable: drops transient pseudo-class rules for editor token linking
|
|
23
|
-
*/
|
|
18
|
+
/** authored: interaction-state attribution; live: raw CSSOM as painted; stable: drops transient pseudo-class rules for token linking. */
|
|
24
19
|
export type InspectionCascade = "authored" | "live" | "stable";
|
|
25
20
|
export interface BrowserCssInspectionOptions {
|
|
26
21
|
state?: InteractionState;
|
|
27
22
|
cascade?: InspectionCascade;
|
|
23
|
+
/** Shared only within one synchronous refresh. */
|
|
24
|
+
containerQueries?: ContainerQueryEvaluator;
|
|
28
25
|
}
|
|
29
26
|
export type InspectionTargetStatus = "attached" | "detached" | "foreign-document" | "unsupported" | "disabled" | "disposed";
|
|
30
27
|
export type InspectionDiagnosticCode = "target-document-mismatch" | "target-detached" | "target-unsupported" | "state-unavailable" | "inspection-failed" | "production-disabled" | "session-disposed";
|
|
@@ -62,12 +59,16 @@ export interface DocumentTokenInspectionSnapshot {
|
|
|
62
59
|
}
|
|
63
60
|
export interface BrowserCssInspection {
|
|
64
61
|
inspect(element: HTMLElement, options?: BrowserCssInspectionOptions): InspectionSnapshot;
|
|
62
|
+
/** Resolves one selection with a shared, short-lived container evaluator. */
|
|
63
|
+
refresh?(elements: readonly HTMLElement[], state: InteractionState): {
|
|
64
|
+
elements: readonly InspectionSnapshot[];
|
|
65
|
+
stableProperties: readonly ResolvedProperty[];
|
|
66
|
+
};
|
|
65
67
|
inspectTokens(root?: HTMLElement): DocumentTokenInspectionSnapshot;
|
|
66
68
|
subscribe(listener: (revision: InspectionRevision) => void): () => void;
|
|
67
|
-
/** Integration hook for managed
|
|
69
|
+
/** Integration hook for writes to the inspector's own managed stylesheets. */
|
|
68
70
|
notifyStylesheetChange(): void;
|
|
69
|
-
/**
|
|
70
|
-
* the stylesheet walk inside its own budget. Cheap when already warm. */
|
|
71
|
+
/** Warms the CSSOM rule snapshot so the next inspect does not pay the stylesheet walk. */
|
|
71
72
|
prewarmRules?(): void;
|
|
72
73
|
dispose(): void;
|
|
73
74
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { createContainerQueryEvaluator } from "../tokens/resolution/containerQueryEvaluator.js";
|
|
1
2
|
import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
2
|
-
import {
|
|
3
|
+
import { countInspectionWork } from "./performanceDiagnostics.js";
|
|
4
|
+
import { buildTokenTable, getAvailableInteractionStates, getAvailableTokenCatalog, getAvailableTokenEntriesForElement, getResolvedProperties, getResolvedPropertiesForState, getResolvedPropertiesStable, invalidateStyleResolutionCache, prewarmCssomRuleSnapshot, prefetchContainerQueries, } from "../tokens/resolution.js";
|
|
3
5
|
import { buildTokenCatalogRows } from "../tokens/catalog.js";
|
|
4
|
-
import { documentRevisions, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
|
|
6
|
+
import { documentRevisions, invalidateOwnedStyleResolution, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
|
|
5
7
|
function revisionSnapshot(revisions, tokenGeneration) {
|
|
6
8
|
return {
|
|
7
9
|
element: revisions.element,
|
|
@@ -119,12 +121,12 @@ function disabledInspection(config) {
|
|
|
119
121
|
function notifyRevision(listener, revisions, tokenGeneration) {
|
|
120
122
|
listener(revisionSnapshot(revisions, tokenGeneration));
|
|
121
123
|
}
|
|
122
|
-
function resolveCascadeProperties(element, table, cascade, state) {
|
|
124
|
+
function resolveCascadeProperties(element, table, cascade, state, evaluator) {
|
|
123
125
|
if (cascade === "live")
|
|
124
|
-
return getResolvedProperties(element, table);
|
|
126
|
+
return getResolvedProperties(element, table, evaluator);
|
|
125
127
|
if (cascade === "stable")
|
|
126
|
-
return getResolvedPropertiesStable(element, table);
|
|
127
|
-
return getResolvedPropertiesForState(element, table, state);
|
|
128
|
+
return getResolvedPropertiesStable(element, table, evaluator);
|
|
129
|
+
return getResolvedPropertiesForState(element, table, state, evaluator);
|
|
128
130
|
}
|
|
129
131
|
export function createBrowserCssInspection(config) {
|
|
130
132
|
if (!isNudgeUiDev())
|
|
@@ -136,8 +138,7 @@ export function createBrowserCssInspection(config) {
|
|
|
136
138
|
const releaseDocumentResolution = retainDocumentResolution(config.document);
|
|
137
139
|
const revisionUnsubscribers = new Set();
|
|
138
140
|
const elementTables = new WeakMap();
|
|
139
|
-
// When compiler entries are merged ahead of runtime availability, keep one
|
|
140
|
-
// table per availableTokens identity so resolver caches stay warm.
|
|
141
|
+
// When compiler entries are merged ahead of runtime availability, keep one table per availableTokens identity so resolver caches stay warm.
|
|
141
142
|
const mergedTables = new WeakMap();
|
|
142
143
|
const mediaCleanup = [];
|
|
143
144
|
const mediaQueries = new Set(definitions.flatMap((definition) => definition.declarations.flatMap((declaration) => (declaration.context.wrappers ?? [])
|
|
@@ -197,6 +198,7 @@ export function createBrowserCssInspection(config) {
|
|
|
197
198
|
}
|
|
198
199
|
const session = {
|
|
199
200
|
inspect(element, options = {}) {
|
|
201
|
+
countInspectionWork(config.document, "inspections");
|
|
200
202
|
const state = options.state ?? "base";
|
|
201
203
|
const cascade = options.cascade ?? "authored";
|
|
202
204
|
const status = disposed ? "disposed" : targetStatus(element, config.document);
|
|
@@ -214,10 +216,7 @@ export function createBrowserCssInspection(config) {
|
|
|
214
216
|
}
|
|
215
217
|
try {
|
|
216
218
|
const { availableTokens, table } = tokenTableFor(element);
|
|
217
|
-
// Only the authored cascade reports
|
|
218
|
-
// authored rules (the panel's state selector reads it there). Stable
|
|
219
|
-
// and live consumers project properties only, so skip the O(rules)
|
|
220
|
-
// per-state matching sweep for them.
|
|
219
|
+
// Only the authored cascade reports authored interaction states; the O(rules) per-state sweep is skipped elsewhere.
|
|
221
220
|
const availableStates = cascade === "stable"
|
|
222
221
|
? ["base"]
|
|
223
222
|
: getAvailableInteractionStates(element);
|
|
@@ -227,7 +226,7 @@ export function createBrowserCssInspection(config) {
|
|
|
227
226
|
message: `The ${state} interaction state has no matching authored rule for this element.`,
|
|
228
227
|
});
|
|
229
228
|
}
|
|
230
|
-
const properties = resolveCascadeProperties(element, table, cascade, state);
|
|
229
|
+
const properties = resolveCascadeProperties(element, table, cascade, state, options.containerQueries ?? createContainerQueryEvaluator(config.document));
|
|
231
230
|
return {
|
|
232
231
|
target: { status },
|
|
233
232
|
cascade,
|
|
@@ -249,6 +248,25 @@ export function createBrowserCssInspection(config) {
|
|
|
249
248
|
return emptySnapshot(status, cascade, state, revision, diagnostics);
|
|
250
249
|
}
|
|
251
250
|
},
|
|
251
|
+
refresh(elements, state) {
|
|
252
|
+
const containerQueries = createContainerQueryEvaluator(config.document);
|
|
253
|
+
const targets = elements.filter((element) => element.ownerDocument === config.document);
|
|
254
|
+
try {
|
|
255
|
+
if (!disposed)
|
|
256
|
+
prefetchContainerQueries(targets, state, containerQueries);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
return {
|
|
260
|
+
elements: elements.map((element) => emptySnapshot(targetStatus(element, config.document), "authored", state, currentRevision(), [{ code: "inspection-failed", message: error instanceof Error ? error.message : "Container query evaluation failed." }])),
|
|
261
|
+
stableProperties: [],
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
elements: elements.map((element) => session.inspect(element, { state, containerQueries })),
|
|
266
|
+
stableProperties: elements[0] && state === "base"
|
|
267
|
+
? session.inspect(elements[0], { cascade: "stable", containerQueries }).properties : [],
|
|
268
|
+
};
|
|
269
|
+
},
|
|
252
270
|
inspectTokens(root = config.document.documentElement) {
|
|
253
271
|
const diagnostics = [];
|
|
254
272
|
const revision = currentRevision();
|
|
@@ -296,7 +314,7 @@ export function createBrowserCssInspection(config) {
|
|
|
296
314
|
},
|
|
297
315
|
notifyStylesheetChange() {
|
|
298
316
|
if (!disposed)
|
|
299
|
-
|
|
317
|
+
invalidateOwnedStyleResolution(config.document);
|
|
300
318
|
},
|
|
301
319
|
prewarmRules() {
|
|
302
320
|
if (!disposed)
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import { type BrowserCssInspection, type BrowserTokenKnowledge } from "./browserCssInspection.js";
|
|
2
|
-
/**
|
|
3
|
-
* Binds a document to token knowledge. When generation changes, the previous
|
|
4
|
-
* session is disposed and replaced so callers never keep a stale catalog.
|
|
5
|
-
*/
|
|
6
2
|
export declare function bindBrowserCssInspection(doc: Document, knowledge: BrowserTokenKnowledge): BrowserCssInspection;
|
|
7
|
-
/** Returns the one browser inspection session owned by a document. */
|
|
8
3
|
export declare function getBrowserCssInspection(doc?: Document): BrowserCssInspection;
|
|
9
|
-
/** Invalidates every browser-inspection snapshot affected by a CSSOM write. */
|
|
10
4
|
export declare function notifyBrowserStylesheetChange(doc?: Document): void;
|
|
11
|
-
/** Releases a document session when its inspector/Canvas lifecycle ends. */
|
|
12
5
|
export declare function disposeBrowserCssInspection(doc: Document): void;
|
|
@@ -6,15 +6,7 @@ let catalogSignature = "";
|
|
|
6
6
|
let catalogRevision = 0;
|
|
7
7
|
function currentTokenKnowledge() {
|
|
8
8
|
const { tokenCatalog, tokenGeneration } = getNudgeUiRuntimeConfig();
|
|
9
|
-
// The inventory
|
|
10
|
-
// observable inventory facts change, the virtual module re-evaluates and
|
|
11
|
-
// `tokenGeneration` carries a new value, so document sessions recreate with
|
|
12
|
-
// the new definitions instead of freezing the first catalog snapshot.
|
|
13
|
-
//
|
|
14
|
-
// A catalog signature supplements the inventory generation because S2-B
|
|
15
|
-
// still has temporary post-snapshot Tailwind/vanilla-extract enrichment.
|
|
16
|
-
// It advances only when those observable transport definitions change, not
|
|
17
|
-
// for a no-op virtual-module replacement.
|
|
9
|
+
// The inventory generation recreates document sessions with new definitions; the catalog signature supplements it for post-snapshot enrichment.
|
|
18
10
|
if (catalogReference !== tokenCatalog) {
|
|
19
11
|
catalogReference = tokenCatalog;
|
|
20
12
|
const nextSignature = JSON.stringify(tokenCatalog);
|
|
@@ -28,10 +20,6 @@ function currentTokenKnowledge() {
|
|
|
28
20
|
: catalogRevision === 0 ? tokenGeneration : `${tokenGeneration}:${catalogRevision}`;
|
|
29
21
|
return { definitions: tokenCatalog, generation };
|
|
30
22
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Binds a document to token knowledge. When generation changes, the previous
|
|
33
|
-
* session is disposed and replaced so callers never keep a stale catalog.
|
|
34
|
-
*/
|
|
35
23
|
export function bindBrowserCssInspection(doc, knowledge) {
|
|
36
24
|
const existing = sessions.get(doc);
|
|
37
25
|
if (existing && existing.generation === knowledge.generation) {
|
|
@@ -48,15 +36,12 @@ export function bindBrowserCssInspection(doc, knowledge) {
|
|
|
48
36
|
sessions.set(doc, { session, generation: knowledge.generation });
|
|
49
37
|
return session;
|
|
50
38
|
}
|
|
51
|
-
/** Returns the one browser inspection session owned by a document. */
|
|
52
39
|
export function getBrowserCssInspection(doc = document) {
|
|
53
40
|
return bindBrowserCssInspection(doc, currentTokenKnowledge());
|
|
54
41
|
}
|
|
55
|
-
/** Invalidates every browser-inspection snapshot affected by a CSSOM write. */
|
|
56
42
|
export function notifyBrowserStylesheetChange(doc = document) {
|
|
57
43
|
getBrowserCssInspection(doc).notifyStylesheetChange();
|
|
58
44
|
}
|
|
59
|
-
/** Releases a document session when its inspector/Canvas lifecycle ends. */
|
|
60
45
|
export function disposeBrowserCssInspection(doc) {
|
|
61
46
|
const entry = sessions.get(doc);
|
|
62
47
|
if (!entry)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { InteractionState } from "../shell/styleState.js";
|
|
2
|
+
import type { InspectionSnapshot } from "./browserCssInspection.js";
|
|
3
|
+
/** Publishes the hook's completed refresh before its controls render. */
|
|
4
|
+
export declare function publishInspectionSnapshot(element: HTMLElement, snapshot: InspectionSnapshot): void;
|
|
5
|
+
/** Reads the current view without starting another cascade inspection. */
|
|
6
|
+
export declare function readInspectionSnapshot(element: HTMLElement, state: InteractionState): InspectionSnapshot | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const snapshots = new WeakMap();
|
|
2
|
+
/** Publishes the hook's completed refresh before its controls render. */
|
|
3
|
+
export function publishInspectionSnapshot(element, snapshot) {
|
|
4
|
+
snapshots.set(element, snapshot);
|
|
5
|
+
}
|
|
6
|
+
/** Reads the current view without starting another cascade inspection. */
|
|
7
|
+
export function readInspectionSnapshot(element, state) {
|
|
8
|
+
const snapshot = snapshots.get(element);
|
|
9
|
+
return snapshot?.requestedState === state ? snapshot : undefined;
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type Interaction = "selection" | "hover" | "drag" | "idle";
|
|
2
|
+
type Counter = "inspections" | "refreshes" | "containerChecks" | "probePairs" | "probeBatches";
|
|
3
|
+
type Counts = Record<Counter, number>;
|
|
4
|
+
interface InspectionPerformanceDiagnostics {
|
|
5
|
+
read(): Record<Interaction, Counts>;
|
|
6
|
+
reset(): void;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface Window {
|
|
11
|
+
__nudgeUiPerformance?: InspectionPerformanceDiagnostics;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Records work only when diagnostics are explicitly enabled for a document. */
|
|
15
|
+
export declare function countInspectionWork(doc: Document, counter: Counter, count?: number): void;
|
|
16
|
+
/** Groups asynchronous inspection work by the most recent pointer gesture. */
|
|
17
|
+
export declare function enableInspectionPerformanceDiagnostics(doc: Document): void;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const counters = new WeakMap();
|
|
2
|
+
/** Records work only when diagnostics are explicitly enabled for a document. */
|
|
3
|
+
export function countInspectionWork(doc, counter, count = 1) {
|
|
4
|
+
counters.get(doc)?.(counter, count);
|
|
5
|
+
}
|
|
6
|
+
/** Groups asynchronous inspection work by the most recent pointer gesture. */
|
|
7
|
+
export function enableInspectionPerformanceDiagnostics(doc) {
|
|
8
|
+
const view = doc.defaultView;
|
|
9
|
+
if (!view || view.__nudgeUiPerformance)
|
|
10
|
+
return;
|
|
11
|
+
let interaction = "idle";
|
|
12
|
+
const empty = () => ({ inspections: 0, refreshes: 0, containerChecks: 0, probePairs: 0, probeBatches: 0 });
|
|
13
|
+
let counts = { idle: empty(), selection: empty(), hover: empty(), drag: empty() };
|
|
14
|
+
const move = (event) => { interaction = event.buttons ? "drag" : "hover"; };
|
|
15
|
+
const select = () => { interaction = "selection"; };
|
|
16
|
+
doc.addEventListener("pointermove", move, true);
|
|
17
|
+
doc.addEventListener("pointerdown", select, true);
|
|
18
|
+
doc.addEventListener("click", select, true);
|
|
19
|
+
counters.set(doc, (counter, count) => { counts[interaction][counter] += count; });
|
|
20
|
+
view.__nudgeUiPerformance = {
|
|
21
|
+
read: () => structuredClone(counts),
|
|
22
|
+
reset() { counts = { idle: empty(), selection: empty(), hover: empty(), drag: empty() }; },
|
|
23
|
+
dispose() {
|
|
24
|
+
doc.removeEventListener("pointermove", move, true);
|
|
25
|
+
doc.removeEventListener("pointerdown", select, true);
|
|
26
|
+
doc.removeEventListener("click", select, true);
|
|
27
|
+
counters.delete(doc);
|
|
28
|
+
delete view.__nudgeUiPerformance;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -13,7 +13,6 @@ export type SelectionToken = {
|
|
|
13
13
|
} | {
|
|
14
14
|
kind: "mixed";
|
|
15
15
|
};
|
|
16
|
-
/** One CSS property projected across every element in the current selection. */
|
|
17
16
|
export interface SelectionProperty {
|
|
18
17
|
property: string;
|
|
19
18
|
value: SelectionValue;
|
|
@@ -21,12 +20,8 @@ export interface SelectionProperty {
|
|
|
21
20
|
primaryRow: ResolvedProperty | null;
|
|
22
21
|
rows: readonly (ResolvedProperty | null)[];
|
|
23
22
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Projects browser values and authored inspection rows into group-safe facts.
|
|
26
|
-
* The returned type cannot masquerade as an authored CSS row.
|
|
27
|
-
*/
|
|
23
|
+
/** The result cannot masquerade as an authored CSS row. */
|
|
28
24
|
export declare function projectSelectionProperty(property: string, rows: readonly (ResolvedProperty | null)[], values: readonly string[], primaryIndex: number): SelectionProperty | null;
|
|
29
|
-
/** Returns the token entries available to every inspected target. */
|
|
30
25
|
export declare function intersectTokenEntries<T extends {
|
|
31
26
|
name: string;
|
|
32
27
|
value: string;
|
|
@@ -7,10 +7,7 @@ function tokenFor(rows) {
|
|
|
7
7
|
? { kind: "common", name: first }
|
|
8
8
|
: { kind: "mixed" };
|
|
9
9
|
}
|
|
10
|
-
/**
|
|
11
|
-
* Projects browser values and authored inspection rows into group-safe facts.
|
|
12
|
-
* The returned type cannot masquerade as an authored CSS row.
|
|
13
|
-
*/
|
|
10
|
+
/** The result cannot masquerade as an authored CSS row. */
|
|
14
11
|
export function projectSelectionProperty(property, rows, values, primaryIndex) {
|
|
15
12
|
if (values.length === 0 || rows.length !== values.length)
|
|
16
13
|
return null;
|
|
@@ -25,7 +22,6 @@ export function projectSelectionProperty(property, rows, values, primaryIndex) {
|
|
|
25
22
|
rows,
|
|
26
23
|
};
|
|
27
24
|
}
|
|
28
|
-
/** Returns the token entries available to every inspected target. */
|
|
29
25
|
export function intersectTokenEntries(entries) {
|
|
30
26
|
const first = entries[0];
|
|
31
27
|
if (!first)
|
|
@@ -12,9 +12,5 @@ export interface BrowserCssInspectionViewOptions {
|
|
|
12
12
|
includeDocumentTokens?: boolean;
|
|
13
13
|
session?: BrowserCssInspection;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
* React Adapter for one revision-aware browser inspection view. This is the
|
|
17
|
-
* sole owner of subscription and scheduling policy; UI callers only project
|
|
18
|
-
* the returned snapshots.
|
|
19
|
-
*/
|
|
15
|
+
/** Sole owner of subscription and scheduling policy; callers only project the returned snapshots. */
|
|
20
16
|
export declare function useBrowserCssInspection(selected: SelectedElement | readonly SelectedElement[] | null, state?: InteractionState, options?: BrowserCssInspectionViewOptions): BrowserCssInspectionView;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { publishInspectionSnapshot } from "./inspectionSnapshot.js";
|
|
1
2
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
2
3
|
import { getBrowserCssInspection } from "./browserCssInspectionRegistry.js";
|
|
4
|
+
import { countInspectionWork } from "./performanceDiagnostics.js";
|
|
3
5
|
const SELECTION_DEBOUNCE_MS = 8;
|
|
4
6
|
const EMPTY_SELECTION = [];
|
|
5
7
|
function isSelectedElementList(selected) {
|
|
@@ -18,30 +20,19 @@ function normalizeSelection(selected) {
|
|
|
18
20
|
return selected;
|
|
19
21
|
return [selected];
|
|
20
22
|
}
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
? session.inspect(selected[0].domElement, { cascade: "stable" }).properties
|
|
28
|
-
: [];
|
|
29
|
-
const documentTokens = includeDocumentTokens ? session.inspectTokens() : null;
|
|
23
|
+
function inspectView(session, selected, state, includeDocumentTokens) {
|
|
24
|
+
const result = session.refresh?.(selected.map((element) => element.domElement), state);
|
|
25
|
+
const elements = result?.elements ?? selected.map((element) => session.inspect(element.domElement, { state, cascade: "authored" }));
|
|
26
|
+
const stableProperties = result?.stableProperties ?? (selected[0] && state === "base"
|
|
27
|
+
? session.inspect(selected[0].domElement, { cascade: "stable" }).properties : []);
|
|
28
|
+
elements.forEach((snapshot, index) => publishInspectionSnapshot(selected[index].domElement, snapshot));
|
|
30
29
|
return {
|
|
31
|
-
selection: selected,
|
|
32
|
-
|
|
33
|
-
session,
|
|
34
|
-
element: primary,
|
|
35
|
-
elements,
|
|
36
|
-
stableProperties,
|
|
37
|
-
documentTokens,
|
|
30
|
+
selection: selected, state, session,
|
|
31
|
+
element: elements[0] ?? null, elements, stableProperties,
|
|
32
|
+
documentTokens: includeDocumentTokens ? session.inspectTokens() : null,
|
|
38
33
|
};
|
|
39
34
|
}
|
|
40
|
-
/**
|
|
41
|
-
* React Adapter for one revision-aware browser inspection view. This is the
|
|
42
|
-
* sole owner of subscription and scheduling policy; UI callers only project
|
|
43
|
-
* the returned snapshots.
|
|
44
|
-
*/
|
|
35
|
+
/** Sole owner of subscription and scheduling policy; callers only project the returned snapshots. */
|
|
45
36
|
export function useBrowserCssInspection(selected, state = "base", options = {}) {
|
|
46
37
|
const selectedElements = useMemo(() => normalizeSelection(selected), [selected]);
|
|
47
38
|
const selectedDocument = selectedElements[0]?.domElement.ownerDocument ?? document;
|
|
@@ -49,14 +40,15 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
49
40
|
const includeDocumentTokens = options.includeDocumentTokens ?? false;
|
|
50
41
|
const latest = useRef({ selected: selectedElements, state, session, includeDocumentTokens });
|
|
51
42
|
latest.current = { selected: selectedElements, state, session, includeDocumentTokens };
|
|
52
|
-
const [view, setView] = useState(() =>
|
|
43
|
+
const [view, setView] = useState(() => ({
|
|
44
|
+
...EMPTY_VIEW, selection: EMPTY_SELECTION, state, session,
|
|
45
|
+
}));
|
|
53
46
|
const timerRef = useRef(null);
|
|
54
47
|
const lastSelectionResolveAtRef = useRef(0);
|
|
55
48
|
const revisionFrameRef = useRef(null);
|
|
56
49
|
const revisionSecondFrameRef = useRef(null);
|
|
57
50
|
const revisionThirdFrameRef = useRef(null);
|
|
58
51
|
const revisionWarmFrameRef = useRef(null);
|
|
59
|
-
const stableFrameRef = useRef(null);
|
|
60
52
|
const cancelScheduledInspection = () => {
|
|
61
53
|
if (timerRef.current !== null) {
|
|
62
54
|
clearTimeout(timerRef.current);
|
|
@@ -78,36 +70,16 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
78
70
|
cancelAnimationFrame(revisionWarmFrameRef.current);
|
|
79
71
|
revisionWarmFrameRef.current = null;
|
|
80
72
|
}
|
|
81
|
-
if (stableFrameRef.current !== null) {
|
|
82
|
-
cancelAnimationFrame(stableFrameRef.current);
|
|
83
|
-
stableFrameRef.current = null;
|
|
84
|
-
}
|
|
85
73
|
};
|
|
86
74
|
const resolveSync = () => {
|
|
87
75
|
const current = latest.current;
|
|
76
|
+
countInspectionWork(selectedDocument, "refreshes");
|
|
88
77
|
lastSelectionResolveAtRef.current = performance.now();
|
|
89
|
-
setView(
|
|
90
|
-
};
|
|
91
|
-
const resolveSplit = () => {
|
|
92
|
-
const current = latest.current;
|
|
93
|
-
// Post-commit refresh: the authored cascade resolves in this task and the
|
|
94
|
-
// secondary stable cascade continues one frame later. Rapid successive
|
|
95
|
-
// edits therefore cancel the pending refresh (revision bumps reschedule)
|
|
96
|
-
// instead of finding a long blocking task already running, and the two
|
|
97
|
-
// resolution sweeps never block one task for their combined duration.
|
|
98
|
-
// The view still commits once, with the same data and ordering.
|
|
99
|
-
const elements = inspectAuthoredElements(current.session, current.selected, current.state);
|
|
100
|
-
stableFrameRef.current = requestAnimationFrame(() => {
|
|
101
|
-
stableFrameRef.current = null;
|
|
102
|
-
setView(inspectStableView(current.session, current.selected, current.state, current.includeDocumentTokens, elements));
|
|
103
|
-
});
|
|
78
|
+
setView(inspectView(current.session, current.selected, current.state, current.includeDocumentTokens));
|
|
104
79
|
};
|
|
105
80
|
const scheduleSelectionInspection = () => {
|
|
106
81
|
cancelScheduledInspection();
|
|
107
|
-
// Leading-edge resolve: a selection change resolves immediately
|
|
108
|
-
// of always waiting out the debounce. Rapid re-selections inside the
|
|
109
|
-
// trailing window still coalesce onto one trailing resolve, so the final
|
|
110
|
-
// view is identical and repeated selections cannot stack full sweeps.
|
|
82
|
+
// Leading-edge resolve: a selection change resolves immediately, and rapid re-selections coalesce onto one trailing resolve.
|
|
111
83
|
const sinceLast = performance.now() - lastSelectionResolveAtRef.current;
|
|
112
84
|
if (sinceLast >= SELECTION_DEBOUNCE_MS) {
|
|
113
85
|
resolveSync();
|
|
@@ -120,12 +92,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
120
92
|
};
|
|
121
93
|
const scheduleRevisionInspection = () => {
|
|
122
94
|
cancelScheduledInspection();
|
|
123
|
-
// Let the host commit and paint
|
|
124
|
-
// projection. The extra frames keep the refresh start past the gap
|
|
125
|
-
// between rapid successive edits, so a new revision cancels the pending
|
|
126
|
-
// refresh instead of colliding with a running one, and they give the
|
|
127
|
-
// stylesheet walk its own frame so no single refresh task blocks for the
|
|
128
|
-
// combined duration of the walk plus a cascade sweep.
|
|
95
|
+
// Let the host commit and paint: the extra frames let a new revision cancel the pending refresh and give the stylesheet walk its own frame.
|
|
129
96
|
revisionFrameRef.current = requestAnimationFrame(() => {
|
|
130
97
|
revisionFrameRef.current = null;
|
|
131
98
|
revisionSecondFrameRef.current = requestAnimationFrame(() => {
|
|
@@ -135,7 +102,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
135
102
|
latest.current.session.prewarmRules?.();
|
|
136
103
|
revisionWarmFrameRef.current = requestAnimationFrame(() => {
|
|
137
104
|
revisionWarmFrameRef.current = null;
|
|
138
|
-
|
|
105
|
+
resolveSync();
|
|
139
106
|
});
|
|
140
107
|
});
|
|
141
108
|
});
|
|
@@ -146,10 +113,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
146
113
|
return cancelScheduledInspection;
|
|
147
114
|
}, [includeDocumentTokens, selectedElements, state, session]);
|
|
148
115
|
useEffect(() => session.subscribe(scheduleRevisionInspection), [session]);
|
|
149
|
-
// Warm the
|
|
150
|
-
// not pay the stylesheet walk inside its own interaction. The idle timeout
|
|
151
|
-
// bounds the wait without competing with page-load paint; the walk is
|
|
152
|
-
// idempotent per stylesheet revision, so this is a no-op once warm.
|
|
116
|
+
// Warm during idle so the first selection does not pay the stylesheet walk; the walk is idempotent per stylesheet revision.
|
|
153
117
|
const prewarmedSessionRef = useRef(null);
|
|
154
118
|
useEffect(() => {
|
|
155
119
|
if (prewarmedSessionRef.current === session)
|
|
@@ -164,8 +128,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
164
128
|
const timeoutId = setTimeout(warm, 200);
|
|
165
129
|
return () => clearTimeout(timeoutId);
|
|
166
130
|
}, [session, selectedDocument]);
|
|
167
|
-
// Selection effects run after children render
|
|
168
|
-
// element's authored rows while the new selection is waiting for inspection.
|
|
131
|
+
// Selection effects run after children render; never expose the previous element's rows while inspection is pending.
|
|
169
132
|
const matchesSelection = view.session === session && view.state === state
|
|
170
133
|
&& view.selection.length === selectedElements.length
|
|
171
134
|
&& view.selection.every((element, index) => element.domElement === selectedElements[index]?.domElement);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function captureHtmlIteration(frame:
|
|
1
|
+
import type { CanvasFrame } from "../canvas/canvasFrame.js";
|
|
2
|
+
export declare function captureHtmlIteration(frame: CanvasFrame): Promise<string>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { HTML_ARTIFACT_REVISION_ATTRIBUTE } from "../../transport/artifacts.js";
|
|
2
2
|
import { FRAME_SCROLLBAR_STYLE_ID } from "../canvas/frameScrollbarStyles.js";
|
|
3
|
-
/** Captures the visible DOM of a same-origin frame as a script-free HTML iteration. */
|
|
4
3
|
export async function captureHtmlIteration(frame) {
|
|
5
4
|
const source = frame.contentDocument;
|
|
6
5
|
const view = frame.contentWindow;
|
|
@@ -19,11 +18,9 @@ export async function captureHtmlIteration(frame) {
|
|
|
19
18
|
const copied = copiedElements[index];
|
|
20
19
|
if (sourceElement.nodeType !== 1 || copied.nodeType !== 1)
|
|
21
20
|
continue;
|
|
22
|
-
// Renderer IDs belong to the source iframe's
|
|
23
|
-
// fresh registry can reuse those values for different nodes.
|
|
21
|
+
// Renderer IDs belong to the source iframe's registry; the iteration's fresh registry can reuse them for different nodes.
|
|
24
22
|
copied.removeAttribute("data-renderer-id");
|
|
25
|
-
//
|
|
26
|
-
// than replacing them with computed dimensions at the capture viewport.
|
|
23
|
+
// Keep authored inline values (percentages, variables, calc) instead of computed dimensions.
|
|
27
24
|
const inline = copied.getAttribute("style");
|
|
28
25
|
if (inline)
|
|
29
26
|
copied.setAttribute("style", await resolveCssUrls(inline, source.baseURI, assets));
|
|
@@ -100,8 +97,7 @@ async function captureStylesheets(document, copy, sourceElements, copiedElements
|
|
|
100
97
|
css = await response.text();
|
|
101
98
|
}
|
|
102
99
|
catch {
|
|
103
|
-
// Keep the stylesheet link when CORS prevents embedding it
|
|
104
|
-
// still resolves against the original base and retains responsiveness.
|
|
100
|
+
// Keep the stylesheet link when CORS prevents embedding it; its URL still resolves against the original base.
|
|
105
101
|
continue;
|
|
106
102
|
}
|
|
107
103
|
}
|
|
@@ -112,8 +108,7 @@ async function captureStylesheets(document, copy, sourceElements, copiedElements
|
|
|
112
108
|
}
|
|
113
109
|
}
|
|
114
110
|
style.textContent = await resolveCssUrls(css, sheet.href ?? document.baseURI, assets);
|
|
115
|
-
// Captured edits become the iteration's base
|
|
116
|
-
// managed stylesheet for new edits instead of clearing these captured rules.
|
|
111
|
+
// Captured edits become the iteration's base; the renderer must create its own managed stylesheet for new edits.
|
|
117
112
|
if (style.id === "nudge-ui-styles") {
|
|
118
113
|
style.removeAttribute("id");
|
|
119
114
|
style.removeAttribute("data-nudge-ui");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { CanvasFrame } from "../canvas/canvasFrame.js";
|
|
1
2
|
import { type HtmlArtifactRevision } from "../../transport/artifacts.js";
|
|
2
3
|
export declare function artifactDocumentUrl(id: string): string;
|
|
3
4
|
export declare function readHtmlArtifactRevision(id: string): Promise<HtmlArtifactRevision>;
|
|
4
|
-
/** Checks the editing base before saving and promoting a captured document. */
|
|
5
5
|
export declare function commitHtmlArtifact(id: string, expected: HtmlArtifactRevision, html?: string): Promise<HtmlArtifactRevision>;
|
|
6
|
-
export declare function createHtmlArtifact(frame:
|
|
6
|
+
export declare function createHtmlArtifact(frame: CanvasFrame, sourceUrl: string, title: string, capturedHtml?: string): Promise<string>;
|
|
7
7
|
export declare function removeHtmlArtifact(id: string): Promise<void>;
|
|
@@ -13,7 +13,6 @@ export async function readHtmlArtifactRevision(id) {
|
|
|
13
13
|
throw new Error("The HTML iteration returned an invalid revision.");
|
|
14
14
|
return revision;
|
|
15
15
|
}
|
|
16
|
-
/** Checks the editing base before saving and promoting a captured document. */
|
|
17
16
|
export async function commitHtmlArtifact(id, expected, html) {
|
|
18
17
|
const response = await fetch(`${NUDGE_UI_ARTIFACTS_PATH}/${id}/commit`, {
|
|
19
18
|
method: "POST",
|