mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
refactor(extensions): align editors API naming with commands/views, add description to all contribution types (#38475)
This commit is contained in:
committed by
GitHub
parent
03ad1789f0
commit
5fb9e17721
@@ -41,7 +41,7 @@ Superset uses text editors in various places throughout the application:
|
||||
| `python` | Custom Python editor contexts |
|
||||
| `text` | Plain text editor contexts |
|
||||
|
||||
By registering an editor provider for a language, your extension replaces the default Ace editor in **all** locations that use that language.
|
||||
By registering an editor for a language, your extension replaces the default Ace editor in **all** locations that use that language.
|
||||
|
||||
## Implementing an Editor
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ export interface Command {
|
||||
/** The icon associated with the command. */
|
||||
icon?: string;
|
||||
/** A description of what the command does. */
|
||||
description: string;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -513,17 +513,17 @@ export interface EditorProvider {
|
||||
}
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is registered.
|
||||
* Event fired when an editor is registered.
|
||||
*/
|
||||
export interface EditorProviderRegisteredEvent {
|
||||
/** The registered provider */
|
||||
provider: EditorProvider;
|
||||
export interface EditorRegisteredEvent {
|
||||
/** The descriptor of the editor that was registered */
|
||||
editor: Editor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is unregistered.
|
||||
* Event fired when an editor is unregistered.
|
||||
*/
|
||||
export interface EditorProviderUnregisteredEvent {
|
||||
export interface EditorUnregisteredEvent {
|
||||
/** The descriptor of the editor that was unregistered */
|
||||
editor: Editor;
|
||||
}
|
||||
@@ -557,7 +557,7 @@ export declare function registerEditor(
|
||||
* @param language The language to get an editor for
|
||||
* @returns The editor provider or undefined if no extension provides one
|
||||
*/
|
||||
export declare function getEditorProvider(
|
||||
export declare function getEditor(
|
||||
language: EditorLanguage,
|
||||
): EditorProvider | undefined;
|
||||
|
||||
@@ -567,21 +567,21 @@ export declare function getEditorProvider(
|
||||
* @param language The language to check
|
||||
* @returns True if an extension provides an editor for this language
|
||||
*/
|
||||
export declare function hasEditorProvider(language: EditorLanguage): boolean;
|
||||
export declare function hasEditor(language: EditorLanguage): boolean;
|
||||
|
||||
/**
|
||||
* Get all registered editor providers.
|
||||
*
|
||||
* @returns Array of all registered editor providers
|
||||
*/
|
||||
export declare function getAllEditorProviders(): EditorProvider[];
|
||||
export declare function getAllEditors(): EditorProvider[];
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is registered.
|
||||
* Event fired when an editor is registered.
|
||||
*/
|
||||
export declare const onDidRegisterEditorProvider: Event<EditorProviderRegisteredEvent>;
|
||||
export declare const onDidRegisterEditor: Event<EditorRegisteredEvent>;
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is unregistered.
|
||||
* Event fired when an editor is unregistered.
|
||||
*/
|
||||
export declare const onDidUnregisterEditorProvider: Event<EditorProviderUnregisteredEvent>;
|
||||
export declare const onDidUnregisterEditor: Event<EditorUnregisteredEvent>;
|
||||
|
||||
@@ -47,6 +47,8 @@ export interface MenuItem {
|
||||
view: string;
|
||||
/** The command to execute when this menu item is selected. */
|
||||
command: string;
|
||||
/** Optional description of the menu item, for display in contribution manifests. */
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -46,6 +46,8 @@ export interface View {
|
||||
id: string;
|
||||
/** The display name of the view. */
|
||||
name: string;
|
||||
/** Optional description of the view, for display in contribution manifests. */
|
||||
description?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,7 +61,7 @@ const useEditorProvider = (language: EditorLanguage) => {
|
||||
|
||||
// Subscribe to provider changes
|
||||
const registerDisposable = manager.onDidRegister(event => {
|
||||
if (event.provider.editor.languages.includes(language)) {
|
||||
if (event.editor.languages.includes(language)) {
|
||||
updateProvider();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -204,10 +204,7 @@ test('fires onDidRegister event when provider is registered', () => {
|
||||
|
||||
expect(listener).toHaveBeenCalledTimes(1);
|
||||
expect(listener).toHaveBeenCalledWith({
|
||||
provider: {
|
||||
editor,
|
||||
component,
|
||||
},
|
||||
editor,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ type EditorLanguage = editors.EditorLanguage;
|
||||
type EditorProvider = editors.EditorProvider;
|
||||
type Editor = editors.Editor;
|
||||
type EditorComponent = editors.EditorComponent;
|
||||
type EditorProviderRegisteredEvent = editors.EditorProviderRegisteredEvent;
|
||||
type EditorProviderUnregisteredEvent = editors.EditorProviderUnregisteredEvent;
|
||||
type EditorRegisteredEvent = editors.EditorRegisteredEvent;
|
||||
type EditorUnregisteredEvent = editors.EditorUnregisteredEvent;
|
||||
|
||||
/**
|
||||
* Listener function type for events.
|
||||
@@ -86,13 +86,12 @@ class EditorProviders {
|
||||
/**
|
||||
* Event emitter for provider registration events.
|
||||
*/
|
||||
private registerEmitter = new EventEmitter<EditorProviderRegisteredEvent>();
|
||||
private registerEmitter = new EventEmitter<EditorRegisteredEvent>();
|
||||
|
||||
/**
|
||||
* Event emitter for provider unregistration events.
|
||||
*/
|
||||
private unregisterEmitter =
|
||||
new EventEmitter<EditorProviderUnregisteredEvent>();
|
||||
private unregisterEmitter = new EventEmitter<EditorUnregisteredEvent>();
|
||||
|
||||
// eslint-disable-next-line no-useless-constructor
|
||||
private constructor() {
|
||||
@@ -145,7 +144,7 @@ class EditorProviders {
|
||||
});
|
||||
|
||||
// Fire registration event
|
||||
this.registerEmitter.fire({ provider });
|
||||
this.registerEmitter.fire({ editor });
|
||||
|
||||
// Return disposable for cleanup
|
||||
return new Disposable(() => {
|
||||
@@ -214,9 +213,7 @@ class EditorProviders {
|
||||
* @param listener The listener function.
|
||||
* @returns A Disposable to unsubscribe.
|
||||
*/
|
||||
public onDidRegister(
|
||||
listener: Listener<EditorProviderRegisteredEvent>,
|
||||
): Disposable {
|
||||
public onDidRegister(listener: Listener<EditorRegisteredEvent>): Disposable {
|
||||
return this.registerEmitter.subscribe(listener);
|
||||
}
|
||||
|
||||
@@ -226,7 +223,7 @@ class EditorProviders {
|
||||
* @returns A Disposable to unsubscribe.
|
||||
*/
|
||||
public onDidUnregister(
|
||||
listener: Listener<EditorProviderUnregisteredEvent>,
|
||||
listener: Listener<EditorUnregisteredEvent>,
|
||||
): Disposable {
|
||||
return this.unregisterEmitter.subscribe(listener);
|
||||
}
|
||||
|
||||
@@ -32,9 +32,8 @@ type EditorLanguage = editorsApi.EditorLanguage;
|
||||
type Editor = editorsApi.Editor;
|
||||
type EditorProvider = editorsApi.EditorProvider;
|
||||
type EditorComponent = editorsApi.EditorComponent;
|
||||
type EditorProviderRegisteredEvent = editorsApi.EditorProviderRegisteredEvent;
|
||||
type EditorProviderUnregisteredEvent =
|
||||
editorsApi.EditorProviderUnregisteredEvent;
|
||||
type EditorRegisteredEvent = editorsApi.EditorRegisteredEvent;
|
||||
type EditorUnregisteredEvent = editorsApi.EditorUnregisteredEvent;
|
||||
|
||||
/**
|
||||
* Register an editor provider as a module-level side effect.
|
||||
@@ -60,7 +59,7 @@ export const registerEditor = (
|
||||
* @param language The language to get an editor for
|
||||
* @returns The editor provider or undefined if no extension provides one
|
||||
*/
|
||||
export const getEditorProvider = (
|
||||
export const getEditor = (
|
||||
language: EditorLanguage,
|
||||
): EditorProvider | undefined => {
|
||||
const manager = EditorProviders.getInstance();
|
||||
@@ -73,7 +72,7 @@ export const getEditorProvider = (
|
||||
* @param language The language to check
|
||||
* @returns True if an extension provides an editor for this language
|
||||
*/
|
||||
export const hasEditorProvider = (language: EditorLanguage): boolean => {
|
||||
export const hasEditor = (language: EditorLanguage): boolean => {
|
||||
const manager = EditorProviders.getInstance();
|
||||
return manager.hasProvider(language);
|
||||
};
|
||||
@@ -83,28 +82,28 @@ export const hasEditorProvider = (language: EditorLanguage): boolean => {
|
||||
*
|
||||
* @returns Array of all registered editor providers
|
||||
*/
|
||||
export const getAllEditorProviders = (): EditorProvider[] => {
|
||||
export const getAllEditors = (): EditorProvider[] => {
|
||||
const manager = EditorProviders.getInstance();
|
||||
return manager.getAllProviders();
|
||||
};
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is registered.
|
||||
* Event fired when an editor is registered.
|
||||
* Subscribe to this event to react when extensions register new editors.
|
||||
*/
|
||||
export const onDidRegisterEditorProvider = (
|
||||
listener: (e: EditorProviderRegisteredEvent) => void,
|
||||
export const onDidRegisterEditor = (
|
||||
listener: (e: EditorRegisteredEvent) => void,
|
||||
): Disposable => {
|
||||
const manager = EditorProviders.getInstance();
|
||||
return manager.onDidRegister(listener);
|
||||
};
|
||||
|
||||
/**
|
||||
* Event fired when an editor provider is unregistered.
|
||||
* Event fired when an editor is unregistered.
|
||||
* Subscribe to this event to react when extensions unregister editors.
|
||||
*/
|
||||
export const onDidUnregisterEditorProvider = (
|
||||
listener: (e: EditorProviderUnregisteredEvent) => void,
|
||||
export const onDidUnregisterEditor = (
|
||||
listener: (e: EditorUnregisteredEvent) => void,
|
||||
): Disposable => {
|
||||
const manager = EditorProviders.getInstance();
|
||||
return manager.onDidUnregister(listener);
|
||||
@@ -115,11 +114,11 @@ export const onDidUnregisterEditorProvider = (
|
||||
*/
|
||||
export const editors: typeof editorsApi = {
|
||||
registerEditor,
|
||||
getEditorProvider,
|
||||
hasEditorProvider,
|
||||
getAllEditorProviders,
|
||||
onDidRegisterEditorProvider,
|
||||
onDidUnregisterEditorProvider,
|
||||
getEditor,
|
||||
hasEditor,
|
||||
getAllEditors,
|
||||
onDidRegisterEditor,
|
||||
onDidUnregisterEditor,
|
||||
};
|
||||
|
||||
export { EditorProviders };
|
||||
|
||||
Reference in New Issue
Block a user