/**
 * 插件注册管理
 *
 * 插件通过 registerPlugin 注册后按 priority 排序执行（数值越小越先执行）。
 * NormalTableView / Detail View 通过 getRegisteredPlugins() 获取只读快照。
 */
const DEFAULT_PRIORITY = 100;
/** 内部可变列表，外部不应直接消费 */
const _plugins = [];
/**
 * @deprecated 直接使用可变数组已废弃，请改用 getRegisteredPlugins() 获取只读快照。
 * 保留仅为向后兼容；后续版本将移除。
 */
export const registeredPlugins = _plugins;
/**
 * 注册插件。同名插件会被覆盖。
 * @param priority - 执行优先级，数值越小越先执行，默认 100
 */
export function registerPlugin(name, render, priority = DEFAULT_PRIORITY) {
    const entry = { name, render, priority };
    const existingIndex = _plugins.findIndex((p) => p.name === name);
    if (existingIndex >= 0) {
        _plugins[existingIndex] = entry;
    }
    else {
        _plugins.push(entry);
    }
}
export function unregisterPlugin(name) {
    const index = _plugins.findIndex((p) => p.name === name);
    if (index >= 0) {
        _plugins.splice(index, 1);
    }
}
/**
 * 获取按 priority 排序的只读插件快照。
 */
export function getRegisteredPlugins() {
    return [..._plugins].sort((a, b) => a.priority - b.priority);
}
export function clearPlugins() {
    _plugins.length = 0;
}
