nudge-ui 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/agentCommand.d.ts +0 -1
- package/dist/cli/agentCommand.js +4 -29
- package/dist/client.mjs +987 -221
- package/dist/compiler/ast.d.ts +0 -6
- package/dist/compiler/ast.js +0 -5
- package/dist/compiler/componentContractTypes.d.ts +11 -5
- package/dist/compiler/componentContracts.js +3 -9
- package/dist/compiler/componentInstrumentation.d.ts +2 -13
- package/dist/compiler/componentInstrumentation.js +3 -12
- package/dist/compiler/componentPolicyResolution.d.ts +3 -22
- package/dist/compiler/componentPolicyResolution.js +6 -38
- package/dist/compiler/identityAttributes.d.ts +2 -0
- package/dist/compiler/identityAttributes.js +2 -0
- package/dist/compiler/index.d.ts +0 -1
- package/dist/compiler/index.js +0 -1
- package/dist/compiler/packageComponentContracts.d.ts +10 -19
- package/dist/compiler/packageComponentContracts.js +60 -43
- package/dist/compiler/reactComponentProtocols.d.ts +0 -7
- package/dist/compiler/reactComponentProtocols.js +0 -7
- package/dist/compiler/reactIdentity.d.ts +2 -2
- package/dist/compiler/reactIdentity.js +41 -43
- package/dist/compiler/sourcePaths.d.ts +4 -8
- package/dist/compiler/sourcePaths.js +6 -8
- package/dist/css/dialects/index.d.ts +2 -21
- package/dist/css/dialects/index.js +2 -9
- package/dist/css/dialects/tailwind.d.ts +2 -16
- package/dist/css/dialects/tailwind.js +2 -25
- package/dist/css/dialects/vanillaExtract.d.ts +1 -9
- package/dist/css/dialects/vanillaExtract.js +0 -1
- package/dist/css/index.d.ts +0 -8
- package/dist/css/index.js +0 -8
- package/dist/css/model/index.d.ts +6 -38
- package/dist/css/model/index.js +0 -9
- package/dist/css/token-inventory/index.d.ts +0 -23
- package/dist/css/token-inventory/index.js +0 -23
- package/dist/css/token-inventory/inventory.js +4 -16
- package/dist/css/token-inventory/parseStylesheet.d.ts +1 -9
- package/dist/css/token-inventory/parseStylesheet.js +5 -42
- package/dist/css/token-inventory/policy.d.ts +2 -39
- package/dist/css/token-inventory/policy.js +2 -39
- package/dist/css/token-inventory/types.d.ts +2 -15
- package/dist/css/value-semantics/borderSemantics.d.ts +1 -8
- package/dist/css/value-semantics/borderSemantics.js +5 -23
- package/dist/css/value-semantics/boxSemantics.d.ts +2 -25
- package/dist/css/value-semantics/boxSemantics.js +1 -7
- package/dist/css/value-semantics/colorSemantics.d.ts +6 -60
- package/dist/css/value-semantics/colorSemantics.js +9 -40
- package/dist/css/value-semantics/cssSyntax.d.ts +10 -10
- package/dist/css/value-semantics/cssSyntax.js +39 -11
- package/dist/css/value-semantics/fontSemantics.d.ts +3 -19
- package/dist/css/value-semantics/fontSemantics.js +7 -25
- package/dist/css/value-semantics/index.d.ts +1 -12
- package/dist/css/value-semantics/index.js +1 -12
- package/dist/css/value-semantics/propertyPolicy.d.ts +6 -53
- package/dist/css/value-semantics/propertyPolicy.js +47 -59
- package/dist/css/value-semantics/stringMaps.d.ts +0 -1
- package/dist/css/value-semantics/structuredValues.d.ts +3 -37
- package/dist/css/value-semantics/structuredValues.js +6 -17
- package/dist/css/value-semantics/tokenInterpretation.d.ts +8 -50
- package/dist/css/value-semantics/tokenInterpretation.js +7 -21
- package/dist/hosts/astro/astroRuntimeConfig.d.ts +0 -1
- package/dist/hosts/astro/astroRuntimeConfig.js +0 -1
- package/dist/hosts/astro/clientAsset.d.ts +1 -5
- package/dist/hosts/astro/clientAsset.js +1 -5
- package/dist/hosts/astro/clientTransport.d.ts +0 -1
- package/dist/hosts/astro/clientTransport.js +4 -9
- package/dist/hosts/astro/integration.d.ts +2 -28
- package/dist/hosts/astro/integration.js +7 -36
- package/dist/hosts/astro/markdownIdentity.d.ts +0 -3
- package/dist/hosts/astro/markdownIdentity.js +0 -3
- package/dist/hosts/astro/middleware.d.ts +1 -12
- package/dist/hosts/astro/middleware.js +1 -12
- package/dist/hosts/astro/projectContext.d.ts +1 -9
- package/dist/hosts/astro/projectContext.js +2 -11
- package/dist/hosts/astro/responseInstrumentation.d.ts +4 -33
- package/dist/hosts/astro/responseInstrumentation.js +5 -34
- package/dist/hosts/environment.d.ts +0 -8
- package/dist/hosts/environment.js +0 -1
- package/dist/hosts/next/index.js +1 -3
- package/dist/hosts/next/loader.d.ts +5 -44
- package/dist/hosts/next/loader.js +22 -103
- package/dist/hosts/next/loaders/identity-loader.cjs +111 -65
- package/dist/hosts/next/loaders/loader-plugin.cjs +111 -65
- package/dist/hosts/next/manifest.d.ts +2 -16
- package/dist/hosts/next/manifest.js +18 -20
- package/dist/hosts/next/mount.d.ts +1 -11
- package/dist/hosts/next/mount.js +1 -11
- package/dist/hosts/next/repositoryScope.d.ts +2 -17
- package/dist/hosts/next/repositoryScope.js +2 -17
- package/dist/hosts/next/sidecar.d.ts +0 -13
- package/dist/hosts/next/sidecar.js +25 -110
- package/dist/hosts/next/wrapper.d.ts +0 -31
- package/dist/hosts/next/wrapper.js +14 -71
- package/dist/hosts/projectBridge.d.ts +0 -2
- package/dist/hosts/projectBridge.js +3 -19
- package/dist/hosts/reactRendererCapture.d.ts +2 -0
- package/dist/hosts/reactRendererCapture.js +12 -0
- package/dist/hosts/static/cli.d.ts +0 -4
- package/dist/hosts/static/cli.js +0 -3
- package/dist/hosts/static/html/bootstrap.d.ts +1 -18
- package/dist/hosts/static/html/bootstrap.js +2 -14
- package/dist/hosts/static/manifest.d.ts +2 -15
- package/dist/hosts/static/manifest.js +5 -18
- package/dist/hosts/static/server.d.ts +4 -38
- package/dist/hosts/static/server.js +17 -67
- package/dist/hosts/vite/index.d.ts +0 -10
- package/dist/hosts/vite/index.js +0 -10
- package/dist/hosts/vite/react.d.ts +4 -17
- package/dist/hosts/vite/react.js +18 -35
- package/dist/hosts/vite/tokens/activeStylesheets.d.ts +1 -10
- package/dist/hosts/vite/tokens/activeStylesheets.js +3 -8
- package/dist/hosts/vite/tokens/fileMap.d.ts +0 -1
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +2 -15
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +3 -10
- package/dist/hosts/vite/vite.d.ts +5 -26
- package/dist/hosts/vite/vite.js +44 -80
- package/dist/html/dom.d.ts +0 -1
- package/dist/html/dom.js +0 -1
- package/dist/html/identity.d.ts +1 -15
- package/dist/html/identity.js +1 -8
- package/dist/html/insertions.d.ts +2 -8
- package/dist/html/insertions.js +1 -1
- package/dist/inspector/agent/McpConnectionDialog.d.ts +1 -6
- package/dist/inspector/agent/McpConnectionDialog.js +8 -9
- package/dist/inspector/agent/activity.d.ts +2 -2
- package/dist/inspector/agent/activity.js +4 -3
- package/dist/inspector/agent/client.d.ts +3 -27
- package/dist/inspector/agent/client.js +43 -91
- package/dist/inspector/agent/connectionStatus.d.ts +3 -2
- package/dist/inspector/agent/connectionStatus.js +25 -1
- package/dist/inspector/agent/httpTransport.d.ts +0 -8
- package/dist/inspector/agent/httpTransport.js +42 -176
- package/dist/inspector/agent/protocol.d.ts +1 -10
- package/dist/inspector/agent/protocol.js +1 -9
- package/dist/inspector/agent/verification.d.ts +3 -20
- package/dist/inspector/agent/verification.js +10 -43
- package/dist/inspector/boot.d.ts +5 -0
- package/dist/inspector/boot.js +289 -0
- package/dist/inspector/canvas/AgentActivityOverlay.d.ts +3 -2
- package/dist/inspector/canvas/AgentActivityOverlay.js +7 -4
- package/dist/inspector/canvas/CanvasCard.js +26 -24
- package/dist/inspector/canvas/CanvasElementOverlay.js +196 -174
- package/dist/inspector/canvas/CanvasToolbar.js +2 -1
- package/dist/inspector/canvas/CanvasWorkspace.js +87 -124
- package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +3 -2
- package/dist/inspector/canvas/LockedWorkspaceNotice.js +10 -6
- package/dist/inspector/canvas/PageCard.d.ts +9 -0
- package/dist/inspector/canvas/PageCard.js +50 -0
- package/dist/inspector/canvas/SketchToolOptions.d.ts +4 -0
- package/dist/inspector/canvas/SketchToolOptions.js +80 -0
- package/dist/inspector/canvas/StaleChangeIndicator.d.ts +1 -1
- package/dist/inspector/canvas/StaleChangeIndicator.js +1 -1
- package/dist/inspector/canvas/ToolOptionsDrawer.d.ts +16 -0
- package/dist/inspector/canvas/ToolOptionsDrawer.js +71 -0
- package/dist/inspector/canvas/activeCanvasDocument.d.ts +3 -4
- package/dist/inspector/canvas/activeCanvasDocument.js +0 -2
- package/dist/inspector/canvas/agentPresentation.d.ts +2 -13
- package/dist/inspector/canvas/agentPresentation.js +3 -14
- package/dist/inspector/canvas/assets/eraser.svg +28 -0
- package/dist/inspector/canvas/assets/pen.svg +25 -0
- package/dist/inspector/canvas/canvasFrame.d.ts +12 -0
- package/dist/inspector/canvas/canvasFrame.js +9 -0
- package/dist/inspector/canvas/canvasGestures.d.ts +0 -1
- package/dist/inspector/canvas/canvasGestures.js +0 -6
- package/dist/inspector/canvas/canvasResize.d.ts +1 -6
- package/dist/inspector/canvas/canvasResize.js +1 -6
- package/dist/inspector/canvas/canvasStore.d.ts +5 -7
- package/dist/inspector/canvas/canvasStore.js +42 -21
- package/dist/inspector/canvas/frameConnection.d.ts +42 -0
- package/dist/inspector/canvas/frameConnection.js +73 -0
- package/dist/inspector/canvas/frameContent.d.ts +0 -1
- package/dist/inspector/canvas/frameLifecycle.d.ts +12 -0
- package/dist/inspector/canvas/frameLifecycle.js +11 -0
- package/dist/inspector/canvas/frameProtocol.d.ts +20 -38
- package/dist/inspector/canvas/frameProtocol.js +37 -24
- package/dist/inspector/canvas/frameScrollbarStyles.d.ts +0 -1
- package/dist/inspector/canvas/frameScrollbarStyles.js +0 -1
- package/dist/inspector/canvas/layout.d.ts +10 -22
- package/dist/inspector/canvas/layout.js +0 -3
- package/dist/inspector/canvas/normalizeUrl.js +1 -8
- package/dist/inspector/canvas/pageSurface.d.ts +6 -0
- package/dist/inspector/canvas/pageSurface.js +29 -0
- package/dist/inspector/canvas/projection.d.ts +14 -25
- package/dist/inspector/canvas/projection.js +64 -87
- package/dist/inspector/canvas/rendererBootstrap.d.ts +8 -1
- package/dist/inspector/canvas/rendererBootstrap.js +10 -15
- package/dist/inspector/canvas/rendererCidIndex.d.ts +0 -5
- package/dist/inspector/canvas/rendererCidIndex.js +0 -5
- package/dist/inspector/canvas/rendererElementSelector.js +38 -28
- package/dist/inspector/canvas/rendererMessageRouter.d.ts +4 -6
- package/dist/inspector/canvas/rendererMessageRouter.js +12 -17
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +3 -1
- package/dist/inspector/canvas/rendererSelectionProxy.js +7 -40
- package/dist/inspector/canvas/rendererStylesheet.d.ts +0 -1
- package/dist/inspector/canvas/rendererStylesheet.js +23 -1
- package/dist/inspector/canvas/resizeHandleScale.d.ts +1 -10
- package/dist/inspector/canvas/resizeHandleScale.js +1 -10
- package/dist/inspector/canvas/sessionStore.d.ts +3 -9
- package/dist/inspector/canvas/sessionStore.js +33 -43
- package/dist/inspector/canvas/staleChangeDetector.d.ts +1 -1
- package/dist/inspector/canvas/staleChangeDetector.js +11 -26
- package/dist/inspector/canvas/toolbarScale.d.ts +1 -4
- package/dist/inspector/canvas/toolbarScale.js +1 -4
- package/dist/inspector/canvas/useCanvasLayoutAnimation.d.ts +0 -1
- package/dist/inspector/canvas/useCanvasLayoutAnimation.js +0 -1
- package/dist/inspector/canvas/viewStore.js +1 -1
- package/dist/inspector/canvas/wheelPan.d.ts +1 -1
- package/dist/inspector/canvas/wheelPan.js +1 -1
- package/dist/inspector/canvas/workspaceLease.d.ts +1 -5
- package/dist/inspector/canvas/workspaceLease.js +1 -7
- package/dist/inspector/changes/codecs.d.ts +1 -0
- package/dist/inspector/changes/codecs.js +21 -5
- package/dist/inspector/changes/draftPreview.d.ts +7 -0
- package/dist/inspector/changes/draftPreview.js +118 -0
- package/dist/inspector/changes/editModel.d.ts +11 -13
- package/dist/inspector/changes/editModel.js +9 -4
- package/dist/inspector/changes/managedStyleProjection.js +6 -15
- package/dist/inspector/changes/model.d.ts +0 -5
- package/dist/inspector/changes/model.js +1 -8
- package/dist/inspector/changes/previewDiagnostics.d.ts +2 -12
- package/dist/inspector/changes/previewDiagnostics.js +5 -21
- package/dist/inspector/changes/previewVerification.d.ts +25 -0
- package/dist/inspector/changes/previewVerification.js +34 -0
- package/dist/inspector/changes/structuralTypes.d.ts +2 -4
- package/dist/inspector/changes/types.d.ts +11 -8
- package/dist/inspector/clientManifest.d.ts +17 -6
- package/dist/inspector/clientManifest.js +16 -3
- package/dist/inspector/comments/CommentsOverlay.js +66 -23
- package/dist/inspector/comments/element.d.ts +1 -2
- package/dist/inspector/comments/element.js +1 -2
- package/dist/inspector/comments/store.d.ts +1 -1
- package/dist/inspector/comments/store.js +4 -3
- package/dist/inspector/comments/verification.d.ts +8 -2
- package/dist/inspector/comments/verification.js +19 -11
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +8 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +12 -8
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +2 -9
- package/dist/inspector/componentSemantics/adapterRegistry.js +2 -9
- package/dist/inspector/componentSemantics/changeAction.js +1 -1
- package/dist/inspector/componentSemantics/changeModel.js +2 -4
- package/dist/inspector/componentSemantics/react/callsites.d.ts +28 -0
- package/dist/inspector/componentSemantics/react/callsites.js +261 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.d.ts +23 -0
- package/dist/inspector/componentSemantics/react/devtoolsHook.js +71 -0
- package/dist/inspector/componentSemantics/react/fibers.d.ts +17 -0
- package/dist/inspector/componentSemantics/react/fibers.js +30 -0
- package/dist/inspector/componentSemantics/{reactRuntime.d.ts → react/runtime.d.ts} +3 -2
- package/dist/inspector/componentSemantics/{reactRuntime.js → react/runtime.js} +70 -53
- package/dist/inspector/componentSemantics/runtimeBridge.d.ts +2 -18
- package/dist/inspector/componentSemantics/runtimeBridge.js +5 -19
- package/dist/inspector/componentSemantics/textBinding.d.ts +2 -11
- package/dist/inspector/componentSemantics/textBinding.js +20 -87
- package/dist/inspector/componentSemantics/types.d.ts +8 -27
- package/dist/inspector/componentSemantics/types.js +0 -1
- package/dist/inspector/conformance/borderCases.d.ts +0 -5
- package/dist/inspector/conformance/borderCases.js +0 -5
- package/dist/inspector/conformance/colorCases.d.ts +0 -6
- package/dist/inspector/conformance/colorCases.js +0 -6
- package/dist/inspector/conformance/fixture.d.ts +1 -5
- package/dist/inspector/conformance/fixture.js +1 -5
- package/dist/inspector/conformance/spacingCases.d.ts +0 -4
- package/dist/inspector/conformance/spacingCases.js +0 -4
- package/dist/inspector/conformance/typographyCases.d.ts +0 -5
- package/dist/inspector/conformance/typographyCases.js +0 -5
- package/dist/inspector/drafts/draftStore.d.ts +95 -0
- package/dist/inspector/drafts/draftStore.js +461 -0
- package/dist/inspector/drafts/model.d.ts +14 -14
- package/dist/inspector/drafts/model.js +4 -2
- package/dist/inspector/drafts/store.d.ts +47 -16
- package/dist/inspector/drafts/store.js +137 -170
- package/dist/inspector/editScope.d.ts +0 -1
- package/dist/inspector/editScope.js +0 -1
- package/dist/inspector/index.d.ts +2 -4
- package/dist/inspector/index.js +2 -264
- package/dist/inspector/inline-text/inlineTextDiagnostics.d.ts +0 -2
- package/dist/inspector/inline-text/inlineTextDiagnostics.js +0 -2
- package/dist/inspector/inline-text/inlineTextEditor.d.ts +3 -9
- package/dist/inspector/inline-text/inlineTextEditor.js +27 -81
- package/dist/inspector/inline-text/inlineTextLifecycle.js +1 -6
- package/dist/inspector/inline-text/textEditChange.d.ts +1 -2
- package/dist/inspector/inspection/bridge.d.ts +3 -7
- package/dist/inspector/inspection/bridge.js +6 -13
- package/dist/inspector/inspection/browserCssInspection.d.ts +12 -11
- package/dist/inspector/inspection/browserCssInspection.js +32 -14
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +0 -7
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +1 -16
- package/dist/inspector/inspection/inspectionSnapshot.d.ts +6 -0
- package/dist/inspector/inspection/inspectionSnapshot.js +10 -0
- package/dist/inspector/inspection/performanceDiagnostics.d.ts +18 -0
- package/dist/inspector/inspection/performanceDiagnostics.js +31 -0
- package/dist/inspector/inspection/selectionProperty.d.ts +1 -6
- package/dist/inspector/inspection/selectionProperty.js +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.d.ts +1 -5
- package/dist/inspector/inspection/useBrowserCssInspection.js +22 -59
- package/dist/inspector/iterations/capture.d.ts +2 -2
- package/dist/inspector/iterations/capture.js +4 -9
- package/dist/inspector/iterations/client.d.ts +2 -2
- package/dist/inspector/iterations/client.js +0 -1
- package/dist/inspector/iterations/coordinator.d.ts +4 -4
- package/dist/inspector/iterations/coordinator.js +5 -4
- package/dist/inspector/iterations/prompt.d.ts +0 -1
- package/dist/inspector/iterations/prompt.js +9 -9
- package/dist/inspector/overlay/DomNavigator.d.ts +3 -1
- package/dist/inspector/overlay/DomNavigator.js +39 -15
- package/dist/inspector/overlay/DropGuideOverlay.d.ts +0 -1
- package/dist/inspector/overlay/DropGuideOverlay.js +0 -1
- package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +1 -8
- package/dist/inspector/overlay/MeasurementGuideOverlay.js +1 -5
- package/dist/inspector/overlay/clickPolicy.d.ts +3 -14
- package/dist/inspector/overlay/clickPolicy.js +3 -14
- package/dist/inspector/overlay/dropGuide.d.ts +0 -3
- package/dist/inspector/overlay/dropGuide.js +0 -3
- package/dist/inspector/overlay/frameThrottle.d.ts +0 -1
- package/dist/inspector/overlay/frameThrottle.js +0 -1
- package/dist/inspector/overlay/interactionStyles.d.ts +1 -1
- package/dist/inspector/overlay/interactionStyles.js +19 -8
- package/dist/inspector/overlay/measurementGeometry.js +4 -12
- package/dist/inspector/overlay/selectedGeometry.d.ts +1 -6
- package/dist/inspector/overlay/selectedGeometry.js +1 -8
- package/dist/inspector/overlay/spacingGestures.d.ts +14 -21
- package/dist/inspector/overlay/spacingGestures.js +151 -31
- package/dist/inspector/overlay/structuralGestures.d.ts +2 -9
- package/dist/inspector/overlay/structuralGestures.js +1 -4
- package/dist/inspector/pageInspector.d.ts +33 -0
- package/dist/inspector/pageInspector.js +335 -0
- package/dist/inspector/projection/cssEscapes.d.ts +0 -1
- package/dist/inspector/projection/cssEscapes.js +2 -4
- package/dist/inspector/projection/draftProjection.d.ts +6 -10
- package/dist/inspector/projection/draftProjection.js +8 -7
- package/dist/inspector/projection/managedStylesheet.d.ts +1 -7
- package/dist/inspector/projection/managedStylesheet.js +28 -26
- package/dist/inspector/projection/renderedInstance.d.ts +5 -28
- package/dist/inspector/projection/renderedInstance.js +13 -33
- package/dist/inspector/projection/structuralProjection.d.ts +7 -48
- package/dist/inspector/projection/structuralProjection.js +31 -96
- package/dist/inspector/projection/textProjection.d.ts +7 -13
- package/dist/inspector/projection/textProjection.js +35 -80
- package/dist/inspector/prompt/PromptSettingsDialog.d.ts +0 -1
- package/dist/inspector/prompt/PromptSettingsDialog.js +0 -1
- package/dist/inspector/prompt/clipboardHandoff.d.ts +1 -0
- package/dist/inspector/prompt/clipboardHandoff.js +34 -16
- package/dist/inspector/prompt/generatePrompt.d.ts +2 -2
- package/dist/inspector/prompt/generatePrompt.js +247 -166
- package/dist/inspector/prompt/promptDocument.d.ts +3 -0
- package/dist/inspector/prompt/promptDocument.js +8 -0
- package/dist/inspector/prompt/promptSettings.d.ts +0 -3
- package/dist/inspector/prompt/promptSettings.js +7 -8
- package/dist/inspector/runtime/devFlag.d.ts +2 -25
- package/dist/inspector/runtime/devFlag.js +4 -31
- package/dist/inspector/runtime/documentStylesheetOrder.d.ts +0 -2
- package/dist/inspector/runtime/editorShell.d.ts +0 -1
- package/dist/inspector/runtime/editorShell.js +0 -1
- package/dist/inspector/runtime/inspectorStorage.d.ts +11 -0
- package/dist/inspector/runtime/inspectorStorage.js +37 -0
- package/dist/inspector/runtime/ownedStylesheets.d.ts +14 -0
- package/dist/inspector/runtime/ownedStylesheets.js +66 -0
- package/dist/inspector/runtime/runtimeConfig.d.ts +14 -84
- package/dist/inspector/runtime/runtimeConfig.js +18 -50
- package/dist/inspector/runtime/runtimeIdentityClaims.d.ts +19 -0
- package/dist/inspector/runtime/runtimeIdentityClaims.js +178 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +6 -23
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +103 -52
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +1 -8
- package/dist/inspector/runtime/useRuntimeConfig.js +1 -8
- package/dist/inspector/selection/editScope.d.ts +2 -7
- package/dist/inspector/selection/editScope.js +15 -14
- package/dist/inspector/selection/editTarget.d.ts +1 -5
- package/dist/inspector/selection/hierarchy.d.ts +11 -11
- package/dist/inspector/selection/hierarchy.js +42 -24
- package/dist/inspector/selection/selectionStore.d.ts +0 -3
- package/dist/inspector/selection/selectionStore.js +5 -16
- package/dist/inspector/selection/sourceSite.d.ts +1 -5
- package/dist/inspector/selection/sourceSite.js +2 -8
- package/dist/inspector/selection/styleSelection.d.ts +1 -5
- package/dist/inspector/selection/styleSelection.js +1 -5
- package/dist/inspector/session/lifecycle.d.ts +1 -9
- package/dist/inspector/session/lifecycle.js +0 -1
- package/dist/inspector/session/sessionContext.d.ts +0 -4
- package/dist/inspector/session/sessionContext.js +0 -4
- package/dist/inspector/session/sessionFactory.d.ts +0 -9
- package/dist/inspector/session/sessionFactory.js +0 -6
- package/dist/inspector/settings/SettingsDialog.d.ts +0 -1
- package/dist/inspector/settings/SettingsDialog.js +5 -3
- package/dist/inspector/shell/AgentStatusButton.d.ts +3 -2
- package/dist/inspector/shell/AgentStatusButton.js +7 -7
- package/dist/inspector/shell/AppShell.js +6 -2
- package/dist/inspector/shell/ChangesLog.js +29 -12
- package/dist/inspector/shell/CopyPromptButton.d.ts +2 -1
- package/dist/inspector/shell/CopyPromptButton.js +62 -55
- package/dist/inspector/shell/EmptyState.js +3 -3
- package/dist/inspector/shell/InspectorEditors.d.ts +16 -0
- package/dist/inspector/shell/InspectorEditors.js +14 -0
- package/dist/inspector/shell/InspectorPanel.d.ts +12 -0
- package/dist/inspector/shell/InspectorPanel.js +8 -0
- package/dist/inspector/shell/InspectorSelection.d.ts +24 -0
- package/dist/inspector/shell/InspectorSelection.js +20 -0
- package/dist/inspector/shell/InspectorShell.d.ts +0 -3
- package/dist/inspector/shell/InspectorShell.js +44 -58
- package/dist/inspector/shell/NudgeLogoIcon.d.ts +5 -0
- package/dist/inspector/shell/NudgeLogoIcon.js +5 -0
- package/dist/inspector/shell/PeekOriginalButton.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalButton.js +3 -8
- package/dist/inspector/shell/PeekOriginalIcon.d.ts +0 -5
- package/dist/inspector/shell/PeekOriginalIcon.js +0 -5
- package/dist/inspector/shell/PromptActionButton.d.ts +21 -0
- package/dist/inspector/shell/PromptActionButton.js +14 -0
- package/dist/inspector/shell/elementName.d.ts +5 -0
- package/dist/inspector/shell/elementName.js +29 -0
- package/dist/inspector/shell/interactionStatePreview.d.ts +6 -0
- package/dist/inspector/shell/interactionStatePreview.js +107 -0
- package/dist/inspector/shell/originalPreview.d.ts +1 -5
- package/dist/inspector/shell/originalPreview.js +5 -37
- package/dist/inspector/shell/stateValue.d.ts +1 -2
- package/dist/inspector/shell/stateValue.js +4 -8
- package/dist/inspector/shell/styleState.d.ts +1 -2
- package/dist/inspector/shell/styleState.js +1 -2
- package/dist/inspector/sketch/SketchEditor.js +5 -5
- package/dist/inspector/sketch/SketchFrameOverlay.d.ts +2 -1
- package/dist/inspector/sketch/SketchFrameOverlay.js +13 -16
- package/dist/inspector/sketch/SketchOverlay.d.ts +3 -5
- package/dist/inspector/sketch/SketchOverlay.js +138 -263
- package/dist/inspector/sketch/SketchPromptPanel.d.ts +1 -2
- package/dist/inspector/sketch/SketchPromptPanel.js +8 -2
- package/dist/inspector/sketch/SketchThumbnail.d.ts +5 -0
- package/dist/inspector/sketch/SketchThumbnail.js +18 -0
- package/dist/inspector/sketch/SketchWorkspace.d.ts +1 -2
- package/dist/inspector/sketch/SketchWorkspace.js +70 -37
- package/dist/inspector/sketch/capture.d.ts +12 -3
- package/dist/inspector/sketch/capture.js +31 -14
- package/dist/inspector/sketch/copySketch.d.ts +4 -0
- package/dist/inspector/sketch/copySketch.js +43 -0
- package/dist/inspector/sketch/drawingTools.d.ts +15 -0
- package/dist/inspector/sketch/drawingTools.js +46 -0
- package/dist/inspector/sketch/frameHeading.d.ts +3 -0
- package/dist/inspector/sketch/frameHeading.js +23 -0
- package/dist/inspector/sketch/freehand.d.ts +0 -1
- package/dist/inspector/sketch/freehand.js +3 -4
- package/dist/inspector/sketch/geometry.d.ts +2 -1
- package/dist/inspector/sketch/geometry.js +15 -1
- package/dist/inspector/sketch/handoff.js +0 -1
- package/dist/inspector/sketch/history.d.ts +26 -0
- package/dist/inspector/sketch/history.js +55 -0
- package/dist/inspector/sketch/interaction.d.ts +3 -5
- package/dist/inspector/sketch/interaction.js +8 -11
- package/dist/inspector/sketch/model.d.ts +33 -6
- package/dist/inspector/sketch/model.js +101 -63
- package/dist/inspector/sketch/persistence.d.ts +14 -1
- package/dist/inspector/sketch/persistence.js +64 -8
- package/dist/inspector/sketch/raster.d.ts +3 -2
- package/dist/inspector/sketch/raster.js +40 -20
- package/dist/inspector/sketch/store.d.ts +1 -1
- package/dist/inspector/sketch/store.js +3 -4
- package/dist/inspector/sketch/videoFrames.d.ts +6 -0
- package/dist/inspector/sketch/videoFrames.js +80 -0
- package/dist/inspector/spacing/projection.d.ts +0 -8
- package/dist/inspector/spacing/projection.js +38 -20
- package/dist/inspector/styleEditors/BackgroundEditor.js +3 -2
- package/dist/inspector/styleEditors/BorderEditor.js +30 -135
- package/dist/inspector/styleEditors/BorderRadiusEditor.js +8 -3
- package/dist/inspector/styleEditors/ChildPlacement.d.ts +12 -0
- package/dist/inspector/styleEditors/ChildPlacement.js +9 -0
- package/dist/inspector/styleEditors/FlexControls.d.ts +35 -0
- package/dist/inspector/styleEditors/FlexControls.js +158 -0
- package/dist/inspector/styleEditors/GapField.d.ts +5 -2
- package/dist/inspector/styleEditors/GapField.js +3 -4
- package/dist/inspector/styleEditors/GridChildSection.d.ts +0 -5
- package/dist/inspector/styleEditors/GridChildSection.js +0 -5
- package/dist/inspector/styleEditors/GridPicker.d.ts +1 -1
- package/dist/inspector/styleEditors/GridPicker.js +2 -4
- package/dist/inspector/styleEditors/GridSection.d.ts +10 -8
- package/dist/inspector/styleEditors/GridSection.js +22 -9
- package/dist/inspector/styleEditors/GridValueField.d.ts +1 -5
- package/dist/inspector/styleEditors/GridValueField.js +2 -8
- package/dist/inspector/styleEditors/ImageBackgroundEditor.d.ts +0 -1
- package/dist/inspector/styleEditors/ImageBackgroundEditor.js +1 -2
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +0 -1
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +0 -1
- package/dist/inspector/styleEditors/LayoutComboField.js +0 -5
- package/dist/inspector/styleEditors/LayoutModeRow.d.ts +14 -0
- package/dist/inspector/styleEditors/LayoutModeRow.js +60 -0
- package/dist/inspector/styleEditors/LayoutSection.d.ts +2 -2
- package/dist/inspector/styleEditors/LayoutSection.js +30 -356
- package/dist/inspector/styleEditors/OpacityEditor.js +7 -5
- package/dist/inspector/styleEditors/PositionControls.d.ts +18 -0
- package/dist/inspector/styleEditors/PositionControls.js +16 -0
- package/dist/inspector/styleEditors/SizeSection.d.ts +18 -0
- package/dist/inspector/styleEditors/SizeSection.js +71 -0
- package/dist/inspector/styleEditors/{SpacingBox.d.ts → SpacingField.d.ts} +3 -10
- package/dist/inspector/styleEditors/{SpacingBox.js → SpacingField.js} +15 -29
- package/dist/inspector/styleEditors/Typography.js +2 -4
- package/dist/inspector/styleEditors/borderModel.d.ts +36 -0
- package/dist/inspector/styleEditors/borderModel.js +105 -0
- package/dist/inspector/styleEditors/completeCssValue.d.ts +1 -5
- package/dist/inspector/styleEditors/completeCssValue.js +3 -13
- package/dist/inspector/styleEditors/fieldValue.d.ts +20 -0
- package/dist/inspector/styleEditors/fieldValue.js +26 -0
- package/dist/inspector/styleEditors/gradientValue.d.ts +1 -1
- package/dist/inspector/styleEditors/gradientValue.js +3 -2
- package/dist/inspector/styleEditors/gridChildModel.d.ts +7 -47
- package/dist/inspector/styleEditors/gridChildModel.js +6 -37
- package/dist/inspector/styleEditors/hiddenSizeOverrides.d.ts +5 -0
- package/dist/inspector/styleEditors/hiddenSizeOverrides.js +42 -0
- package/dist/inspector/styleEditors/inlineAuthored.d.ts +1 -8
- package/dist/inspector/styleEditors/inlineAuthored.js +3 -17
- package/dist/inspector/styleEditors/layoutMode.d.ts +15 -0
- package/dist/inspector/styleEditors/layoutMode.js +33 -0
- package/dist/inspector/styleEditors/layoutPreviewState.d.ts +0 -1
- package/dist/inspector/styleEditors/layoutPreviewState.js +0 -1
- package/dist/inspector/styleEditors/layoutValue.d.ts +2 -8
- package/dist/inspector/styleEditors/layoutValue.js +6 -15
- package/dist/inspector/styleEditors/nudgeValue.d.ts +1 -13
- package/dist/inspector/styleEditors/nudgeValue.js +1 -13
- package/dist/inspector/styleEditors/rowLookup.d.ts +1 -5
- package/dist/inspector/styleEditors/rowLookup.js +1 -5
- package/dist/inspector/styleEditors/stringRecord.d.ts +1 -2
- package/dist/inspector/styleEditors/stylePresence.d.ts +0 -2
- package/dist/inspector/styleEditors/stylePresence.js +1 -4
- package/dist/inspector/styleEditors/textRelevance.d.ts +1 -1
- package/dist/inspector/styleEditors/textRelevance.js +1 -1
- package/dist/inspector/styleEditors/useFieldVisibility.js +1 -2
- package/dist/inspector/styleEditors/useLayoutContext.d.ts +13 -0
- package/dist/inspector/styleEditors/useLayoutContext.js +53 -0
- package/dist/inspector/styleEditors/valuePolicy.d.ts +1 -5
- package/dist/inspector/styleEditors/valuePolicy.js +0 -1
- package/dist/inspector/testing.d.ts +1 -4
- package/dist/inspector/testing.js +1 -4
- package/dist/inspector/tokens/TokenChip.d.ts +1 -4
- package/dist/inspector/tokens/TokenChip.js +1 -4
- package/dist/inspector/tokens/TokenField.d.ts +4 -3
- package/dist/inspector/tokens/TokenField.js +53 -32
- package/dist/inspector/tokens/TokensPanel.js +2 -1
- package/dist/inspector/tokens/catalog.d.ts +2 -10
- package/dist/inspector/tokens/catalog.js +5 -12
- package/dist/inspector/tokens/dragPointerLock.d.ts +0 -1
- package/dist/inspector/tokens/dragPointerLock.js +2 -3
- package/dist/inspector/tokens/editActions.d.ts +4 -4
- package/dist/inspector/tokens/editActions.js +11 -7
- package/dist/inspector/tokens/resolution/cascade.d.ts +1 -5
- package/dist/inspector/tokens/resolution/cascade.js +1 -5
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.d.ts +11 -0
- package/dist/inspector/tokens/resolution/containerQueryEvaluator.js +82 -0
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +4 -19
- package/dist/inspector/tokens/resolution/cssomCollector.js +186 -122
- package/dist/inspector/tokens/resolution/nestedSelectors.d.ts +2 -0
- package/dist/inspector/tokens/resolution/nestedSelectors.js +63 -0
- package/dist/inspector/tokens/resolution/ruleMatching.d.ts +4 -14
- package/dist/inspector/tokens/resolution/ruleMatching.js +136 -63
- package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +3 -14
- package/dist/inspector/tokens/resolution/selectorSemantics.js +12 -27
- package/dist/inspector/tokens/resolution.d.ts +11 -27
- package/dist/inspector/tokens/resolution.js +105 -181
- package/dist/inspector/tokens/tokenAvailability.d.ts +2 -14
- package/dist/inspector/tokens/tokenAvailability.js +6 -38
- package/dist/inspector/tokens/tokenEdits.d.ts +1 -1
- package/dist/inspector/tokens/tokenEdits.js +1 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +0 -1
- package/dist/inspector/tokens/valueSemanticsAdapter.js +18 -2
- package/dist/inspector/ui/AtRuleContext.d.ts +5 -5
- package/dist/inspector/ui/AtRuleContext.js +8 -6
- package/dist/inspector/ui/ControlSurface.d.ts +0 -4
- package/dist/inspector/ui/Disclosure.d.ts +0 -5
- package/dist/inspector/ui/Disclosure.js +0 -4
- package/dist/inspector/ui/InlineStyleWarning.d.ts +0 -1
- package/dist/inspector/ui/InlineStyleWarning.js +2 -2
- package/dist/inspector/ui/InspectorPopover.d.ts +1 -5
- package/dist/inspector/ui/InspectorPopover.js +1 -5
- package/dist/inspector/ui/InspectorStyle.d.ts +8 -0
- package/dist/inspector/ui/InspectorStyle.js +26 -0
- package/dist/inspector/ui/PopoverListbox.d.ts +2 -1
- package/dist/inspector/ui/PopoverListbox.js +3 -3
- package/dist/inspector/ui/SegmentedControl.d.ts +4 -4
- package/dist/inspector/ui/SegmentedControl.js +6 -4
- package/dist/inspector/ui/SideValuesField.d.ts +1 -6
- package/dist/inspector/ui/SideValuesField.js +2 -8
- package/dist/inspector/ui/Toast.d.ts +10 -0
- package/dist/inspector/ui/Toast.js +26 -0
- package/dist/inspector/ui/assets/canvasIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/canvasIllustration.js +21 -0
- package/dist/inspector/ui/assets/gridIllustration.d.ts +2 -0
- package/dist/inspector/ui/assets/{grid.svg → gridIllustration.js} +3 -2
- package/dist/inspector/ui/atRuleSegments.d.ts +13 -0
- package/dist/inspector/ui/atRuleSegments.js +34 -0
- package/dist/inspector/ui/classNames.d.ts +0 -1
- package/dist/inspector/ui/classNames.js +0 -1
- package/dist/inspector/ui/customCursors.d.ts +11 -0
- package/dist/inspector/ui/customCursors.js +29 -7
- package/dist/inspector/ui/styles.js +25 -25
- package/dist/inspector/workspace/commands.js +1 -2
- package/dist/inspector/workspace/controller.js +20 -2
- package/dist/inspector/workspace/handoff.d.ts +1 -5
- package/dist/inspector/workspace/handoff.js +4 -7
- package/dist/inspector/workspace/sentItems.d.ts +3 -6
- package/dist/inspector/workspace/sentItems.js +6 -24
- package/dist/inspector/workspace/timeline.d.ts +28 -11
- package/dist/inspector/workspace/timeline.js +117 -96
- package/dist/internal/agent-protocol.d.ts +53 -38
- package/dist/internal/agent-protocol.js +151 -42
- package/dist/nudge-ui.mjs +155 -92
- package/dist/project/artifacts.js +24 -21
- package/dist/project/files.d.ts +0 -1
- package/dist/project/files.js +2 -9
- package/dist/project/identity.d.ts +1 -5
- package/dist/project/identity.js +1 -5
- package/dist/project/mcpPackage.d.ts +3 -0
- package/dist/project/mcpPackage.js +55 -0
- package/dist/project/pathPolicy.d.ts +1 -6
- package/dist/project/pathPolicy.js +1 -6
- package/dist/project/tokens.d.ts +2 -12
- package/dist/project/tokens.js +4 -15
- package/dist/transport/editor.d.ts +1 -12
- package/dist/transport/editor.js +2 -13
- package/dist/transport/index.d.ts +0 -5
- package/dist/transport/index.js +0 -5
- package/dist/transport/routes.d.ts +0 -5
- package/dist/transport/routes.js +0 -5
- package/package.json +16 -5
- package/dist/inspector/canvas/measurementProjection.d.ts +0 -8
- package/dist/inspector/canvas/measurementProjection.js +0 -16
- package/dist/inspector/changes/changesLog.d.ts +0 -49
- package/dist/inspector/changes/changesLog.js +0 -255
- package/dist/inspector/changes/draftChanges.d.ts +0 -58
- package/dist/inspector/changes/draftChanges.js +0 -304
- package/dist/inspector/conformance/projection.d.ts +0 -2
- package/dist/inspector/conformance/projection.js +0 -3
- package/dist/inspector/inline-text/textChangeBoundary.d.ts +0 -6
- package/dist/inspector/inline-text/textChangeBoundary.js +0 -1
- package/dist/inspector/overlay/InspectorOverlay.d.ts +0 -5
- package/dist/inspector/overlay/InspectorOverlay.js +0 -332
- package/dist/inspector/overlay/elementSelector.d.ts +0 -1
- package/dist/inspector/overlay/elementSelector.js +0 -111
- package/dist/inspector/sketch/SketchChanges.d.ts +0 -2
- package/dist/inspector/sketch/SketchChanges.js +0 -72
- package/dist/inspector/sketch/SketchEntryButton.d.ts +0 -4
- package/dist/inspector/sketch/SketchEntryButton.js +0 -11
- package/dist/inspector/sketch/SketchLayersPanel.d.ts +0 -2
- package/dist/inspector/sketch/SketchLayersPanel.js +0 -71
- package/dist/inspector/styleEditors/InsetSection.d.ts +0 -15
- package/dist/inspector/styleEditors/InsetSection.js +0 -15
- package/dist/inspector/styleEditors/PositionInsets.d.ts +0 -15
- package/dist/inspector/styleEditors/PositionInsets.js +0 -12
- package/dist/inspector/tokens/TokenDropdown.d.ts +0 -13
- package/dist/inspector/tokens/TokenDropdown.js +0 -59
|
@@ -1,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,7 +11,22 @@ const TRANSIENT_PSEUDO_CLASSES = new Set([
|
|
|
11
11
|
"target",
|
|
12
12
|
]);
|
|
13
13
|
const INTERACTION_PSEUDO_CLASSES = new Set(INTERACTION_STATES);
|
|
14
|
+
/** Per-branch transform, so a stateful branch such as `.b:active` cannot drop a plain sibling branch. */
|
|
15
|
+
function transformSelectorBranches(selector, transformBranch) {
|
|
16
|
+
if (!selector.includes(","))
|
|
17
|
+
return transformBranch(selector);
|
|
18
|
+
const kept = splitSelectorAtTopLevel(selector, ",")
|
|
19
|
+
.map((branch) => transformBranch(branch.trim()))
|
|
20
|
+
.filter((branch) => branch !== null && branch.length > 0);
|
|
21
|
+
return kept.length > 0 ? kept.join(", ") : null;
|
|
22
|
+
}
|
|
14
23
|
function selectorForState(selector, state) {
|
|
24
|
+
return transformSelectorBranches(selector, (branch) => branchForState(branch, state));
|
|
25
|
+
}
|
|
26
|
+
function stableSelector(selector) {
|
|
27
|
+
return transformSelectorBranches(selector, (branch) => hasSelectorPseudoClass(branch, TRANSIENT_PSEUDO_CLASSES) ? null : branch);
|
|
28
|
+
}
|
|
29
|
+
function branchForState(selector, state) {
|
|
15
30
|
const pseudoClasses = selectorPseudoClasses(selector)
|
|
16
31
|
.filter(({ name }) => INTERACTION_PSEUDO_CLASSES.has(name));
|
|
17
32
|
const states = new Set(pseudoClasses.map(({ name }) => name));
|
|
@@ -19,9 +34,7 @@ function selectorForState(selector, state) {
|
|
|
19
34
|
return states.size === 0 ? selector : null;
|
|
20
35
|
if (!states.has(state))
|
|
21
36
|
return states.size === 0 ? selector : null;
|
|
22
|
-
// CSSOM cannot
|
|
23
|
-
// Removing interaction pseudo-classes gives the authored rule a stable
|
|
24
|
-
// 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.
|
|
25
38
|
let transformed = selector;
|
|
26
39
|
for (let index = pseudoClasses.length - 1; index >= 0; index--) {
|
|
27
40
|
const pseudoClass = pseudoClasses[index];
|
|
@@ -30,12 +43,28 @@ function selectorForState(selector, state) {
|
|
|
30
43
|
return transformed;
|
|
31
44
|
}
|
|
32
45
|
function specificityForBranch(rule, branch) {
|
|
33
|
-
//
|
|
34
|
-
// matched branch is the whole selector. Multi-branch selectors need the
|
|
35
|
-
// 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.
|
|
36
47
|
return rule.selectorText.includes(",") ? computeSpecificity(branch) : rule.specificity;
|
|
37
48
|
}
|
|
38
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
|
+
}
|
|
39
68
|
function rulesForTransform(rules, transform) {
|
|
40
69
|
let byTransform = transformedRulesMemo.get(rules);
|
|
41
70
|
if (!byTransform) {
|
|
@@ -49,20 +78,90 @@ function rulesForTransform(rules, transform) {
|
|
|
49
78
|
if (transform === "live") {
|
|
50
79
|
transformed = rules.map((rule) => ({ rule, selectorText: rule.selectorText }));
|
|
51
80
|
}
|
|
52
|
-
else if (transform === "stable") {
|
|
53
|
-
transformed = rules
|
|
54
|
-
.filter((rule) => !hasSelectorPseudoClass(rule.selectorText, TRANSIENT_PSEUDO_CLASSES))
|
|
55
|
-
.map((rule) => ({ rule, selectorText: rule.selectorText }));
|
|
56
|
-
}
|
|
57
81
|
else {
|
|
58
82
|
transformed = rules.flatMap((rule) => {
|
|
59
|
-
const selectorText =
|
|
83
|
+
const selectorText = transformSelector(rule.selectorText, transform);
|
|
60
84
|
return selectorText ? [{ rule, selectorText }] : [];
|
|
61
85
|
});
|
|
62
86
|
}
|
|
63
87
|
byTransform.set(transform, transformed);
|
|
64
88
|
return transformed;
|
|
65
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
|
+
}
|
|
66
165
|
const sourceSiteMatchBucketsMemo = new WeakMap();
|
|
67
166
|
function sourceSiteMatchBuckets(rules, transform) {
|
|
68
167
|
let byTransform = sourceSiteMatchBucketsMemo.get(rules);
|
|
@@ -86,24 +185,15 @@ const SOURCE_SITE_CACHE_MAX = 4096;
|
|
|
86
185
|
let sourceSiteMatchCaches = new WeakMap();
|
|
87
186
|
let sourceSiteMatchCacheEntries = 0;
|
|
88
187
|
const concreteElementMatchCaches = new WeakMap();
|
|
89
|
-
// The all-rules sweep shares the active sweep's revision cache for stable
|
|
90
|
-
// selectors. Element-sensitive selectors stay fresh because browser state can
|
|
91
|
-
// change without a mutation observed by the registry.
|
|
92
188
|
const allMatchesMemo = new WeakMap();
|
|
93
|
-
/** Test-only cache reset. */
|
|
94
189
|
export function resetSourceSiteMatchCache() {
|
|
95
190
|
sourceSiteMatchCaches = new WeakMap();
|
|
96
191
|
sourceSiteMatchCacheEntries = 0;
|
|
97
192
|
}
|
|
98
|
-
/** Test-only cache size. */
|
|
99
193
|
export function sourceSiteMatchCacheSize() {
|
|
100
194
|
return sourceSiteMatchCacheEntries;
|
|
101
195
|
}
|
|
102
|
-
/**
|
|
103
|
-
* Captures selector-relevant state without serializing the whole document.
|
|
104
|
-
* Element and ancestor attributes cover the common source-site selectors while
|
|
105
|
-
* child/sibling-sensitive selectors are handled conservatively below.
|
|
106
|
-
*/
|
|
196
|
+
/** Selector-relevant element and ancestor attributes, without serializing the whole document. */
|
|
107
197
|
function sourceSiteContextKey(el) {
|
|
108
198
|
const lineage = [];
|
|
109
199
|
let current = el;
|
|
@@ -118,12 +208,7 @@ function sourceSiteContextKey(el) {
|
|
|
118
208
|
}
|
|
119
209
|
return lineage.join("\u0001");
|
|
120
210
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Source-site identity key for the matched-rule cache. The element's class is
|
|
123
|
-
* part of the key because sibling instances of a source site can carry
|
|
124
|
-
* different classes (for example rows in a large list), which changes which
|
|
125
|
-
* rules match even though their `data-cid`/`data-src` are identical.
|
|
126
|
-
*/
|
|
211
|
+
/** `data-cid`/`data-src` are identical across sibling instances, so the class is part of the key. */
|
|
127
212
|
function sourceSiteKey(el, transform) {
|
|
128
213
|
const cid = el.getAttribute("data-cid") ?? "";
|
|
129
214
|
const src = el.getAttribute("data-src") ?? "";
|
|
@@ -139,14 +224,10 @@ export function matchRuleForElement(el, entry) {
|
|
|
139
224
|
rule: entry.rule,
|
|
140
225
|
selectorText: entry.selectorText,
|
|
141
226
|
branch,
|
|
142
|
-
specificity: specificityForBranch(
|
|
227
|
+
specificity: specificityForBranch(entry.rule, branch),
|
|
143
228
|
};
|
|
144
229
|
}
|
|
145
|
-
/**
|
|
146
|
-
* Captures the current match outcome for selectors whose truth can change
|
|
147
|
-
* without a document revision. This keeps the expensive resolved-row cache
|
|
148
|
-
* usable while invalidating it when states such as `checked` actually change.
|
|
149
|
-
*/
|
|
230
|
+
/** Match key for selectors whose truth can change without a document revision. */
|
|
150
231
|
function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElement) {
|
|
151
232
|
const entries = sourceSiteMatchBuckets(rules, transform).elementSensitive;
|
|
152
233
|
if (entries.length === 0)
|
|
@@ -156,7 +237,7 @@ function elementSensitiveMatchKey(el, rules, transform, sensitiveMatchesByElemen
|
|
|
156
237
|
let depth = 0;
|
|
157
238
|
while (current) {
|
|
158
239
|
const elementMatches = [];
|
|
159
|
-
for (const entry of entries) {
|
|
240
|
+
for (const entry of candidateEntries(entries, current)) {
|
|
160
241
|
const match = matchRuleForElement(current, entry);
|
|
161
242
|
if (!match)
|
|
162
243
|
continue;
|
|
@@ -173,24 +254,20 @@ function sensitiveMatchesForElement(el, buckets, matchesByElement) {
|
|
|
173
254
|
const cached = matchesByElement.get(el);
|
|
174
255
|
if (cached)
|
|
175
256
|
return cached;
|
|
176
|
-
const matched = buckets.elementSensitive.flatMap((entry) => {
|
|
257
|
+
const matched = candidateEntries(buckets.elementSensitive, el).flatMap((entry) => {
|
|
177
258
|
const match = matchRuleForElement(el, entry);
|
|
178
259
|
return match ? [match] : [];
|
|
179
260
|
});
|
|
180
261
|
matchesByElement.set(el, matched);
|
|
181
262
|
return matched;
|
|
182
263
|
}
|
|
183
|
-
/**
|
|
184
|
-
* Matches transformed rules against one element. Stable source-site identities
|
|
185
|
-
* reuse revision-keyed matches; unstable identities and relationship-sensitive
|
|
186
|
-
* selectors are matched on each call.
|
|
187
|
-
*/
|
|
264
|
+
/** Stable source-site identities reuse revision-keyed matches; unstable identities and relationship-sensitive selectors match per call. */
|
|
188
265
|
function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
|
|
189
266
|
const buckets = sourceSiteMatchBuckets(rules, transform);
|
|
190
267
|
const { cacheable, elementSensitive } = buckets;
|
|
191
268
|
const collect = (entries) => {
|
|
192
269
|
const matched = [];
|
|
193
|
-
for (const entry of entries) {
|
|
270
|
+
for (const entry of candidateEntries(entries, el)) {
|
|
194
271
|
if (entry.rule.active === false)
|
|
195
272
|
continue;
|
|
196
273
|
const match = matchRuleForElement(el, entry);
|
|
@@ -259,29 +336,24 @@ function getCachedElementMatches(el, rules, transform, sensitiveMatchesByElement
|
|
|
259
336
|
matched: cachedMatches,
|
|
260
337
|
});
|
|
261
338
|
}
|
|
262
|
-
// Browser state
|
|
263
|
-
// 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.
|
|
264
340
|
const elementMatches = elementSensitive.length > 0
|
|
265
341
|
? sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement).filter((match) => match.rule.active !== false)
|
|
266
342
|
: [];
|
|
267
343
|
return elementMatches.length === 0 ? cachedMatches : [...cachedMatches, ...elementMatches];
|
|
268
344
|
}
|
|
269
|
-
/**
|
|
270
|
-
* Matches selectors without applying conditional wrappers. The result retains
|
|
271
|
-
* inactive media alternatives for attribution, while transient selectors and
|
|
272
|
-
* the `live` transform retain their freshness requirements.
|
|
273
|
-
*/
|
|
345
|
+
/** Keeps inactive media alternatives for attribution; transient and `live` matches keep their freshness requirements. */
|
|
274
346
|
function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement = new Map()) {
|
|
275
347
|
const buckets = sourceSiteMatchBuckets(rules, transform);
|
|
276
348
|
if (transform === "live") {
|
|
277
|
-
const cacheableMatches = buckets.cacheable.flatMap((entry) => {
|
|
349
|
+
const cacheableMatches = candidateEntries(buckets.cacheable, el).flatMap((entry) => {
|
|
278
350
|
const match = matchRuleForElement(el, entry);
|
|
279
351
|
return match ? [match] : [];
|
|
280
352
|
});
|
|
281
353
|
return [...cacheableMatches, ...sensitiveMatchesForElement(el, buckets, sensitiveMatchesByElement)];
|
|
282
354
|
}
|
|
283
355
|
const { cacheable, elementSensitive } = buckets;
|
|
284
|
-
const collect = (entries) => entries.flatMap((entry) => {
|
|
356
|
+
const collect = (entries) => candidateEntries(entries, el).flatMap((entry) => {
|
|
285
357
|
const match = matchRuleForElement(el, entry);
|
|
286
358
|
return match ? [match] : [];
|
|
287
359
|
});
|
|
@@ -314,13 +386,9 @@ function getAllElementMatches(el, rules, transform, sensitiveMatchesByElement =
|
|
|
314
386
|
: [];
|
|
315
387
|
return sensitiveMatches.length === 0 ? cachedMatches : [...cachedMatches, ...sensitiveMatches];
|
|
316
388
|
}
|
|
317
|
-
// Branch splits repeat across sweeps, so memoize them
|
|
318
|
-
|
|
319
|
-
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;
|
|
320
391
|
const selectorSplitMemo = new Map();
|
|
321
|
-
// Branch matches are reusable for state-independent selectors. Transient
|
|
322
|
-
// selectors stay uncached because their state is not represented by document
|
|
323
|
-
// revisions.
|
|
324
392
|
const ELEMENT_BRANCH_CACHE_MAX = 16384;
|
|
325
393
|
const elementBranchMemo = new WeakMap();
|
|
326
394
|
function isBranchMemoizable(selectorText) {
|
|
@@ -375,7 +443,6 @@ function matchingSelectorBranch(el, selectorText) {
|
|
|
375
443
|
}
|
|
376
444
|
return branch;
|
|
377
445
|
}
|
|
378
|
-
/** Creates a matcher for one CSSOM snapshot. */
|
|
379
446
|
export function createRuleMatcher(rules, transform) {
|
|
380
447
|
const sensitiveMatches = new Map();
|
|
381
448
|
return {
|
|
@@ -386,10 +453,7 @@ export function createRuleMatcher(rules, transform) {
|
|
|
386
453
|
}),
|
|
387
454
|
};
|
|
388
455
|
}
|
|
389
|
-
/**
|
|
390
|
-
* Interaction states whose pseudo-class appears in the snapshot. Skipping
|
|
391
|
-
* absent states avoids a full match sweep after each stylesheet revision.
|
|
392
|
-
*/
|
|
456
|
+
/** States whose pseudo-class appears in the snapshot, so absent states skip a full match sweep. */
|
|
393
457
|
const statesWithPseudoInSnapshot = new WeakMap();
|
|
394
458
|
function statesWithPseudoInSelectors(rules) {
|
|
395
459
|
let present = statesWithPseudoInSnapshot.get(rules);
|
|
@@ -406,6 +470,15 @@ function statesWithPseudoInSelectors(rules) {
|
|
|
406
470
|
}
|
|
407
471
|
return present;
|
|
408
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
|
+
}
|
|
409
482
|
export function getAvailableInteractionStates(el) {
|
|
410
483
|
const doc = el.ownerDocument ?? document;
|
|
411
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
|
}
|
|
@@ -1,33 +1,17 @@
|
|
|
1
1
|
import type { InteractionState } from "../shell/styleState.js";
|
|
2
|
+
import { type ContainerQueryEvaluator } from "./resolution/containerQueryEvaluator.js";
|
|
2
3
|
import type { MatchedRule, ResolvedProperty, TokenTable } from "../../css/model/index.js";
|
|
3
4
|
export { getAvailableInteractionStates, resetSourceSiteMatchCache, sourceSiteMatchCacheSize } from "./resolution/ruleMatching.js";
|
|
4
|
-
export { buildTokenTable,
|
|
5
|
+
export { buildTokenTable, getAvailableTokenEntriesForElement, getAvailableTokenCatalog } from "./tokenAvailability.js";
|
|
5
6
|
export { invalidateStyleResolutionCache } from "./resolution/cssomCollector.js";
|
|
6
|
-
/**
|
|
7
|
-
* Builds (or reuses) the document's CSSOM rule snapshot ahead of a resolution
|
|
8
|
-
* sweep. Idempotent: the walk runs once per stylesheet revision and is a cache
|
|
9
|
-
* hit afterwards, so a scheduler can warm it in its own frame to keep the
|
|
10
|
-
* subsequent resolution sweep's blocking time small.
|
|
11
|
-
*/
|
|
7
|
+
/** Idempotent per stylesheet revision; warms the snapshot ahead of a sweep so its blocking time stays small. */
|
|
12
8
|
export declare function prewarmCssomRuleSnapshot(doc: Document): void;
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* public value-semantics Interface through `resolveDeclaration`.
|
|
17
|
-
* It is intentionally absent from the package exports.
|
|
18
|
-
*/
|
|
9
|
+
/** Prepares both cascades together so a selection refresh inserts one probe sheet. */
|
|
10
|
+
export declare function prefetchContainerQueries(elements: readonly HTMLElement[], state: InteractionState, evaluator: ContainerQueryEvaluator): void;
|
|
11
|
+
/** Test-only cascade fixture seam, intentionally absent from the package exports. */
|
|
19
12
|
export declare function resolveRuleFixture(el: HTMLElement, rules: MatchedRule[], tokenTable: TokenTable): ResolvedProperty[];
|
|
20
|
-
export declare function getResolvedProperties(el: HTMLElement, tokenTable: TokenTable): ResolvedProperty[];
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* computed value in the field layer.
|
|
26
|
-
*/
|
|
27
|
-
export declare function getResolvedPropertiesForState(el: HTMLElement, tokenTable: TokenTable, state: InteractionState): ResolvedProperty[];
|
|
28
|
-
/**
|
|
29
|
-
* Resolves the cascade with transient interaction selectors removed. Used when
|
|
30
|
-
* an editor must stay linked to the stable token beneath a live :hover/:focus
|
|
31
|
-
* paint. Memoized per (element, revisions, tokenTable).
|
|
32
|
-
*/
|
|
33
|
-
export declare function getResolvedPropertiesStable(el: HTMLElement, tokenTable: TokenTable): ResolvedProperty[];
|
|
13
|
+
export declare function getResolvedProperties(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|
|
14
|
+
/** Authored cascade for a chosen interaction state, independent of the pointer's live paint. */
|
|
15
|
+
export declare function getResolvedPropertiesForState(el: HTMLElement, tokenTable: TokenTable, state: InteractionState, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|
|
16
|
+
/** Cascade with transient interaction selectors removed, so an editor stays linked to the token beneath a live :hover/:focus paint. */
|
|
17
|
+
export declare function getResolvedPropertiesStable(el: HTMLElement, tokenTable: TokenTable, evaluator?: ContainerQueryEvaluator): ResolvedProperty[];
|