aboutsummaryrefslogtreecommitdiff
path: root/src/client/util/DocumentManager.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util/DocumentManager.ts')
-rw-r--r--src/client/util/DocumentManager.ts11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/client/util/DocumentManager.ts b/src/client/util/DocumentManager.ts
index b12bf4390..a10237fcc 100644
--- a/src/client/util/DocumentManager.ts
+++ b/src/client/util/DocumentManager.ts
@@ -61,6 +61,10 @@ export class DocumentManager {
});
}
+ private _anyViewRenderedCbs: ((dv: DocumentView) => unknown)[] = [];
+ public AddAnyViewRenderedCB = (func: (dv: DocumentView) => unknown) => {
+ this._anyViewRenderedCbs.push(func);
+ };
private _viewRenderedCbs: { doc: Doc; func: (dv: DocumentView) => unknown }[] = [];
public AddViewRenderedCb = (doc: Opt<Doc>, func: (dv: DocumentView) => unknown) => {
if (doc) {
@@ -77,13 +81,14 @@ export class DocumentManager {
return false;
};
callAddViewFuncs = (view: DocumentView) => {
- const callFuncs = this._viewRenderedCbs.filter(vc => vc.doc === view.Document);
+ const docCallFuncs = this._viewRenderedCbs.filter(vc => vc.doc === view.Document);
+ const callFuncs = docCallFuncs.map(vc => vc.func).concat(this._anyViewRenderedCbs);
if (callFuncs.length) {
- this._viewRenderedCbs = this._viewRenderedCbs.filter(vc => !callFuncs.includes(vc));
+ this._viewRenderedCbs = this._viewRenderedCbs.filter(vc => !docCallFuncs.includes(vc));
const intTimer = setInterval(
() => {
if (!view.ComponentView?.incrementalRendering?.()) {
- callFuncs.forEach(cf => cf.func(view));
+ callFuncs.forEach(cf => cf(view));
clearInterval(intTimer);
}
},