client/app/components/queries/editor-components/editorComponents.js (20 lines of code) (raw):

import { isArray, isNil, each } from "lodash"; const componentsRegistry = new Map(); export const QueryEditorComponents = { SCHEMA_BROWSER: "SchemaBrowser", QUERY_EDITOR: "QueryEditor", }; export function registerEditorComponent(componentName, component, dataSourceTypes) { if (isNil(dataSourceTypes)) { dataSourceTypes = [null]; // use `null` entry for the default set of components } if (!isArray(dataSourceTypes)) { dataSourceTypes = [dataSourceTypes]; } each(dataSourceTypes, dataSourceType => { componentsRegistry.set(dataSourceType, { ...componentsRegistry.get(dataSourceType), [componentName]: component }); }); } export function getEditorComponents(dataSourceType) { return { ...componentsRegistry.get(null), ...componentsRegistry.get(dataSourceType) }; }