import { FormBuilder } from '../../components/FormBuilder/FormBuilder' import { generateColumnDefsFromModel } from '../../components/WebbaDataTable/utils' import { formsModel } from './model' import { createFormFromModel } from '../../components/Form/lib/createForm' import { createFormMenuSectionsFromModel, safeParse, } from '../../components/Form/utils/utils' import { useDispatch, useSelect } from '@wordpress/data' import { store, store_name } from '../../../store/backend' import { useSidebar } from '../../components/Sidebar/SidebarContext' import { useWbkTable } from '../../components/WebbaDataTable/hooks/useWbkTable' import { getCellActions } from '../../components/WebbaDataTable/helpers/getCellActions' import { Menu } from '../../components/WebbaDataTable/Menu' import { Form } from '../../components/Form/Form' import { __ } from '@wordpress/i18n' import { Table } from '../../components/WebbaDataTable/Table' import { useMemo } from 'react' import { ProFeatuerWrapper } from '../../components/ProFeatuerWrapper/ProFeatuerWrapper' import './FormBuilderScreen.scss' import { SuccessMessage } from '../../components/SuccessMessage/SuccessMessage' import noItemsImage from '../../../../public/images/bookings-empty.png' const columns = generateColumnDefsFromModel(formsModel) const form = createFormFromModel(formsModel) const formSections = createFormMenuSectionsFromModel({ model: formsModel, form, modelName: 'forms', }) export const FormBuilderScreen = () => { const { deleteItems, addItem, setToastNotification } = useDispatch(store) const sidebar = useSidebar() const { forms, isLoading } = useSelect( (select) => ({ forms: select(store).getItems('forms'), isLoading: select(store).getLoadingState('forms'), }), [] ) const { plugin_url, settings } = useSelect( // @ts-ignore (select) => select(store_name).getPreset(), [] ) const table = useWbkTable({ columns, data: forms, selectable: true, isAdmin: settings?.is_admin, renderMenu: ({ cell }) => { const { onDelete, onDuplicate, onSubmit } = getCellActions({ cell, collectionName: 'forms', }) return (