nudge-ui 0.2.5 → 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 +0 -1
- package/dist/client.mjs +238 -122
- 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 +13 -64
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +0 -2
- 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 +1 -6
- package/dist/inspector/agent/activity.d.ts +1 -1
- package/dist/inspector/agent/activity.js +1 -1
- package/dist/inspector/agent/client.d.ts +2 -26
- package/dist/inspector/agent/client.js +17 -64
- package/dist/inspector/agent/connectionStatus.d.ts +0 -1
- package/dist/inspector/agent/connectionStatus.js +0 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +21 -39
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +2 -19
- package/dist/inspector/agent/verification.js +7 -43
- package/dist/inspector/boot.d.ts +3 -1
- package/dist/inspector/boot.js +12 -20
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +1 -1
- package/dist/inspector/canvas/AgentActivityOverlay.js +1 -1
- package/dist/inspector/canvas/CanvasCard.js +7 -14
- package/dist/inspector/canvas/CanvasElementOverlay.js +117 -50
- package/dist/inspector/canvas/CanvasWorkspace.js +15 -29
- package/dist/inspector/canvas/PageCard.d.ts +0 -1
- package/dist/inspector/canvas/PageCard.js +0 -1
- package/dist/inspector/canvas/SketchToolOptions.d.ts +0 -1
- package/dist/inspector/canvas/SketchToolOptions.js +0 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +1 -6
- package/dist/inspector/canvas/ToolOptionsDrawer.js +2 -8
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +0 -2
- 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/canvasFrame.d.ts +2 -6
- package/dist/inspector/canvas/canvasFrame.js +1 -2
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +4 -12
- package/dist/inspector/canvas/canvasStore.js +12 -26
- package/dist/inspector/canvas/frameConnection.d.ts +1 -7
- 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 +5 -40
- package/dist/inspector/canvas/frameProtocol.js +1 -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 +1 -6
- package/dist/inspector/canvas/pageSurface.js +1 -6
- package/dist/inspector/canvas/projection.d.ts +4 -25
- package/dist/inspector/canvas/projection.js +22 -72
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +6 -14
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +29 -27
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +0 -1
- package/dist/inspector/canvas/rendererMessageRouter.js +0 -1
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +1 -5
- package/dist/inspector/canvas/rendererSelectionProxy.js +2 -7
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +9 -2
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +1 -7
- package/dist/inspector/canvas/sessionStore.js +21 -34
- package/dist/inspector/canvas/staleChangeDetector.js +1 -4
- 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.js +2 -1
- package/dist/inspector/changes/draftPreview.d.ts +1 -6
- package/dist/inspector/changes/draftPreview.js +15 -30
- package/dist/inspector/changes/editModel.d.ts +3 -13
- package/dist/inspector/changes/editModel.js +1 -2
- package/dist/inspector/changes/managedStyleProjection.js +4 -14
- 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 +4 -20
- 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 +3 -10
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +48 -7
- 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 +1 -1
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +18 -10
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +10 -7
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- 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 +1 -9
- package/dist/inspector/componentSemantics/textBinding.js +16 -42
- 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 +7 -21
- package/dist/inspector/drafts/draftStore.js +15 -5
- package/dist/inspector/drafts/model.d.ts +7 -15
- package/dist/inspector/drafts/model.js +0 -2
- package/dist/inspector/drafts/store.d.ts +1 -8
- package/dist/inspector/drafts/store.js +3 -10
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- 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 +2 -8
- package/dist/inspector/inline-text/inlineTextEditor.js +26 -79
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +0 -1
- package/dist/inspector/inspection/bridge.d.ts +2 -6
- package/dist/inspector/inspection/bridge.js +4 -12
- package/dist/inspector/inspection/browserCssInspection.d.ts +4 -11
- package/dist/inspector/inspection/browserCssInspection.js +4 -8
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- 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 +5 -21
- package/dist/inspector/iterations/capture.d.ts +0 -1
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +0 -1
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +0 -1
- package/dist/inspector/iterations/coordinator.js +0 -1
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +0 -1
- 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 +2 -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 +4 -13
- package/dist/inspector/pageInspector.js +25 -32
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +2 -14
- package/dist/inspector/projection/draftProjection.js +1 -8
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +4 -22
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +6 -32
- package/dist/inspector/projection/structuralProjection.d.ts +7 -39
- package/dist/inspector/projection/structuralProjection.js +17 -52
- package/dist/inspector/projection/textProjection.d.ts +2 -14
- package/dist/inspector/projection/textProjection.js +17 -70
- 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 -9
- package/dist/inspector/prompt/clipboardHandoff.js +1 -9
- package/dist/inspector/prompt/generatePrompt.d.ts +1 -1
- package/dist/inspector/prompt/generatePrompt.js +10 -25
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +0 -3
- 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 +1 -7
- package/dist/inspector/runtime/inspectorStorage.js +1 -6
- package/dist/inspector/runtime/ownedStylesheets.d.ts +2 -8
- package/dist/inspector/runtime/ownedStylesheets.js +2 -8
- package/dist/inspector/runtime/runtimeConfig.d.ts +12 -86
- package/dist/inspector/runtime/runtimeConfig.js +9 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +3 -13
- package/dist/inspector/runtime/runtimeIdentityClaims.js +9 -19
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +4 -36
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +7 -40
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +1 -7
- package/dist/inspector/selection/editScope.js +2 -12
- 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 +5 -5
- package/dist/inspector/shell/ChangesLog.js +3 -4
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +12 -11
- 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.js +26 -48
- 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 +0 -5
- 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 +1 -4
- package/dist/inspector/shell/interactionStatePreview.js +3 -8
- package/dist/inspector/shell/originalPreview.d.ts +1 -6
- package/dist/inspector/shell/originalPreview.js +1 -6
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +2 -5
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +0 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +8 -12
- package/dist/inspector/sketch/SketchOverlay.js +5 -6
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +0 -1
- package/dist/inspector/sketch/SketchPromptPanel.js +0 -1
- package/dist/inspector/sketch/SketchWorkspace.js +2 -4
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +12 -11
- package/dist/inspector/sketch/copySketch.d.ts +1 -7
- package/dist/inspector/sketch/copySketch.js +2 -11
- package/dist/inspector/sketch/drawingTools.d.ts +1 -3
- package/dist/inspector/sketch/drawingTools.js +1 -2
- package/dist/inspector/sketch/frameHeading.d.ts +1 -7
- package/dist/inspector/sketch/frameHeading.js +1 -8
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +0 -1
- package/dist/inspector/sketch/geometry.d.ts +1 -6
- package/dist/inspector/sketch/geometry.js +1 -6
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +1 -5
- package/dist/inspector/sketch/history.js +1 -4
- package/dist/inspector/sketch/interaction.d.ts +2 -2
- package/dist/inspector/sketch/interaction.js +2 -2
- package/dist/inspector/sketch/model.d.ts +2 -9
- package/dist/inspector/sketch/model.js +2 -19
- package/dist/inspector/sketch/persistence.d.ts +0 -1
- package/dist/inspector/sketch/persistence.js +2 -2
- package/dist/inspector/sketch/raster.d.ts +1 -4
- package/dist/inspector/sketch/raster.js +2 -8
- package/dist/inspector/sketch/store.js +2 -3
- package/dist/inspector/sketch/videoFrames.js +2 -3
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +1 -1
- package/dist/inspector/styleEditors/BorderEditor.js +1 -6
- 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 +0 -1
- 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 +1 -7
- package/dist/inspector/styleEditors/borderModel.js +2 -11
- 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 +4 -12
- 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 +19 -29
- 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 +1 -1
- package/dist/inspector/tokens/editActions.js +2 -4
- 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 +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +1 -5
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +151 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +1 -5
- package/dist/inspector/tokens/resolution/nestedSelectors.js +1 -5
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +121 -67
- 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 +5 -24
- package/dist/inspector/tokens/resolution.js +16 -71
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- 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/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- 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 +0 -4
- package/dist/inspector/ui/Toast.js +0 -4
- 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 +7 -1
- package/dist/inspector/ui/customCursors.js +2 -6
- package/dist/inspector/ui/styles.js +18 -20
- package/dist/inspector/workspace/controller.js +20 -1
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +1 -5
- package/dist/inspector/workspace/timeline.d.ts +5 -2
- package/dist/inspector/workspace/timeline.js +0 -1
- package/dist/internal/agent-protocol.d.ts +20 -42
- package/dist/internal/agent-protocol.js +18 -35
- package/dist/nudge-ui.mjs +75 -28
- 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 +1 -6
- package/dist/project/mcpPackage.js +2 -7
- 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 +5 -4
- 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
|
@@ -11,8 +11,7 @@ const listeners = new Set();
|
|
|
11
11
|
let activeSession = null;
|
|
12
12
|
let activeSessionDocument = null;
|
|
13
13
|
let pendingEditIntent = null;
|
|
14
|
-
//
|
|
15
|
-
// and dblclick; only the next handoff attempt or explicit teardown consumes it.
|
|
14
|
+
// Stays armed if blur replaces the DOM between the second pointer-down and dblclick; the next handoff attempt or teardown consumes it.
|
|
16
15
|
let handoffPointerArmed = false;
|
|
17
16
|
let pendingReplayScheduled = false;
|
|
18
17
|
let sessionRevision = 0;
|
|
@@ -51,7 +50,6 @@ export function cancelInlineTextEdit() {
|
|
|
51
50
|
else
|
|
52
51
|
clearInlineTextDiagnostics();
|
|
53
52
|
}
|
|
54
|
-
/** End a session owned by a document/frame that is about to be disposed. */
|
|
55
53
|
export function disposeInlineTextEdit(reason = "frame-disposed", ownerDocument) {
|
|
56
54
|
if (!ownerDocument) {
|
|
57
55
|
discardPendingInlineTextEdit();
|
|
@@ -134,11 +132,7 @@ function schedulePendingInlineTextEdit() {
|
|
|
134
132
|
drainPendingInlineTextEdit();
|
|
135
133
|
});
|
|
136
134
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Request inline editing from a document gesture. This is the interaction
|
|
139
|
-
* seam: it owns active-session handoff so gesture routers never discard a
|
|
140
|
-
* valid target switch merely because another draft is settling.
|
|
141
|
-
*/
|
|
135
|
+
/** Owns active-session handoff so gesture routers never discard a valid target switch. */
|
|
142
136
|
function requestInlineTextEdit(target, point) {
|
|
143
137
|
if (activeSession) {
|
|
144
138
|
const hitTarget = target.ownerDocument.elementFromPoint?.(point.x, point.y);
|
|
@@ -147,10 +141,7 @@ function requestInlineTextEdit(target, point) {
|
|
|
147
141
|
return "stop-propagation";
|
|
148
142
|
}
|
|
149
143
|
}
|
|
150
|
-
// Application-owned contenteditable surfaces must
|
|
151
|
-
// semantics. They are intentionally rejected by text binding, but that
|
|
152
|
-
// rejection must not become an inspector-level suppression when another
|
|
153
|
-
// inline edit is already active.
|
|
144
|
+
// Application-owned contenteditable surfaces keep native editing semantics; their binding rejection must not become an inspector-level suppression.
|
|
154
145
|
if (isApplicationOwnedEditingSurface(target))
|
|
155
146
|
return "pass-through";
|
|
156
147
|
const intent = {
|
|
@@ -170,11 +161,7 @@ function requestInlineTextEdit(target, point) {
|
|
|
170
161
|
drainPendingInlineTextEdit();
|
|
171
162
|
return "suppress";
|
|
172
163
|
}
|
|
173
|
-
/**
|
|
174
|
-
* Handle one native interaction while keeping session-transition policy
|
|
175
|
-
* local. Pointer-down preserves double-click intent across the first click's
|
|
176
|
-
* blur commit, even when canonical projection replaces the target DOM.
|
|
177
|
-
*/
|
|
164
|
+
/** Pointer-down preserves double-click intent across the first click's blur commit. */
|
|
178
165
|
export function handleInlineTextEditIntent(intent) {
|
|
179
166
|
if (intent.kind === "double-click") {
|
|
180
167
|
return requestInlineTextEdit(intent.target, intent.point);
|
|
@@ -221,9 +208,7 @@ function restoreSelection(doc, snapshot) {
|
|
|
221
208
|
selection.addRange(range);
|
|
222
209
|
}
|
|
223
210
|
catch {
|
|
224
|
-
// A framework rerender can invalidate a saved range
|
|
225
|
-
// and restoration. Removing the transient selection is safer than
|
|
226
|
-
// retaining a range in a detached editing wrapper.
|
|
211
|
+
// A framework rerender can invalidate a saved range; dropping the selection beats keeping a range in a detached wrapper.
|
|
227
212
|
selection.removeAllRanges();
|
|
228
213
|
}
|
|
229
214
|
}
|
|
@@ -240,14 +225,11 @@ function restoreDraft(candidate, host, text, ownership) {
|
|
|
240
225
|
if (!hostIsOwned(candidate, host, ownership))
|
|
241
226
|
return false;
|
|
242
227
|
const original = candidate.textNode;
|
|
243
|
-
//
|
|
244
|
-
// detached. If reconciliation moved that node into another live tree,
|
|
245
|
-
// never move it back into the captured position.
|
|
228
|
+
// Typing detaches the original node inside the wrapper; if reconciliation moved it into another live tree, never move it back.
|
|
246
229
|
if (original.isConnected && original.parentNode !== host)
|
|
247
230
|
return false;
|
|
248
231
|
original.nodeValue = text;
|
|
249
|
-
//
|
|
250
|
-
// preserves every sibling/descendant of an icon-plus-label host.
|
|
232
|
+
// Replacing only the transient wrapper preserves siblings/descendants of an icon-plus-label host.
|
|
251
233
|
host.replaceWith(original);
|
|
252
234
|
return true;
|
|
253
235
|
}
|
|
@@ -268,8 +250,7 @@ function rangeInsideHost(host, range) {
|
|
|
268
250
|
if (!isNodeInsideHost(host, range.startContainer)
|
|
269
251
|
|| !isNodeInsideHost(host, range.endContainer))
|
|
270
252
|
return false;
|
|
271
|
-
//
|
|
272
|
-
// inside it; StaticRange does not expose commonAncestorContainer.
|
|
253
|
+
// Endpoints inside the host imply the common ancestor is too; StaticRange does not expose commonAncestorContainer.
|
|
273
254
|
return true;
|
|
274
255
|
}
|
|
275
256
|
function selectionInsideHost(host) {
|
|
@@ -411,8 +392,7 @@ function makeSession(candidate) {
|
|
|
411
392
|
const originalParent = candidate.textNode.parentNode;
|
|
412
393
|
const originalNextSibling = candidate.textNode.nextSibling;
|
|
413
394
|
if (!originalParent) {
|
|
414
|
-
//
|
|
415
|
-
// boundary defensive if a framework mutates between resolution and wrap.
|
|
395
|
+
// resolveTextBinding returns connected text nodes, but a framework can mutate between resolution and wrap.
|
|
416
396
|
throw new Error("Inline text target lost its parent before editing began.");
|
|
417
397
|
}
|
|
418
398
|
const ownership = { parent: originalParent, nextSibling: originalNextSibling };
|
|
@@ -423,12 +403,7 @@ function makeSession(candidate) {
|
|
|
423
403
|
host.setAttribute("contenteditable", "plaintext-only");
|
|
424
404
|
host.contentEditable = "plaintext-only";
|
|
425
405
|
candidate.textNode.replaceWith(host);
|
|
426
|
-
//
|
|
427
|
-
// the first child of a native contenteditable makes Chromium insert the
|
|
428
|
-
// first character beside it. The input handler then has to coalesce two
|
|
429
|
-
// text nodes and the browser resets the caret to the start, reversing the
|
|
430
|
-
// visible draft. Let the empty editor start childless; restoreDraft still
|
|
431
|
-
// puts the captured node back at the owned insertion point on exit.
|
|
406
|
+
// A leading empty Text node makes Chromium insert the first character beside it and reset the caret; start childless and let restoreDraft put the node back on exit.
|
|
432
407
|
if (candidate.before.length > 0)
|
|
433
408
|
host.append(candidate.textNode);
|
|
434
409
|
let finished = false;
|
|
@@ -486,8 +461,7 @@ function makeSession(candidate) {
|
|
|
486
461
|
if (finished)
|
|
487
462
|
return;
|
|
488
463
|
const restoreFocus = editorOwnsFocus();
|
|
489
|
-
// A moved
|
|
490
|
-
// temporary wrapper; never reinsert the original node into a new tree.
|
|
464
|
+
// A moved host has no safe insertion point: remove the wrapper, never reinsert the original node.
|
|
491
465
|
if (host.isConnected)
|
|
492
466
|
host.remove();
|
|
493
467
|
finish("app-reconciled", "cancelled", discardedDraft, restoreFocus);
|
|
@@ -553,9 +527,7 @@ function makeSession(candidate) {
|
|
|
553
527
|
}
|
|
554
528
|
}
|
|
555
529
|
}
|
|
556
|
-
//
|
|
557
|
-
// non-empty value is synchronously reconciled by the text projection,
|
|
558
|
-
// which removes it after this session cleanup.
|
|
530
|
+
// Restore the affordance on cancel/unchanged; a committed non-empty value is removed by projection reconciliation.
|
|
559
531
|
if (candidate.emptyProjectionMarker?.isConnected) {
|
|
560
532
|
candidate.emptyProjectionMarker.hidden = false;
|
|
561
533
|
}
|
|
@@ -566,8 +538,7 @@ function makeSession(candidate) {
|
|
|
566
538
|
if (finished)
|
|
567
539
|
return;
|
|
568
540
|
if (event.isComposing || composing) {
|
|
569
|
-
// Enter/Escape belong to the IME until compositionend
|
|
570
|
-
// session alive makes the composition one canonical edit.
|
|
541
|
+
// Enter/Escape belong to the IME until compositionend; keeping the session alive makes the composition one canonical edit.
|
|
571
542
|
event.stopPropagation();
|
|
572
543
|
if (event.key === "Enter" || event.key === "Escape" || event.key === "Esc") {
|
|
573
544
|
event.preventDefault();
|
|
@@ -592,10 +563,7 @@ function makeSession(candidate) {
|
|
|
592
563
|
session.cancel();
|
|
593
564
|
return;
|
|
594
565
|
}
|
|
595
|
-
// Keep inspector
|
|
596
|
-
// browser to handle ordinary typing and caret movement natively. The
|
|
597
|
-
// listener is scoped to this host so it does not intercept native input
|
|
598
|
-
// before the contenteditable target sees it.
|
|
566
|
+
// Keep inspector shortcuts out of the draft while native typing and caret movement still run.
|
|
599
567
|
event.stopPropagation();
|
|
600
568
|
}
|
|
601
569
|
function onBlur() {
|
|
@@ -604,8 +572,7 @@ function makeSession(candidate) {
|
|
|
604
572
|
blurPending = true;
|
|
605
573
|
if (composing)
|
|
606
574
|
return;
|
|
607
|
-
// Deferring one macrotask lets Escape cancel a
|
|
608
|
-
// while a contenteditable host is handling the key event.
|
|
575
|
+
// Deferring one macrotask lets Escape cancel a blur that fires while the host handles the key event.
|
|
609
576
|
blurCommitHandle = setTimeout(() => {
|
|
610
577
|
blurCommitHandle = null;
|
|
611
578
|
if (!finished) {
|
|
@@ -618,8 +585,7 @@ function makeSession(candidate) {
|
|
|
618
585
|
if (finished)
|
|
619
586
|
return;
|
|
620
587
|
const rejectBeforeInput = (reason) => {
|
|
621
|
-
// Some browsers still deliver input after a non-cancelable beforeinput.
|
|
622
|
-
// Remember the safe plain draft so that onInput can undo that mutation.
|
|
588
|
+
// Some browsers still deliver input after a non-cancelable beforeinput; remember the safe draft so onInput can undo it.
|
|
623
589
|
if (!event.cancelable)
|
|
624
590
|
rejectedNextInput = reason;
|
|
625
591
|
if (event.cancelable)
|
|
@@ -737,9 +703,7 @@ function makeSession(candidate) {
|
|
|
737
703
|
event.stopPropagation();
|
|
738
704
|
if (blurPending && !finished) {
|
|
739
705
|
blurPending = false;
|
|
740
|
-
// Browsers may dispatch the final
|
|
741
|
-
// compositionend. Commit on the next macrotask so those final chars are
|
|
742
|
-
// part of this one canonical edit.
|
|
706
|
+
// Browsers may dispatch the final composition input after compositionend; commit on the next macrotask to include it.
|
|
743
707
|
compositionFinalizeHandle = setTimeout(() => {
|
|
744
708
|
compositionFinalizeHandle = null;
|
|
745
709
|
if (!finished && !composing)
|
|
@@ -752,16 +716,14 @@ function makeSession(candidate) {
|
|
|
752
716
|
return;
|
|
753
717
|
const selection = doc.getSelection?.();
|
|
754
718
|
if (!selection || selection.rangeCount === 0) {
|
|
755
|
-
// A panel click can clear the page selection before blur; let blur own
|
|
756
|
-
// the normal commit path unless the editing host still owns focus.
|
|
719
|
+
// A panel click can clear the page selection before blur; let blur own the commit path unless the host still owns focus.
|
|
757
720
|
if (doc.activeElement === host)
|
|
758
721
|
endLifecycle("selection-removed");
|
|
759
722
|
return;
|
|
760
723
|
}
|
|
761
724
|
if (selection && selection.rangeCount > 0 && selectionInsideHost(host))
|
|
762
725
|
return;
|
|
763
|
-
// A removed selection/host is a lifecycle end, not a text operation.
|
|
764
|
-
// original node is restored only while its owning host is still connected.
|
|
726
|
+
// A removed selection/host is a lifecycle end, not a text operation.
|
|
765
727
|
if (!host.isConnected || !candidate.element.isConnected) {
|
|
766
728
|
endLifecycle(!host.isConnected ? "host-removed" : "selection-removed");
|
|
767
729
|
return;
|
|
@@ -777,9 +739,7 @@ function makeSession(candidate) {
|
|
|
777
739
|
if (!OwnerNode || !(target instanceof OwnerNode))
|
|
778
740
|
return;
|
|
779
741
|
if (host.contains(target)) {
|
|
780
|
-
//
|
|
781
|
-
// drag-selection behavior remains intact. The click itself is held so
|
|
782
|
-
// the app cannot activate the surrounding button/link.
|
|
742
|
+
// Down/up events must reach the host so caret and drag-selection work; the click is held so the app cannot activate the surrounding button/link.
|
|
783
743
|
if (event.type === "mousedown" || event.type === "mouseup"
|
|
784
744
|
|| event.type === "pointerdown" || event.type === "pointerup")
|
|
785
745
|
return;
|
|
@@ -790,9 +750,7 @@ function makeSession(candidate) {
|
|
|
790
750
|
const inspectorRoot = doc.getElementById("nudge-ui-root");
|
|
791
751
|
if (inspectorRoot && (target === inspectorRoot || inspectorRoot.contains(target)))
|
|
792
752
|
return;
|
|
793
|
-
//
|
|
794
|
-
// duration of the draft. Inspector controls live in the scoped shadow
|
|
795
|
-
// host above and remain usable.
|
|
753
|
+
// Outside the inspector root, application actions are suspended for the duration of the draft.
|
|
796
754
|
if (event.type !== "mousedown" && event.type !== "mouseup"
|
|
797
755
|
&& event.type !== "pointerdown" && event.type !== "pointerup") {
|
|
798
756
|
event.preventDefault();
|
|
@@ -800,9 +758,7 @@ function makeSession(candidate) {
|
|
|
800
758
|
event.stopPropagation();
|
|
801
759
|
}
|
|
802
760
|
function suppressHostPointer(event) {
|
|
803
|
-
// Keep
|
|
804
|
-
// selection) while preventing an application ancestor from observing the
|
|
805
|
-
// temporary host's pointer sequence.
|
|
761
|
+
// Keep native defaults; only stop an application ancestor from observing the host's pointer sequence.
|
|
806
762
|
event.stopPropagation();
|
|
807
763
|
}
|
|
808
764
|
function onFrameDisposed() {
|
|
@@ -849,9 +805,6 @@ function makeSession(candidate) {
|
|
|
849
805
|
}
|
|
850
806
|
}
|
|
851
807
|
else if (host.isConnected) {
|
|
852
|
-
// A reconciliation can move the temporary host before removing the
|
|
853
|
-
// original root. It no longer has an owned insertion point, so remove
|
|
854
|
-
// the wrapper rather than leaking an editor into the new tree.
|
|
855
808
|
host.remove();
|
|
856
809
|
}
|
|
857
810
|
finish(reason, "cancelled", discardedDraft, restoreFocus);
|
|
@@ -914,17 +867,14 @@ function makeSession(candidate) {
|
|
|
914
867
|
endLifecycle("app-reconciled", after);
|
|
915
868
|
return null;
|
|
916
869
|
}
|
|
917
|
-
//
|
|
918
|
-
// change. The React Adapter must own the permanent preview.
|
|
870
|
+
// Remove the temporary host before appending the change: the React Adapter must own the permanent preview.
|
|
919
871
|
const restoreFocus = editorOwnsFocus();
|
|
920
872
|
if (!restoreDraft(candidate, host, candidate.before, ownership)) {
|
|
921
873
|
cancelForReconciliation();
|
|
922
874
|
return null;
|
|
923
875
|
}
|
|
924
876
|
if (change?.kind === "text-content" && editDecision.scope === "rendered-instance") {
|
|
925
|
-
//
|
|
926
|
-
// previous projection. Validation happens after unwrapping because a
|
|
927
|
-
// mounted draft can make another identical root look unique.
|
|
877
|
+
// candidate.before is alternate evidence for re-entry; validate after unwrapping, when a mounted draft can make another identical root look unique.
|
|
928
878
|
const resolved = resolveTextProjectionTarget(doc, change.target, candidate.before);
|
|
929
879
|
if (resolved.status !== "resolved") {
|
|
930
880
|
if (!resumeDraft(after))
|
|
@@ -1026,8 +976,7 @@ export const inlineTextEditor = {
|
|
|
1026
976
|
return makeSession(candidate);
|
|
1027
977
|
},
|
|
1028
978
|
};
|
|
1029
|
-
/** Re-
|
|
1030
|
-
* inspector affordance. This never guesses a new DOM target or source node. */
|
|
979
|
+
/** Re-enters an existing projection; never guesses a new DOM target or source node. */
|
|
1031
980
|
export function beginInlineTextEditFromEmptyProjection(marker) {
|
|
1032
981
|
if (!canEditDraft()) {
|
|
1033
982
|
return { kind: "rejected", reason: "editing-active", message: "Wait for the iteration to finish saving before editing text." };
|
|
@@ -1049,9 +998,7 @@ export function beginInlineTextEditFromEmptyProjection(marker) {
|
|
|
1049
998
|
const candidate = resolveEmptyProjectionCandidate(marker);
|
|
1050
999
|
if (isTextEditRejection(candidate))
|
|
1051
1000
|
return recordTextEditRejection(marker, candidate);
|
|
1052
|
-
// Hide the affordance while its
|
|
1053
|
-
// native editor. The marker is restored on cancel and removed by projection
|
|
1054
|
-
// reconciliation on a successful non-empty commit.
|
|
1001
|
+
// Hide the affordance while the editor wraps its empty Text node; cancel restores it, a non-empty commit removes it via reconciliation.
|
|
1055
1002
|
marker.hidden = true;
|
|
1056
1003
|
try {
|
|
1057
1004
|
return makeSession(candidate);
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* A tiny lifecycle seam keeps canonical-history clearing independent from the
|
|
3
|
-
* editor implementation. The editor registers its active-session disposer;
|
|
4
|
-
* changesLog can then cancel it without importing the editor back through a
|
|
5
|
-
* circular module edge.
|
|
6
|
-
*/
|
|
1
|
+
// Keeps canonical-history clearing independent of the editor without importing it back through a circular edge.
|
|
7
2
|
import { clearInlineTextDiagnostics } from "./inlineTextDiagnostics.js";
|
|
8
3
|
let clearHandler = null;
|
|
9
4
|
export function registerInlineTextClearHandler(handler) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { TextBindingCandidate, TextEditBinding } from "../componentSemantics/textBinding.js";
|
|
2
2
|
import type { ChangeRecord } from "../changes/types.js";
|
|
3
3
|
import type { TextProjectionScope, TextProjectionTarget } from "../changes/editModel.js";
|
|
4
|
-
/** Binding and scope decisions, independent of native editor lifecycle state. */
|
|
5
4
|
export interface TextEditDecision {
|
|
6
5
|
bindingIndex: number | null;
|
|
7
6
|
scope: TextProjectionScope;
|
|
@@ -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;
|
|
@@ -21,9 +21,7 @@ function inspectBrowserFacts(element, definitions, entries) {
|
|
|
21
21
|
tokens: session.inspectTokens(element),
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
|
-
//
|
|
25
|
-
// Adapter isolated from the document registry so one caller cannot replace
|
|
26
|
-
// 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.
|
|
27
25
|
const session = createBrowserCssInspection({
|
|
28
26
|
document: doc,
|
|
29
27
|
tokenKnowledge: { definitions, entries, generation: "compatibility" },
|
|
@@ -53,11 +51,7 @@ function catalogEntry(definition) {
|
|
|
53
51
|
})),
|
|
54
52
|
};
|
|
55
53
|
}
|
|
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
|
-
*/
|
|
54
|
+
/** Deliberately performs no selection or edit side effects. */
|
|
61
55
|
export function inspectElement(element, options = {}) {
|
|
62
56
|
const runtimeConfig = getNudgeUiRuntimeConfig();
|
|
63
57
|
const definitions = options.catalog ?? runtimeConfig.tokenCatalog;
|
|
@@ -82,9 +76,7 @@ export function inspectElement(element, options = {}) {
|
|
|
82
76
|
return diagnostic ? [{ property: change.property, ...diagnostic.result }] : [];
|
|
83
77
|
}),
|
|
84
78
|
};
|
|
85
|
-
//
|
|
86
|
-
// not necessarily :root. The selected element is therefore the correct
|
|
87
|
-
// 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.
|
|
88
80
|
const controls = properties
|
|
89
81
|
.filter((property) => !property.property.startsWith("--"))
|
|
90
82
|
.map((property) => ({
|
|
@@ -118,7 +110,7 @@ export function inspectElement(element, options = {}) {
|
|
|
118
110
|
: null,
|
|
119
111
|
};
|
|
120
112
|
}
|
|
121
|
-
/**
|
|
113
|
+
/** Dev-only seam used by compatibility applications. */
|
|
122
114
|
export function installInspectionBridge(target = window) {
|
|
123
115
|
const bridge = {
|
|
124
116
|
version: NUDGE_UI_INSPECTION_VERSION,
|
|
@@ -6,8 +6,7 @@ import { type TokenCatalogRow } from "../tokens/catalog.js";
|
|
|
6
6
|
export interface BrowserTokenKnowledge {
|
|
7
7
|
/** Build-time definitions normalized by a build-tool Adapter. */
|
|
8
8
|
definitions: readonly TokenDefinition[];
|
|
9
|
-
/**
|
|
10
|
-
* intentionally not mounted as custom properties in the current document. */
|
|
9
|
+
/** Compiler entries for authored references intentionally not mounted as custom properties. */
|
|
11
10
|
entries?: readonly TokenEntry[];
|
|
12
11
|
/** Changes whenever the Adapter publishes a new token inventory. */
|
|
13
12
|
generation: string | number;
|
|
@@ -16,12 +15,7 @@ export interface BrowserCssInspectionConfig {
|
|
|
16
15
|
document: Document;
|
|
17
16
|
tokenKnowledge: BrowserTokenKnowledge;
|
|
18
17
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Cascade transform owned exclusively by this module:
|
|
21
|
-
* - authored: interaction-state attribution (default; state defaults to base)
|
|
22
|
-
* - live: raw CSSOM matching as currently painted
|
|
23
|
-
* - stable: drops transient pseudo-class rules for editor token linking
|
|
24
|
-
*/
|
|
18
|
+
/** authored: interaction-state attribution; live: raw CSSOM as painted; stable: drops transient pseudo-class rules for token linking. */
|
|
25
19
|
export type InspectionCascade = "authored" | "live" | "stable";
|
|
26
20
|
export interface BrowserCssInspectionOptions {
|
|
27
21
|
state?: InteractionState;
|
|
@@ -72,10 +66,9 @@ export interface BrowserCssInspection {
|
|
|
72
66
|
};
|
|
73
67
|
inspectTokens(root?: HTMLElement): DocumentTokenInspectionSnapshot;
|
|
74
68
|
subscribe(listener: (revision: InspectionRevision) => void): () => void;
|
|
75
|
-
/** Integration hook for managed
|
|
69
|
+
/** Integration hook for writes to the inspector's own managed stylesheets. */
|
|
76
70
|
notifyStylesheetChange(): void;
|
|
77
|
-
/**
|
|
78
|
-
* 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. */
|
|
79
72
|
prewarmRules?(): void;
|
|
80
73
|
dispose(): void;
|
|
81
74
|
}
|
|
@@ -3,7 +3,7 @@ import { isNudgeUiDev } from "../runtime/devFlag.js";
|
|
|
3
3
|
import { countInspectionWork } from "./performanceDiagnostics.js";
|
|
4
4
|
import { buildTokenTable, getAvailableInteractionStates, getAvailableTokenCatalog, getAvailableTokenEntriesForElement, getResolvedProperties, getResolvedPropertiesForState, getResolvedPropertiesStable, invalidateStyleResolutionCache, prewarmCssomRuleSnapshot, prefetchContainerQueries, } from "../tokens/resolution.js";
|
|
5
5
|
import { buildTokenCatalogRows } from "../tokens/catalog.js";
|
|
6
|
-
import { documentRevisions, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
|
|
6
|
+
import { documentRevisions, invalidateOwnedStyleResolution, registerResolutionElement, retainDocumentResolution, subscribeDocumentRevision, } from "../tokens/resolution/cssomCollector.js";
|
|
7
7
|
function revisionSnapshot(revisions, tokenGeneration) {
|
|
8
8
|
return {
|
|
9
9
|
element: revisions.element,
|
|
@@ -138,8 +138,7 @@ export function createBrowserCssInspection(config) {
|
|
|
138
138
|
const releaseDocumentResolution = retainDocumentResolution(config.document);
|
|
139
139
|
const revisionUnsubscribers = new Set();
|
|
140
140
|
const elementTables = new WeakMap();
|
|
141
|
-
// When compiler entries are merged ahead of runtime availability, keep one
|
|
142
|
-
// 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.
|
|
143
142
|
const mergedTables = new WeakMap();
|
|
144
143
|
const mediaCleanup = [];
|
|
145
144
|
const mediaQueries = new Set(definitions.flatMap((definition) => definition.declarations.flatMap((declaration) => (declaration.context.wrappers ?? [])
|
|
@@ -217,10 +216,7 @@ export function createBrowserCssInspection(config) {
|
|
|
217
216
|
}
|
|
218
217
|
try {
|
|
219
218
|
const { availableTokens, table } = tokenTableFor(element);
|
|
220
|
-
// Only the authored cascade reports
|
|
221
|
-
// authored rules (the panel's state selector reads it there). Stable
|
|
222
|
-
// and live consumers project properties only, so skip the O(rules)
|
|
223
|
-
// per-state matching sweep for them.
|
|
219
|
+
// Only the authored cascade reports authored interaction states; the O(rules) per-state sweep is skipped elsewhere.
|
|
224
220
|
const availableStates = cascade === "stable"
|
|
225
221
|
? ["base"]
|
|
226
222
|
: getAvailableInteractionStates(element);
|
|
@@ -318,7 +314,7 @@ export function createBrowserCssInspection(config) {
|
|
|
318
314
|
},
|
|
319
315
|
notifyStylesheetChange() {
|
|
320
316
|
if (!disposed)
|
|
321
|
-
|
|
317
|
+
invalidateOwnedStyleResolution(config.document);
|
|
322
318
|
},
|
|
323
319
|
prewarmRules() {
|
|
324
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)
|
|
@@ -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;
|
|
@@ -32,11 +32,7 @@ function inspectView(session, selected, state, includeDocumentTokens) {
|
|
|
32
32
|
documentTokens: includeDocumentTokens ? session.inspectTokens() : null,
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
/**
|
|
36
|
-
* React Adapter for one revision-aware browser inspection view. This is the
|
|
37
|
-
* sole owner of subscription and scheduling policy; UI callers only project
|
|
38
|
-
* the returned snapshots.
|
|
39
|
-
*/
|
|
35
|
+
/** Sole owner of subscription and scheduling policy; callers only project the returned snapshots. */
|
|
40
36
|
export function useBrowserCssInspection(selected, state = "base", options = {}) {
|
|
41
37
|
const selectedElements = useMemo(() => normalizeSelection(selected), [selected]);
|
|
42
38
|
const selectedDocument = selectedElements[0]?.domElement.ownerDocument ?? document;
|
|
@@ -83,10 +79,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
83
79
|
};
|
|
84
80
|
const scheduleSelectionInspection = () => {
|
|
85
81
|
cancelScheduledInspection();
|
|
86
|
-
// Leading-edge resolve: a selection change resolves immediately
|
|
87
|
-
// of always waiting out the debounce. Rapid re-selections inside the
|
|
88
|
-
// trailing window still coalesce onto one trailing resolve, so the final
|
|
89
|
-
// 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.
|
|
90
83
|
const sinceLast = performance.now() - lastSelectionResolveAtRef.current;
|
|
91
84
|
if (sinceLast >= SELECTION_DEBOUNCE_MS) {
|
|
92
85
|
resolveSync();
|
|
@@ -99,12 +92,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
99
92
|
};
|
|
100
93
|
const scheduleRevisionInspection = () => {
|
|
101
94
|
cancelScheduledInspection();
|
|
102
|
-
// Let the host commit and paint
|
|
103
|
-
// projection. The extra frames keep the refresh start past the gap
|
|
104
|
-
// between rapid successive edits, so a new revision cancels the pending
|
|
105
|
-
// refresh instead of colliding with a running one, and they give the
|
|
106
|
-
// stylesheet walk its own frame so no single refresh task blocks for the
|
|
107
|
-
// 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.
|
|
108
96
|
revisionFrameRef.current = requestAnimationFrame(() => {
|
|
109
97
|
revisionFrameRef.current = null;
|
|
110
98
|
revisionSecondFrameRef.current = requestAnimationFrame(() => {
|
|
@@ -125,10 +113,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
125
113
|
return cancelScheduledInspection;
|
|
126
114
|
}, [includeDocumentTokens, selectedElements, state, session]);
|
|
127
115
|
useEffect(() => session.subscribe(scheduleRevisionInspection), [session]);
|
|
128
|
-
// Warm the
|
|
129
|
-
// not pay the stylesheet walk inside its own interaction. The idle timeout
|
|
130
|
-
// bounds the wait without competing with page-load paint; the walk is
|
|
131
|
-
// 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.
|
|
132
117
|
const prewarmedSessionRef = useRef(null);
|
|
133
118
|
useEffect(() => {
|
|
134
119
|
if (prewarmedSessionRef.current === session)
|
|
@@ -143,8 +128,7 @@ export function useBrowserCssInspection(selected, state = "base", options = {})
|
|
|
143
128
|
const timeoutId = setTimeout(warm, 200);
|
|
144
129
|
return () => clearTimeout(timeoutId);
|
|
145
130
|
}, [session, selectedDocument]);
|
|
146
|
-
// Selection effects run after children render
|
|
147
|
-
// 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.
|
|
148
132
|
const matchesSelection = view.session === session && view.state === state
|
|
149
133
|
&& view.selection.length === selectedElements.length
|
|
150
134
|
&& view.selection.every((element, index) => element.domElement === selectedElements[index]?.domElement);
|