import React, { useState, useCallback } from 'react'; import styled from 'styled-components'; import { injectIntl, InjectedIntlProps } from 'react-intl'; import { DN50, N0 } from '@atlaskit/theme/colors'; import { themed } from '@atlaskit/theme/components'; import { borderRadius } from '@atlaskit/theme/constants'; import { QuickInsertItem } from '@atlaskit/editor-common/provider-factory'; import Button from '@atlaskit/button/custom-theme-button'; import Modal, { ModalFooter, ModalTransition, FooterComponentProps, } from '@atlaskit/modal-dialog'; import QuestionCircleIcon from '@atlaskit/icon/glyph/question-circle'; import ElementBrowser from './components/ElementBrowserLoader'; import { getCategories } from './categories'; import { MODAL_WRAPPER_PADDING } from './constants'; import { messages } from './messages'; export interface State { isOpen: boolean; } export interface Props { getItems: (query?: string, category?: string) => QuickInsertItem[]; onInsertItem: (item: QuickInsertItem) => void; isOpen?: boolean; onClose: () => void; helpUrl?: string | undefined; } const ModalElementBrowser = (props: Props & InjectedIntlProps) => { const [selectedItem, setSelectedItem] = useState(); const { helpUrl, intl } = props; const onSelectItem = useCallback( (item: QuickInsertItem) => { setSelectedItem(item); }, [setSelectedItem], ); const onInsertItem = useCallback( (item: QuickInsertItem) => { props.onInsertItem(item); }, [props], ); const RenderFooter = useCallback( (footerProps: FooterComponentProps) => (