UNPKG

@jood/appearer

Version:
72 lines 6.23 kB
import { AppearEvent } from '../common/types'; import { Subject } from 'rxjs'; /** * Stage 에 등록될 Actor. * 스테이지에 진입, 이탈 시 계속 알려주는 기본형. * @class BaseActor * @implements {IActor} */ export class BaseActor { /** * @param element 옵저버에 등록되어야 하는 native element */ constructor(element) { /** * 이벤트 Observable * @see https://rxjs-dev.firebaseapp.com/guide/subject */ this.events = new Subject(); /** * 현재 진입 여부 상태 */ this.isAppear = null; this.element = element; } /** * 해당 인스턴스를 관찰하는 스테이지를 연결 * @param stage 스테이지 */ bind(stage) { this.stage = stage; } /** * 진입, 이탈 등 이벤트 알림 * @param type 이벤트 타입 * @param [entry] 상태 변경시 관찰된 상태 */ dispatch(type, entry) { this.events.next(new AppearEvent(type, { actor: this, entry, })); } /** * 스테이지 진입 * @param [entry] 스테이지 진입시 관찰 상태 */ appear(entry) { if (this.isAppear === true) return; this.isAppear = true; this.dispatch(AppearEvent.APPEAR, entry); } /** * 스테이지 이탈 * @param [entry] 스테이지 이탈시 관찰 상태 */ disappear(entry) { if (this.isAppear === false) return; this.isAppear = false; this.dispatch(AppearEvent.DISAPPEAR, entry); } /** * 파기 */ dispose() { if (this.stage) { this.stage.unobserve(this); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9ydW5uZXIvd29yay9qb29kLWFwcGVhcmVyL2pvb2QtYXBwZWFyZXIvcHJvamVjdHMvcGFja2FnZXMvc3JjLyIsInNvdXJjZXMiOlsiYWN0b3IvYmFzZS1hY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFdBQVcsRUFBa0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9COzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDcEI7O09BRUc7SUFDSCxZQUFZLE9BQXFCO1FBU2pDOzs7V0FHRztRQUNILFdBQU0sR0FBeUIsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQU8xRDs7V0FFRztRQUNILGFBQVEsR0FBWSxJQUFJLENBQUM7UUF0QnZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUF1QkQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQXdCO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFpQztRQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDcEIsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLO1NBQ04sQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWlDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJO1lBQUUsT0FBTztRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsQ0FBQyxLQUFpQztRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSztZQUFFLE9BQU87UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdG9yRWxlbWVudCwgQXBwZWFyRXZlbnQsIElBY3RvciwgSVN0YWdlIH0gZnJvbSAnLi4vY29tbW9uL3R5cGVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTdGFnZSDsl5Ag65Ox66Gd65CgIEFjdG9yLlxuICog7Iqk7YWM7J207KeA7JeQIOynhOyehSwg7J207YOIIOyLnCDqs4Tsho0g7JWM66Ck7KO864qUIOq4sOuzuO2YlS5cbiAqIEBjbGFzcyBCYXNlQWN0b3JcbiAqIEBpbXBsZW1lbnRzIHtJQWN0b3J9XG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlQWN0b3IgaW1wbGVtZW50cyBJQWN0b3Ige1xuICAvKipcbiAgICogQHBhcmFtIGVsZW1lbnQg7Ji17KCA67KE7JeQIOuTseuhneuQmOyWtOyVvCDtlZjripQgbmF0aXZlIGVsZW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEFjdG9yRWxlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICog7Ji17KCA67KE7JeQIOuTseuhneuQoCBuYXRpdmUgZWxlbWVudFxuICAgKi9cbiAgZWxlbWVudDogQWN0b3JFbGVtZW50O1xuXG4gIC8qKlxuICAgKiDsnbTrsqTtirggT2JzZXJ2YWJsZVxuICAgKiBAc2VlIGh0dHBzOi8vcnhqcy1kZXYuZmlyZWJhc2VhcHAuY29tL2d1aWRlL3N1YmplY3RcbiAgICovXG4gIGV2ZW50czogU3ViamVjdDxBcHBlYXJFdmVudD4gPSBuZXcgU3ViamVjdDxBcHBlYXJFdmVudD4oKTtcblxuICAvKipcbiAgICog7ZW064u5IOyduOyKpO2EtOyKpOqwgCDrk7HroZ3rkJwg7Iqk7YWM7J207KeAXG4gICAqL1xuICBzdGFnZTogSVN0YWdlPEJhc2VBY3Rvcj47XG5cbiAgLyoqXG4gICAqIO2YhOyerCDsp4TsnoUg7Jes67aAIOyDge2DnFxuICAgKi9cbiAgaXNBcHBlYXI6IGJvb2xlYW4gPSBudWxsO1xuXG4gIC8qKlxuICAgKiDtlbTri7kg7J247Iqk7YS07Iqk66W8IOq0gOywsO2VmOuKlCDsiqTthYzsnbTsp4Drpbwg7Jew6rKwXG4gICAqIEBwYXJhbSBzdGFnZSDsiqTthYzsnbTsp4BcbiAgICovXG4gIGJpbmQoc3RhZ2U6IElTdGFnZTxCYXNlQWN0b3I+KSB7XG4gICAgdGhpcy5zdGFnZSA9IHN0YWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIOynhOyehSwg7J207YOIIOuTsSDsnbTrsqTtirgg7JWM66a8XG4gICAqIEBwYXJhbSB0eXBlIOydtOuypO2KuCDtg4DsnoVcbiAgICogQHBhcmFtIFtlbnRyeV0g7IOB7YOcIOuzgOqyveyLnCDqtIDssLDrkJwg7IOB7YOcXG4gICAqL1xuICBkaXNwYXRjaCh0eXBlOiBzdHJpbmcsIGVudHJ5PzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkge1xuICAgIHRoaXMuZXZlbnRzLm5leHQoXG4gICAgICBuZXcgQXBwZWFyRXZlbnQodHlwZSwge1xuICAgICAgICBhY3RvcjogdGhpcyxcbiAgICAgICAgZW50cnksXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog7Iqk7YWM7J207KeAIOynhOyehVxuICAgKiBAcGFyYW0gW2VudHJ5XSDsiqTthYzsnbTsp4Ag7KeE7J6F7IucIOq0gOywsCDsg4Htg5xcbiAgICovXG4gIGFwcGVhcihlbnRyeT86IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FwcGVhciA9PT0gdHJ1ZSkgcmV0dXJuO1xuICAgIHRoaXMuaXNBcHBlYXIgPSB0cnVlO1xuICAgIHRoaXMuZGlzcGF0Y2goQXBwZWFyRXZlbnQuQVBQRUFSLCBlbnRyeSk7XG4gIH1cblxuICAvKipcbiAgICog7Iqk7YWM7J207KeAIOydtO2DiFxuICAgKiBAcGFyYW0gW2VudHJ5XSDsiqTthYzsnbTsp4Ag7J207YOI7IucIOq0gOywsCDsg4Htg5xcbiAgICovXG4gIGRpc2FwcGVhcihlbnRyeT86IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FwcGVhciA9PT0gZmFsc2UpIHJldHVybjtcbiAgICB0aGlzLmlzQXBwZWFyID0gZmFsc2U7XG4gICAgdGhpcy5kaXNwYXRjaChBcHBlYXJFdmVudC5ESVNBUFBFQVIsIGVudHJ5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDtjIzquLBcbiAgICovXG4gIGRpc3Bvc2UoKSB7XG4gICAgaWYgKHRoaXMuc3RhZ2UpIHtcbiAgICAgIHRoaXMuc3RhZ2UudW5vYnNlcnZlKHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19