288156a3-6b99-42a5-bfb4-05a42916f834.js.map 11.2 KB
{"version":3,"sources":["assets/script/common/classbase/CCViewBase.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { Emitter } from \"simba-eventkit\";\nimport { View, PureView, Subview, PureSubview, OnSubviewCreated } from \"./ViewBase\";\n\ntype PickKeysForType<T extends {}, U> = {\n    [P in keyof T]: T[P] extends U ? P : never\n}[keyof T];\n\nclass CCViewBase extends cc.Component {\n    protected _emitter: Emitter = new Emitter;\n    protected _showed = false;\n    private _isHidden = false;\n    get isHidden() { return this._isHidden || !this.node.active }\n\n    onShow = this._emitter.createEvent<() => void>();\n    onHide = this._emitter.createEvent<() => void>();\n\n    private _posX: number;\n\n    show(): void {\n        if (!this.node.parent || !this.isHidden) return;\n        if (this.isHidden) {\n            this.node.active = true;\n            this._isHidden = false;\n            this.node.opacity = 255;\n            if (this._posX !== undefined)\n                this.node.x = this._posX;\n            this.onShow.emit();\n        }\n    }\n\n    hide(): void {\n        if (!this.node.parent || this.isHidden) return;\n        if (!this.isHidden) {\n            this._isHidden = true;\n            this._posX = this.node.x;\n            this.node.opacity = 0;\n            this.node.x = 10000;\n            this.onHide.emit();\n        }\n    }\n}\n\nexport class CCView extends CCViewBase implements View {\n    readonly _type: \"View\" = \"View\";\n    onClose = this._emitter.createEvent<(destroy?: boolean) => void>();\n\n    open(parent: CCView) {\n        this.node.parent = parent.node;\n    }\n\n    close(destroy?: boolean): void {\n        if (!this.node.parent) return;\n        if (destroy) {\n            this.node.destroy();\n        } else {\n            this.node.removeFromParent(false);\n        }\n        this.onClose.emit(destroy);\n    }\n}\n\nexport class CCSubview extends CCViewBase implements Subview {\n    readonly _type: \"Subview\" = \"Subview\";\n\n    constructor() {\n        super();\n\n        OnSubviewCreated.emit(this);\n    }\n\n    onLoad() {\n        this.name = this.node.name;\n    }\n\n    attachParent(parent: CCView) {\n        this.node.parent = parent.node;\n    }\n}\n\nabstract class PureViewBase<P> implements PureViewBase<P> {\n    protected _prevProps: Readonly<P>;\n    protected _props: Readonly<P>;\n    private _tempProps: Readonly<P>;\n    private _prepareUpdate = false;\n    private _propBinder: { [key: string]: { target: object | Function, prop: string }[] } = {};\n\n    abstract scheduleOnce(callback: Function, delay?: number): void;\n\n    setProps(props: P) {\n        this._tempProps = props;\n        if (!this._props) {\n            this._setProps();\n        } else {\n            if (!this._prepareUpdate) {\n                this._prepareUpdate = true;\n                this.scheduleOnce(() => { // delay one frame, update at most once per frame\n                    this._setProps();\n                });\n            }\n        }\n    }\n\n    protected _setProps() {\n        this._prepareUpdate = false;\n        this._prevProps = this._props;\n        this._props = { ...this._tempProps };\n        delete this._tempProps;\n        this.onPropsReceive();\n        if (!this._prevProps) {\n            this.onPropsLoad(this._props);\n        } else {\n            let keys = new Set([...Object.keys(this._prevProps), ...Object.keys(this._props)]);\n            for (let key of keys) {\n                if (this._props[key] !== this._prevProps[key]) {\n                    this.onPropChange(key as Extract<keyof P, string>);\n                }\n            }\n        }\n    }\n\n    updateProps(props: Partial<P>) {\n        if (!this._props) throw new Error(\"setProps first.\");\n        let fullProps = this._tempProps ? { ...this._tempProps, ...props } : { ...this._props, ...props };\n        this.setProps(fullProps);\n    }\n\n    /**\n    * onLoad() {\n    *     this.bindProp(\"title\", this.titleLabel, \"string\");\n    *     this.bindProp(\"percent\", (value) => this.percentLabel.string = value + \"%\");\n    * }\n     */\n    protected bindProp<T extends {}, K extends keyof P>(key: Extract<K, string>, target: (v: P[K]) => void): void;\n    protected bindProp<T extends {}, K extends keyof P>(key: Extract<K, string>, target: T, propName: Extract<PickKeysForType<T, P[K]>, string>): void;\n    protected bindProp(key: string, target, prop?) {\n        if (!this._propBinder[key]) this._propBinder[key] = [];\n        this._propBinder[key].push({ target, prop });\n    }\n\n    protected onPropsReceive(): void {\n\n    }\n\n    protected onPropsLoad(props: Readonly<P>) {\n        for (let key in props) {\n            if (this._propBinder[key]) {\n                for (const { target, prop } of this._propBinder[key]) {\n                    if (typeof target === \"function\") {\n                        target(this._props[key]);\n                    } else {\n                        target[prop] = this._props[key];\n                    }\n                }\n            }\n        }\n    }\n\n    protected onPropChange(key: Extract<keyof P, string>) {\n        if (this._propBinder[key]) {\n            for (const { target, prop } of this._propBinder[key]) {\n                if (typeof target === \"function\") {\n                    target(this._props[key]);\n                } else {\n                    target[prop] = this._props[key];\n                }\n            }\n        }\n    }\n}\n\nexport class CCPureView<P> extends CCView {\n    constructor() {\n        super();\n        (this as any)._propBinder = {};\n    }\n    onLoad() { }\n}\nexport interface CCPureView<P> extends PureViewBase<P> { }\n\nexport class CCPureSubview<P> extends CCSubview {\n    constructor() {\n        super();\n        (this as any)._propBinder = {};\n    }\n}\nexport interface CCPureSubview<P> extends PureViewBase<P> { }\n\nfunction applyMixins(derivedCtor: any, constructors: any[]) {\n    constructors.forEach((baseCtor) => {\n        Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n            if (name !== \"constructor\") {\n                Object.defineProperty(\n                    derivedCtor.prototype,\n                    name,\n                    Object.getOwnPropertyDescriptor(baseCtor.prototype, name)!\n                );\n            }\n        });\n    });\n}\n\napplyMixins(CCPureView, [PureViewBase]);\napplyMixins(CCPureSubview, [PureViewBase]);\n"]}