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,119 @@
|
|
|
1
|
+
import type { TokenCatalogDiagnostic, TokenDefinition, TokenEntry } from "../../css/model/index.js";
|
|
2
|
+
import type { ComponentContract } from "../componentSemantics/types.js";
|
|
3
|
+
/** The host Adapter that supplied the active inspector runtime. */
|
|
4
|
+
export type NudgeUiRuntimeHost = "vite-react" | "static-html" | "nextjs-react" | "astro";
|
|
5
|
+
/** The framework semantics enabled for the active inspector runtime. */
|
|
6
|
+
export type NudgeUiRuntimeFramework = "React" | "HTML" | "Astro";
|
|
7
|
+
/**
|
|
8
|
+
* Which identity origins carry exact authored coordinates in prompts
|
|
9
|
+
* (ADR-0011 Stage 5).
|
|
10
|
+
*
|
|
11
|
+
* A host whose pipeline captures `data-src` positions from anything other
|
|
12
|
+
* than the authored source declares the exact subset. Hosts that omit the
|
|
13
|
+
* policy state that every source site is exact.
|
|
14
|
+
*/
|
|
15
|
+
export interface SourceCoordinatePolicy {
|
|
16
|
+
/** Cid prefixes whose `data-src` line:column point at authored source. */
|
|
17
|
+
readonly exactCidPrefixes: readonly string[];
|
|
18
|
+
/** File extensions whose `data-src` line:column point at authored source. */
|
|
19
|
+
readonly exactFileExtensions: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
/** Capabilities exposed by the active host Adapter. */
|
|
22
|
+
export interface NudgeUiRuntimeCapabilities {
|
|
23
|
+
/** Whether the multi-page Canvas workspace is available. */
|
|
24
|
+
readonly canvas: boolean;
|
|
25
|
+
/** Whether framework component inspection and prop overrides are available. */
|
|
26
|
+
readonly componentSemantics: boolean;
|
|
27
|
+
/** Whether the experimental DOM navigation section is available. */
|
|
28
|
+
readonly domNavigation?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Source-coordinate precision policy for prompts; every source site is
|
|
31
|
+
* exact when the host omits it.
|
|
32
|
+
*/
|
|
33
|
+
readonly sourceCoordinates?: SourceCoordinatePolicy;
|
|
34
|
+
/**
|
|
35
|
+
* Regex source matching this host's structural scoping markers, stripped
|
|
36
|
+
* from human-facing selector labels (ADR-0011). The raw selector stays in
|
|
37
|
+
* change records so managed-rule targeting keeps matching the rendered
|
|
38
|
+
* DOM. No stripping when the host omits it.
|
|
39
|
+
*/
|
|
40
|
+
readonly scopingSelectorPattern?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Browser knowledge supplied by a host Adapter before the inspector mounts.
|
|
44
|
+
*
|
|
45
|
+
* A host replaces the complete configuration when its document is replaced or
|
|
46
|
+
* its development transport is refreshed. Shared inspector Modules read the
|
|
47
|
+
* current snapshot through `getNudgeUiRuntimeConfig()` and never import a
|
|
48
|
+
* host-specific transport directly.
|
|
49
|
+
*/
|
|
50
|
+
export interface NudgeUiRuntimeConfig {
|
|
51
|
+
readonly projectId: string;
|
|
52
|
+
readonly host: NudgeUiRuntimeHost;
|
|
53
|
+
readonly framework: NudgeUiRuntimeFramework;
|
|
54
|
+
readonly stylingSystem: string;
|
|
55
|
+
readonly capabilities: NudgeUiRuntimeCapabilities;
|
|
56
|
+
readonly tokenCatalog: readonly TokenDefinition[];
|
|
57
|
+
readonly tokens: readonly TokenEntry[];
|
|
58
|
+
readonly tokenDiagnostics: readonly TokenCatalogDiagnostic[];
|
|
59
|
+
readonly tokenGeneration: string;
|
|
60
|
+
readonly componentContracts: readonly ComponentContract[];
|
|
61
|
+
/** Whether this runtime is the explicit public landing-page demo. */
|
|
62
|
+
readonly demo?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validates a host-supplied configuration and fills safe defaults.
|
|
66
|
+
*
|
|
67
|
+
* `projectId`, `host`, and `framework` are required identity fields; wrong
|
|
68
|
+
* types or values fail fast at the host seam instead of leaking `undefined`
|
|
69
|
+
* into storage keys or capability checks. Token arrays, the styling-system
|
|
70
|
+
* label, generation string, and capabilities are optional and default to
|
|
71
|
+
* empty/false values so a minimal host still bootstraps honestly.
|
|
72
|
+
*
|
|
73
|
+
* @param input The configuration supplied by a host Adapter.
|
|
74
|
+
* @returns A complete plain-data configuration ready to snapshot.
|
|
75
|
+
*/
|
|
76
|
+
export declare function normalizeNudgeUiRuntimeConfig(input: unknown): NudgeUiRuntimeConfig;
|
|
77
|
+
/**
|
|
78
|
+
* Replaces the complete runtime configuration for the active document.
|
|
79
|
+
*
|
|
80
|
+
* The input is validated and incomplete optional fields receive safe defaults
|
|
81
|
+
* (see `normalizeNudgeUiRuntimeConfig`). Replacement is atomic from the
|
|
82
|
+
* inspector's perspective. The returned snapshot owns recursively cloned and
|
|
83
|
+
* frozen plain data, so a host can safely replace its virtual module values
|
|
84
|
+
* during HMR without leaving shared Modules bound to an old transport object
|
|
85
|
+
* or freezing caller-owned values.
|
|
86
|
+
*/
|
|
87
|
+
export declare function configureNudgeUiRuntime(config: NudgeUiRuntimeConfig): void;
|
|
88
|
+
/** Returns the immutable runtime snapshot used by shared inspector Modules. */
|
|
89
|
+
export declare function getNudgeUiRuntimeConfig(): NudgeUiRuntimeConfig;
|
|
90
|
+
/**
|
|
91
|
+
* Whether this document runs the explicit public landing demo (ADR-0014 and
|
|
92
|
+
* ADR-0016). The plugin emits `demo: true` for the flagged demo route and for
|
|
93
|
+
* the explicit landing root in development and `nudge-demo` builds, so this is
|
|
94
|
+
* the precise runtime boundary of the demo — narrower than any build-mode
|
|
95
|
+
* name.
|
|
96
|
+
*/
|
|
97
|
+
export declare function isDemoRuntime(): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Returns the active host's source-coordinate policy, or null when the host
|
|
100
|
+
* declares none — every source site is exact in that case.
|
|
101
|
+
*/
|
|
102
|
+
export declare function getSourceCoordinatePolicy(): SourceCoordinatePolicy | null;
|
|
103
|
+
/**
|
|
104
|
+
* Returns the active host's structural scoping-marker pattern compiled for
|
|
105
|
+
* global replacement, or null when the host declares none. An invalid regex
|
|
106
|
+
* source degrades to no stripping rather than breaking labeling.
|
|
107
|
+
*/
|
|
108
|
+
export declare function getScopingSelectorPattern(): RegExp | null;
|
|
109
|
+
/**
|
|
110
|
+
* Subscribes to complete runtime replacements, such as Vite HMR updates.
|
|
111
|
+
* Listeners run after the new snapshot is installed.
|
|
112
|
+
*/
|
|
113
|
+
export declare function subscribeNudgeUiRuntime(listener: () => void): () => void;
|
|
114
|
+
/** Returns the styling-system label represented by a token inventory. */
|
|
115
|
+
export declare function detectStylingSystem(tokens: readonly TokenEntry[]): string;
|
|
116
|
+
/** Returns a mutable container for UI controls that require array props. */
|
|
117
|
+
export declare function getNudgeUiTokenEntries(): TokenEntry[];
|
|
118
|
+
export type { TokenCatalogDiagnostic, TokenDefinition, TokenEntry } from "../../css/model/index.js";
|
|
119
|
+
export type { ComponentContract } from "../componentSemantics/types.js";
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
function cloneAndFreeze(value, seen = new WeakMap()) {
|
|
2
|
+
if (value === null || typeof value !== "object")
|
|
3
|
+
return value;
|
|
4
|
+
const source = value;
|
|
5
|
+
const existing = seen.get(source);
|
|
6
|
+
if (existing)
|
|
7
|
+
return existing;
|
|
8
|
+
// An already-frozen subtree is immutable, so it can be reused by reference.
|
|
9
|
+
// Repeated configuration with the same frozen payload (HMR re-runs, stub
|
|
10
|
+
// spread patterns) keeps array identity stable for identity-keyed caches.
|
|
11
|
+
if (Object.isFrozen(value)) {
|
|
12
|
+
seen.set(source, value);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(value)) {
|
|
16
|
+
const copy = [];
|
|
17
|
+
seen.set(source, copy);
|
|
18
|
+
for (const item of value)
|
|
19
|
+
copy.push(cloneAndFreeze(item, seen));
|
|
20
|
+
return Object.freeze(copy);
|
|
21
|
+
}
|
|
22
|
+
const copy = {};
|
|
23
|
+
seen.set(source, copy);
|
|
24
|
+
for (const [key, child] of Object.entries(value)) {
|
|
25
|
+
copy[key] = cloneAndFreeze(child, seen);
|
|
26
|
+
}
|
|
27
|
+
return Object.freeze(copy);
|
|
28
|
+
}
|
|
29
|
+
const DEFAULT_RUNTIME_CONFIG = cloneAndFreeze({
|
|
30
|
+
projectId: "/stub/project",
|
|
31
|
+
host: "vite-react",
|
|
32
|
+
framework: "React",
|
|
33
|
+
stylingSystem: "CSS custom properties",
|
|
34
|
+
capabilities: { canvas: true, componentSemantics: true, domNavigation: false },
|
|
35
|
+
tokenCatalog: [],
|
|
36
|
+
tokens: [],
|
|
37
|
+
tokenDiagnostics: [],
|
|
38
|
+
tokenGeneration: "",
|
|
39
|
+
componentContracts: [],
|
|
40
|
+
});
|
|
41
|
+
const RUNTIME_HOSTS = [
|
|
42
|
+
"vite-react",
|
|
43
|
+
"static-html",
|
|
44
|
+
"nextjs-react",
|
|
45
|
+
"astro",
|
|
46
|
+
];
|
|
47
|
+
const RUNTIME_FRAMEWORKS = [
|
|
48
|
+
"React",
|
|
49
|
+
"HTML",
|
|
50
|
+
"Astro",
|
|
51
|
+
];
|
|
52
|
+
const normalizedRuntimeConfigs = new WeakSet();
|
|
53
|
+
function isNormalizedRuntimeConfig(
|
|
54
|
+
// Callers first narrow this value to a non-null object at the runtime boundary.
|
|
55
|
+
// oxlint-disable-next-line anti-slop/no-object-parameters
|
|
56
|
+
value) {
|
|
57
|
+
return normalizedRuntimeConfigs.has(value);
|
|
58
|
+
}
|
|
59
|
+
function isPlainRecord(value) {
|
|
60
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
61
|
+
}
|
|
62
|
+
function requireString(input, field) {
|
|
63
|
+
const value = input[field];
|
|
64
|
+
if (typeof value === "string" && value.length > 0)
|
|
65
|
+
return value;
|
|
66
|
+
throw new TypeError(`Nudge UI runtime configuration requires a non-empty string "${field}"; received ${value === undefined ? "undefined" : JSON.stringify(value)}.`);
|
|
67
|
+
}
|
|
68
|
+
function requireEnum(input, field, allowed) {
|
|
69
|
+
const value = input[field];
|
|
70
|
+
if (typeof value === "string" && allowed.includes(value))
|
|
71
|
+
return value;
|
|
72
|
+
throw new TypeError(`Nudge UI runtime configuration requires "${field}" to be one of ${allowed.map((candidate) => JSON.stringify(candidate)).join(", ")}; received ${value === undefined ? "undefined" : JSON.stringify(value)}.`);
|
|
73
|
+
}
|
|
74
|
+
function optionalString(input, field) {
|
|
75
|
+
const value = input[field];
|
|
76
|
+
if (value === undefined)
|
|
77
|
+
return "";
|
|
78
|
+
if (typeof value !== "string") {
|
|
79
|
+
throw new TypeError(`Nudge UI runtime configuration field "${field}" must be a string.`);
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
function optionalArray(input, field) {
|
|
84
|
+
const value = input[field];
|
|
85
|
+
if (value === undefined)
|
|
86
|
+
return [];
|
|
87
|
+
if (!Array.isArray(value)) {
|
|
88
|
+
throw new TypeError(`Nudge UI runtime configuration field "${field}" must be an array.`);
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
function optionalBoolean(input, field) {
|
|
93
|
+
const value = input[field];
|
|
94
|
+
if (value === undefined)
|
|
95
|
+
return false;
|
|
96
|
+
if (typeof value !== "boolean") {
|
|
97
|
+
throw new TypeError(`Nudge UI runtime capability "${field}" must be a boolean; received ${JSON.stringify(value)}.`);
|
|
98
|
+
}
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
function optionalNonEmptyString(input, field) {
|
|
102
|
+
const value = input[field];
|
|
103
|
+
if (value === undefined)
|
|
104
|
+
return undefined;
|
|
105
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
106
|
+
throw new TypeError(`Nudge UI runtime configuration field "${field}" must be a non-empty string.`);
|
|
107
|
+
}
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
function optionalStringArray(input, field) {
|
|
111
|
+
const value = input[field];
|
|
112
|
+
if (value === undefined)
|
|
113
|
+
return undefined;
|
|
114
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
|
|
115
|
+
throw new TypeError(`Nudge UI runtime configuration field "${field}" must be an array of strings.`);
|
|
116
|
+
}
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
function normalizeSourceCoordinatePolicy(input) {
|
|
120
|
+
const policy = input.sourceCoordinates;
|
|
121
|
+
if (policy === undefined)
|
|
122
|
+
return undefined;
|
|
123
|
+
if (!isPlainRecord(policy)) {
|
|
124
|
+
throw new TypeError('Nudge UI runtime capability "sourceCoordinates" must be an object.');
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
exactCidPrefixes: optionalStringArray(policy, "exactCidPrefixes") ?? [],
|
|
128
|
+
exactFileExtensions: optionalStringArray(policy, "exactFileExtensions") ?? [],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function normalizeCapabilities(input) {
|
|
132
|
+
if (input === undefined)
|
|
133
|
+
return { canvas: false, componentSemantics: false, domNavigation: false };
|
|
134
|
+
if (!isPlainRecord(input)) {
|
|
135
|
+
throw new TypeError('Nudge UI runtime configuration field "capabilities" must be an object.');
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
canvas: optionalBoolean(input, "canvas"),
|
|
139
|
+
componentSemantics: optionalBoolean(input, "componentSemantics"),
|
|
140
|
+
domNavigation: optionalBoolean(input, "domNavigation"),
|
|
141
|
+
sourceCoordinates: normalizeSourceCoordinatePolicy(input),
|
|
142
|
+
scopingSelectorPattern: optionalNonEmptyString(input, "scopingSelectorPattern"),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function optionalDemoFlag(input) {
|
|
146
|
+
const value = input.demo;
|
|
147
|
+
if (value === undefined || value === false)
|
|
148
|
+
return undefined;
|
|
149
|
+
if (value !== true) {
|
|
150
|
+
throw new TypeError(`Nudge UI runtime configuration field "demo" must be a boolean; received ${JSON.stringify(value)}.`);
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validates a host-supplied configuration and fills safe defaults.
|
|
156
|
+
*
|
|
157
|
+
* `projectId`, `host`, and `framework` are required identity fields; wrong
|
|
158
|
+
* types or values fail fast at the host seam instead of leaking `undefined`
|
|
159
|
+
* into storage keys or capability checks. Token arrays, the styling-system
|
|
160
|
+
* label, generation string, and capabilities are optional and default to
|
|
161
|
+
* empty/false values so a minimal host still bootstraps honestly.
|
|
162
|
+
*
|
|
163
|
+
* @param input The configuration supplied by a host Adapter.
|
|
164
|
+
* @returns A complete plain-data configuration ready to snapshot.
|
|
165
|
+
*/
|
|
166
|
+
export function normalizeNudgeUiRuntimeConfig(input) {
|
|
167
|
+
if (!isPlainRecord(input)) {
|
|
168
|
+
throw new TypeError("Nudge UI runtime configuration must be an object.");
|
|
169
|
+
}
|
|
170
|
+
if (isNormalizedRuntimeConfig(input))
|
|
171
|
+
return input;
|
|
172
|
+
const demo = optionalDemoFlag(input);
|
|
173
|
+
const normalized = cloneAndFreeze({
|
|
174
|
+
projectId: requireString(input, "projectId"),
|
|
175
|
+
host: requireEnum(input, "host", RUNTIME_HOSTS),
|
|
176
|
+
framework: requireEnum(input, "framework", RUNTIME_FRAMEWORKS),
|
|
177
|
+
stylingSystem: optionalString(input, "stylingSystem"),
|
|
178
|
+
capabilities: normalizeCapabilities(input.capabilities),
|
|
179
|
+
tokenCatalog: optionalArray(input, "tokenCatalog"),
|
|
180
|
+
tokens: optionalArray(input, "tokens"),
|
|
181
|
+
tokenDiagnostics: optionalArray(input, "tokenDiagnostics"),
|
|
182
|
+
tokenGeneration: optionalString(input, "tokenGeneration"),
|
|
183
|
+
componentContracts: optionalArray(input, "componentContracts"),
|
|
184
|
+
...(demo === true ? { demo: true } : {}),
|
|
185
|
+
});
|
|
186
|
+
normalizedRuntimeConfigs.add(normalized);
|
|
187
|
+
return normalized;
|
|
188
|
+
}
|
|
189
|
+
let activeRuntimeConfig = DEFAULT_RUNTIME_CONFIG;
|
|
190
|
+
const runtimeListeners = new Set();
|
|
191
|
+
/**
|
|
192
|
+
* Replaces the complete runtime configuration for the active document.
|
|
193
|
+
*
|
|
194
|
+
* The input is validated and incomplete optional fields receive safe defaults
|
|
195
|
+
* (see `normalizeNudgeUiRuntimeConfig`). Replacement is atomic from the
|
|
196
|
+
* inspector's perspective. The returned snapshot owns recursively cloned and
|
|
197
|
+
* frozen plain data, so a host can safely replace its virtual module values
|
|
198
|
+
* during HMR without leaving shared Modules bound to an old transport object
|
|
199
|
+
* or freezing caller-owned values.
|
|
200
|
+
*/
|
|
201
|
+
export function configureNudgeUiRuntime(config) {
|
|
202
|
+
activeRuntimeConfig = normalizeNudgeUiRuntimeConfig(config);
|
|
203
|
+
for (const listener of runtimeListeners) {
|
|
204
|
+
try {
|
|
205
|
+
listener();
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// A runtime listener must not prevent the host from replacing config.
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** Returns the immutable runtime snapshot used by shared inspector Modules. */
|
|
213
|
+
export function getNudgeUiRuntimeConfig() {
|
|
214
|
+
return activeRuntimeConfig;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Whether this document runs the explicit public landing demo (ADR-0014 and
|
|
218
|
+
* ADR-0016). The plugin emits `demo: true` for the flagged demo route and for
|
|
219
|
+
* the explicit landing root in development and `nudge-demo` builds, so this is
|
|
220
|
+
* the precise runtime boundary of the demo — narrower than any build-mode
|
|
221
|
+
* name.
|
|
222
|
+
*/
|
|
223
|
+
export function isDemoRuntime() {
|
|
224
|
+
return getNudgeUiRuntimeConfig().demo === true;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Returns the active host's source-coordinate policy, or null when the host
|
|
228
|
+
* declares none — every source site is exact in that case.
|
|
229
|
+
*/
|
|
230
|
+
export function getSourceCoordinatePolicy() {
|
|
231
|
+
return activeRuntimeConfig.capabilities.sourceCoordinates ?? null;
|
|
232
|
+
}
|
|
233
|
+
let compiledScopingPattern = null;
|
|
234
|
+
/**
|
|
235
|
+
* Returns the active host's structural scoping-marker pattern compiled for
|
|
236
|
+
* global replacement, or null when the host declares none. An invalid regex
|
|
237
|
+
* source degrades to no stripping rather than breaking labeling.
|
|
238
|
+
*/
|
|
239
|
+
export function getScopingSelectorPattern() {
|
|
240
|
+
const source = activeRuntimeConfig.capabilities.scopingSelectorPattern;
|
|
241
|
+
if (source === undefined)
|
|
242
|
+
return null;
|
|
243
|
+
if (compiledScopingPattern?.source !== source) {
|
|
244
|
+
try {
|
|
245
|
+
compiledScopingPattern = { source, pattern: new RegExp(source, "g") };
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
compiledScopingPattern = { source, pattern: null };
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return compiledScopingPattern.pattern;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Subscribes to complete runtime replacements, such as Vite HMR updates.
|
|
255
|
+
* Listeners run after the new snapshot is installed.
|
|
256
|
+
*/
|
|
257
|
+
export function subscribeNudgeUiRuntime(listener) {
|
|
258
|
+
runtimeListeners.add(listener);
|
|
259
|
+
return () => runtimeListeners.delete(listener);
|
|
260
|
+
}
|
|
261
|
+
/** Returns the styling-system label represented by a token inventory. */
|
|
262
|
+
export function detectStylingSystem(tokens) {
|
|
263
|
+
for (const token of tokens) {
|
|
264
|
+
if (token.adapter === "vanilla-extract")
|
|
265
|
+
return "vanilla-extract (sprinkles)";
|
|
266
|
+
if (token.adapter === "tailwind-v3")
|
|
267
|
+
return "Tailwind v3";
|
|
268
|
+
if (token.adapter === "tailwind-v4")
|
|
269
|
+
return "Tailwind v4";
|
|
270
|
+
}
|
|
271
|
+
return "CSS custom properties";
|
|
272
|
+
}
|
|
273
|
+
/** Returns a mutable container for UI controls that require array props. */
|
|
274
|
+
export function getNudgeUiTokenEntries() {
|
|
275
|
+
return [...activeRuntimeConfig.tokens];
|
|
276
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source identity reserved for elements created by a static HTML page after
|
|
3
|
+
* the server's source-preserving pass has completed.
|
|
4
|
+
*
|
|
5
|
+
* The value intentionally does not match `file:line:column`. It is a
|
|
6
|
+
* document-local selector identity, not a claim about source location.
|
|
7
|
+
*/
|
|
8
|
+
export declare const RUNTIME_UNKNOWN_SOURCE_PREFIX = "nudge-ui:unknown:";
|
|
9
|
+
export declare const RUNTIME_ELEMENT_CID_PREFIX = "nudge-ui-runtime-";
|
|
10
|
+
/** Maximum length retained for any runtime DOM evidence field. */
|
|
11
|
+
export declare const RUNTIME_EVIDENCE_MAX_LENGTH = 120;
|
|
12
|
+
/** Bounds an untrusted runtime evidence string without changing its content. */
|
|
13
|
+
export declare function boundRuntimeEvidence(value: string | null): string | null;
|
|
14
|
+
/** Normalizes rendered text before it becomes durable runtime evidence. */
|
|
15
|
+
export declare function normalizeRuntimeText(value: string | null): string | null;
|
|
16
|
+
/** Keeps a runtime tag suitable for the prompt's inline element notation. */
|
|
17
|
+
export declare function normalizeRuntimeTag(value: string): string;
|
|
18
|
+
/** Returns true for the source values generated for runtime DOM. */
|
|
19
|
+
export declare function isRuntimeGeneratedSource(src: string | null | undefined): boolean;
|
|
20
|
+
/** Returns whether this document-local element received generated identity. */
|
|
21
|
+
export declare function isRuntimeCreatedElement(element: Element | null | undefined): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Installs document-local identity for eligible elements that a static HTML
|
|
24
|
+
* application creates at runtime.
|
|
25
|
+
*
|
|
26
|
+
* The server owns source locations for the initial response. This Adapter
|
|
27
|
+
* only fills missing attributes, observes added subtrees, and leaves the
|
|
28
|
+
* author document untouched on disk. The returned function disconnects the
|
|
29
|
+
* observer; generated attributes remain available to managed CSS until the
|
|
30
|
+
* page is replaced.
|
|
31
|
+
*/
|
|
32
|
+
export declare function installStaticHtmlRuntimeIdentity(doc?: Document): () => void;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source identity reserved for elements created by a static HTML page after
|
|
3
|
+
* the server's source-preserving pass has completed.
|
|
4
|
+
*
|
|
5
|
+
* The value intentionally does not match `file:line:column`. It is a
|
|
6
|
+
* document-local selector identity, not a claim about source location.
|
|
7
|
+
*/
|
|
8
|
+
export const RUNTIME_UNKNOWN_SOURCE_PREFIX = "nudge-ui:unknown:";
|
|
9
|
+
export const RUNTIME_ELEMENT_CID_PREFIX = "nudge-ui-runtime-";
|
|
10
|
+
/** Maximum length retained for any runtime DOM evidence field. */
|
|
11
|
+
export const RUNTIME_EVIDENCE_MAX_LENGTH = 120;
|
|
12
|
+
/** Bounds an untrusted runtime evidence string without changing its content. */
|
|
13
|
+
export function boundRuntimeEvidence(value) {
|
|
14
|
+
return value === null ? null : value.slice(0, RUNTIME_EVIDENCE_MAX_LENGTH);
|
|
15
|
+
}
|
|
16
|
+
/** Normalizes rendered text before it becomes durable runtime evidence. */
|
|
17
|
+
export function normalizeRuntimeText(value) {
|
|
18
|
+
if (value === null)
|
|
19
|
+
return null;
|
|
20
|
+
const normalized = value.replace(/\s+/g, " ").trim();
|
|
21
|
+
return normalized ? boundRuntimeEvidence(normalized) : null;
|
|
22
|
+
}
|
|
23
|
+
/** Keeps a runtime tag suitable for the prompt's inline element notation. */
|
|
24
|
+
export function normalizeRuntimeTag(value) {
|
|
25
|
+
return boundRuntimeEvidence(value.trim().toLowerCase().replace(/[^a-z0-9-]+/g, "")) ?? "";
|
|
26
|
+
}
|
|
27
|
+
const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
|
|
28
|
+
const DOCUMENT_STRUCTURE_TAGS = new Set(["HTML", "HEAD", "BODY"]);
|
|
29
|
+
const EXCLUDED_SUBTREE_TAGS = new Set([
|
|
30
|
+
"SCRIPT",
|
|
31
|
+
"STYLE",
|
|
32
|
+
"TEMPLATE",
|
|
33
|
+
"NOSCRIPT",
|
|
34
|
+
]);
|
|
35
|
+
const runtimeCreatedElements = new WeakSet();
|
|
36
|
+
/** Returns true for the source values generated for runtime DOM. */
|
|
37
|
+
export function isRuntimeGeneratedSource(src) {
|
|
38
|
+
return typeof src === "string" && src.startsWith(RUNTIME_UNKNOWN_SOURCE_PREFIX);
|
|
39
|
+
}
|
|
40
|
+
/** Returns whether this document-local element received generated identity. */
|
|
41
|
+
export function isRuntimeCreatedElement(element) {
|
|
42
|
+
return element !== null && element !== undefined && runtimeCreatedElements.has(element);
|
|
43
|
+
}
|
|
44
|
+
function isElement(node) {
|
|
45
|
+
return node.nodeType === 1;
|
|
46
|
+
}
|
|
47
|
+
function isEligibleElement(element) {
|
|
48
|
+
if (element.namespaceURI !== HTML_NAMESPACE)
|
|
49
|
+
return false;
|
|
50
|
+
if (DOCUMENT_STRUCTURE_TAGS.has(element.tagName))
|
|
51
|
+
return false;
|
|
52
|
+
let current = element;
|
|
53
|
+
while (current) {
|
|
54
|
+
if (current.namespaceURI !== HTML_NAMESPACE)
|
|
55
|
+
return false;
|
|
56
|
+
if (EXCLUDED_SUBTREE_TAGS.has(current.tagName))
|
|
57
|
+
return false;
|
|
58
|
+
if (current.id === "nudge-ui-root")
|
|
59
|
+
return false;
|
|
60
|
+
current = current.parentElement;
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
function existingAttributeValues(doc, name) {
|
|
65
|
+
return new Set(Array.from(doc.querySelectorAll(`[${name}]`))
|
|
66
|
+
.map((element) => element.getAttribute(name))
|
|
67
|
+
.filter((value) => value !== null));
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Installs document-local identity for eligible elements that a static HTML
|
|
71
|
+
* application creates at runtime.
|
|
72
|
+
*
|
|
73
|
+
* The server owns source locations for the initial response. This Adapter
|
|
74
|
+
* only fills missing attributes, observes added subtrees, and leaves the
|
|
75
|
+
* author document untouched on disk. The returned function disconnects the
|
|
76
|
+
* observer; generated attributes remain available to managed CSS until the
|
|
77
|
+
* page is replaced.
|
|
78
|
+
*/
|
|
79
|
+
export function installStaticHtmlRuntimeIdentity(doc = document) {
|
|
80
|
+
const usedCids = existingAttributeValues(doc, "data-cid");
|
|
81
|
+
const usedSources = existingAttributeValues(doc, "data-src");
|
|
82
|
+
let nextId = 1;
|
|
83
|
+
let disposed = false;
|
|
84
|
+
function nextIdentity() {
|
|
85
|
+
while (true) {
|
|
86
|
+
const id = nextId++;
|
|
87
|
+
const cid = `${RUNTIME_ELEMENT_CID_PREFIX}${id}`;
|
|
88
|
+
const src = `${RUNTIME_UNKNOWN_SOURCE_PREFIX}${id}`;
|
|
89
|
+
if (usedCids.has(cid) || usedSources.has(src))
|
|
90
|
+
continue;
|
|
91
|
+
usedCids.add(cid);
|
|
92
|
+
usedSources.add(src);
|
|
93
|
+
return { cid, src };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function ensureIdentity(element) {
|
|
97
|
+
if (!isEligibleElement(element))
|
|
98
|
+
return;
|
|
99
|
+
const needsCid = element.getAttribute("data-cid") === null;
|
|
100
|
+
const needsSource = element.getAttribute("data-src") === null;
|
|
101
|
+
if (!needsCid && !needsSource)
|
|
102
|
+
return;
|
|
103
|
+
const identity = nextIdentity();
|
|
104
|
+
if (needsCid)
|
|
105
|
+
element.setAttribute("data-cid", identity.cid);
|
|
106
|
+
if (needsSource)
|
|
107
|
+
element.setAttribute("data-src", identity.src);
|
|
108
|
+
runtimeCreatedElements.add(element);
|
|
109
|
+
}
|
|
110
|
+
function scanSubtree(node) {
|
|
111
|
+
if (disposed)
|
|
112
|
+
return;
|
|
113
|
+
if (isElement(node)) {
|
|
114
|
+
ensureIdentity(node);
|
|
115
|
+
for (const descendant of Array.from(node.querySelectorAll("*"))) {
|
|
116
|
+
ensureIdentity(descendant);
|
|
117
|
+
}
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (node.nodeType === 11) {
|
|
121
|
+
// SAFETY: nodeType 11 is DOCUMENT_FRAGMENT_NODE, so the node is a DocumentFragment by the DOM spec.
|
|
122
|
+
for (const descendant of Array.from(node.querySelectorAll("*"))) {
|
|
123
|
+
ensureIdentity(descendant);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const scanRoot = doc.body ?? doc.documentElement;
|
|
128
|
+
if (scanRoot)
|
|
129
|
+
scanSubtree(scanRoot);
|
|
130
|
+
const MutationObserverConstructor = doc.defaultView?.MutationObserver ?? globalThis.MutationObserver;
|
|
131
|
+
if (!MutationObserverConstructor || !doc.documentElement) {
|
|
132
|
+
return () => {
|
|
133
|
+
disposed = true;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
const observer = new MutationObserverConstructor((records) => {
|
|
137
|
+
for (const record of records) {
|
|
138
|
+
for (const node of Array.from(record.addedNodes))
|
|
139
|
+
scanSubtree(node);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
observer.observe(doc.documentElement, { childList: true, subtree: true });
|
|
143
|
+
return () => {
|
|
144
|
+
if (disposed)
|
|
145
|
+
return;
|
|
146
|
+
disposed = true;
|
|
147
|
+
observer.disconnect();
|
|
148
|
+
};
|
|
149
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { NudgeUiRuntimeConfig } from "./runtimeConfig.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reads the immutable runtime snapshot reactively.
|
|
4
|
+
*
|
|
5
|
+
* Components that render runtime-derived UI (token catalogs, capability
|
|
6
|
+
* gating) must use this hook instead of the plain getter, so a host that
|
|
7
|
+
* atomically replaces the configuration during HMR or a dev-transport
|
|
8
|
+
* refresh re-renders the subscribed tree with the new snapshot.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useNudgeUiRuntimeConfig(): NudgeUiRuntimeConfig;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
import { getNudgeUiRuntimeConfig, subscribeNudgeUiRuntime, } from "./runtimeConfig.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reads the immutable runtime snapshot reactively.
|
|
5
|
+
*
|
|
6
|
+
* Components that render runtime-derived UI (token catalogs, capability
|
|
7
|
+
* gating) must use this hook instead of the plain getter, so a host that
|
|
8
|
+
* atomically replaces the configuration during HMR or a dev-transport
|
|
9
|
+
* refresh re-renders the subscribed tree with the new snapshot.
|
|
10
|
+
*/
|
|
11
|
+
export function useNudgeUiRuntimeConfig() {
|
|
12
|
+
return useSyncExternalStore(subscribeNudgeUiRuntime, getNudgeUiRuntimeConfig);
|
|
13
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { EditScope } from "../editScope.js";
|
|
2
|
+
import type { RenderedInstanceOverride } from "../changes/editModel.js";
|
|
3
|
+
export { sourceSiteSelector } from "./sourceSite.js";
|
|
4
|
+
export type { EditScope };
|
|
5
|
+
export interface InstanceEvidence {
|
|
6
|
+
renderedIndex: number;
|
|
7
|
+
props: string | null;
|
|
8
|
+
text: string | null;
|
|
9
|
+
ariaLabel: string | null;
|
|
10
|
+
}
|
|
11
|
+
/** Test hook: clears the memoized source-site match counts. */
|
|
12
|
+
export declare function resetSourceSiteMatchCounts(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Counts the rendered elements matching a source site. The result is memoized
|
|
15
|
+
* per (element identity, scope revision) so the selection render path no longer
|
|
16
|
+
* runs a full-document querySelectorAll on every render; it only recomputes
|
|
17
|
+
* when the caller's scope revision changes.
|
|
18
|
+
*/
|
|
19
|
+
export declare function countSourceSiteMatches(el: HTMLElement, revision?: number): number;
|
|
20
|
+
export declare function unlinkElement(el: HTMLElement): string | null;
|
|
21
|
+
export declare function relinkElement(el: HTMLElement): string | null;
|
|
22
|
+
export declare function getEditScope(el: HTMLElement): EditScope;
|
|
23
|
+
export interface BatchScopeFields {
|
|
24
|
+
scope: EditScope;
|
|
25
|
+
instanceOverride?: RenderedInstanceOverride;
|
|
26
|
+
}
|
|
27
|
+
/** Returns whether every element can be addressed safely by one batch edit. */
|
|
28
|
+
export declare function canPlanBatchEditScopes(selectedElements: readonly HTMLElement[]): boolean;
|
|
29
|
+
/** Resolves safe scopes immediately before a write is committed. */
|
|
30
|
+
export declare function planBatchEditScopes(selectedElements: readonly HTMLElement[]): ReadonlyMap<HTMLElement, BatchScopeFields> | null;
|
|
31
|
+
export declare function selectorForElement(el: HTMLElement): string | null;
|
|
32
|
+
export declare function getInstanceEvidence(el: HTMLElement): InstanceEvidence;
|