import type { WidgetFrameAppearance } from "../host/widget-frame-appearance.js"; import type { WidgetLayoutTransitionPolicy } from "../host/widget-layout-transition-plan.js"; export const VIEW_HOST_BOOTSTRAP_GLOBAL_KEY = "__getuserfeedback_view_host_bootstrap" as const; export const VIEW_HOST_BOOTSTRAP_PROTOCOL_VERSION = "v1" as const; export const VIEW_HOST_BOOTSTRAP_READY_EVENT_NAME = "getuserfeedback:view-host-bootstrap:ready" as const; export const VIEW_HOST_BOOTSTRAP_REQUIRED_FRAGMENT = `getuserfeedback-view-host-bootstrap=${VIEW_HOST_BOOTSTRAP_PROTOCOL_VERSION}` as const; export const VIEW_HOST_BOOTSTRAP_CAPABILITIES = { RESOLVED_FRAME_BORDER: "gx.view-host.frame-appearance.resolved-border.v1", RESOLVED_FRAME_BORDER_RADIUS: "gx.view-host.frame-appearance.resolved-border-radius.v1", RESOLVED_FRAME_BOX_SHADOW: "gx.view-host.frame-appearance.resolved-box-shadow.v1", } as const; export type ViewHostBootstrapCapability = (typeof VIEW_HOST_BOOTSTRAP_CAPABILITIES)[keyof typeof VIEW_HOST_BOOTSTRAP_CAPABILITIES]; export const VIEW_HOST_PLACEMENTS = ["docked-top", "docked-bottom"] as const; export type ViewHostPlacement = (typeof VIEW_HOST_PLACEMENTS)[number]; export type ViewHostConnectionConfig = { viewId: string; generation: number; }; export type ViewHostConnection = { connect: () => Promise; disconnect: () => Promise; requestClose: () => Promise; postViewSize: (measurement: ViewSizeReport) => Promise; post: (message: unknown) => Promise; }; export type CreateViewHostConnection = (options: { config: ViewHostConnectionConfig; onError?: (error: Error) => void; onMessage?: (message: unknown) => void; }) => ViewHostConnection; /** The full report a view posts on the sizing channel. */ export type ViewSizeReport = { width: number; height: number; intrinsicWidth: number; viewportRevision?: string; frameAppearance?: WidgetFrameAppearance; placement?: ViewHostPlacement; transitionPolicy?: WidgetLayoutTransitionPolicy; layoutTransactionId?: string; }; export type ViewHostBootstrapMarker = { protocolVersion: typeof VIEW_HOST_BOOTSTRAP_PROTOCOL_VERSION; capabilities?: readonly string[]; createViewHostConnection: CreateViewHostConnection; };