Unconditionally initialize the this._pageOpenPendingSet in BaseViewer._initializeScriptingEvents (PR 12747 follow-up)

With the code dispatching a "pageopen" event on the existing (general) `BaseViewer` event "pagesinit", in practice this means that the `Set` is always being created. Hence we can simplify the method overall, by always initializing the `this._pageOpenPendingSet` property.
This commit is contained in:
Jonas Jenwald 2021-01-06 16:09:34 +01:00
parent 32b0e00ba7
commit 373230185a

View File

@ -654,7 +654,7 @@ class BaseViewer {
this._pagesCapability = createPromiseCapability(); this._pagesCapability = createPromiseCapability();
this._scrollMode = ScrollMode.VERTICAL; this._scrollMode = ScrollMode.VERTICAL;
this._spreadMode = SpreadMode.NONE; this._spreadMode = SpreadMode.NONE;
this._pageOpenPendingSet = null; this._pageOpenPendingSet?.clear();
if (this._onBeforeDraw) { if (this._onBeforeDraw) {
this.eventBus._off("pagerender", this._onBeforeDraw); this.eventBus._off("pagerender", this._onBeforeDraw);
@ -1514,10 +1514,11 @@ class BaseViewer {
if (!this.enableScripting) { if (!this.enableScripting) {
return; return;
} }
const { eventBus } = this; const eventBus = this.eventBus,
pageOpenPendingSet = (this._pageOpenPendingSet ||= new Set());
const dispatchPageClose = pageNumber => { const dispatchPageClose = pageNumber => {
if (this._pageOpenPendingSet?.has(pageNumber)) { if (pageOpenPendingSet.has(pageNumber)) {
return; // No "pageopen" event was dispatched for the previous page. return; // No "pageopen" event was dispatched for the previous page.
} }
eventBus.dispatch("pageclose", { source: this, pageNumber }); eventBus.dispatch("pageclose", { source: this, pageNumber });
@ -1525,14 +1526,11 @@ class BaseViewer {
const dispatchPageOpen = (pageNumber, force = false) => { const dispatchPageOpen = (pageNumber, force = false) => {
const pageView = this._pages[pageNumber - 1]; const pageView = this._pages[pageNumber - 1];
if (force || pageView?.renderingState === RenderingStates.FINISHED) { if (force || pageView?.renderingState === RenderingStates.FINISHED) {
this._pageOpenPendingSet?.delete(pageNumber); pageOpenPendingSet.delete(pageNumber);
eventBus.dispatch("pageopen", { source: this, pageNumber }); eventBus.dispatch("pageopen", { source: this, pageNumber });
} else { } else {
if (!this._pageOpenPendingSet) { pageOpenPendingSet.add(pageNumber);
this._pageOpenPendingSet = new Set();
}
this._pageOpenPendingSet.add(pageNumber);
} }
}; };
@ -1545,7 +1543,7 @@ class BaseViewer {
}); });
eventBus._on("pagerendered", ({ pageNumber }) => { eventBus._on("pagerendered", ({ pageNumber }) => {
if (!this._pageOpenPendingSet?.has(pageNumber)) { if (!pageOpenPendingSet.has(pageNumber)) {
return; // No pending "pageopen" event for the newly rendered page. return; // No pending "pageopen" event for the newly rendered page.
} }
if (pageNumber !== this._currentPageNumber) { if (pageNumber !== this._currentPageNumber) {