diff --git a/packages/core/src/module.ts b/packages/core/src/module.ts index b01cda80..339d03e1 100644 --- a/packages/core/src/module.ts +++ b/packages/core/src/module.ts @@ -15,9 +15,7 @@ export type Module = { type ModuleSpec = { properties: JSONSchema7; - events: { - name: string; - }[]; + events: string[]; stateMap: Record; }; @@ -45,12 +43,6 @@ export function createModule(options: CreateModuleOptions): RuntimeModule { exampleProperties: options.metadata.exampleProperties || {}, }, spec: { - // `json-schema-editor` has a readonly root object by default, - // it provides two schema formats,array({type:'array'}) and object({type:'object'}). - // In sunmao, we only use the object schema, so we need to specify a default value here - // and silently fail when root selects array. - // This is a bit obscure, so should remove the array type of root from the json-schema-editor later - // TODO remove the array type of root from the json-schema-editor properties: { type: 'object' }, events: [], stateMap: {}, diff --git a/packages/editor/src/components/Explorer/ExplorerForm/ModuleMetaDataForm.tsx b/packages/editor/src/components/Explorer/ExplorerForm/ModuleMetaDataForm.tsx index 6c59ca29..d285a056 100644 --- a/packages/editor/src/components/Explorer/ExplorerForm/ModuleMetaDataForm.tsx +++ b/packages/editor/src/components/Explorer/ExplorerForm/ModuleMetaDataForm.tsx @@ -22,9 +22,7 @@ export type ModuleMetaDataFormData = { version: string; stateMap: Record; properties: JSONSchema7; - events: { - name: string; - }[]; + events: string[]; exampleProperties: JSONSchema7Object; }; @@ -34,12 +32,11 @@ type ModuleMetaDataFormProps = { onSubmit?: (value: ModuleMetaDataFormData) => void; }; -const genEventsName = (events: { name: string }[]) => { +const genEventsName = (events: string[]) => { let count = events.length; let name = `event${count}`; - const eventNames = events.map(({ name }) => name); - while (eventNames.includes(name)) { + while (events.includes(name)) { name = `event${++count}`; } @@ -48,7 +45,7 @@ const genEventsName = (events: { name: string }[]) => { const EventInput: React.FC<{ name: string; - events: { name: string }[]; + events: string[]; index: number; onChange: (value: string) => void; }> = ({ name: defaultName, onChange, events, index }) => { @@ -69,7 +66,7 @@ const EventInput: React.FC<{ onBlur={() => { const newEvents = [...events]; newEvents.splice(index, 1); - if (newEvents.find(e => e.name === name)) { + if (newEvents.find(eventName => eventName === name)) { setIsRepeated(true); return; } @@ -173,20 +170,20 @@ export const ModuleMetaDataForm: React.FC = observer( Events - {formik.values.events.map((event, i) => { + {formik.values.events.map((eventName, i) => { return ( - + { const newEvents = produce(formik.values.events, draft => { - draft[i].name = newName; + draft[i] = newName; }); formik.setFieldValue('events', newEvents); formik.submitForm(); }} - name={event.name} + name={eventName} /> = observer(