import React, { useEffect, useState } from 'react'; import { observer } from 'mobx-react-lite'; import { CustomFieldsWidgetContextProvider } from '../CustomFieldsWidgetContext'; import { useCustomFieldsWidget } from '../../hooks/useCustomFieldsWidget'; import { CustomFieldsWidgetInline } from './CustomFieldsWidgetInline'; import { CustomFieldsWidgetCard } from './CustomFieldsWidgetCard'; import { CustomFieldsWidgetBaseProps, CustomFieldsWidgetProps } from './types'; import { runInAction } from 'mobx'; import { CustomFieldsWidgetCommonComponents } from './CustomFieldsWidgetCommonComponents'; interface CustomFieldsWidgetWithoutStateProps extends Omit { state?: never; fqdn: string; } const _CustomFieldsWidgetBase = ({ subtitle, dataHook, hideEmptyState, emptyStateOverrides = {}, state, theme = 'card', onChange, extendedFields, }: CustomFieldsWidgetBaseProps) => { useState(() => { runInAction(() => { state._extendedFields = extendedFields; }); }); useEffect(() => { runInAction(() => { state._extendedFields = extendedFields; }); }, [extendedFields]); const hideWidget = hideEmptyState && (state.isLoading || state.dataExtension.availableCustomFields.length === 0); return ( {!hideWidget && (theme === 'card' ? ( ) : ( ))} ); }; const CustomFieldsWidgetBase = observer(_CustomFieldsWidgetBase); const _CustomFieldsWidgetWithoutState = ( props: CustomFieldsWidgetWithoutStateProps, ) => { const state = useCustomFieldsWidget(props); return ; }; const CustomFieldsWidgetWithoutState = observer( _CustomFieldsWidgetWithoutState, ); const _CustomFieldsWidget = (props: CustomFieldsWidgetProps) => { return props.state ? ( ) : ( ); }; export const CustomFieldsWidget = observer(_CustomFieldsWidget);