import type { HTMLAttributes } from 'react';
import React, { memo, useEffect } from 'react';
import { useLoadPlatform } from './useLoadPlatform';
export interface ElfsightWidgetProps extends HTMLAttributes {
/**
* @deprecated since 1.1.0, please use widgetId instead
*
* Widget identifier (deprecated).
* Use `widgetId` instead.
*/
widgetID?: never;
/**
* Widget identifier.
* The unique identifier for the widget, obtained from the installation code.
* Example: `elfsight-app-85d18ddb-c202-421e-9a88-6c099d7a7833` → `85d18ddb-c202-421e-9a88-6c099d7a7833`.
*/
widgetId: string;
/**
* Enables lazy loading.
* Accepts a boolean or a mode.
*/
lazy?: boolean | NamedLazyMode;
}
export type NamedLazyMode =
| `default`
| 'first-activity'
| 'in-viewport'
| 'disabled';
export const ElfsightWidget = memo(function ElfsightWidget({
widgetId,
widgetID,
lazy,
className,
...forwardedProps
}: ElfsightWidgetProps) {
useEffect(() => {
if (widgetID) {
console.debug(
'Note that widgetID is deprecated since version 1.1.0. Please use widgetId instead.'
);
}
}, [widgetID]);
useLoadPlatform();
const finalWidgetId = widgetId ?? widgetID;
const widgetClassName = `elfsight-app-${finalWidgetId}`;
let effectiveLazy: string | undefined;
if (typeof lazy === 'boolean') {
effectiveLazy = lazy ? 'default' : undefined;
} else {
effectiveLazy = lazy;
}
return (
);
});