mirror of
https://github.com/Tencent/tmagic-editor.git
synced 2025-05-20 04:59:22 +08:00
77 lines
1.8 KiB
TypeScript
77 lines
1.8 KiB
TypeScript
import React from 'react';
|
|
|
|
import { useApp } from '@tmagic/react-runtime-help';
|
|
import type { Id, MComponent, MNode } from '@tmagic/schema';
|
|
|
|
interface PageFragmentContainerProps {
|
|
config: MComponent;
|
|
className: string;
|
|
style: Record<string, any>;
|
|
id: string;
|
|
containerIndex: number;
|
|
iteratorIndex: number[];
|
|
iteratorContainerId: Id[];
|
|
}
|
|
|
|
const PageFragmentContainer: React.FC<PageFragmentContainerProps> = ({
|
|
config,
|
|
id,
|
|
style,
|
|
className,
|
|
containerIndex,
|
|
iteratorIndex,
|
|
iteratorContainerId,
|
|
}) => {
|
|
const { app } = useApp({
|
|
config,
|
|
methods: {},
|
|
});
|
|
|
|
if (!app) return null;
|
|
|
|
let containerConfig = {};
|
|
const fragment = app?.dsl?.items?.find((page) => page.id === config.pageFragmentId);
|
|
if (fragment) {
|
|
const { id, type, items, ...others } = fragment;
|
|
const itemsWithoutId = items.map((item: MNode) => {
|
|
const { id, ...otherConfig } = item;
|
|
return otherConfig;
|
|
});
|
|
if (app?.platform === 'editor') {
|
|
containerConfig = {
|
|
...others,
|
|
items: itemsWithoutId,
|
|
};
|
|
} else {
|
|
containerConfig = {
|
|
...others,
|
|
items,
|
|
};
|
|
}
|
|
}
|
|
|
|
const MagicUiContainer = app.resolveComponent('container');
|
|
|
|
const classNames = ['magic-ui-page-fragment-container'];
|
|
if (className) {
|
|
classNames.push(className);
|
|
}
|
|
|
|
return (
|
|
<div
|
|
data-tmagic-id={`${id || ''}`}
|
|
data-container-index={containerIndex}
|
|
data-tmagic-iterator-index={iteratorIndex}
|
|
data-tmagic-iterator-container-id={iteratorContainerId}
|
|
className={classNames.join(' ')}
|
|
style={style}
|
|
>
|
|
<MagicUiContainer config={containerConfig}></MagicUiContainer>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
PageFragmentContainer.displayName = 'magic-ui-page-fragment-container';
|
|
|
|
export default PageFragmentContainer;
|