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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { INTERACTION_STATES } from "../../shell/styleState.js";
|
|
2
2
|
import { collectRules as collectCssomRules, documentRevisions as getDocumentRevisions } from "./cssomCollector.js";
|
|
3
|
-
import { computeSpecificity, hasSelectorPseudoClass, isElementSensitiveSelector, canMatchSelectorSubject, selectorPseudoClasses, splitSelectorAtTopLevel, } from "./selectorSemantics.js";
|
|
3
|
+
import { computeSpecificity, hasSelectorPseudoClass, isElementSensitiveSelector, canMatchSelectorSubject, selectorPseudoClasses, selectorSubjectClass, splitSelectorAtTopLevel, } from "./selectorSemantics.js";
|
|
4
4
|
const TRANSIENT_PSEUDO_CLASSES = new Set([
|
|
5
5
|
"hover",
|
|
6
6
|
"active",
|
|
@@ -11,10 +11,7 @@ const TRANSIENT_PSEUDO_CLASSES = new Set([
|
|
|
11
11
|
"target",
|
|
12
12
|
]);
|
|
13
13
|
const INTERACTION_PSEUDO_CLASSES = new Set(INTERACTION_STATES);
|
|
14
|
-
/**
|
|
15
|
-
* Applies a per-branch selector transform to a selector list, so one stateful
|
|
16
|
-
* branch such as `.b:active` cannot drop a plain sibling branch such as `.a`.
|
|
17
|
-
*/
|
|
14
|
+
/** Per-branch transform, so a stateful branch such as `.b:active` cannot drop a plain sibling branch. */
|
|
18
15
|
function transformSelectorBranches(selector, transformBranch) {
|
|
19
16
|
if (!selector.includes(","))
|
|
20
17
|
return transformBranch(selector);
|
|
@@ -37,9 +34,7 @@ function branchForState(selector, state) {
|
|
|
37
34
|
return states.size === 0 ? selector : null;
|
|
38
35
|
if (!states.has(state))
|
|
39
36
|
return states.size === 0 ? selector : null;
|
|
40
|
-
// CSSOM cannot
|
|
41
|
-
// Removing interaction pseudo-classes gives the authored rule a stable
|
|
42
|
-
// element match for inspection. The real rule remains untouched.
|
|
37
|
+
// CSSOM cannot test a hypothetical pseudo-class, so strip it for a stable element match; the real rule is untouched.
|
|
43
38
|
let transformed = selector;
|
|
44
39
|
for (let index = pseudoClasses.length - 1; index >= 0; index--) {
|
|
45
40
|
const pseudoClass = pseudoClasses[index];
|
|
@@ -48,12 +43,28 @@ function branchForState(selector, state) {
|
|
|
48
43
|
return transformed;
|
|
49
44
|
}
|
|
50
45
|
function specificityForBranch(rule, branch) {
|
|
51
|
-
//
|
|
52
|
-
// matched branch is the whole selector. Multi-branch selectors need the
|
|
53
|
-
// matched branch's own weight, so recompute per branch.
|
|
46
|
+
// Multi-branch selectors need the matched branch's own weight; a single branch reuses the CSSOM specificity.
|
|
54
47
|
return rule.selectorText.includes(",") ? computeSpecificity(branch) : rule.specificity;
|
|
55
48
|
}
|
|
56
49
|
const transformedRulesMemo = new WeakMap();
|
|
50
|
+
// Lists change per revision but selectors rarely do, so transformed selectors are cached by text.
|
|
51
|
+
const TRANSFORMED_SELECTOR_CACHE_MAX = 32_768;
|
|
52
|
+
const transformedSelectorMemo = new Map();
|
|
53
|
+
function transformSelector(selectorText, transform) {
|
|
54
|
+
let byText = transformedSelectorMemo.get(transform);
|
|
55
|
+
if (!byText) {
|
|
56
|
+
byText = new Map();
|
|
57
|
+
transformedSelectorMemo.set(transform, byText);
|
|
58
|
+
}
|
|
59
|
+
const cached = byText.get(selectorText);
|
|
60
|
+
if (cached !== undefined)
|
|
61
|
+
return cached;
|
|
62
|
+
const transformed = transform === "stable" ? stableSelector(selectorText) : selectorForState(selectorText, transform);
|
|
63
|
+
if (byText.size >= TRANSFORMED_SELECTOR_CACHE_MAX)
|
|
64
|
+
byText.clear();
|
|
65
|
+
byText.set(selectorText, transformed);
|
|
66
|
+
return transformed;
|
|
67
|
+
}
|
|
57
68
|
function rulesForTransform(rules, transform) {
|
|
58
69
|
let byTransform = transformedRulesMemo.get(rules);
|
|
59
70
|
if (!byTransform) {
|
|
@@ -67,21 +78,90 @@ function rulesForTransform(rules, transform) {
|
|
|
67
78
|
if (transform === "live") {
|
|
68
79
|
transformed = rules.map((rule) => ({ rule, selectorText: rule.selectorText }));
|
|
69
80
|
}
|
|
70
|
-
else if (transform === "stable") {
|
|
71
|
-
transformed = rules.flatMap((rule) => {
|
|
72
|
-
const selectorText = stableSelector(rule.selectorText);
|
|
73
|
-
return selectorText ? [{ rule, selectorText }] : [];
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
81
|
else {
|
|
77
82
|
transformed = rules.flatMap((rule) => {
|
|
78
|
-
const selectorText =
|
|
83
|
+
const selectorText = transformSelector(rule.selectorText, transform);
|
|
79
84
|
return selectorText ? [{ rule, selectorText }] : [];
|
|
80
85
|
});
|
|
81
86
|
}
|
|
82
87
|
byTransform.set(transform, transformed);
|
|
83
88
|
return transformed;
|
|
84
89
|
}
|
|
90
|
+
const subjectClassIndexMemo = new WeakMap();
|
|
91
|
+
const SUBJECT_CLASS_KEYS_CACHE_MAX = 32_768;
|
|
92
|
+
const subjectClassKeysMemo = new Map();
|
|
93
|
+
/** One required class per branch, or null when some branch requires none. */
|
|
94
|
+
function subjectClassKeys(selectorText) {
|
|
95
|
+
const cached = subjectClassKeysMemo.get(selectorText);
|
|
96
|
+
if (cached !== undefined)
|
|
97
|
+
return cached;
|
|
98
|
+
const keys = new Set();
|
|
99
|
+
let indexed = true;
|
|
100
|
+
for (const branch of splitSelectorAtTopLevel(selectorText, ",")) {
|
|
101
|
+
const className = selectorSubjectClass(branch.trim());
|
|
102
|
+
if (className === null) {
|
|
103
|
+
indexed = false;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
keys.add(className);
|
|
107
|
+
}
|
|
108
|
+
const result = indexed ? [...keys] : null;
|
|
109
|
+
if (subjectClassKeysMemo.size >= SUBJECT_CLASS_KEYS_CACHE_MAX)
|
|
110
|
+
subjectClassKeysMemo.clear();
|
|
111
|
+
subjectClassKeysMemo.set(selectorText, result);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
function subjectClassIndex(entries) {
|
|
115
|
+
const cached = subjectClassIndexMemo.get(entries);
|
|
116
|
+
if (cached)
|
|
117
|
+
return cached;
|
|
118
|
+
const byClass = new Map();
|
|
119
|
+
const unindexed = [];
|
|
120
|
+
entries.forEach((entry, index) => {
|
|
121
|
+
const keys = subjectClassKeys(entry.selectorText);
|
|
122
|
+
if (keys === null) {
|
|
123
|
+
unindexed.push(index);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const key of keys) {
|
|
127
|
+
const bucket = byClass.get(key);
|
|
128
|
+
if (bucket)
|
|
129
|
+
bucket.push(index);
|
|
130
|
+
else
|
|
131
|
+
byClass.set(key, [index]);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
const built = { byClass, unindexed, unindexedEntries: unindexed.map((index) => entries[index]) };
|
|
135
|
+
subjectClassIndexMemo.set(entries, built);
|
|
136
|
+
return built;
|
|
137
|
+
}
|
|
138
|
+
/** Entries that can match `el`, in original order; only skips branches `canMatchSelectorSubject` would reject anyway. */
|
|
139
|
+
function candidateEntries(entries, el) {
|
|
140
|
+
const index = subjectClassIndex(entries);
|
|
141
|
+
if (el.classList.length === 0 || index.byClass.size === 0)
|
|
142
|
+
return index.unindexedEntries;
|
|
143
|
+
let picked = null;
|
|
144
|
+
for (const className of el.classList) {
|
|
145
|
+
const bucket = index.byClass.get(className);
|
|
146
|
+
if (!bucket)
|
|
147
|
+
continue;
|
|
148
|
+
picked ??= [...index.unindexed];
|
|
149
|
+
for (const entryIndex of bucket)
|
|
150
|
+
picked.push(entryIndex);
|
|
151
|
+
}
|
|
152
|
+
if (!picked)
|
|
153
|
+
return index.unindexedEntries;
|
|
154
|
+
picked.sort((left, right) => left - right);
|
|
155
|
+
const candidates = [];
|
|
156
|
+
let previous = -1;
|
|
157
|
+
for (const entryIndex of picked) {
|
|
158
|
+
if (entryIndex === previous)
|
|
159
|
+
continue;
|
|
160
|
+
previous = entryIndex;
|
|
161
|
+
candidates.push(entries[entryIndex]);
|
|
162
|
+
}
|
|
163
|
+
return candidates;
|
|
164
|
+
}
|
|
85
165
|
const sourceSiteMatchBucketsMemo = new WeakMap();
|
|
86
166
|
function sourceSiteMatchBuckets(rules, transform) {
|
|
87
167
|
let byTransform = sourceSiteMatchBucketsMemo.get(rules);
|
|
@@ -105,24 +185,15 @@ const SOURCE_SITE_CACHE_MAX = 4096;
|
|
|
105
185
|
let sourceSiteMatchCaches = new WeakMap();
|
|
106
186
|
let sourceSiteMatchCacheEntries = 0;
|
|
107
187
|
const concreteElementMatchCaches = new WeakMap();
|
|
108
|
-
// The all-rules sweep shares the active sweep's revision cache for stable
|
|
109
|
-
// selectors. Element-sensitive selectors stay fresh because browser state can
|
|
110
|
-
// change without a mutation observed by the registry.
|
|
111
188
|
const allMatchesMemo = new WeakMap();
|
|
112
|
-
/** Test-only cache reset. */
|
|
113
189
|
export function resetSourceSiteMatchCache() {
|
|
114
190
|
sourceSiteMatchCaches = new WeakMap();
|
|
115
191
|
sourceSiteMatchCacheEntries = 0;
|
|
116
192
|
}
|
|
117
|
-
/** Test-only cache size. */
|
|
118
193
|
export function sourceSiteMatchCacheSize() {
|
|
119
194
|
return sourceSiteMatchCacheEntries;
|
|
120
195
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Captures selector-relevant state without serializing the whole document.
|
|
123
|
-
* Element and ancestor attributes cover the common source-site selectors while
|
|
124
|
-
* child/sibling-sensitive selectors are handled conservatively below.
|
|
125
|
-
*/
|
|
196
|
+
/** Selector-relevant element and ancestor attributes, without serializing the whole document. */
|
|
126
197
|
function sourceSiteContextKey(el) {
|
|
127
198
|
const lineage = [];
|
|
128
199
|
let current = el;
|
|
@@ -137,12 +208,7 @@ function sourceSiteContextKey(el) {
|
|
|
137
208
|
}
|
|
138
209
|
return lineage.join("\u0001");
|
|
139
210
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Source-site identity key for the matched-rule cache. The element's class is
|
|
142
|
-
* part of the key because sibling instances of a source site can carry
|
|
143
|
-
* different classes (for example rows in a large list), which changes which
|
|
144
|
-
* rules match even though their `data-cid`/`data-src` are identical.
|
|
145
|
-
*/
|
|
211
|
+
/** `data-cid`/`data-src` are identical across sibling instances, so the class is part of the key. */
|
|
146
212
|
function sourceSiteKey(el, transform) {
|
|
147
213
|
const cid = el.getAttribute("data-cid") ?? "";
|
|
148
214
|
const src = el.getAttribute("data-src") ?? "";
|
|
@@ -161,11 +227,7 @@ export function matchRuleForElement(el, entry) {
|
|
|
161
227
|
specificity: specificityForBranch(entry.rule, branch),
|
|
162
228
|
};
|
|
163
229
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Captures the current match outcome for selectors whose truth can change
|
|
166
|
-
* without a document revision. This keeps the expensive resolved-row cache
|
|
167
|
-
* usable while invalidating it when states such as `checked` actually change.
|
|
168
|
-
*/
|
|
230
|
+
/** Match key for selectors whose truth can change without a document revision. */
|
|
169
231
|
function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElement) {
|
|
170
232
|
const entries = sourceSiteMatchBuckets(rules, transform).elementSensitive;
|
|
171
233
|
if (entries.length === 0)
|
|
@@ -175,7 +237,7 @@ function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElemen
|
|
|
175
237
|
let depth = 0;
|
|
176
238
|
while (current) {
|
|
177
239
|
const elementMatches = [];
|
|
178
|
-
for (const entry of entries) {
|
|
240
|
+
for (const entry of candidateEntries(entries, current)) {
|
|
179
241
|
const match = matchRuleForElement(current, entry);
|
|
180
242
|
if (!match)
|
|
181
243
|
continue;
|
|
@@ -192,24 +254,20 @@ function sensitiveMatchesForElement(el, buckets, matchesByElement) {
|
|
|
192
254
|
const cached = matchesByElement.get(el);
|
|
193
255
|
if (cached)
|
|
194
256
|
return cached;
|
|
195
|
-
const matched = buckets.elementSensitive.flatMap((entry) => {
|
|
257
|
+
const matched = candidateEntries(buckets.elementSensitive, el).flatMap((entry) => {
|
|
196
258
|
const match = matchRuleForElement(el, entry);
|
|
197
259
|
return match ? [match] : [];
|
|
198
260
|
});
|
|
199
261
|
matchesByElement.set(el, matched);
|
|
200
262
|
return matched;
|
|
201
263
|
}
|
|
202
|
-
/**
|
|
203
|
-
* Matches transformed rules against one element. Stable source-site identities
|
|
204
|
-
* reuse revision-keyed matches; unstable identities and relationship-sensitive
|
|
205
|
-
* selectors are matched on each call.
|
|
206
|
-
*/
|
|
264
|
+
/** Stable source-site identities reuse revision-keyed matches; unstable identities and relationship-sensitive selectors match per call. */
|
|
207
265
|
function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
|
|
208
266
|
const buckets = sourceSiteMatchBuckets(rules, transform);
|
|
209
267
|
const { cacheable, elementSensitive } = buckets;
|
|
210
268
|
const collect = (entries) => {
|
|
211
269
|
const matched = [];
|
|
212
|
-
for (const entry of entries) {
|
|
270
|
+
for (const entry of candidateEntries(entries, el)) {
|
|
213
271
|
if (entry.rule.active === false)
|
|
214
272
|
continue;
|
|
215
273
|
const match = matchRuleForElement(el, entry);
|
|
@@ -278,29 +336,24 @@ function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement
|
|
|
278
336
|
matched: cachedMatches,
|
|
279
337
|
});
|
|
280
338
|
}
|
|
281
|
-
// Browser state
|
|
282
|
-
// stylesheet revision, so element-sensitive matches must stay fresh.
|
|
339
|
+
// Browser state (:checked, :target) can change without a revision, so element-sensitive matches stay fresh.
|
|
283
340
|
const elementMatches = elementSensitive.length > 0
|
|
284
341
|
? sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement).filter((match) => match.rule.active !== false)
|
|
285
342
|
: [];
|
|
286
343
|
return elementMatches.length === 0 ? cachedMatches : [...cachedMatches, ...elementMatches];
|
|
287
344
|
}
|
|
288
|
-
/**
|
|
289
|
-
* Matches selectors without applying conditional wrappers. The result retains
|
|
290
|
-
* inactive media alternatives for attribution, while transient selectors and
|
|
291
|
-
* the `live` transform retain their freshness requirements.
|
|
292
|
-
*/
|
|
345
|
+
/** Keeps inactive media alternatives for attribution; transient and `live` matches keep their freshness requirements. */
|
|
293
346
|
function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
|
|
294
347
|
const buckets = sourceSiteMatchBuckets(rules, transform);
|
|
295
348
|
if (transform === "live") {
|
|
296
|
-
const cacheableMatches = buckets.cacheable.flatMap((entry) => {
|
|
349
|
+
const cacheableMatches = candidateEntries(buckets.cacheable, el).flatMap((entry) => {
|
|
297
350
|
const match = matchRuleForElement(el, entry);
|
|
298
351
|
return match ? [match] : [];
|
|
299
352
|
});
|
|
300
353
|
return [...cacheableMatches, ...sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement)];
|
|
301
354
|
}
|
|
302
355
|
const { cacheable, elementSensitive } = buckets;
|
|
303
|
-
const collect = (entries) => entries.flatMap((entry) => {
|
|
356
|
+
const collect = (entries) => candidateEntries(entries, el).flatMap((entry) => {
|
|
304
357
|
const match = matchRuleForElement(el, entry);
|
|
305
358
|
return match ? [match] : [];
|
|
306
359
|
});
|
|
@@ -333,13 +386,9 @@ function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement =
|
|
|
333
386
|
: [];
|
|
334
387
|
return sensitiveMatches.length === 0 ? cachedMatches : [...cachedMatches, ...sensitiveMatches];
|
|
335
388
|
}
|
|
336
|
-
// Branch splits repeat across sweeps, so memoize them
|
|
337
|
-
|
|
338
|
-
const SELECTOR_SPLIT_CACHE_MAX = 8192;
|
|
389
|
+
// Branch splits repeat across sweeps over a finite selector set, so memoize them.
|
|
390
|
+
const SELECTOR_SPLIT_CACHE_MAX = 32_768;
|
|
339
391
|
const selectorSplitMemo = new Map();
|
|
340
|
-
// Branch matches are reusable for state-independent selectors. Transient
|
|
341
|
-
// selectors stay uncached because their state is not represented by document
|
|
342
|
-
// revisions.
|
|
343
392
|
const ELEMENT_BRANCH_CACHE_MAX = 16384;
|
|
344
393
|
const elementBranchMemo = new WeakMap();
|
|
345
394
|
function isBranchMemoizable(selectorText) {
|
|
@@ -394,7 +443,6 @@ function matchingSelectorBranch(el, selectorText) {
|
|
|
394
443
|
}
|
|
395
444
|
return branch;
|
|
396
445
|
}
|
|
397
|
-
/** Creates a matcher for one CSSOM snapshot. */
|
|
398
446
|
export function createRuleMatcher(rules, transform) {
|
|
399
447
|
const sensitiveMatches = new Map();
|
|
400
448
|
return {
|
|
@@ -405,10 +453,7 @@ export function createRuleMatcher(rules, transform) {
|
|
|
405
453
|
}),
|
|
406
454
|
};
|
|
407
455
|
}
|
|
408
|
-
/**
|
|
409
|
-
* Interaction states whose pseudo-class appears in the snapshot. Skipping
|
|
410
|
-
* absent states avoids a full match sweep after each stylesheet revision.
|
|
411
|
-
*/
|
|
456
|
+
/** States whose pseudo-class appears in the snapshot, so absent states skip a full match sweep. */
|
|
412
457
|
const statesWithPseudoInSnapshot = new WeakMap();
|
|
413
458
|
function statesWithPseudoInSelectors(rules) {
|
|
414
459
|
let present = statesWithPseudoInSnapshot.get(rules);
|
|
@@ -425,6 +470,15 @@ function statesWithPseudoInSelectors(rules) {
|
|
|
425
470
|
}
|
|
426
471
|
return present;
|
|
427
472
|
}
|
|
473
|
+
/** Warms transforms, buckets, and class indexes so an idle frame pays their parsing cost. */
|
|
474
|
+
export function prewarmRuleMatching(rules) {
|
|
475
|
+
const transforms = ["base", "stable", "live", ...statesWithPseudoInSelectors(rules)];
|
|
476
|
+
for (const transform of new Set(transforms)) {
|
|
477
|
+
const { cacheable, elementSensitive } = sourceSiteMatchBuckets(rules, transform);
|
|
478
|
+
subjectClassIndex(cacheable);
|
|
479
|
+
subjectClassIndex(elementSensitive);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
428
482
|
export function getAvailableInteractionStates(el) {
|
|
429
483
|
const doc = el.ownerDocument ?? document;
|
|
430
484
|
const { rules } = collectCssomRules(doc);
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
export declare function splitSelectorAtTopLevel(selector: string, separator?: string): string[];
|
|
2
|
-
/** Test-only specificity cache size. */
|
|
3
2
|
export declare function specificityComputationCount(): number;
|
|
4
|
-
/** Test-only specificity cache reset. */
|
|
5
3
|
export declare function resetSpecificityMemo(): void;
|
|
6
|
-
/**
|
|
7
|
-
* Computes the cascade weight for a selector without asking the DOM to match
|
|
8
|
-
* it. Results are memoized per selector string for the resolution paths that
|
|
9
|
-
* still recompute branch specificity (multi-branch selectors).
|
|
10
|
-
*/
|
|
11
4
|
export declare function computeSpecificity(selectorText: string): number;
|
|
12
|
-
/** Unmemoized implementation used by equivalence tests. */
|
|
13
5
|
export declare function computeSpecificityCore(selectorText: string): number;
|
|
14
6
|
export interface SelectorPseudoClass {
|
|
15
7
|
name: string;
|
|
@@ -19,10 +11,7 @@ export interface SelectorPseudoClass {
|
|
|
19
11
|
export declare function selectorPseudoClasses(selector: string): readonly SelectorPseudoClass[];
|
|
20
12
|
export declare function hasSelectorPseudoClass(selector: string, names: ReadonlySet<string>): boolean;
|
|
21
13
|
export declare function isElementSensitiveSelector(selector: string): boolean;
|
|
22
|
-
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* an impossible positive class requirement and leaves all other selectors to
|
|
26
|
-
* the browser's selector engine.
|
|
27
|
-
*/
|
|
14
|
+
/** Class the selector's subject (rightmost compound) requires, or null when it requires none. */
|
|
15
|
+
export declare function selectorSubjectClass(selector: string): string | null;
|
|
16
|
+
/** Conservative prefilter: false only for an impossible required subject class; everything else goes to the browser engine. */
|
|
28
17
|
export declare function canMatchSelectorSubject(el: Element, selector: string): boolean;
|
|
@@ -41,23 +41,16 @@ export function splitSelectorAtTopLevel(selector, separator) {
|
|
|
41
41
|
parts.push(last);
|
|
42
42
|
return parts;
|
|
43
43
|
}
|
|
44
|
-
const SPECIFICITY_MEMO_LIMIT =
|
|
44
|
+
const SPECIFICITY_MEMO_LIMIT = 32_768;
|
|
45
45
|
const specificityMemo = new Map();
|
|
46
46
|
let specificityComputations = 0;
|
|
47
|
-
/** Test-only specificity cache size. */
|
|
48
47
|
export function specificityComputationCount() {
|
|
49
48
|
return specificityComputations;
|
|
50
49
|
}
|
|
51
|
-
/** Test-only specificity cache reset. */
|
|
52
50
|
export function resetSpecificityMemo() {
|
|
53
51
|
specificityMemo.clear();
|
|
54
52
|
specificityComputations = 0;
|
|
55
53
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Computes the cascade weight for a selector without asking the DOM to match
|
|
58
|
-
* it. Results are memoized per selector string for the resolution paths that
|
|
59
|
-
* still recompute branch specificity (multi-branch selectors).
|
|
60
|
-
*/
|
|
61
54
|
export function computeSpecificity(selectorText) {
|
|
62
55
|
const cached = specificityMemo.get(selectorText);
|
|
63
56
|
if (cached !== undefined)
|
|
@@ -69,7 +62,6 @@ export function computeSpecificity(selectorText) {
|
|
|
69
62
|
specificityMemo.set(selectorText, result);
|
|
70
63
|
return result;
|
|
71
64
|
}
|
|
72
|
-
/** Unmemoized implementation used by equivalence tests. */
|
|
73
65
|
export function computeSpecificityCore(selectorText) {
|
|
74
66
|
const selector = selectorText.trim();
|
|
75
67
|
const commaParts = splitSelectorAtTopLevel(selector, ",");
|
|
@@ -104,7 +96,7 @@ export function computeSpecificityCore(selectorText) {
|
|
|
104
96
|
}
|
|
105
97
|
return idCount * 1000000 + classCount * 10000 + elementCount * 100;
|
|
106
98
|
}
|
|
107
|
-
const SELECTOR_PSEUDO_CLASS_CACHE_MAX =
|
|
99
|
+
const SELECTOR_PSEUDO_CLASS_CACHE_MAX = 32_768;
|
|
108
100
|
const selectorPseudoClassMemo = new Map();
|
|
109
101
|
export function selectorPseudoClasses(selector) {
|
|
110
102
|
const cached = selectorPseudoClassMemo.get(selector);
|
|
@@ -164,7 +156,7 @@ export function hasSelectorPseudoClass(selector, names) {
|
|
|
164
156
|
}
|
|
165
157
|
const STATIC_SELECTOR_FUNCTIONS = new Set(["is", "where", "not"]);
|
|
166
158
|
const STATIC_PSEUDO_CLASSES = new Set(["host", "root"]);
|
|
167
|
-
const SELECTOR_SENSITIVITY_CACHE_MAX =
|
|
159
|
+
const SELECTOR_SENSITIVITY_CACHE_MAX = 32_768;
|
|
168
160
|
const selectorSensitivityMemo = new Map();
|
|
169
161
|
function selectorFunctionEnd(selector, openingIndex) {
|
|
170
162
|
let parentheses = 0;
|
|
@@ -249,8 +241,7 @@ function computeElementSensitiveSelector(selector) {
|
|
|
249
241
|
attributeDepth--;
|
|
250
242
|
continue;
|
|
251
243
|
}
|
|
252
|
-
// Tailwind escapes
|
|
253
|
-
// escaped colon is part of the class name, not a pseudo-class boundary.
|
|
244
|
+
// Tailwind escapes variants (`.sm\\:text-red-500`); an escaped colon is part of the class, not a pseudo boundary.
|
|
254
245
|
if (escaped) {
|
|
255
246
|
escaped = false;
|
|
256
247
|
continue;
|
|
@@ -270,9 +261,7 @@ function computeElementSensitiveSelector(selector) {
|
|
|
270
261
|
const pseudoElement = selector[index + 1] === ":";
|
|
271
262
|
const pseudo = /^[A-Za-z-]+/.exec(selector.slice(index + (pseudoElement ? 2 : 1)))?.[0];
|
|
272
263
|
if (pseudoElement) {
|
|
273
|
-
// Pseudo-elements do not
|
|
274
|
-
// a selector. Continue scanning after the name so a real pseudo-class
|
|
275
|
-
// elsewhere in the selector remains element-sensitive.
|
|
264
|
+
// Pseudo-elements do not make the originating element element-sensitive; keep scanning after the name.
|
|
276
265
|
if (!pseudo)
|
|
277
266
|
return true;
|
|
278
267
|
index += pseudo.length + 1;
|
|
@@ -297,10 +286,7 @@ function computeElementSensitiveSelector(selector) {
|
|
|
297
286
|
index = end;
|
|
298
287
|
continue;
|
|
299
288
|
}
|
|
300
|
-
// :root
|
|
301
|
-
// context. Other pseudo-classes can vary per concrete element without an
|
|
302
|
-
// attribute or sibling mutation (for example :checked, :visited, and
|
|
303
|
-
// :target), so keep them in the element-sensitive bucket.
|
|
289
|
+
// :root/:host are covered by ancestor context; other pseudo-classes (:checked, :visited, :target) can vary per element, so keep them element-sensitive.
|
|
304
290
|
if (STATIC_PSEUDO_CLASSES.has(pseudoName))
|
|
305
291
|
continue;
|
|
306
292
|
return true;
|
|
@@ -402,7 +388,7 @@ function unescapeCssIdentifier(value) {
|
|
|
402
388
|
})
|
|
403
389
|
.replace(/\\(.)/g, "$1");
|
|
404
390
|
}
|
|
405
|
-
const SELECTOR_CLASS_REQUIREMENTS_CACHE_MAX =
|
|
391
|
+
const SELECTOR_CLASS_REQUIREMENTS_CACHE_MAX = 32_768;
|
|
406
392
|
const selectorClassRequirementsMemo = new Map();
|
|
407
393
|
function selectorClassRequirements(selector) {
|
|
408
394
|
const cached = selectorClassRequirementsMemo.get(selector);
|
|
@@ -469,12 +455,11 @@ function selectorClassRequirements(selector) {
|
|
|
469
455
|
selectorClassRequirementsMemo.set(selector, requirements);
|
|
470
456
|
return requirements;
|
|
471
457
|
}
|
|
472
|
-
/**
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
*/
|
|
458
|
+
/** Class the selector's subject (rightmost compound) requires, or null when it requires none. */
|
|
459
|
+
export function selectorSubjectClass(selector) {
|
|
460
|
+
return selectorClassRequirements(selector)[0] ?? null;
|
|
461
|
+
}
|
|
462
|
+
/** Conservative prefilter: false only for an impossible required subject class; everything else goes to the browser engine. */
|
|
478
463
|
export function canMatchSelectorSubject(el, selector) {
|
|
479
464
|
return selectorClassRequirements(selector).every((className) => el.classList.contains(className));
|
|
480
465
|
}
|
|
@@ -2,35 +2,16 @@ import type { InteractionState } from "../shell/styleState.js";
|
|
|
2
2
|
import { type ContainerQueryEvaluator } from "./resolution/containerQueryEvaluator.js";
|
|
3
3
|
import type { MatchedRule, ResolvedProperty, TokenTable } from "../../css/model/index.js";
|
|
4
4
|
export { getAvailableInteractionStates, resetSourceSiteMatchCache, sourceSiteMatchCacheSize } from "./resolution/ruleMatching.js";
|
|
5
|
-
export { buildTokenTable,
|
|
5
|
+
export { buildTokenTable, getAvailableTokenEntriesForElement, getAvailableTokenCatalog } from "./tokenAvailability.js";
|
|
6
6
|
export { invalidateStyleResolutionCache } from "./resolution/cssomCollector.js";
|
|
7
|
-
/**
|
|
8
|
-
* Builds (or reuses) the document's CSSOM rule snapshot ahead of a resolution
|
|
9
|
-
* sweep. Idempotent: the walk runs once per stylesheet revision and is a cache
|
|
10
|
-
* hit afterwards, so a scheduler can warm it in its own frame to keep the
|
|
11
|
-
* subsequent resolution sweep's blocking time small.
|
|
12
|
-
*/
|
|
7
|
+
/** Idempotent per stylesheet revision; warms the snapshot ahead of a sweep so its blocking time stays small. */
|
|
13
8
|
export declare function prewarmCssomRuleSnapshot(doc: Document): void;
|
|
14
9
|
/** Prepares both cascades together so a selection refresh inserts one probe sheet. */
|
|
15
10
|
export declare function prefetchContainerQueries(elements: readonly HTMLElement[], state: InteractionState, evaluator: ContainerQueryEvaluator): void;
|
|
16
|
-
/**
|
|
17
|
-
* Package-private cascade fixture seam. This exercises selector, layer,
|
|
18
|
-
* importance, and interaction-state coordination while still crossing the
|
|
19
|
-
* public value-semantics Interface through `resolveDeclaration`.
|
|
20
|
-
* It is intentionally absent from the package exports.
|
|
21
|
-
*/
|
|
11
|
+
/** Test-only cascade fixture seam, intentionally absent from the package exports. */
|
|
22
12
|
export declare function resolveRuleFixture(el: HTMLElement, rules: MatchedRule[], tokenTable: TokenTable): ResolvedProperty[];
|
|
23
13
|
export declare function getResolvedProperties(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|
|
24
|
-
/**
|
|
25
|
-
* Resolve the authored cascade for a chosen interaction state without relying
|
|
26
|
-
* on the pointer's current location. This is intentionally attribution-first:
|
|
27
|
-
* values with no authored declaration still fall back to the browser's live
|
|
28
|
-
* computed value in the field layer.
|
|
29
|
-
*/
|
|
14
|
+
/** Authored cascade for a chosen interaction state, independent of the pointer's live paint. */
|
|
30
15
|
export declare function getResolvedPropertiesForState(el: HTMLElement, tokenTable: TokenTable, state: InteractionState, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|
|
31
|
-
/**
|
|
32
|
-
* Resolves the cascade with transient interaction selectors removed. Used when
|
|
33
|
-
* an editor must stay linked to the stable token beneath a live :hover/:focus
|
|
34
|
-
* paint. Memoized per (element, revisions, tokenTable).
|
|
35
|
-
*/
|
|
16
|
+
/** Cascade with transient interaction selectors removed, so an editor stays linked to the token beneath a live :hover/:focus paint. */
|
|
36
17
|
export declare function getResolvedPropertiesStable(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|