tachybase_todo/packages/plugins/map/src/client/block/index.tsx
Dunqing 471b319b86
fix(plugin-map): map block repeats (#1582)
* fix: map block repeats

* feat: update logic
2023-03-17 11:04:29 +08:00

42 lines
1.4 KiB
TypeScript

import {
SchemaComponent,
SchemaComponentOptions,
SchemaInitializerContext,
SchemaInitializerProvider,
} from '@nocobase/client';
import React, { useContext, useEffect } from 'react';
import { generateNTemplate } from '../locale';
import { MapActionInitializers } from './MapActionInitializers';
import { MapBlock } from './MapBlock';
import { MapBlockDesigner } from './MapBlockDesigner';
import { MapBlockInitializer } from './MapBlockInitializer';
import { MapBlockProvider, useMapBlockProps } from './MapBlockProvider';
export const MapBlockOptions: React.FC = (props) => {
const items = useContext(SchemaInitializerContext);
const children = items.BlockInitializers.items[0].children;
const schemaInitializer = useContext(SchemaInitializerContext);
useEffect(() => {
if (!children.find((item) => item.component === 'MapBlockInitializer')) {
children.push({
key: 'mapBlock',
type: 'item',
title: generateNTemplate('Map'),
component: 'MapBlockInitializer',
});
}
}, []);
return (
<SchemaInitializerProvider initializers={{ ...schemaInitializer, MapActionInitializers }}>
<SchemaComponentOptions
scope={{ useMapBlockProps }}
components={{ MapBlockInitializer, MapBlockDesigner, MapBlockProvider, MapBlock }}
>
{props.children}
</SchemaComponentOptions>
</SchemaInitializerProvider>
);
};