Skip to content

PluginManifest

Static metadata about a plugin’s capabilities and requirements. Declared as a static property on plugin classes.

export class MyPlugin extends BaseGridPlugin<MyConfig> {
static override readonly manifest: PluginManifest<MyConfig> = {
ownedProperties: [
{ property: 'myProp', level: 'column', description: 'the "myProp" column property' },
],
configRules: [
{ id: 'my-plugin/invalid-combo', severity: 'warn', message: '...', check: (c) => c.a && c.b },
],
};
readonly name = 'myPlugin';
}
PropertyTypeDescription
ownedProperties?PluginPropertyDefinition[]Properties this plugin owns - validated by validate-config.ts. If a user uses one of these properties without loading the plugin, an error is thrown.
hookPriority?Partial<Record<HookName, number>>Hook execution priority (higher = later, default 0). Use negative values to run earlier, positive to run later.
configRules?PluginConfigRule<TConfig>[]Configuration validation rules - checked during grid initialization. Rules with severity ‘error’ throw, ‘warn’ logs to console.
incompatibleWith?PluginIncompatibility[]Plugins that are incompatible with this plugin. When both plugins are loaded together, a warning is shown.
queries?QueryDefinition[]Queries this plugin can handle. Declares what query types this plugin responds to via handleQuery(). This replaces the centralized PLUGIN_QUERIES approach with manifest-declared queries.
events?EventDefinition[]Events this plugin can emit. Declares what event types other plugins can subscribe to via on().
modifiesRowStructure?booleanWhether this plugin’s processRows hook injects or removes rows (group headers, tree nodes, pivot aggregates, placeholders, etc.).
incompatibleWith: [
{ name: 'tree', reason: 'Both transform the entire row model in different ways' },
],

queries: [
{ type: 'canMoveColumn', description: 'Check if a column can be moved' },
],

events: [
{ type: 'filter-change', description: 'Emitted when filter criteria change' },
],

AI assistants: For complete API documentation, implementation guides, and code examples for this library, see https://raw.githubusercontent.com/OysteinAmundsen/toolbox/main/llms-full.txt