898bab4d-e4fd-4d02-8de7-aea3ee47c481.js.map 7.33 KB
{"version":3,"sources":["assets/script/common/classbase/PresenterBase.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { View, Subview, OnSubviewCreated } from \"./ViewBase\";\nimport { CompositeDisposable } from \"simba-eventkit\";\n\nlet presenterViewFactory: (<P, V extends View, PR extends Presenter<P, V>>(presenterCls: { new(): PR, uuid: string }) => Promise<V>) & { preloadView: (presenterCls: { new(): Presenter, uuid: string }) => Promise<void> };\n\nexport function setPresenterViewFactory(factory: typeof presenterViewFactory) {\n    presenterViewFactory = factory;\n}\n\nlet subpresenterFactory: (subview: Subview) => Subpresenter;\n\nexport function setSubpresenterwFactory(factory: (subview: Subview) => Subpresenter) {\n    subpresenterFactory = factory;\n}\n\nlet currentCreatingPresenter: Presenter<any, any> | undefined;\nexport async function createPresenter<P, V extends View, PR extends Presenter<P, V>>(presenterCls: { new(): PR, uuid: string }): Promise<PR> {\n    await presenterViewFactory.preloadView(presenterCls as any);\n    if (currentCreatingPresenter) {\n        console.warn(\"create presenter simultaneously will cause sub presenters error!\");\n    }\n    let presenter = currentCreatingPresenter = new presenterCls;\n    let view = await presenterViewFactory<P, V, PR>(presenterCls);\n    presenter.attachView(view);\n    currentCreatingPresenter = undefined;\n    return presenter;\n}\n\nOnSubviewCreated.on((subview) => {\n    if (!currentCreatingPresenter) {\n        return;\n    }\n    let presenter = subpresenterFactory(subview);\n    presenter.owner = currentCreatingPresenter;\n    (currentCreatingPresenter as any)._subpresenters.push(presenter);\n});\n\nexport type PresenterParamType<T> = T extends Presenter<infer U, any> ? U : any;\n\nclass PresenterBase {\n    protected _disposable: CompositeDisposable;\n\n    onShow() {\n\n    }\n\n    onHide() {\n\n    }\n}\n\nexport class Subpresenter<V extends Subview = Subview, Owner extends Presenter<any, any> = Presenter<any, any>> extends PresenterBase {\n    owner: Owner;\n    _view: Subview;\n\n    get view() { return this._view as V; }\n\n    attachView(view: V) {\n        this._view = view;\n    }\n\n    onOpen() {\n        this._disposable = new CompositeDisposable;\n        this._disposable.add(this._view.onShow.on(() => this.onShow()));\n        this._disposable.add(this._view.onHide.on(() => this.onHide()));\n    }\n\n    onClose() {\n        this._disposable.dispose();\n    }\n\n    onOwnerShow() {\n\n    }\n\n    onOwnerHide() {\n\n    }\n\n    onOwnerEnterForeground() {\n\n    }\n\n    onOwnerEnterBackground() {\n\n    }\n}\n\nexport class Presenter<P = undefined, V extends View = View> extends PresenterBase {\n    protected _view: V;\n    protected _isInBackground = false;\n    protected _subpresenters: Subpresenter[] = [];\n\n    get view() { return this._view as V; }\n\n    open = (parent: View, props: P) => {\n        this._view.open(parent);\n        this.onOpen(props);\n    }\n\n    attachView(view: V) {\n        this._view = view;\n    }\n\n    onOpen(props: P) {\n        this._disposable = new CompositeDisposable;\n        this._disposable.add(this._view.onClose.on(() => this.onClose()));\n        this._disposable.add(this._view.onShow.on(() => this.onShow()));\n        this._disposable.add(this._view.onHide.on(() => this.onHide()));\n        this._subpresenters.forEach((p) => {\n            p.onOpen();\n        });\n    }\n\n    onClose() {\n        this._disposable.dispose();\n        this._subpresenters.forEach((p) => {\n            p.onClose();\n        });\n    }\n\n    onShow() {\n        this._subpresenters.forEach((p) => {\n            p.onOwnerShow();\n        });\n    }\n\n    onHide() {\n        this._subpresenters.forEach((p) => {\n            p.onOwnerHide();\n        });\n    }\n\n    onEnterForeground() {\n        this._isInBackground = false;\n        this._subpresenters.forEach((p) => {\n            p.onOwnerEnterForeground();\n        });\n    }\n\n    onEnterBackground() {\n        this._isInBackground = true;\n        this._subpresenters.forEach((p) => {\n            p.onOwnerEnterBackground();\n        });\n    }\n}\n"]}