nudge-ui 0.2.0
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/README.md +66 -0
- package/bin/nudge-ui.mjs +7 -0
- package/dist/LICENSE +21 -0
- package/dist/client.mjs +261 -0
- package/dist/compiler/ast.d.ts +18 -0
- package/dist/compiler/ast.js +75 -0
- package/dist/compiler/componentContractTypes.d.ts +19 -0
- package/dist/compiler/componentContractTypes.js +1 -0
- package/dist/compiler/componentContracts.d.ts +2 -0
- package/dist/compiler/componentContracts.js +260 -0
- package/dist/compiler/componentInstrumentation.d.ts +32 -0
- package/dist/compiler/componentInstrumentation.js +140 -0
- package/dist/compiler/componentPolicyResolution.d.ts +71 -0
- package/dist/compiler/componentPolicyResolution.js +388 -0
- package/dist/compiler/index.d.ts +9 -0
- package/dist/compiler/index.js +9 -0
- package/dist/compiler/packageComponentContracts.d.ts +32 -0
- package/dist/compiler/packageComponentContracts.js +308 -0
- package/dist/compiler/reactComponentProtocols.d.ts +145 -0
- package/dist/compiler/reactComponentProtocols.js +47 -0
- package/dist/compiler/reactIdentity.d.ts +15 -0
- package/dist/compiler/reactIdentity.js +339 -0
- package/dist/compiler/sourcePaths.d.ts +12 -0
- package/dist/compiler/sourcePaths.js +27 -0
- package/dist/css/dialects/index.d.ts +62 -0
- package/dist/css/dialects/index.js +103 -0
- package/dist/css/dialects/tailwind.d.ts +46 -0
- package/dist/css/dialects/tailwind.js +119 -0
- package/dist/css/dialects/vanillaExtract.d.ts +20 -0
- package/dist/css/dialects/vanillaExtract.js +32 -0
- package/dist/css/index.d.ts +10 -0
- package/dist/css/index.js +10 -0
- package/dist/css/model/index.d.ts +190 -0
- package/dist/css/model/index.js +10 -0
- package/dist/css/token-inventory/index.d.ts +26 -0
- package/dist/css/token-inventory/index.js +24 -0
- package/dist/css/token-inventory/inventory.d.ts +8 -0
- package/dist/css/token-inventory/inventory.js +421 -0
- package/dist/css/token-inventory/parseStylesheet.d.ts +16 -0
- package/dist/css/token-inventory/parseStylesheet.js +155 -0
- package/dist/css/token-inventory/policy.d.ts +47 -0
- package/dist/css/token-inventory/policy.js +50 -0
- package/dist/css/token-inventory/types.d.ts +97 -0
- package/dist/css/token-inventory/types.js +1 -0
- package/dist/css/value-semantics/borderSemantics.d.ts +28 -0
- package/dist/css/value-semantics/borderSemantics.js +91 -0
- package/dist/css/value-semantics/boxSemantics.d.ts +37 -0
- package/dist/css/value-semantics/boxSemantics.js +71 -0
- package/dist/css/value-semantics/colorSemantics.d.ts +99 -0
- package/dist/css/value-semantics/colorSemantics.js +526 -0
- package/dist/css/value-semantics/cssSyntax.d.ts +19 -0
- package/dist/css/value-semantics/cssSyntax.js +111 -0
- package/dist/css/value-semantics/fontSemantics.d.ts +35 -0
- package/dist/css/value-semantics/fontSemantics.js +131 -0
- package/dist/css/value-semantics/index.d.ts +20 -0
- package/dist/css/value-semantics/index.js +15 -0
- package/dist/css/value-semantics/propertyPolicy.d.ts +118 -0
- package/dist/css/value-semantics/propertyPolicy.js +356 -0
- package/dist/css/value-semantics/stringMaps.d.ts +2 -0
- package/dist/css/value-semantics/stringMaps.js +1 -0
- package/dist/css/value-semantics/structuredValues.d.ts +64 -0
- package/dist/css/value-semantics/structuredValues.js +250 -0
- package/dist/css/value-semantics/tokenInterpretation.d.ts +90 -0
- package/dist/css/value-semantics/tokenInterpretation.js +193 -0
- package/dist/css/virtual-design-tokens.d.ts +17 -0
- package/dist/hosts/astro/astroRuntimeConfig.d.ts +12 -0
- package/dist/hosts/astro/astroRuntimeConfig.js +26 -0
- package/dist/hosts/astro/clientAsset.d.ts +12 -0
- package/dist/hosts/astro/clientAsset.js +51 -0
- package/dist/hosts/astro/clientTransport.d.ts +3 -0
- package/dist/hosts/astro/clientTransport.js +57 -0
- package/dist/hosts/astro/index.d.ts +3 -0
- package/dist/hosts/astro/index.js +2 -0
- package/dist/hosts/astro/integration.d.ts +35 -0
- package/dist/hosts/astro/integration.js +96 -0
- package/dist/hosts/astro/middleware.d.ts +13 -0
- package/dist/hosts/astro/middleware.js +22 -0
- package/dist/hosts/astro/projectContext.d.ts +11 -0
- package/dist/hosts/astro/projectContext.js +34 -0
- package/dist/hosts/astro/responseInstrumentation.d.ts +41 -0
- package/dist/hosts/astro/responseInstrumentation.js +80 -0
- package/dist/hosts/next/index.d.ts +4 -0
- package/dist/hosts/next/index.js +7 -0
- package/dist/hosts/next/loader.d.ts +66 -0
- package/dist/hosts/next/loader.js +346 -0
- package/dist/hosts/next/loaders/identity-loader.cjs +228257 -0
- package/dist/hosts/next/loaders/loader-plugin.cjs +228257 -0
- package/dist/hosts/next/manifest.d.ts +38 -0
- package/dist/hosts/next/manifest.js +30 -0
- package/dist/hosts/next/mount.d.ts +12 -0
- package/dist/hosts/next/mount.js +23 -0
- package/dist/hosts/next/repositoryScope.d.ts +20 -0
- package/dist/hosts/next/repositoryScope.js +33 -0
- package/dist/hosts/next/sidecar.d.ts +27 -0
- package/dist/hosts/next/sidecar.js +526 -0
- package/dist/hosts/next/wrapper.d.ts +67 -0
- package/dist/hosts/next/wrapper.js +310 -0
- package/dist/hosts/static/cli.d.ts +12 -0
- package/dist/hosts/static/cli.js +77 -0
- package/dist/hosts/static/html/bootstrap.d.ts +27 -0
- package/dist/hosts/static/html/bootstrap.js +93 -0
- package/dist/hosts/static/index.d.ts +4 -0
- package/dist/hosts/static/index.js +4 -0
- package/dist/hosts/static/manifest.d.ts +18 -0
- package/dist/hosts/static/manifest.js +51 -0
- package/dist/hosts/static/server.d.ts +72 -0
- package/dist/hosts/static/server.js +554 -0
- package/dist/hosts/vite/index.d.ts +20 -0
- package/dist/hosts/vite/index.js +48 -0
- package/dist/hosts/vite/react.d.ts +67 -0
- package/dist/hosts/vite/react.js +231 -0
- package/dist/hosts/vite/tokens/activeStylesheets.d.ts +28 -0
- package/dist/hosts/vite/tokens/activeStylesheets.js +70 -0
- package/dist/hosts/vite/tokens/fileMap.d.ts +2 -0
- package/dist/hosts/vite/tokens/fileMap.js +1 -0
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.d.ts +46 -0
- package/dist/hosts/vite/tokens/viteStylesheetArtifacts.js +104 -0
- package/dist/hosts/vite/virtual/design-tokens.d.ts +9 -0
- package/dist/hosts/vite/virtual/design-tokens.js +7 -0
- package/dist/hosts/vite/virtual-design-tokens.d.ts +1 -0
- package/dist/hosts/vite/vite.d.ts +62 -0
- package/dist/hosts/vite/vite.js +854 -0
- package/dist/html/dom.d.ts +13 -0
- package/dist/html/dom.js +46 -0
- package/dist/html/identity.d.ts +40 -0
- package/dist/html/identity.js +196 -0
- package/dist/html/insertions.d.ts +26 -0
- package/dist/html/insertions.js +59 -0
- package/dist/inspector/agent/McpConnectionDialog.d.ts +26 -0
- package/dist/inspector/agent/McpConnectionDialog.js +135 -0
- package/dist/inspector/agent/client.d.ts +98 -0
- package/dist/inspector/agent/client.js +728 -0
- package/dist/inspector/agent/connectionStatus.d.ts +13 -0
- package/dist/inspector/agent/connectionStatus.js +35 -0
- package/dist/inspector/agent/httpTransport.d.ts +21 -0
- package/dist/inspector/agent/httpTransport.js +347 -0
- package/dist/inspector/agent/protocol.d.ts +95 -0
- package/dist/inspector/agent/protocol.js +9 -0
- package/dist/inspector/agent/verification.d.ts +39 -0
- package/dist/inspector/agent/verification.js +207 -0
- package/dist/inspector/canvas/CanvasCard.d.ts +10 -0
- package/dist/inspector/canvas/CanvasCard.js +275 -0
- package/dist/inspector/canvas/CanvasElementOverlay.d.ts +2 -0
- package/dist/inspector/canvas/CanvasElementOverlay.js +301 -0
- package/dist/inspector/canvas/CanvasWorkspace.d.ts +2 -0
- package/dist/inspector/canvas/CanvasWorkspace.js +301 -0
- package/dist/inspector/canvas/LockedWorkspaceNotice.d.ts +6 -0
- package/dist/inspector/canvas/LockedWorkspaceNotice.js +17 -0
- package/dist/inspector/canvas/StaleChangeIndicator.d.ts +7 -0
- package/dist/inspector/canvas/StaleChangeIndicator.js +43 -0
- package/dist/inspector/canvas/agentPresentation.d.ts +87 -0
- package/dist/inspector/canvas/agentPresentation.js +421 -0
- package/dist/inspector/canvas/canvasGestures.d.ts +12 -0
- package/dist/inspector/canvas/canvasGestures.js +21 -0
- package/dist/inspector/canvas/canvasStore.d.ts +108 -0
- package/dist/inspector/canvas/canvasStore.js +448 -0
- package/dist/inspector/canvas/frameProtocol.d.ts +231 -0
- package/dist/inspector/canvas/frameProtocol.js +165 -0
- package/dist/inspector/canvas/linkEligibility.d.ts +8 -0
- package/dist/inspector/canvas/linkEligibility.js +68 -0
- package/dist/inspector/canvas/measurementProjection.d.ts +8 -0
- package/dist/inspector/canvas/measurementProjection.js +16 -0
- package/dist/inspector/canvas/normalizeUrl.d.ts +7 -0
- package/dist/inspector/canvas/normalizeUrl.js +27 -0
- package/dist/inspector/canvas/projection.d.ts +41 -0
- package/dist/inspector/canvas/projection.js +232 -0
- package/dist/inspector/canvas/rendererBootstrap.d.ts +4 -0
- package/dist/inspector/canvas/rendererBootstrap.js +410 -0
- package/dist/inspector/canvas/rendererCidIndex.d.ts +11 -0
- package/dist/inspector/canvas/rendererCidIndex.js +21 -0
- package/dist/inspector/canvas/rendererElementSelector.d.ts +2 -0
- package/dist/inspector/canvas/rendererElementSelector.js +378 -0
- package/dist/inspector/canvas/rendererSelectionProxy.d.ts +2 -0
- package/dist/inspector/canvas/rendererSelectionProxy.js +61 -0
- package/dist/inspector/canvas/rendererStylesheet.d.ts +16 -0
- package/dist/inspector/canvas/rendererStylesheet.js +221 -0
- package/dist/inspector/canvas/resizeHandleScale.d.ts +13 -0
- package/dist/inspector/canvas/resizeHandleScale.js +20 -0
- package/dist/inspector/canvas/roleDetection.d.ts +5 -0
- package/dist/inspector/canvas/roleDetection.js +21 -0
- package/dist/inspector/canvas/sessionStore.d.ts +71 -0
- package/dist/inspector/canvas/sessionStore.js +453 -0
- package/dist/inspector/canvas/staleChangeDetector.d.ts +11 -0
- package/dist/inspector/canvas/staleChangeDetector.js +217 -0
- package/dist/inspector/canvas/toolbarScale.d.ts +7 -0
- package/dist/inspector/canvas/toolbarScale.js +11 -0
- package/dist/inspector/canvas/workspaceLease.d.ts +26 -0
- package/dist/inspector/canvas/workspaceLease.js +214 -0
- package/dist/inspector/changes/changesLog.d.ts +46 -0
- package/dist/inspector/changes/changesLog.js +209 -0
- package/dist/inspector/changes/codecs.d.ts +98 -0
- package/dist/inspector/changes/codecs.js +389 -0
- package/dist/inspector/changes/editModel.d.ts +74 -0
- package/dist/inspector/changes/editModel.js +120 -0
- package/dist/inspector/changes/managedStyleProjection.d.ts +6 -0
- package/dist/inspector/changes/managedStyleProjection.js +109 -0
- package/dist/inspector/changes/model.d.ts +13 -0
- package/dist/inspector/changes/model.js +163 -0
- package/dist/inspector/changes/presentation.d.ts +14 -0
- package/dist/inspector/changes/presentation.js +81 -0
- package/dist/inspector/changes/previewDiagnostics.d.ts +39 -0
- package/dist/inspector/changes/previewDiagnostics.js +172 -0
- package/dist/inspector/changes/structuralTypes.d.ts +35 -0
- package/dist/inspector/changes/structuralTypes.js +1 -0
- package/dist/inspector/changes/types.d.ts +76 -0
- package/dist/inspector/changes/types.js +16 -0
- package/dist/inspector/changes/workspaceChanges.d.ts +43 -0
- package/dist/inspector/changes/workspaceChanges.js +239 -0
- package/dist/inspector/clientManifest.d.ts +24 -0
- package/dist/inspector/clientManifest.js +69 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.d.ts +5 -0
- package/dist/inspector/componentSemantics/ComponentPropsSection.js +44 -0
- package/dist/inspector/componentSemantics/adapterRegistry.d.ts +11 -0
- package/dist/inspector/componentSemantics/adapterRegistry.js +75 -0
- package/dist/inspector/componentSemantics/boundaries.d.ts +2 -0
- package/dist/inspector/componentSemantics/boundaries.js +10 -0
- package/dist/inspector/componentSemantics/changeAction.d.ts +3 -0
- package/dist/inspector/componentSemantics/changeAction.js +6 -0
- package/dist/inspector/componentSemantics/changeModel.d.ts +8 -0
- package/dist/inspector/componentSemantics/changeModel.js +60 -0
- package/dist/inspector/componentSemantics/index.d.ts +4 -0
- package/dist/inspector/componentSemantics/index.js +2 -0
- package/dist/inspector/componentSemantics/reactRuntime.d.ts +10 -0
- package/dist/inspector/componentSemantics/reactRuntime.js +186 -0
- package/dist/inspector/componentSemantics/runtimeBridge.d.ts +25 -0
- package/dist/inspector/componentSemantics/runtimeBridge.js +161 -0
- package/dist/inspector/componentSemantics/runtimeTypes.d.ts +2 -0
- package/dist/inspector/componentSemantics/runtimeTypes.js +1 -0
- package/dist/inspector/componentSemantics/textBinding.d.ts +69 -0
- package/dist/inspector/componentSemantics/textBinding.js +514 -0
- package/dist/inspector/componentSemantics/types.d.ts +96 -0
- package/dist/inspector/componentSemantics/types.js +5 -0
- package/dist/inspector/conformance/borderCases.d.ts +7 -0
- package/dist/inspector/conformance/borderCases.js +428 -0
- package/dist/inspector/conformance/colorCases.d.ts +8 -0
- package/dist/inspector/conformance/colorCases.js +470 -0
- package/dist/inspector/conformance/fixture.d.ts +68 -0
- package/dist/inspector/conformance/fixture.js +153 -0
- package/dist/inspector/conformance/projection.d.ts +2 -0
- package/dist/inspector/conformance/projection.js +3 -0
- package/dist/inspector/conformance/spacingCases.d.ts +6 -0
- package/dist/inspector/conformance/spacingCases.js +417 -0
- package/dist/inspector/conformance/typographyCases.d.ts +7 -0
- package/dist/inspector/conformance/typographyCases.js +174 -0
- package/dist/inspector/editScope.d.ts +4 -0
- package/dist/inspector/editScope.js +5 -0
- package/dist/inspector/index.d.ts +20 -0
- package/dist/inspector/index.js +236 -0
- package/dist/inspector/inline-text/inlineTextEditor.d.ts +74 -0
- package/dist/inspector/inline-text/inlineTextEditor.js +1207 -0
- package/dist/inspector/inline-text/inlineTextLifecycle.d.ts +2 -0
- package/dist/inspector/inline-text/inlineTextLifecycle.js +17 -0
- package/dist/inspector/inline-text/textChangeBoundary.d.ts +6 -0
- package/dist/inspector/inline-text/textChangeBoundary.js +1 -0
- package/dist/inspector/inspection/bridge.d.ts +72 -0
- package/dist/inspector/inspection/bridge.js +134 -0
- package/dist/inspector/inspection/browserCssInspection.d.ts +74 -0
- package/dist/inspector/inspection/browserCssInspection.js +317 -0
- package/dist/inspector/inspection/browserCssInspectionRegistry.d.ts +12 -0
- package/dist/inspector/inspection/browserCssInspectionRegistry.js +66 -0
- package/dist/inspector/inspection/selectionProperty.d.ts +32 -0
- package/dist/inspector/inspection/selectionProperty.js +33 -0
- package/dist/inspector/inspection/useBrowserCssInspection.d.ts +20 -0
- package/dist/inspector/inspection/useBrowserCssInspection.js +159 -0
- package/dist/inspector/overlay/DropGuideOverlay.d.ts +17 -0
- package/dist/inspector/overlay/DropGuideOverlay.js +17 -0
- package/dist/inspector/overlay/InspectorOverlay.d.ts +5 -0
- package/dist/inspector/overlay/InspectorOverlay.js +328 -0
- package/dist/inspector/overlay/MeasurementGuideOverlay.d.ts +19 -0
- package/dist/inspector/overlay/MeasurementGuideOverlay.js +40 -0
- package/dist/inspector/overlay/clickPolicy.d.ts +7 -0
- package/dist/inspector/overlay/clickPolicy.js +13 -0
- package/dist/inspector/overlay/dropGuide.d.ts +22 -0
- package/dist/inspector/overlay/dropGuide.js +48 -0
- package/dist/inspector/overlay/elementSelector.d.ts +1 -0
- package/dist/inspector/overlay/elementSelector.js +100 -0
- package/dist/inspector/overlay/frameThrottle.d.ts +10 -0
- package/dist/inspector/overlay/frameThrottle.js +38 -0
- package/dist/inspector/overlay/interactionStyles.d.ts +3 -0
- package/dist/inspector/overlay/interactionStyles.js +70 -0
- package/dist/inspector/overlay/measurementGeometry.d.ts +25 -0
- package/dist/inspector/overlay/measurementGeometry.js +104 -0
- package/dist/inspector/overlay/overlayGeometry.d.ts +40 -0
- package/dist/inspector/overlay/overlayGeometry.js +59 -0
- package/dist/inspector/overlay/selectedGeometry.d.ts +7 -0
- package/dist/inspector/overlay/selectedGeometry.js +51 -0
- package/dist/inspector/overlay/structuralGestures.d.ts +28 -0
- package/dist/inspector/overlay/structuralGestures.js +180 -0
- package/dist/inspector/projection/cssEscapes.d.ts +3 -0
- package/dist/inspector/projection/cssEscapes.js +20 -0
- package/dist/inspector/projection/managedStylesheet.d.ts +33 -0
- package/dist/inspector/projection/managedStylesheet.js +240 -0
- package/dist/inspector/projection/renderedInstance.d.ts +56 -0
- package/dist/inspector/projection/renderedInstance.js +306 -0
- package/dist/inspector/projection/structuralProjection.d.ts +93 -0
- package/dist/inspector/projection/structuralProjection.js +560 -0
- package/dist/inspector/projection/structuralProjectionBoundary.d.ts +5 -0
- package/dist/inspector/projection/structuralProjectionBoundary.js +65 -0
- package/dist/inspector/projection/textProjection.d.ts +53 -0
- package/dist/inspector/projection/textProjection.js +705 -0
- package/dist/inspector/projection/workspaceProjection.d.ts +43 -0
- package/dist/inspector/projection/workspaceProjection.js +58 -0
- package/dist/inspector/prompt/PromptSettingsDialog.d.ts +15 -0
- package/dist/inspector/prompt/PromptSettingsDialog.js +17 -0
- package/dist/inspector/prompt/clipboardHandoff.d.ts +34 -0
- package/dist/inspector/prompt/clipboardHandoff.js +212 -0
- package/dist/inspector/prompt/copyToClipboard.d.ts +1 -0
- package/dist/inspector/prompt/copyToClipboard.js +34 -0
- package/dist/inspector/prompt/detectFramework.d.ts +6 -0
- package/dist/inspector/prompt/detectFramework.js +4 -0
- package/dist/inspector/prompt/generatePrompt.d.ts +7 -0
- package/dist/inspector/prompt/generatePrompt.js +391 -0
- package/dist/inspector/prompt/promptSettings.d.ts +8 -0
- package/dist/inspector/prompt/promptSettings.js +28 -0
- package/dist/inspector/runtime/devFlag.d.ts +28 -0
- package/dist/inspector/runtime/devFlag.js +50 -0
- package/dist/inspector/runtime/documentStylesheetOrder.d.ts +19 -0
- package/dist/inspector/runtime/documentStylesheetOrder.js +89 -0
- package/dist/inspector/runtime/domRealm.d.ts +4 -0
- package/dist/inspector/runtime/domRealm.js +11 -0
- package/dist/inspector/runtime/runtimeConfig.d.ts +119 -0
- package/dist/inspector/runtime/runtimeConfig.js +276 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.d.ts +32 -0
- package/dist/inspector/runtime/staticHtmlRuntimeIdentity.js +149 -0
- package/dist/inspector/runtime/useRuntimeConfig.d.ts +10 -0
- package/dist/inspector/runtime/useRuntimeConfig.js +13 -0
- package/dist/inspector/selection/editScope.d.ts +32 -0
- package/dist/inspector/selection/editScope.js +140 -0
- package/dist/inspector/selection/editTarget.d.ts +8 -0
- package/dist/inspector/selection/editTarget.js +11 -0
- package/dist/inspector/selection/hierarchy.d.ts +7 -0
- package/dist/inspector/selection/hierarchy.js +42 -0
- package/dist/inspector/selection/resolveSelection.d.ts +10 -0
- package/dist/inspector/selection/resolveSelection.js +60 -0
- package/dist/inspector/selection/selectionStore.d.ts +41 -0
- package/dist/inspector/selection/selectionStore.js +262 -0
- package/dist/inspector/selection/selectionTarget.d.ts +5 -0
- package/dist/inspector/selection/selectionTarget.js +50 -0
- package/dist/inspector/selection/sourceSite.d.ts +2 -0
- package/dist/inspector/selection/sourceSite.js +12 -0
- package/dist/inspector/selection/styleSelection.d.ts +22 -0
- package/dist/inspector/selection/styleSelection.js +104 -0
- package/dist/inspector/session/index.d.ts +3 -0
- package/dist/inspector/session/index.js +2 -0
- package/dist/inspector/session/lifecycle.d.ts +22 -0
- package/dist/inspector/session/lifecycle.js +63 -0
- package/dist/inspector/session/sessionContext.d.ts +21 -0
- package/dist/inspector/session/sessionContext.js +28 -0
- package/dist/inspector/session/sessionFactory.d.ts +29 -0
- package/dist/inspector/session/sessionFactory.js +73 -0
- package/dist/inspector/settings/SettingsDialog.d.ts +12 -0
- package/dist/inspector/settings/SettingsDialog.js +46 -0
- package/dist/inspector/shell/AppShell.d.ts +2 -0
- package/dist/inspector/shell/AppShell.js +9 -0
- package/dist/inspector/shell/ChangesLog.d.ts +6 -0
- package/dist/inspector/shell/ChangesLog.js +92 -0
- package/dist/inspector/shell/CopyPromptButton.d.ts +9 -0
- package/dist/inspector/shell/CopyPromptButton.js +159 -0
- package/dist/inspector/shell/DomNavigation.d.ts +8 -0
- package/dist/inspector/shell/DomNavigation.js +30 -0
- package/dist/inspector/shell/EmptyState.d.ts +2 -0
- package/dist/inspector/shell/EmptyState.js +15 -0
- package/dist/inspector/shell/InspectorShell.d.ts +11 -0
- package/dist/inspector/shell/InspectorShell.js +268 -0
- package/dist/inspector/shell/openStore.d.ts +6 -0
- package/dist/inspector/shell/openStore.js +29 -0
- package/dist/inspector/shell/panelLayout.d.ts +2 -0
- package/dist/inspector/shell/panelLayout.js +29 -0
- package/dist/inspector/shell/shortcuts.d.ts +3 -0
- package/dist/inspector/shell/shortcuts.js +25 -0
- package/dist/inspector/shell/stateValue.d.ts +3 -0
- package/dist/inspector/shell/stateValue.js +34 -0
- package/dist/inspector/shell/styleState.d.ts +7 -0
- package/dist/inspector/shell/styleState.js +13 -0
- package/dist/inspector/spacing/projection.d.ts +43 -0
- package/dist/inspector/spacing/projection.js +136 -0
- package/dist/inspector/styleEditors/AppearanceSection.d.ts +13 -0
- package/dist/inspector/styleEditors/AppearanceSection.js +6 -0
- package/dist/inspector/styleEditors/AspectRatioField.d.ts +17 -0
- package/dist/inspector/styleEditors/AspectRatioField.js +10 -0
- package/dist/inspector/styleEditors/BorderEditor.d.ts +13 -0
- package/dist/inspector/styleEditors/BorderEditor.js +295 -0
- package/dist/inspector/styleEditors/BorderRadiusEditor.d.ts +14 -0
- package/dist/inspector/styleEditors/BorderRadiusEditor.js +108 -0
- package/dist/inspector/styleEditors/BoxShadowEditor.d.ts +13 -0
- package/dist/inspector/styleEditors/BoxShadowEditor.js +13 -0
- package/dist/inspector/styleEditors/ColorPicker.d.ts +15 -0
- package/dist/inspector/styleEditors/ColorPicker.js +73 -0
- package/dist/inspector/styleEditors/GapField.d.ts +17 -0
- package/dist/inspector/styleEditors/GapField.js +12 -0
- package/dist/inspector/styleEditors/GridChildSection.d.ts +14 -0
- package/dist/inspector/styleEditors/GridChildSection.js +91 -0
- package/dist/inspector/styleEditors/GridPicker.d.ts +13 -0
- package/dist/inspector/styleEditors/GridPicker.js +179 -0
- package/dist/inspector/styleEditors/GridSection.d.ts +17 -0
- package/dist/inspector/styleEditors/GridSection.js +27 -0
- package/dist/inspector/styleEditors/GridValueField.d.ts +17 -0
- package/dist/inspector/styleEditors/GridValueField.js +70 -0
- package/dist/inspector/styleEditors/InsetSection.d.ts +15 -0
- package/dist/inspector/styleEditors/InsetSection.js +15 -0
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.d.ts +6 -0
- package/dist/inspector/styleEditors/LayoutBlockedIndicator.js +6 -0
- package/dist/inspector/styleEditors/LayoutComboField.d.ts +18 -0
- package/dist/inspector/styleEditors/LayoutComboField.js +138 -0
- package/dist/inspector/styleEditors/LayoutDropdown.d.ts +14 -0
- package/dist/inspector/styleEditors/LayoutDropdown.js +34 -0
- package/dist/inspector/styleEditors/LayoutSection.d.ts +13 -0
- package/dist/inspector/styleEditors/LayoutSection.js +342 -0
- package/dist/inspector/styleEditors/OpacityEditor.d.ts +13 -0
- package/dist/inspector/styleEditors/OpacityEditor.js +34 -0
- package/dist/inspector/styleEditors/PositionInsets.d.ts +15 -0
- package/dist/inspector/styleEditors/PositionInsets.js +12 -0
- package/dist/inspector/styleEditors/SpacingBox.d.ts +29 -0
- package/dist/inspector/styleEditors/SpacingBox.js +189 -0
- package/dist/inspector/styleEditors/Typography.d.ts +13 -0
- package/dist/inspector/styleEditors/Typography.js +137 -0
- package/dist/inspector/styleEditors/completeCssValue.d.ts +8 -0
- package/dist/inspector/styleEditors/completeCssValue.js +34 -0
- package/dist/inspector/styleEditors/gridChildModel.d.ts +74 -0
- package/dist/inspector/styleEditors/gridChildModel.js +138 -0
- package/dist/inspector/styleEditors/layoutValue.d.ts +24 -0
- package/dist/inspector/styleEditors/layoutValue.js +103 -0
- package/dist/inspector/styleEditors/nudgeValue.d.ts +8 -0
- package/dist/inspector/styleEditors/nudgeValue.js +71 -0
- package/dist/inspector/styleEditors/rowLookup.d.ts +11 -0
- package/dist/inspector/styleEditors/rowLookup.js +13 -0
- package/dist/inspector/styleEditors/stringRecord.d.ts +4 -0
- package/dist/inspector/styleEditors/stringRecord.js +1 -0
- package/dist/inspector/styleEditors/valuePolicy.d.ts +20 -0
- package/dist/inspector/styleEditors/valuePolicy.js +82 -0
- package/dist/inspector/testing.d.ts +10 -0
- package/dist/inspector/testing.js +9 -0
- package/dist/inspector/tokens/TokenChip.d.ts +24 -0
- package/dist/inspector/tokens/TokenChip.js +23 -0
- package/dist/inspector/tokens/TokenDropdown.d.ts +13 -0
- package/dist/inspector/tokens/TokenDropdown.js +59 -0
- package/dist/inspector/tokens/TokenField.d.ts +68 -0
- package/dist/inspector/tokens/TokenField.js +485 -0
- package/dist/inspector/tokens/TokenLabel.d.ts +7 -0
- package/dist/inspector/tokens/TokenLabel.js +23 -0
- package/dist/inspector/tokens/TokensPanel.d.ts +5 -0
- package/dist/inspector/tokens/TokensPanel.js +47 -0
- package/dist/inspector/tokens/catalog.d.ts +51 -0
- package/dist/inspector/tokens/catalog.js +184 -0
- package/dist/inspector/tokens/editActions.d.ts +35 -0
- package/dist/inspector/tokens/editActions.js +164 -0
- package/dist/inspector/tokens/resolution/cascade.d.ts +14 -0
- package/dist/inspector/tokens/resolution/cascade.js +31 -0
- package/dist/inspector/tokens/resolution/cssomCollector.d.ts +43 -0
- package/dist/inspector/tokens/resolution/cssomCollector.js +528 -0
- package/dist/inspector/tokens/resolution/selectorSemantics.d.ts +12 -0
- package/dist/inspector/tokens/resolution/selectorSemantics.js +106 -0
- package/dist/inspector/tokens/resolution.d.ts +56 -0
- package/dist/inspector/tokens/resolution.js +1401 -0
- package/dist/inspector/tokens/tokenEdits.d.ts +3 -0
- package/dist/inspector/tokens/tokenEdits.js +22 -0
- package/dist/inspector/tokens/valueSemanticsAdapter.d.ts +6 -0
- package/dist/inspector/tokens/valueSemanticsAdapter.js +68 -0
- package/dist/inspector/ui/AtRuleContext.d.ts +18 -0
- package/dist/inspector/ui/AtRuleContext.js +54 -0
- package/dist/inspector/ui/Button.d.ts +9 -0
- package/dist/inspector/ui/Button.js +4 -0
- package/dist/inspector/ui/ColorSwatch.d.ts +7 -0
- package/dist/inspector/ui/ColorSwatch.js +6 -0
- package/dist/inspector/ui/ControlSurface.d.ts +14 -0
- package/dist/inspector/ui/ControlSurface.js +10 -0
- package/dist/inspector/ui/FieldRow.d.ts +14 -0
- package/dist/inspector/ui/FieldRow.js +15 -0
- package/dist/inspector/ui/IconButton.d.ts +14 -0
- package/dist/inspector/ui/IconButton.js +5 -0
- package/dist/inspector/ui/InspectorPopover.d.ts +17 -0
- package/dist/inspector/ui/InspectorPopover.js +13 -0
- package/dist/inspector/ui/PopoverListbox.d.ts +37 -0
- package/dist/inspector/ui/PopoverListbox.js +21 -0
- package/dist/inspector/ui/SegmentedControl.d.ts +24 -0
- package/dist/inspector/ui/SegmentedControl.js +16 -0
- package/dist/inspector/ui/Select.d.ts +25 -0
- package/dist/inspector/ui/Select.js +56 -0
- package/dist/inspector/ui/SideValuesField.d.ts +44 -0
- package/dist/inspector/ui/SideValuesField.js +76 -0
- package/dist/inspector/ui/StatusCallout.d.ts +9 -0
- package/dist/inspector/ui/StatusCallout.js +4 -0
- package/dist/inspector/ui/TextInput.d.ts +12 -0
- package/dist/inspector/ui/TextInput.js +5 -0
- package/dist/inspector/ui/ToggleButton.d.ts +11 -0
- package/dist/inspector/ui/ToggleButton.js +6 -0
- package/dist/inspector/ui/assets/grid.svg +14 -0
- package/dist/inspector/ui/css.d.ts +9 -0
- package/dist/inspector/ui/labels.d.ts +1 -0
- package/dist/inspector/ui/labels.js +7 -0
- package/dist/inspector/ui/styles.d.ts +1 -0
- package/dist/inspector/ui/styles.js +68 -0
- package/dist/inspector/virtual-modules.d.ts +7 -0
- package/dist/inspector/vite-env.d.ts +10 -0
- package/dist/internal/agent-protocol.d.ts +232 -0
- package/dist/internal/agent-protocol.js +237 -0
- package/dist/nudge-ui.mjs +15722 -0
- package/dist/project/files.d.ts +19 -0
- package/dist/project/files.js +226 -0
- package/dist/project/identity.d.ts +6 -0
- package/dist/project/identity.js +19 -0
- package/dist/project/pathPolicy.d.ts +8 -0
- package/dist/project/pathPolicy.js +12 -0
- package/dist/project/tokens.d.ts +36 -0
- package/dist/project/tokens.js +223 -0
- package/dist/transport/index.d.ts +8 -0
- package/dist/transport/index.js +8 -0
- package/dist/transport/routes.d.ts +13 -0
- package/dist/transport/routes.js +16 -0
- package/package.json +137 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { getScopingSelectorPattern } from "../runtime/runtimeConfig.js";
|
|
2
|
+
import { getElementComputedStyle, getElementWindow } from "../runtime/domRealm.js";
|
|
3
|
+
import { selectTokens } from "../../css/value-semantics/index.js";
|
|
4
|
+
import { cascadeLayerOrder } from "./resolution/cssomCollector.js";
|
|
5
|
+
import { compareAuthorCascade } from "./resolution/cascade.js";
|
|
6
|
+
import { computeSpecificityCore } from "./resolution/selectorSemantics.js";
|
|
7
|
+
export { TOKEN_GROUP_LABELS, TOKEN_GROUP_ORDER } from "../../css/value-semantics/index.js";
|
|
8
|
+
function defaultRuntime(root) {
|
|
9
|
+
const ownerWindow = getElementWindow(root);
|
|
10
|
+
const ownerDocument = root.ownerDocument;
|
|
11
|
+
const ownerCss = ownerWindow.CSS;
|
|
12
|
+
return {
|
|
13
|
+
root,
|
|
14
|
+
mediaMatches: (query) => typeof ownerWindow.matchMedia === "function" ? ownerWindow.matchMedia(query).matches : false,
|
|
15
|
+
supports: (condition) => typeof ownerCss?.supports === "function" ? ownerCss.supports(condition) : false,
|
|
16
|
+
computedToken: (name) => getElementComputedStyle(root).getPropertyValue(name).trim(),
|
|
17
|
+
selectorMatches: (selector) => selector
|
|
18
|
+
.split(",")
|
|
19
|
+
.map((part) => part.trim())
|
|
20
|
+
.filter(Boolean)
|
|
21
|
+
.some((part) => {
|
|
22
|
+
try {
|
|
23
|
+
return root.matches(part);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}),
|
|
29
|
+
scopeMatches: (scope) => {
|
|
30
|
+
const start = scope.match(/^\s*\((.+)\)/)?.[1]?.trim();
|
|
31
|
+
if (!start)
|
|
32
|
+
return true;
|
|
33
|
+
try {
|
|
34
|
+
return root.matches(start) || root.closest(start) !== null || ownerDocument.querySelector(start) !== null;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
layerOrder: (name) => cascadeLayerOrder(ownerDocument, name),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function isTokenContextActive(context, runtime) {
|
|
44
|
+
if (context.selector && !runtime.selectorMatches(context.selector))
|
|
45
|
+
return false;
|
|
46
|
+
return (context.wrappers ?? []).every((wrapper) => {
|
|
47
|
+
if (wrapper.kind === "media")
|
|
48
|
+
return runtime.mediaMatches(wrapper.params);
|
|
49
|
+
if (wrapper.kind === "supports")
|
|
50
|
+
return runtime.supports(wrapper.params);
|
|
51
|
+
if (wrapper.kind === "scope")
|
|
52
|
+
return runtime.scopeMatches(wrapper.params);
|
|
53
|
+
return true;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function pickWinningDeclaration(declarations, runtime) {
|
|
57
|
+
const priority = (declaration, index) => {
|
|
58
|
+
const layers = (declaration.context.wrappers ?? [])
|
|
59
|
+
.filter((wrapper) => wrapper.kind === "layer")
|
|
60
|
+
.map((wrapper) => wrapper.params.trim())
|
|
61
|
+
.filter(Boolean);
|
|
62
|
+
const layer = layers.length > 0 ? layers.join(".") : undefined;
|
|
63
|
+
return {
|
|
64
|
+
important: declaration.important,
|
|
65
|
+
layer,
|
|
66
|
+
layerOrder: layer ? runtime.layerOrder(layer) : undefined,
|
|
67
|
+
specificity: declaration.context.selector
|
|
68
|
+
? computeSpecificityCore(declaration.context.selector)
|
|
69
|
+
: 0,
|
|
70
|
+
sourceOrder: declaration.order ?? index,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
let winner = null;
|
|
74
|
+
let winnerIndex = -1;
|
|
75
|
+
declarations.forEach((candidate, candidateIndex) => {
|
|
76
|
+
if (!isTokenContextActive(candidate.context, runtime))
|
|
77
|
+
return;
|
|
78
|
+
if (!winner
|
|
79
|
+
|| compareAuthorCascade(priority(candidate, candidateIndex), priority(winner, winnerIndex)) >= 0) {
|
|
80
|
+
winner = candidate;
|
|
81
|
+
winnerIndex = candidateIndex;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
return winner;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Strips host-declared structural scoping markers from a selector so
|
|
88
|
+
* human-facing labels present only author vocabulary (ADR-0011). The marker
|
|
89
|
+
* grammar — Astro's `[data-astro-cid-<hash>]` attribute selectors or
|
|
90
|
+
* `.astro-<hash>` classes, a future Vue/Svelte equivalent — is declared by
|
|
91
|
+
* the host Adapter through the runtime configuration; the raw selector is
|
|
92
|
+
* retained in `context.selector` so resolution keeps matching the rendered
|
|
93
|
+
* DOM. A `:where(...)` wrapper left empty by the removals disappears
|
|
94
|
+
* entirely.
|
|
95
|
+
*/
|
|
96
|
+
export function humanizeSelector(selector, scopingPattern) {
|
|
97
|
+
const stripped = scopingPattern === null ? selector : selector.replace(scopingPattern, "");
|
|
98
|
+
return stripped
|
|
99
|
+
.replace(/:where\(\s*\)/g, "")
|
|
100
|
+
.replace(/\s+/g, " ")
|
|
101
|
+
.trim();
|
|
102
|
+
}
|
|
103
|
+
export function contextLabel(context) {
|
|
104
|
+
const labels = [];
|
|
105
|
+
if (context.selector && context.selector !== ":root") {
|
|
106
|
+
const selectorLabel = humanizeSelector(context.selector, getScopingSelectorPattern());
|
|
107
|
+
labels.push(selectorLabel === "" || selectorLabel === ":root" ? "Default" : selectorLabel);
|
|
108
|
+
}
|
|
109
|
+
else if (context.selector === ":root") {
|
|
110
|
+
labels.push("Default");
|
|
111
|
+
}
|
|
112
|
+
for (const wrapper of context.wrappers ?? []) {
|
|
113
|
+
labels.push(`@${wrapper.kind} ${wrapper.params}`);
|
|
114
|
+
}
|
|
115
|
+
return labels.join(" · ") || "Default";
|
|
116
|
+
}
|
|
117
|
+
export function sourceParts(source) {
|
|
118
|
+
const match = source.match(/^(.*):(\d+)$/);
|
|
119
|
+
return match ? { file: match[1], line: Number(match[2]) } : { file: source, line: 0 };
|
|
120
|
+
}
|
|
121
|
+
export function styleContext(context) {
|
|
122
|
+
const wrappers = context.wrappers?.map((wrapper) => ({ ...wrapper }));
|
|
123
|
+
return wrappers && wrappers.length > 0 ? { wrappers } : {};
|
|
124
|
+
}
|
|
125
|
+
export function selectorForContext(context) {
|
|
126
|
+
return context.selector?.trim() || ":root";
|
|
127
|
+
}
|
|
128
|
+
export function classifyCatalogToken(name, value = "") {
|
|
129
|
+
return selectTokens({ entries: [{ name, value, source: "" }] }).candidates[0]?.group ?? "generic";
|
|
130
|
+
}
|
|
131
|
+
export function buildTokenCatalogRows(catalog, root = document.documentElement, suppliedRuntime) {
|
|
132
|
+
const runtime = suppliedRuntime ?? defaultRuntime(root);
|
|
133
|
+
return catalog
|
|
134
|
+
.map((definition) => {
|
|
135
|
+
const activeDeclaration = pickWinningDeclaration(definition.declarations, runtime);
|
|
136
|
+
const source = activeDeclaration?.source ?? definition.declarations[0]?.source ?? "";
|
|
137
|
+
const parts = sourceParts(source);
|
|
138
|
+
const context = activeDeclaration?.context ?? {};
|
|
139
|
+
const authoredValue = activeDeclaration?.value ?? "";
|
|
140
|
+
return {
|
|
141
|
+
definition,
|
|
142
|
+
activeDeclaration,
|
|
143
|
+
authoredValue,
|
|
144
|
+
resolvedValue: activeDeclaration ? runtime.computedToken(definition.cssName) : "",
|
|
145
|
+
selector: selectorForContext(context),
|
|
146
|
+
styleContext: styleContext(context),
|
|
147
|
+
contextLabel: activeDeclaration ? contextLabel(context) : "Inactive in current theme",
|
|
148
|
+
file: parts.file,
|
|
149
|
+
line: parts.line,
|
|
150
|
+
group: classifyCatalogToken(definition.name || definition.cssName, authoredValue),
|
|
151
|
+
};
|
|
152
|
+
})
|
|
153
|
+
.sort((a, b) => a.definition.name.localeCompare(b.definition.name));
|
|
154
|
+
}
|
|
155
|
+
export function filterTokenRows(rows, query) {
|
|
156
|
+
const needle = query.trim().toLowerCase();
|
|
157
|
+
if (!needle)
|
|
158
|
+
return [...rows];
|
|
159
|
+
return rows.filter((row) => row.definition.name.toLowerCase().includes(needle)
|
|
160
|
+
|| row.definition.cssName.toLowerCase().includes(needle)
|
|
161
|
+
|| row.definition.declarations.some((declaration) => declaration.value.toLowerCase().includes(needle)));
|
|
162
|
+
}
|
|
163
|
+
const EXACT_ALIAS = /^var\(\s*(--[\w-]+)\s*\)$/;
|
|
164
|
+
export function aliasName(value) {
|
|
165
|
+
return value.trim().match(EXACT_ALIAS)?.[1] ?? null;
|
|
166
|
+
}
|
|
167
|
+
export function createsAliasCycle(tokenName, candidateName, authoredValues) {
|
|
168
|
+
const visited = new Set([tokenName]);
|
|
169
|
+
let current = candidateName;
|
|
170
|
+
while (current) {
|
|
171
|
+
if (visited.has(current))
|
|
172
|
+
return true;
|
|
173
|
+
visited.add(current);
|
|
174
|
+
current = aliasName(authoredValues.get(current) ?? "");
|
|
175
|
+
}
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
export function compatibleTokenNames(row, rows) {
|
|
179
|
+
const authored = new Map(rows.map((candidate) => [candidate.definition.cssName, candidate.authoredValue]));
|
|
180
|
+
return new Set(rows
|
|
181
|
+
.filter((candidate) => candidate.group === row.group)
|
|
182
|
+
.filter((candidate) => !createsAliasCycle(row.definition.cssName, candidate.definition.cssName, authored))
|
|
183
|
+
.map((candidate) => candidate.definition.cssName));
|
|
184
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TokenEntry } from "../../css/model/index.js";
|
|
2
|
+
import type { ElementChangeRecord } from "../changes/changesLog.js";
|
|
3
|
+
import { type EditTarget } from "../selection/editTarget.js";
|
|
4
|
+
export type { ChangeRecord } from "../changes/changesLog.js";
|
|
5
|
+
export { getPendingRules, getChangesList as getChangeRecords, clearWorkspace as resetPendingRules } from "../changes/changesLog.js";
|
|
6
|
+
export interface StyleEditMetadata {
|
|
7
|
+
sourceProperty?: string;
|
|
8
|
+
sourceAuthoredValue?: string;
|
|
9
|
+
}
|
|
10
|
+
/** Returns whether a style write can address every element in the target safely. */
|
|
11
|
+
export declare function canEditStyles(target: EditTarget): boolean;
|
|
12
|
+
export declare function buildSelector(cid: string, src: string): string | null;
|
|
13
|
+
export declare function swapToken(target: EditTarget, property: string, newToken: TokenEntry, oldToken: TokenEntry | null, metadata?: StyleEditMetadata): ElementChangeRecord | null;
|
|
14
|
+
export interface TokenSwap {
|
|
15
|
+
property: string;
|
|
16
|
+
newToken: TokenEntry;
|
|
17
|
+
oldToken: TokenEntry | null;
|
|
18
|
+
metadata?: StyleEditMetadata;
|
|
19
|
+
}
|
|
20
|
+
/** Applies several token swaps as one history batch. */
|
|
21
|
+
export declare function swapTokens(target: EditTarget, changes: readonly TokenSwap[]): ElementChangeRecord[];
|
|
22
|
+
export interface StyleDeclaration {
|
|
23
|
+
property: string;
|
|
24
|
+
value: string;
|
|
25
|
+
metadata?: StyleEditMetadata;
|
|
26
|
+
}
|
|
27
|
+
export interface ElementStyleEdit {
|
|
28
|
+
element: HTMLElement;
|
|
29
|
+
declarations: readonly StyleDeclaration[];
|
|
30
|
+
}
|
|
31
|
+
export declare function setStyle(target: EditTarget, property: string, value: string, metadata?: StyleEditMetadata): ElementChangeRecord | null;
|
|
32
|
+
export declare function setStyles(target: EditTarget, declarations: readonly StyleDeclaration[], metadata?: StyleEditMetadata): ElementChangeRecord[];
|
|
33
|
+
/** Applies element-specific declarations as one history batch. */
|
|
34
|
+
export declare function setElementStyles(edits: readonly ElementStyleEdit[]): ElementChangeRecord[];
|
|
35
|
+
export declare function promoteToToken(el: EditTarget, property: string, newToken: TokenEntry, metadata?: StyleEditMetadata): ElementChangeRecord | null;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { parseDataSrc } from "../selection/resolveSelection.js";
|
|
2
|
+
import { appendChanges, } from "../changes/changesLog.js";
|
|
3
|
+
import { canPlanBatchEditScopes, planBatchEditScopes, selectorForElement, sourceSiteSelector } from "../selection/editScope.js";
|
|
4
|
+
import { getActiveStyleState, selectorForInteractionState } from "../shell/styleState.js";
|
|
5
|
+
import { getStateStyleValue } from "../shell/stateValue.js";
|
|
6
|
+
import { boundRuntimeEvidence, isRuntimeCreatedElement, isRuntimeGeneratedSource, normalizeRuntimeTag, normalizeRuntimeText, } from "../runtime/staticHtmlRuntimeIdentity.js";
|
|
7
|
+
import { targetElements } from "../selection/editTarget.js";
|
|
8
|
+
import { changeKey } from "../changes/model.js";
|
|
9
|
+
function boundedRenderedText(el) {
|
|
10
|
+
return normalizeRuntimeText(el.textContent);
|
|
11
|
+
}
|
|
12
|
+
function sourceFields(el) {
|
|
13
|
+
const src = el.getAttribute("data-src") ?? "";
|
|
14
|
+
const parsed = parseDataSrc(src);
|
|
15
|
+
const evidence = (reason) => ({
|
|
16
|
+
reason,
|
|
17
|
+
tagName: normalizeRuntimeTag(el.tagName),
|
|
18
|
+
text: boundedRenderedText(el),
|
|
19
|
+
props: boundRuntimeEvidence(el.getAttribute("data-cprops")),
|
|
20
|
+
ariaLabel: boundRuntimeEvidence(el.getAttribute("aria-label")),
|
|
21
|
+
});
|
|
22
|
+
if (isRuntimeCreatedElement(el) || isRuntimeGeneratedSource(src)) {
|
|
23
|
+
return {
|
|
24
|
+
file: "",
|
|
25
|
+
line: 0,
|
|
26
|
+
column: 0,
|
|
27
|
+
runtimeEvidence: evidence("runtime-created"),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (!parsed) {
|
|
31
|
+
// Authored markup whose source annotation is absent or unusable — for
|
|
32
|
+
// example Astro dev-annotation degraded mode. Prompts must say the
|
|
33
|
+
// location is unknown instead of rendering a fabricated `file:0`.
|
|
34
|
+
return {
|
|
35
|
+
file: "",
|
|
36
|
+
line: 0,
|
|
37
|
+
column: 0,
|
|
38
|
+
runtimeEvidence: evidence("unannotated"),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
file: parsed.file,
|
|
43
|
+
line: parsed.line,
|
|
44
|
+
column: parsed.column,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export { getPendingRules, getChangesList as getChangeRecords, clearWorkspace as resetPendingRules } from "../changes/changesLog.js";
|
|
48
|
+
/** Returns whether a style write can address every element in the target safely. */
|
|
49
|
+
export function canEditStyles(target) {
|
|
50
|
+
return canPlanBatchEditScopes(targetElements(target));
|
|
51
|
+
}
|
|
52
|
+
export function buildSelector(cid, src) {
|
|
53
|
+
return sourceSiteSelector(cid, src);
|
|
54
|
+
}
|
|
55
|
+
function stateFields(el) {
|
|
56
|
+
const state = getActiveStyleState();
|
|
57
|
+
const selector = selectorForElement(el);
|
|
58
|
+
return { state, selector: selector ? selectorForInteractionState(selector, state) : null };
|
|
59
|
+
}
|
|
60
|
+
export function swapToken(target, property, newToken, oldToken, metadata) {
|
|
61
|
+
return swapTokens(target, [{ property, newToken, oldToken, metadata }])[0] ?? null;
|
|
62
|
+
}
|
|
63
|
+
/** Applies several token swaps as one history batch. */
|
|
64
|
+
export function swapTokens(target, changes) {
|
|
65
|
+
const elements = targetElements(target);
|
|
66
|
+
const scopePlan = planBatchEditScopes(elements);
|
|
67
|
+
if (!scopePlan)
|
|
68
|
+
return [];
|
|
69
|
+
const records = [];
|
|
70
|
+
const verificationTargets = new Map();
|
|
71
|
+
for (const el of elements) {
|
|
72
|
+
for (const change of changes) {
|
|
73
|
+
const cid = el.getAttribute("data-cid") ?? "";
|
|
74
|
+
const { selector, state } = stateFields(el);
|
|
75
|
+
if (!selector)
|
|
76
|
+
continue;
|
|
77
|
+
const source = sourceFields(el);
|
|
78
|
+
const record = {
|
|
79
|
+
cid,
|
|
80
|
+
file: source.file,
|
|
81
|
+
line: source.line,
|
|
82
|
+
column: source.column,
|
|
83
|
+
selector,
|
|
84
|
+
property: change.property,
|
|
85
|
+
...change.metadata,
|
|
86
|
+
oldToken: change.oldToken,
|
|
87
|
+
newToken: change.newToken,
|
|
88
|
+
source: { file: source.file, line: source.line, component: cid },
|
|
89
|
+
runtimeEvidence: source.runtimeEvidence,
|
|
90
|
+
state,
|
|
91
|
+
...scopePlan.get(el),
|
|
92
|
+
};
|
|
93
|
+
records.push(record);
|
|
94
|
+
verificationTargets.set(changeKey(record), el);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
appendChanges(records, { verificationTargets });
|
|
98
|
+
return records;
|
|
99
|
+
}
|
|
100
|
+
function commitElementStyles(edits) {
|
|
101
|
+
if (edits.every(({ declarations }) => declarations.length === 0))
|
|
102
|
+
return [];
|
|
103
|
+
const elements = [...new Set(edits.map(({ element }) => element))];
|
|
104
|
+
const scopePlan = planBatchEditScopes(elements);
|
|
105
|
+
if (!scopePlan)
|
|
106
|
+
return [];
|
|
107
|
+
const records = [];
|
|
108
|
+
for (const { element, declarations } of edits) {
|
|
109
|
+
for (const declaration of declarations) {
|
|
110
|
+
const record = buildStyleRecord(element, scopePlan, declaration);
|
|
111
|
+
if (record)
|
|
112
|
+
records.push({ record, element });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const verificationTargets = new Map();
|
|
116
|
+
for (const { record, element } of records)
|
|
117
|
+
verificationTargets.set(changeKey(record), element);
|
|
118
|
+
appendChanges(records.map(({ record }) => record), { verificationTargets });
|
|
119
|
+
return records.map(({ record }) => record);
|
|
120
|
+
}
|
|
121
|
+
export function setStyle(target, property, value, metadata) {
|
|
122
|
+
return setStyles(target, [{ property, value, metadata }])[0] ?? null;
|
|
123
|
+
}
|
|
124
|
+
export function setStyles(target, declarations, metadata) {
|
|
125
|
+
const normalizedDeclarations = declarations.map((declaration) => ({
|
|
126
|
+
...declaration,
|
|
127
|
+
metadata: declaration.metadata ?? metadata,
|
|
128
|
+
}));
|
|
129
|
+
return commitElementStyles(targetElements(target).map((element) => ({
|
|
130
|
+
element,
|
|
131
|
+
declarations: normalizedDeclarations,
|
|
132
|
+
})));
|
|
133
|
+
}
|
|
134
|
+
/** Applies element-specific declarations as one history batch. */
|
|
135
|
+
export function setElementStyles(edits) {
|
|
136
|
+
return commitElementStyles(edits);
|
|
137
|
+
}
|
|
138
|
+
function buildStyleRecord(el, scopePlan, { property, value, metadata }) {
|
|
139
|
+
const cid = el.getAttribute("data-cid") ?? "";
|
|
140
|
+
const { selector, state } = stateFields(el);
|
|
141
|
+
if (!selector)
|
|
142
|
+
return null;
|
|
143
|
+
const source = sourceFields(el);
|
|
144
|
+
return {
|
|
145
|
+
cid,
|
|
146
|
+
file: source.file,
|
|
147
|
+
line: source.line,
|
|
148
|
+
column: source.column,
|
|
149
|
+
selector,
|
|
150
|
+
property,
|
|
151
|
+
...metadata,
|
|
152
|
+
oldToken: null,
|
|
153
|
+
newToken: null,
|
|
154
|
+
rawValue: value,
|
|
155
|
+
oldRawValue: getStateStyleValue(el, property) || undefined,
|
|
156
|
+
source: { file: source.file, line: source.line, component: cid },
|
|
157
|
+
runtimeEvidence: source.runtimeEvidence,
|
|
158
|
+
state,
|
|
159
|
+
...scopePlan.get(el),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export function promoteToToken(el, property, newToken, metadata) {
|
|
163
|
+
return swapToken(el, property, newToken, null, metadata);
|
|
164
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AuthorCascadePriority {
|
|
2
|
+
important?: boolean;
|
|
3
|
+
inline?: boolean;
|
|
4
|
+
layer?: string;
|
|
5
|
+
layerOrder?: number;
|
|
6
|
+
specificity: number;
|
|
7
|
+
sourceOrder: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Compares declarations from the author origin. Positive means `a` wins.
|
|
11
|
+
* Normal declarations prefer unlayered rules and later layers; important
|
|
12
|
+
* declarations reverse both relationships as required by the CSS cascade.
|
|
13
|
+
*/
|
|
14
|
+
export declare function compareAuthorCascade(a: AuthorCascadePriority, b: AuthorCascadePriority): number;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares declarations from the author origin. Positive means `a` wins.
|
|
3
|
+
* Normal declarations prefer unlayered rules and later layers; important
|
|
4
|
+
* declarations reverse both relationships as required by the CSS cascade.
|
|
5
|
+
*/
|
|
6
|
+
export function compareAuthorCascade(a, b) {
|
|
7
|
+
const aImportant = Boolean(a.important);
|
|
8
|
+
const bImportant = Boolean(b.important);
|
|
9
|
+
if (aImportant !== bImportant)
|
|
10
|
+
return aImportant ? 1 : -1;
|
|
11
|
+
const aInline = Boolean(a.inline);
|
|
12
|
+
const bInline = Boolean(b.inline);
|
|
13
|
+
if (aInline !== bInline)
|
|
14
|
+
return aInline ? 1 : -1;
|
|
15
|
+
const aLayered = a.layer !== undefined;
|
|
16
|
+
const bLayered = b.layer !== undefined;
|
|
17
|
+
if (aLayered !== bLayered) {
|
|
18
|
+
if (aImportant)
|
|
19
|
+
return aLayered ? 1 : -1;
|
|
20
|
+
return aLayered ? -1 : 1;
|
|
21
|
+
}
|
|
22
|
+
if (aLayered && bLayered && a.layer !== b.layer) {
|
|
23
|
+
const aOrder = a.layerOrder ?? a.sourceOrder;
|
|
24
|
+
const bOrder = b.layerOrder ?? b.sourceOrder;
|
|
25
|
+
if (aOrder !== bOrder)
|
|
26
|
+
return aImportant ? bOrder - aOrder : aOrder - bOrder;
|
|
27
|
+
}
|
|
28
|
+
if (a.specificity !== b.specificity)
|
|
29
|
+
return a.specificity - b.specificity;
|
|
30
|
+
return a.sourceOrder - b.sourceOrder;
|
|
31
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { MatchedRule, StyleDeclaration } from "../../../css/model/index.js";
|
|
2
|
+
export interface DocumentRevisions {
|
|
3
|
+
element: number;
|
|
4
|
+
stylesheet: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Subscribes to cascade revisions for one document. This is the narrow
|
|
8
|
+
* document-scoped seam used by the browser inspection Module.
|
|
9
|
+
*/
|
|
10
|
+
export declare function subscribeDocumentRevision(doc: Document, cb: (revisions: Readonly<DocumentRevisions>) => void): () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Elements whose attribute changes can affect a cached cascade outcome. The
|
|
13
|
+
* observer only counts attribute mutations against registered elements so
|
|
14
|
+
* unrelated host churn (React commits, hover states, animations) cannot bump
|
|
15
|
+
* the element revision. Registration is idempotent.
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerResolutionElement(el: Element): void;
|
|
18
|
+
/** Releases the observer, listener, and cached state owned by one document. */
|
|
19
|
+
export declare function disposeDocumentResolution(doc: Document): void;
|
|
20
|
+
/** Keeps one document's CSSOM observer alive for a browser inspection owner. */
|
|
21
|
+
export declare function retainDocumentResolution(doc: Document): () => void;
|
|
22
|
+
export declare function documentRevisions(doc: Document): DocumentRevisions;
|
|
23
|
+
/** Invalidates CSSOM-derived snapshots after programmatic stylesheet edits. */
|
|
24
|
+
export declare function invalidateStyleResolutionCache(doc?: Document): void;
|
|
25
|
+
/**
|
|
26
|
+
* Reads the declarations the browser accepted for a style rule. This is the
|
|
27
|
+
* semantic source for authored values; it intentionally does not inspect the
|
|
28
|
+
* stylesheet element's original text. CSSOM may expose a shorthand as empty
|
|
29
|
+
* longhand entries through indexed enumeration, so prefer its serialized
|
|
30
|
+
* declaration block and use enumeration as a compatibility fallback.
|
|
31
|
+
*/
|
|
32
|
+
export declare function declarationsFromCssom(style: CSSStyleDeclaration): StyleDeclaration[];
|
|
33
|
+
export declare function collectRules(doc: Document): {
|
|
34
|
+
revision: number;
|
|
35
|
+
rules: MatchedRule[];
|
|
36
|
+
layerOrder: Map<string, number>;
|
|
37
|
+
inaccessible: boolean;
|
|
38
|
+
} | {
|
|
39
|
+
rules: MatchedRule[];
|
|
40
|
+
layerOrder: ReadonlyMap<string, number>;
|
|
41
|
+
inaccessible: boolean;
|
|
42
|
+
};
|
|
43
|
+
export declare function cascadeLayerOrder(doc: Document, name: string): number | undefined;
|