ComponentFactory
A helper class implementing the UI component (view) factory.
It allows functions producing specific UI components to be registered under their unique names in the factory. A registered component can be then instantiated by providing its name. Note that the names are case insensitive.
// The editor provides localization tools for the factory.
const factory = new ComponentFactory( editor );
factory.add( 'foo', locale => new FooView( locale ) );
factory.add( 'bar', locale => new BarView( locale ) );
// An instance of FooView.
const fooInstance = factory.create( 'foo' );
// Names are case insensitive so this is also allowed:
const barInstance = factory.create( 'Bar' );
The editor locale is passed to the factory
function when create is called.
Properties
-
module:ui/componentfactory~ComponentFactory#editorThe editor instance that the factory belongs to.
-
_components : Map<string, object>privatereadonlymodule:ui/componentfactory~ComponentFactory#_componentsRegistered component factories.
Methods
-
constructor( editor )module:ui/componentfactory~ComponentFactory#constructor -
add( name, callback ) → voidmodule:ui/componentfactory~ComponentFactory#addRegisters a component factory function that will be used by the create method and called with the editor locale as an argument, allowing localization of the view.
Parameters
name : stringThe name of the component.
callback : ( locale: Locale ) => ViewThe callback that returns the component.
Returns
void
-
module:ui/componentfactory~ComponentFactory#createCreates an instance of a component registered in the factory under a specific name.
When called, the editor locale is passed to the previously added factory function, allowing localization of the view.
Parameters
name : stringThe name of the component.
Returns
ViewThe instantiated component view.
-
has( name ) → booleanmodule:ui/componentfactory~ComponentFactory#hasChecks if a component of a given name is registered in the factory.
Parameters
name : stringThe name of the component.
Returns
boolean
-
names() → IterableIterator<string>module:ui/componentfactory~ComponentFactory#namesReturns an iterator of registered component names. Names are returned in lower case.
Returns
IterableIterator<string>