import { FieldSchema } from '@ephox/boulder'; import { Fun } from '@ephox/katamari'; import { NoState } from '../../behaviour/common/BehaviourState'; import { type AlloyEventKeyAndHandler, type AlloyEventRecord, derive } from '../events/AlloyEvents'; import { type AlloyBehaviour, create as createBehaviour, type NamedConfiguredBehaviour } from './Behaviour'; // AlloyEventKeyAndHandler type argument needs to be any here to satisfy an array of handlers // where each item can be any subtype of EventFormat we can't use since // then each item would have to be the same type const events = (name: string, eventHandlers: Array>): AlloyBehaviour => { const events: AlloyEventRecord = derive(eventHandlers); return createBehaviour({ fields: [ FieldSchema.required('enabled') ], name, active: { events: Fun.constant(events) } }); }; const config = (name: string, eventHandlers: Array>): NamedConfiguredBehaviour => { const me = events(name, eventHandlers); return { key: name, value: { config: { }, me, configAsRaw: Fun.constant({ }), initialConfig: { }, state: NoState } }; }; export { events, config };