@ryusei/code
Version:
<div align="center"> <a href="https://code.ryuseijs.com"> <img alt="RyuseiCode" src="https://code.ryuseijs.com/images/svg/logo.svg" width="70"> </a>
264 lines • 8.68 kB
TypeScript
import { Elements, EventBusCallback, Extensions, IconSettings, KeyMatcher, Language, LanguageConfig, Options, Position } from '@ryusei/code';
import { AnyFunction } from '@ryusei/light/dist/types/types';
import { Caret, Chunk, Code, ContextMenu, Edit, Input, Keymap, Measure, Range, Scope, Selection, Style, Sync, View } from '../../components';
import { Lines } from '../../components/Code/Lines';
import { Editor } from '../../core/Editor/Editor';
import { EventBus } from '../../event/EventBus';
/**
* The base class for a component.
*
* @since 0.1.0
*/
export declare class Component {
/**
* The EventBus instance.
* Use `on()`, `off()` and `emit()` methods instead of this.
*/
protected readonly event: EventBus<Editor>;
/**
* The collection of all options.
*/
protected readonly options: Options;
/**
* The Editor instance.
*/
protected Editor: Editor;
/**
* The Caret instance.
*/
protected Caret: Caret;
/**
* The Chunk instance.
*/
protected Chunk: Chunk;
/**
* The Code instance.
*/
protected Code: Code;
/**
* The ContextMenu instance.
*/
protected ContextMenu: ContextMenu;
/**
* The Edit instance.
*/
protected Edit: Edit;
/**
* The Input instance.
*/
protected Input: Input;
/**
* The Input instance.
*/
protected Keymap: Keymap;
/**
* The Measure instance.
*/
protected Measure: Measure;
/**
* The Range instance.
*/
protected Range: Range;
/**
* The Scope instance.
*/
protected Scope: Scope;
/**
* The Selection instance.
*/
protected Selection: Selection;
/**
* The Style instance.
*/
protected Style: Style;
/**
* The Sync instance.
*/
protected Sync: Sync;
/**
* The View instance.
*/
protected View: View;
/**
* The collection of essential editor elements.
*/
protected elements: Elements;
/**
* The Language object.
*/
protected language: Language;
/**
* The Component constructor.
*
* @param Editor - An Editor instance.
*/
constructor(Editor: Editor);
/**
* Called when the component is mounted.
*
* @param elements - A collection of editor elements.
*/
mount(elements: Elements): void;
/**
* Called when the editor is destroyed.
*
* @internal
*/
destroy(): void;
/**
* Attaches an event handler to an event or events with passing this instance as a key.
* They can only be detached by the `off()` member method.
*
* @param events - An event name, names split by spaces, or an array with names.
* @param callback - A callback function.
* @param thisArg - Optional. Specifies the `this` parameter of the callback function.
* @param priority - Optional. A priority number for the order in which the callbacks are invoked.
*/
protected on<F extends EventBusCallback>(events: string | string[], callback: EventBusCallback, thisArg?: ThisParameterType<F>, priority?: number): void;
/**
* Detaches handlers registered by `on()` without removing handlers attached by other components.
*
* @param events - An event name, names split by spaces, or an array with names.
*/
protected off(events: string | string[]): void;
/**
* Triggers handlers attached to the event.
*
* @param event - An event name.
* @param args - Optional. Any number of arguments to pass to callback functions.
*/
protected emit(event: string, ...args: any[]): void;
/**
* Listens to native events.
* This method stores all listeners and automatically removes them on destruction.
*
* @param elm - A document, a window or an element.
* @param events - An event name or names split by spaces.
* @param callback - A callback function.
* @param thisArg - Optional. Specifies the `this` parameter of the callback function.
*/
protected bind<F extends (e: Event) => void>(elm: Document | Window | Element, events: string, callback: F, thisArg?: ThisParameterType<F>): void;
/**
* Returns a Language or LanguageConfig object at the focus or specified position.
* This method can return different objects depending on the position
* if the language allows to embed other languages, such as HTML and PHP.
*
* @param position - Optional. Specifies the position to get the language at.
*
* @return A main Language object or sub language config object.
*/
protected getLanguage(position?: Position): Language | LanguageConfig;
/**
* Attempts to invoke the public method of the specified extension.
* In terms of the "loose coupling", you'd better try not to use this method.
* Using events is enough in most cases.
*
* @example
* ```ts
* // Attempts to show the "search" toolbar.
* Editor.invoke( 'Toolbar', 'show', 'search' );
* ```
*
* @param name - A name of the extension.
* @param method - A method name to invoke.
* @param args - Optional. Arguments for the method.
*
* @return The return value of the method.
*/
protected invoke<K extends keyof Extensions, P extends keyof Extensions[K], V extends Extensions[K][P]>(name: K, method: P, ...args: V extends AnyFunction ? Parameters<V> : any[]): V extends AnyFunction ? ReturnType<V> : void;
/**
* Returns the specified extension.
* In terms of the "loose coupling", you'd better try not to use this method.
* Using events is enough in most cases.
*
* @param name - A name of an extension.
*
* @return An extension if found, or otherwise `undefined`.
*/
protected require<K extends keyof Extensions>(name: K): Extensions[K] | undefined;
/**
* Adds default icon strings. They can be still overridden by options.
* The IconSettings is a tuple as `[ string, number?, string? ]` corresponding with `[ path, stroke?, linecap? ]`.
*
* @example
* ```ts
* this.addIcons( {
* myIcon: [
* 'm19 18-14-13m0 13 14-13',
* 3,
* ],
* } );
* ```
*
* @param icons - Icon settings to add.
*/
protected addIcons(icons: Record<string, IconSettings>): void;
/**
* Adds default i18n strings. They can be still overridden by options.
*
* @example
* ```ts
* this.addI18n( {
* myMessage: 'Hello!',
* } );
* ```
*
* @param i18n - Additional i18n strings.
*/
protected addI18n(i18n: Record<string, string>): void;
/**
* Adds default shortcuts to the keymap object. They can be still overridden by options.
* Call this method before RyuseiCode mounts components so that the Keymap component recognizes shortcuts.
*
* @example
* ```js
* class MyExtension extends Component {
* constructor( Editor ) {
* super( Editor );
*
* this.addKeyBindings( {
* myShortcut: [ 'P', true, true ],
* } );
* }
* }
* ```
*
* @param shortcuts - Additional shortcuts.
*/
protected addKeyBindings(shortcuts: Record<string, KeyMatcher | KeyMatcher[]>): void;
/**
* Returns options for each extension, merging provided default values.
*
* @example
* ```js
* class MyExtension extends Component {
* constructor( Editor ) {
* super( Editor );
*
* const extensionOptions = this.getOptions( 'myExtension', { option1: true } );
* }
* }
* ```
*
* @param name - An option name.
* @param defaults - Default values.
*
* @return A merged options, or `null`.
*/
protected getOptions<T extends object>(name: string, defaults?: T): T;
/**
* Returns the latest Lines instance.
* This is an alias of `Code#Lines`.
*
* @return The Lines instance.
*/
get lines(): Lines;
/**
* Returns the i18n collection.
* This is an alias of `this.options.i18n`.
*
* @return The object with i18n strings.
*/
get i18n(): Record<string, string>;
}
//# sourceMappingURL=../../../../src/js/classes/Component/Component.d.ts.map