import { SavedSuperGroup, type SavedSuperGroupProps } from '../saved-super-group'; import { createGroupReference, type GroupReference } from './group'; import { defineComponent, detachedManifestScope, type ComponentDefinition } from './component'; export type DefinedSavedSuperGroupProps = Omit & { apiName: `${string}__c`; }; /** Define a saved SUPERGROUP, identified by its company-local API name. */ export function defineSavedSuperGroup(props: DefinedSavedSuperGroupProps): DefinedSavedSuperGroup { return savedSuperGroupComponent.register(new DefinedSavedSuperGroup(props), props); } export class DefinedSavedSuperGroup extends SavedSuperGroup { constructor(props: DefinedSavedSuperGroupProps) { super(detachedManifestScope, props); } withId(groupId: string): GroupReference { return createGroupReference(groupId); } } const savedSuperGroupComponent: ComponentDefinition = defineComponent({ type: 'SUPERGROUP', define: defineSavedSuperGroup, references: (definition) => () => definition.getReferencedGroups(), });