UNPKG

@egjs/component

Version:

A base class utility that manages events and options in modules.

86 lines (76 loc) 2.56 kB
import { DefaultProps } from "./types"; // This class name is not matched to file name intentionally /** * Event class to provide additional properties * @ko Component에서 추가적인 프로퍼티를 제공하는 이벤트 클래스 */ class ComponentEvent<PROPS extends Record<string, any>, TYPE extends string = string, THIS = any> implements DefaultProps<TYPE, THIS> { /** * A Component instance that triggered event. * @type Component * @ko 이벤트를 트리거한 Component 인스턴스. * @example * ```ts * class ExtendedClass extends Component<{ * someEvent: ComponentEvent<{ foo: number; bar: string }> * }> {} * * new ExtendedClass().on("someEvent", e => { * e.currentTarget; // ExtendedClass * }); * ``` */ public currentTarget: THIS; /** * The name of the event. * @type string * @ko 이벤트 이름. * @example * ```ts * class ExtendedClass extends Component<{ * someEvent: ComponentEvent * }> {} * * new ExtendedClass().on("someEvent", e => { * e.eventType; // "someEvent" * }); * ``` */ public eventType: TYPE; private _canceled: boolean; /** * Create a new instance of ComponentEvent. * @ko ComponentEvent의 새로운 인스턴스를 생성한다. * @param eventType The name of the event.<ko>이벤트 이름.</ko> * @param props An object that contains additional event properties.<ko>추가적인 이벤트 프로퍼티 오브젝트.</ko> */ public constructor( eventType: TYPE, props: PROPS ) { this._canceled = false; if (props) { for (const key of Object.keys(props as Record<string, any>)) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment this[key] = props[key]; } } this.eventType = eventType; } /** * Stop the event. {@link ComponentEvent#isCanceled} will return `true` after. * @ko 이벤트를 중단한다. 이후 {@link ComponentEvent#isCanceled}가 `true`를 반환한다. */ public stop() { this._canceled = true; } /** * Returns a boolean value that indicates whether {@link ComponentEvent#stop} is called before. * @ko {@link ComponentEvent#stop}이 호출되었는지 여부를 반환한다. * @return {boolean} A boolean value that indicates whether {@link ComponentEvent#stop} is called before.<ko>이전에 {@link ComponentEvent#stop}이 불려졌는지 여부를 반환한다.</ko> */ public isCanceled() { return this._canceled; } } export default ComponentEvent;