36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
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;
|