import React, { useCallback, useState } from 'react';
import { get } from 'lodash';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
import pluginId from '../../pluginId';
import useDataManager from '../../hooks/useDataManager';
import DynamicComponentCard from '../DynamicComponentCard';
import FieldComponent from '../FieldComponent';
import Button from './Button';
import ComponentsPicker from './ComponentsPicker';
import ComponentWrapper from './ComponentWrapper';
import Label from './Label';
import RoundCTA from './RoundCTA';
import Wrapper from './Wrapper';
const DynamicZone = ({ name }) => {
const [isOpen, setIsOpen] = useState(false);
const [isOver, setIsOver] = useState(false);
const {
addComponentToDynamicZone,
// allLayoutData,
layout,
modifiedData,
moveComponentUp,
moveComponentDown,
removeComponentFromDynamicZone,
} = useDataManager();
const getDynamicDisplayedComponents = useCallback(() => {
return get(modifiedData, [name], []).map(data => data.__component);
}, [modifiedData, name]);
// const getDynamicComponentSchemaData = useCallback(
// compoUid => {
// return get(allLayoutData, ['components', compoUid], {});
// },
// [allLayoutData]
// );
const dynamicZoneAvailableComponents = get(
layout,
['schema', 'attributes', name, 'components'],
[]
);
const displayInfo = isOver && !isOpen;
const handleMouseEvent = () => setIsOver(prev => !prev);
const metas = get(layout, ['metadatas', name, 'edit'], {});
const dynamicDisplayedComponentsLength = getDynamicDisplayedComponents()
.length;
return (
<>
{getDynamicDisplayedComponents().length > 0 && (
)}
{getDynamicDisplayedComponents().map((componentUid, index) => {
// TODO when available
// const icon = getDynamicComponentSchemaData(componentUid);
const showDownIcon =
dynamicDisplayedComponentsLength > 0 &&
index < dynamicDisplayedComponentsLength - 1;
const showUpIcon = dynamicDisplayedComponentsLength > 0 && index > 0;
return (
(TEMP: {componentUid})
{showDownIcon && (
moveComponentDown(name, index)}
>
)}
{showUpIcon && (
moveComponentUp(name, index)}
>
)}
removeComponentFromDynamicZone(name, index)}
>
);
})}
>
);
};
DynamicZone.propTypes = {
name: PropTypes.string.isRequired,
};
export { DynamicZone };
export default DynamicZone;