import React, { forwardRef, useMemo } from 'react'; import MainContainer from '../MainContainer/MainContainer'; import { ResourceBrowserInputProps } from '../ResourceBrowserInput/ResourceBrowserInput'; import { ModalTrigger } from '@squiz/resource-browser-ui-lib'; import { InlineLoadingErrorState } from './InlineLoadingErrorState/InlineLoadingErrorState'; import { ImageInline } from '../Icons/ImageInline'; import { LinkInline } from '../Icons/LinkInline'; import { InlineType } from '../types'; import { AdsClickIcon } from '../Icons/AdsClickIcon'; export type ResourceBrowserInlineButtonProps = ResourceBrowserInputProps & { inlineType: InlineType; onRetry: () => void; }; export const ResourceBrowserInlineButton = forwardRef((props, forwardRef) => { const { inlineType, modalTitle, allowedTypes, onChange, onRetry, value, useResource, isDisabled, plugin, pluginMode, searchEnabled, source, sources, isLoading, error, setSource, isModalOpen, onModalStateChange, } = props; // If an error happens loading the resource the inline browser just opens without it as if no preselectedResource is provided const { data: resource, isLoading: isResourceLoading } = useResource(value || null, source); const inlineTypePickerLabels = useMemo( () => ({ image: 'Change image', link: 'Change link', resource: 'Change resource', }), [inlineType], ); const inlineTypePickerIcons = useMemo( () => ({ image: , link: , resource: , }), [inlineType], ); return (
{(onClose, titleProps) => ( <> {(isLoading || isResourceLoading || error) && ( )} {!(isLoading || isResourceLoading) && !error && ( )} )}
{inlineTypePickerLabels[inlineType]}
); });