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,66 @@
|
|
|
1
|
+
import { createBrowserCssInspection, } from "./browserCssInspection.js";
|
|
2
|
+
import { getNudgeUiRuntimeConfig } from "../runtime/runtimeConfig.js";
|
|
3
|
+
const sessions = new WeakMap();
|
|
4
|
+
let catalogReference = null;
|
|
5
|
+
let catalogSignature = "";
|
|
6
|
+
let catalogRevision = 0;
|
|
7
|
+
function currentTokenKnowledge() {
|
|
8
|
+
const { tokenCatalog, tokenGeneration } = getNudgeUiRuntimeConfig();
|
|
9
|
+
// The inventory snapshot generation is the authoritative fingerprint: when
|
|
10
|
+
// observable inventory facts change, the virtual module re-evaluates and
|
|
11
|
+
// `tokenGeneration` carries a new value, so document sessions recreate with
|
|
12
|
+
// the new definitions instead of freezing the first catalog snapshot.
|
|
13
|
+
//
|
|
14
|
+
// A catalog signature supplements the inventory generation because S2-B
|
|
15
|
+
// still has temporary post-snapshot Tailwind/vanilla-extract enrichment.
|
|
16
|
+
// It advances only when those observable transport definitions change, not
|
|
17
|
+
// for a no-op virtual-module replacement.
|
|
18
|
+
if (catalogReference !== tokenCatalog) {
|
|
19
|
+
catalogReference = tokenCatalog;
|
|
20
|
+
const nextSignature = JSON.stringify(tokenCatalog);
|
|
21
|
+
if (nextSignature !== catalogSignature) {
|
|
22
|
+
catalogSignature = nextSignature;
|
|
23
|
+
catalogRevision++;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const generation = tokenGeneration === ""
|
|
27
|
+
? catalogRevision
|
|
28
|
+
: catalogRevision === 0 ? tokenGeneration : `${tokenGeneration}:${catalogRevision}`;
|
|
29
|
+
return { definitions: tokenCatalog, generation };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Binds a document to token knowledge. When generation changes, the previous
|
|
33
|
+
* session is disposed and replaced so callers never keep a stale catalog.
|
|
34
|
+
*/
|
|
35
|
+
export function bindBrowserCssInspection(doc, knowledge) {
|
|
36
|
+
const existing = sessions.get(doc);
|
|
37
|
+
if (existing && existing.generation === knowledge.generation) {
|
|
38
|
+
return existing.session;
|
|
39
|
+
}
|
|
40
|
+
if (existing) {
|
|
41
|
+
existing.session.dispose();
|
|
42
|
+
sessions.delete(doc);
|
|
43
|
+
}
|
|
44
|
+
const session = createBrowserCssInspection({
|
|
45
|
+
document: doc,
|
|
46
|
+
tokenKnowledge: knowledge,
|
|
47
|
+
});
|
|
48
|
+
sessions.set(doc, { session, generation: knowledge.generation });
|
|
49
|
+
return session;
|
|
50
|
+
}
|
|
51
|
+
/** Returns the one browser inspection session owned by a document. */
|
|
52
|
+
export function getBrowserCssInspection(doc = document) {
|
|
53
|
+
return bindBrowserCssInspection(doc, currentTokenKnowledge());
|
|
54
|
+
}
|
|
55
|
+
/** Invalidates every browser-inspection snapshot affected by a CSSOM write. */
|
|
56
|
+
export function notifyBrowserStylesheetChange(doc = document) {
|
|
57
|
+
getBrowserCssInspection(doc).notifyStylesheetChange();
|
|
58
|
+
}
|
|
59
|
+
/** Releases a document session when its inspector/Canvas lifecycle ends. */
|
|
60
|
+
export function disposeBrowserCssInspection(doc) {
|
|
61
|
+
const entry = sessions.get(doc);
|
|
62
|
+
if (!entry)
|
|
63
|
+
return;
|
|
64
|
+
entry.session.dispose();
|
|
65
|
+
sessions.delete(doc);
|
|
66
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ResolvedProperty } from "../../css/model/index.js";
|
|
2
|
+
export type SelectionValue = {
|
|
3
|
+
kind: "common";
|
|
4
|
+
value: string;
|
|
5
|
+
} | {
|
|
6
|
+
kind: "mixed";
|
|
7
|
+
};
|
|
8
|
+
export type SelectionToken = {
|
|
9
|
+
kind: "none";
|
|
10
|
+
} | {
|
|
11
|
+
kind: "common";
|
|
12
|
+
name: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "mixed";
|
|
15
|
+
};
|
|
16
|
+
/** One CSS property projected across every element in the current selection. */
|
|
17
|
+
export interface SelectionProperty {
|
|
18
|
+
property: string;
|
|
19
|
+
value: SelectionValue;
|
|
20
|
+
token: SelectionToken;
|
|
21
|
+
primaryRow: ResolvedProperty | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Projects browser values and authored inspection rows into group-safe facts.
|
|
25
|
+
* The returned type cannot masquerade as an authored CSS row.
|
|
26
|
+
*/
|
|
27
|
+
export declare function projectSelectionProperty(property: string, rows: readonly (ResolvedProperty | null)[], values: readonly string[], primaryIndex: number): SelectionProperty | null;
|
|
28
|
+
/** Returns the token entries available to every inspected target. */
|
|
29
|
+
export declare function intersectTokenEntries<T extends {
|
|
30
|
+
name: string;
|
|
31
|
+
value: string;
|
|
32
|
+
}>(entries: readonly (readonly T[])[]): T[];
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function tokenFor(rows) {
|
|
2
|
+
const names = rows.map((row) => row?.tokenName ?? null);
|
|
3
|
+
if (names.every((name) => name === null))
|
|
4
|
+
return { kind: "none" };
|
|
5
|
+
const first = names[0];
|
|
6
|
+
return first && names.every((name) => name === first)
|
|
7
|
+
? { kind: "common", name: first }
|
|
8
|
+
: { kind: "mixed" };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Projects browser values and authored inspection rows into group-safe facts.
|
|
12
|
+
* The returned type cannot masquerade as an authored CSS row.
|
|
13
|
+
*/
|
|
14
|
+
export function projectSelectionProperty(property, rows, values, primaryIndex) {
|
|
15
|
+
if (values.length === 0 || rows.length !== values.length)
|
|
16
|
+
return null;
|
|
17
|
+
const normalizedValues = values.map((value) => value.trim());
|
|
18
|
+
const first = normalizedValues[0] ?? "";
|
|
19
|
+
const common = normalizedValues.every((value) => value === first);
|
|
20
|
+
return {
|
|
21
|
+
property,
|
|
22
|
+
value: common ? { kind: "common", value: first } : { kind: "mixed" },
|
|
23
|
+
token: tokenFor(rows),
|
|
24
|
+
primaryRow: rows[primaryIndex] ?? null,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Returns the token entries available to every inspected target. */
|
|
28
|
+
export function intersectTokenEntries(entries) {
|
|
29
|
+
const first = entries[0];
|
|
30
|
+
if (!first)
|
|
31
|
+
return [];
|
|
32
|
+
return first.filter((entry) => entries.every((candidateEntries) => candidateEntries.some((candidate) => candidate.name === entry.name && candidate.value === entry.value)));
|
|
33
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SelectedElement } from "../selection/selectionStore.js";
|
|
2
|
+
import type { InteractionState } from "../shell/styleState.js";
|
|
3
|
+
import type { ResolvedProperty } from "../../css/model/index.js";
|
|
4
|
+
import type { BrowserCssInspection, DocumentTokenInspectionSnapshot, InspectionSnapshot } from "./browserCssInspection.js";
|
|
5
|
+
export interface BrowserCssInspectionView {
|
|
6
|
+
element: InspectionSnapshot | null;
|
|
7
|
+
elements: readonly InspectionSnapshot[];
|
|
8
|
+
stableProperties: readonly ResolvedProperty[];
|
|
9
|
+
documentTokens: DocumentTokenInspectionSnapshot | null;
|
|
10
|
+
}
|
|
11
|
+
export interface BrowserCssInspectionViewOptions {
|
|
12
|
+
includeDocumentTokens?: boolean;
|
|
13
|
+
session?: BrowserCssInspection;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* React Adapter for one revision-aware browser inspection view. This is the
|
|
17
|
+
* sole owner of subscription and scheduling policy; UI callers only project
|
|
18
|
+
* the returned snapshots.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useBrowserCssInspection(selected: SelectedElement | readonly SelectedElement[] | null, state?: InteractionState, options?: BrowserCssInspectionViewOptions): BrowserCssInspectionView;
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { getBrowserCssInspection } from "./browserCssInspectionRegistry.js";
|
|
3
|
+
const SELECTION_DEBOUNCE_MS = 8;
|
|
4
|
+
const EMPTY_SELECTION = [];
|
|
5
|
+
function isSelectedElementList(selected) {
|
|
6
|
+
return Array.isArray(selected);
|
|
7
|
+
}
|
|
8
|
+
function normalizeSelection(selected) {
|
|
9
|
+
if (!selected)
|
|
10
|
+
return EMPTY_SELECTION;
|
|
11
|
+
if (isSelectedElementList(selected))
|
|
12
|
+
return selected;
|
|
13
|
+
return [selected];
|
|
14
|
+
}
|
|
15
|
+
function inspectAuthoredElements(session, selected, state) {
|
|
16
|
+
return selected.map((element) => session.inspect(element.domElement, { state, cascade: "authored" }));
|
|
17
|
+
}
|
|
18
|
+
function inspectStableView(session, selected, state, includeDocumentTokens, elements) {
|
|
19
|
+
const primary = elements[0] ?? null;
|
|
20
|
+
const stableProperties = selected[0] && state === "base"
|
|
21
|
+
? session.inspect(selected[0].domElement, { cascade: "stable" }).properties
|
|
22
|
+
: [];
|
|
23
|
+
const documentTokens = includeDocumentTokens ? session.inspectTokens() : null;
|
|
24
|
+
return {
|
|
25
|
+
element: primary,
|
|
26
|
+
elements,
|
|
27
|
+
stableProperties,
|
|
28
|
+
documentTokens,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* React Adapter for one revision-aware browser inspection view. This is the
|
|
33
|
+
* sole owner of subscription and scheduling policy; UI callers only project
|
|
34
|
+
* the returned snapshots.
|
|
35
|
+
*/
|
|
36
|
+
export function useBrowserCssInspection(selected, state = "base", options = {}) {
|
|
37
|
+
const selectedElements = useMemo(() => normalizeSelection(selected), [selected]);
|
|
38
|
+
const selectedDocument = selectedElements[0]?.domElement.ownerDocument ?? document;
|
|
39
|
+
const session = options.session ?? getBrowserCssInspection(selectedDocument);
|
|
40
|
+
const includeDocumentTokens = options.includeDocumentTokens ?? false;
|
|
41
|
+
const latest = useRef({ selected: selectedElements, state, session, includeDocumentTokens });
|
|
42
|
+
latest.current = { selected: selectedElements, state, session, includeDocumentTokens };
|
|
43
|
+
const [view, setView] = useState(() => inspectStableView(session, selectedElements, state, includeDocumentTokens, inspectAuthoredElements(session, selectedElements, state)));
|
|
44
|
+
const timerRef = useRef(null);
|
|
45
|
+
const lastSelectionResolveAtRef = useRef(0);
|
|
46
|
+
const revisionFrameRef = useRef(null);
|
|
47
|
+
const revisionSecondFrameRef = useRef(null);
|
|
48
|
+
const revisionThirdFrameRef = useRef(null);
|
|
49
|
+
const revisionWarmFrameRef = useRef(null);
|
|
50
|
+
const stableFrameRef = useRef(null);
|
|
51
|
+
const cancelScheduledInspection = () => {
|
|
52
|
+
if (timerRef.current !== null) {
|
|
53
|
+
clearTimeout(timerRef.current);
|
|
54
|
+
timerRef.current = null;
|
|
55
|
+
}
|
|
56
|
+
if (revisionFrameRef.current !== null) {
|
|
57
|
+
cancelAnimationFrame(revisionFrameRef.current);
|
|
58
|
+
revisionFrameRef.current = null;
|
|
59
|
+
}
|
|
60
|
+
if (revisionSecondFrameRef.current !== null) {
|
|
61
|
+
cancelAnimationFrame(revisionSecondFrameRef.current);
|
|
62
|
+
revisionSecondFrameRef.current = null;
|
|
63
|
+
}
|
|
64
|
+
if (revisionThirdFrameRef.current !== null) {
|
|
65
|
+
cancelAnimationFrame(revisionThirdFrameRef.current);
|
|
66
|
+
revisionThirdFrameRef.current = null;
|
|
67
|
+
}
|
|
68
|
+
if (revisionWarmFrameRef.current !== null) {
|
|
69
|
+
cancelAnimationFrame(revisionWarmFrameRef.current);
|
|
70
|
+
revisionWarmFrameRef.current = null;
|
|
71
|
+
}
|
|
72
|
+
if (stableFrameRef.current !== null) {
|
|
73
|
+
cancelAnimationFrame(stableFrameRef.current);
|
|
74
|
+
stableFrameRef.current = null;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const resolveSync = () => {
|
|
78
|
+
const current = latest.current;
|
|
79
|
+
lastSelectionResolveAtRef.current = performance.now();
|
|
80
|
+
setView(inspectStableView(current.session, current.selected, current.state, current.includeDocumentTokens, inspectAuthoredElements(current.session, current.selected, current.state)));
|
|
81
|
+
};
|
|
82
|
+
const resolveSplit = () => {
|
|
83
|
+
const current = latest.current;
|
|
84
|
+
// Post-commit refresh: the authored cascade resolves in this task and the
|
|
85
|
+
// secondary stable cascade continues one frame later. Rapid successive
|
|
86
|
+
// edits therefore cancel the pending refresh (revision bumps reschedule)
|
|
87
|
+
// instead of finding a long blocking task already running, and the two
|
|
88
|
+
// resolution sweeps never block one task for their combined duration.
|
|
89
|
+
// The view still commits once, with the same data and ordering.
|
|
90
|
+
const elements = inspectAuthoredElements(current.session, current.selected, current.state);
|
|
91
|
+
stableFrameRef.current = requestAnimationFrame(() => {
|
|
92
|
+
stableFrameRef.current = null;
|
|
93
|
+
setView(inspectStableView(current.session, current.selected, current.state, current.includeDocumentTokens, elements));
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
const scheduleSelectionInspection = () => {
|
|
97
|
+
cancelScheduledInspection();
|
|
98
|
+
// Leading-edge resolve: a selection change resolves immediately instead
|
|
99
|
+
// of always waiting out the debounce. Rapid re-selections inside the
|
|
100
|
+
// trailing window still coalesce onto one trailing resolve, so the final
|
|
101
|
+
// view is identical and repeated selections cannot stack full sweeps.
|
|
102
|
+
const sinceLast = performance.now() - lastSelectionResolveAtRef.current;
|
|
103
|
+
if (sinceLast >= SELECTION_DEBOUNCE_MS) {
|
|
104
|
+
resolveSync();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
timerRef.current = setTimeout(() => {
|
|
108
|
+
timerRef.current = null;
|
|
109
|
+
resolveSync();
|
|
110
|
+
}, SELECTION_DEBOUNCE_MS - sinceLast);
|
|
111
|
+
};
|
|
112
|
+
const scheduleRevisionInspection = () => {
|
|
113
|
+
cancelScheduledInspection();
|
|
114
|
+
// Let the host commit and paint before refreshing the inspector
|
|
115
|
+
// projection. The extra frames keep the refresh start past the gap
|
|
116
|
+
// between rapid successive edits, so a new revision cancels the pending
|
|
117
|
+
// refresh instead of colliding with a running one, and they give the
|
|
118
|
+
// stylesheet walk its own frame so no single refresh task blocks for the
|
|
119
|
+
// combined duration of the walk plus a cascade sweep.
|
|
120
|
+
revisionFrameRef.current = requestAnimationFrame(() => {
|
|
121
|
+
revisionFrameRef.current = null;
|
|
122
|
+
revisionSecondFrameRef.current = requestAnimationFrame(() => {
|
|
123
|
+
revisionSecondFrameRef.current = null;
|
|
124
|
+
revisionThirdFrameRef.current = requestAnimationFrame(() => {
|
|
125
|
+
revisionThirdFrameRef.current = null;
|
|
126
|
+
latest.current.session.prewarmRules?.();
|
|
127
|
+
revisionWarmFrameRef.current = requestAnimationFrame(() => {
|
|
128
|
+
revisionWarmFrameRef.current = null;
|
|
129
|
+
resolveSplit();
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
scheduleSelectionInspection();
|
|
137
|
+
return cancelScheduledInspection;
|
|
138
|
+
}, [includeDocumentTokens, selectedElements, state, session]);
|
|
139
|
+
useEffect(() => session.subscribe(scheduleRevisionInspection), [session]);
|
|
140
|
+
// Warm the CSSOM rule snapshot during idle time so the first selection does
|
|
141
|
+
// not pay the stylesheet walk inside its own interaction. The idle timeout
|
|
142
|
+
// bounds the wait without competing with page-load paint; the walk is
|
|
143
|
+
// idempotent per stylesheet revision, so this is a no-op once warm.
|
|
144
|
+
const prewarmedSessionRef = useRef(null);
|
|
145
|
+
useEffect(() => {
|
|
146
|
+
if (prewarmedSessionRef.current === session)
|
|
147
|
+
return;
|
|
148
|
+
prewarmedSessionRef.current = session;
|
|
149
|
+
const ownerWindow = selectedDocument.defaultView;
|
|
150
|
+
const warm = () => session.prewarmRules?.();
|
|
151
|
+
if (ownerWindow && typeof ownerWindow.requestIdleCallback === "function") {
|
|
152
|
+
const idleId = ownerWindow.requestIdleCallback(() => warm(), { timeout: 2000 });
|
|
153
|
+
return () => ownerWindow.cancelIdleCallback(idleId);
|
|
154
|
+
}
|
|
155
|
+
const timeoutId = setTimeout(warm, 200);
|
|
156
|
+
return () => clearTimeout(timeoutId);
|
|
157
|
+
}, [session, selectedDocument]);
|
|
158
|
+
return view;
|
|
159
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import type { DropGuideRect } from "./dropGuide.js";
|
|
3
|
+
export interface ViewportDropGuide {
|
|
4
|
+
orientation: "horizontal" | "vertical";
|
|
5
|
+
line: DropGuideRect;
|
|
6
|
+
target?: DropGuideRect;
|
|
7
|
+
}
|
|
8
|
+
interface DropGuideOverlayProps {
|
|
9
|
+
guide: ViewportDropGuide | null;
|
|
10
|
+
lineClassName: string;
|
|
11
|
+
lineTestId: string;
|
|
12
|
+
targetClassName?: string;
|
|
13
|
+
targetTestId?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Shared visual wrapper; each view only supplies its projected viewport geometry. */
|
|
16
|
+
export declare function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }: DropGuideOverlayProps): ReactElement | null;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
function fixedRect(rect) {
|
|
3
|
+
return {
|
|
4
|
+
position: "fixed",
|
|
5
|
+
left: rect.left,
|
|
6
|
+
top: rect.top,
|
|
7
|
+
width: rect.width,
|
|
8
|
+
height: rect.height,
|
|
9
|
+
pointerEvents: "none",
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/** Shared visual wrapper; each view only supplies its projected viewport geometry. */
|
|
13
|
+
export function DropGuideOverlay({ guide, lineClassName, lineTestId, targetClassName, targetTestId, }) {
|
|
14
|
+
if (!guide)
|
|
15
|
+
return null;
|
|
16
|
+
return (_jsxs(_Fragment, { children: [guide.target && targetClassName && targetTestId ? (_jsx("div", { className: targetClassName, "data-test": targetTestId, style: fixedRect(guide.target), "aria-hidden": "true" })) : null, _jsx("div", { className: lineClassName, "data-test": lineTestId, "data-orientation": guide.orientation, style: fixedRect(guide.line), "aria-hidden": "true" })] }));
|
|
17
|
+
}
|