diff --git a/web/app.js b/web/app.js index 8c605a20ae12b..822cf4fbd06d3 100644 --- a/web/app.js +++ b/web/app.js @@ -286,7 +286,7 @@ let PDFViewerApplication = { this.overlayManager = new OverlayManager(); const dispatchToDOM = AppOptions.get('eventBusDispatchToDOM'); - let eventBus = appConfig.eventBus || getGlobalEventBus(dispatchToDOM); + const eventBus = appConfig.eventBus || getGlobalEventBus(dispatchToDOM); this.eventBus = eventBus; let pdfRenderingQueue = new PDFRenderingQueue(); @@ -349,10 +349,7 @@ let PDFViewerApplication = { }); pdfLinkService.setHistory(this.pdfHistory); - // TODO: improve `PDFFindBar` constructor parameter passing - let findBarConfig = Object.create(appConfig.findBar); - findBarConfig.eventBus = eventBus; - this.findBar = new PDFFindBar(findBarConfig, this.l10n); + this.findBar = new PDFFindBar(appConfig.findBar, eventBus, this.l10n); this.pdfDocumentProperties = new PDFDocumentProperties(appConfig.documentProperties, @@ -399,9 +396,7 @@ let PDFViewerApplication = { let sidebarConfig = Object.create(appConfig.sidebar); sidebarConfig.pdfViewer = this.pdfViewer; sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer; - sidebarConfig.pdfOutlineViewer = this.pdfOutlineViewer; - sidebarConfig.eventBus = eventBus; - this.pdfSidebar = new PDFSidebar(sidebarConfig, this.l10n); + this.pdfSidebar = new PDFSidebar(sidebarConfig, eventBus, this.l10n); this.pdfSidebar.onToggled = this.forceRendering.bind(this); this.pdfSidebarResizer = new PDFSidebarResizer(appConfig.sidebarResizer, diff --git a/web/pdf_find_bar.js b/web/pdf_find_bar.js index b1696b5c92f9f..e3becbd67cd99 100644 --- a/web/pdf_find_bar.js +++ b/web/pdf_find_bar.js @@ -13,8 +13,8 @@ * limitations under the License. */ +import { getGlobalEventBus, NullL10n } from './ui_utils'; import { FindState } from './pdf_find_controller'; -import { NullL10n } from './ui_utils'; const MATCHES_COUNT_LIMIT = 1000; @@ -25,7 +25,7 @@ const MATCHES_COUNT_LIMIT = 1000; * is done by PDFFindController. */ class PDFFindBar { - constructor(options, l10n = NullL10n) { + constructor(options, eventBus = getGlobalEventBus(), l10n = NullL10n) { this.opened = false; this.bar = options.bar || null; @@ -38,7 +38,7 @@ class PDFFindBar { this.findResultsCount = options.findResultsCount || null; this.findPreviousButton = options.findPreviousButton || null; this.findNextButton = options.findNextButton || null; - this.eventBus = options.eventBus; + this.eventBus = eventBus; this.l10n = l10n; // Add event listeners to the DOM elements. diff --git a/web/pdf_outline_viewer.js b/web/pdf_outline_viewer.js index 6a30b1ebde492..bc02795185be4 100644 --- a/web/pdf_outline_viewer.js +++ b/web/pdf_outline_viewer.js @@ -39,6 +39,8 @@ class PDFOutlineViewer { this.eventBus = eventBus; this.reset(); + + eventBus.on('toggleoutlinetree', this.toggleOutlineTree.bind(this)); } reset() { diff --git a/web/pdf_sidebar.js b/web/pdf_sidebar.js index d984a3d347e66..27a77ad59b11b 100644 --- a/web/pdf_sidebar.js +++ b/web/pdf_sidebar.js @@ -29,12 +29,10 @@ const SidebarView = { * @typedef {Object} PDFSidebarOptions * @property {PDFViewer} pdfViewer - The document viewer. * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer. - * @property {PDFOutlineViewer} pdfOutlineViewer - The outline viewer. * @property {HTMLDivElement} outerContainer - The outer container * (encasing both the viewer and sidebar elements). * @property {HTMLDivElement} viewerContainer - The viewer container * (in which the viewer element is placed). - * @property {EventBus} eventBus - The application event bus. * @property {HTMLButtonElement} toggleButton - The button used for * opening/closing the sidebar. * @property {HTMLButtonElement} thumbnailButton - The button used to show @@ -56,9 +54,10 @@ const SidebarView = { class PDFSidebar { /** * @param {PDFSidebarOptions} options + * @param {EventBus} eventBus - The application event bus. * @param {IL10n} l10n - Localization service. */ - constructor(options, l10n = NullL10n) { + constructor(options, eventBus, l10n = NullL10n) { this.isOpen = false; this.active = SidebarView.THUMBS; this.isInitialViewSet = false; @@ -71,11 +70,9 @@ class PDFSidebar { this.pdfViewer = options.pdfViewer; this.pdfThumbnailViewer = options.pdfThumbnailViewer; - this.pdfOutlineViewer = options.pdfOutlineViewer; this.outerContainer = options.outerContainer; this.viewerContainer = options.viewerContainer; - this.eventBus = options.eventBus; this.toggleButton = options.toggleButton; this.thumbnailButton = options.thumbnailButton; @@ -88,6 +85,7 @@ class PDFSidebar { this.disableNotification = options.disableNotification || false; + this.eventBus = eventBus; this.l10n = l10n; this._addEventListeners(); @@ -397,7 +395,7 @@ class PDFSidebar { this.switchView(SidebarView.OUTLINE); }); this.outlineButton.addEventListener('dblclick', () => { - this.pdfOutlineViewer.toggleOutlineTree(); + this.eventBus.dispatch('toggleoutlinetree', { source: this, }); }); this.attachmentsButton.addEventListener('click', () => {