import type { IframeWidgetNode } from '../schema'; import { pickUrlLike } from './urlLike'; /** * goView iframe option shape varies across versions. * Keep it permissive and normalize the common fields. */ export interface GoViewIframeOption { dataset?: unknown; src?: unknown; url?: unknown; borderRadius?: number; } /** * Back-compat alias (older code used "LegacyIframeOption"). */ export type LegacyIframeOption = GoViewIframeOption; function pickSrc(option: GoViewIframeOption): string { // Prefer the whole option first (covers iframeUrl/embedUrl variants directly on the object). return pickUrlLike(option) || pickUrlLike(option.dataset) || pickUrlLike(option.src) || pickUrlLike(option.url); } export function convertGoViewIframeOptionToNodeProps(option: GoViewIframeOption): IframeWidgetNode['props'] { return { src: pickSrc(option), borderRadius: option.borderRadius, }; } /** * Back-compat export. */ export const convertLegacyIframeOptionToNodeProps = convertGoViewIframeOptionToNodeProps;