import React, { useContext, useMemo, useRef, useState } from 'react'; import { createForm } from '@formily/core'; import { SchemaOptionsContext, Schema, useFieldSchema, observer, SchemaExpressionScopeContext, FormProvider, ISchema, useField, useForm, RecursionField, } from '@formily/react'; import { useSchemaPath, SchemaField, useDesignable, removeSchema } from '../'; import get from 'lodash/get'; import { Button, Dropdown, Menu, Modal, Space } from 'antd'; import { MenuOutlined, DragOutlined } from '@ant-design/icons'; import cls from 'classnames'; import { FormLayout } from '@formily/antd'; import './style.less'; import AddNew from '../add-new'; import { DraggableBlockContext } from '../../components/drag-and-drop'; import { isGridRowOrCol } from '../grid'; import constate from 'constate'; import { useEffect } from 'react'; import { uid } from '@formily/shared'; import { getSchemaPath } from '../../components/schema-renderer'; import { useCollection, useCollectionContext } from '../../constate'; import { useTable } from '../table'; import { DragHandle } from '../../components/Sortable'; import { useCompile } from '../../hooks/useCompile'; export const DesignableBar = observer((props) => { const field = useField(); const { designable, schema, refresh, deepRemove } = useDesignable(); const [visible, setVisible] = useState(false); const { dragRef } = useContext(DraggableBlockContext); const { props: tableProps } = useTable(); const collectionName = field.componentProps?.collectionName || tableProps?.collectionName; const { collection } = useCollection({ collectionName }); const compile = useCompile(); return (