From b94c65461edafa22bac1868834f0e7ae5d7f7c1d Mon Sep 17 00:00:00 2001 From: Eduard Ghazanchyan Date: Wed, 3 Apr 2024 18:29:16 +0400 Subject: [PATCH] web app types --- tsconfig.json | 23 +++++++++++++++++++++-- web/annotation_editor_params.js | 17 +++++++++++++++++ web/app.js | 2 ++ web/base_tree_viewer.js | 8 +++++--- web/external_services.js | 5 +++++ web/pdf_attachment_viewer.js | 8 ++++++-- web/pdf_cursor_tools.js | 2 ++ web/pdf_document_properties.js | 5 +++++ web/pdf_layer_viewer.js | 10 +++++++--- web/pdf_outline_viewer.js | 11 ++++++++--- web/pdf_presentation_mode.js | 3 +++ web/pdf_sidebar.js | 3 +++ web/secondary_toolbar.js | 2 ++ web/toolbar.js | 2 ++ 14 files changed, 88 insertions(+), 13 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 4a48983e68e4dd..b2c45b02bb7225 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,8 +16,27 @@ "display-node_utils": ["./src/display/node_utils"], "fluent-bundle": ["./node_modules/@fluent/bundle/esm/index.js"], "fluent-dom": ["./node_modules/@fluent/dom/esm/index.js"], - "web-null_l10n": ["../web/genericl10n.js"] + + "web-null_l10n": ["./web/genericl10n"], + "web-alt_text_manager": ["./web/alt_text_manager"], + "web-annotation_editor_params": ["./web/annotation_editor_params"], + "web-pdf_attachment_viewer": ["./web/pdf_attachment_viewer"], + "web-pdf_cursor_tools": ["./web/pdf_cursor_tools"], + "web-pdf_document_properties": ["./web/pdf_document_properties"], + "web-pdf_find_bar": ["./web/pdf_find_bar"], + "web-pdf_layer_viewer": ["./web/pdf_layer_viewer"], + "web-pdf_outline_viewer": ["./web/pdf_outline_viewer"], + "web-pdf_presentation_mode": ["./web/pdf_presentation_mode"], + "web-pdf_sidebar": ["./web/pdf_sidebar"], + "web-pdf_thumbnail_viewer": ["./web/pdf_thumbnail_viewer"], + "web-secondary_toolbar": ["./web/secondary_toolbar"], + "web-toolbar": ["./web/toolbar"], + "web-com": ["./web/genericcom"], + "web-print_service": ["./web/pdf_print_service"], + "web-download_manager": ["./web/download_manager"], + "web-external_services": ["./web/genericcom"], + "web-preferences": ["./web/genericcom"] } }, - "files": ["src/pdf.js", "web/pdf_viewer.component.js"] + "files": ["src/pdf.js", "web/pdf_viewer.component.js", "web/app.js"] } diff --git a/web/annotation_editor_params.js b/web/annotation_editor_params.js index f3362de20e4ca5..543a10c3a4d47b 100644 --- a/web/annotation_editor_params.js +++ b/web/annotation_editor_params.js @@ -15,6 +15,20 @@ import { AnnotationEditorParamsType } from "pdfjs-lib"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ + +/** + * @typedef {Object} AnnotationEditorParamsOptions + * @property {HTMLInputElement} editorFreeTextFontSize + * @property {HTMLInputElement} editorFreeTextColor + * @property {HTMLInputElement} editorInkColor + * @property {HTMLInputElement} editorInkThickness + * @property {HTMLInputElement} editorInkOpacity + * @property {HTMLElement} editorStampAddImage + * @property {HTMLInputElement} editorFreeHighlightThickness + * @property {HTMLElement} editorHighlightShowAll + */ + class AnnotationEditorParams { /** * @param {AnnotationEditorParamsOptions} options @@ -25,6 +39,9 @@ class AnnotationEditorParams { this.#bindListeners(options); } + /** + * @param {AnnotationEditorParamsOptions} options + */ #bindListeners({ editorFreeTextFontSize, editorFreeTextColor, diff --git a/web/app.js b/web/app.js index b0f6226dff628f..6830896943763e 100644 --- a/web/app.js +++ b/web/app.js @@ -80,6 +80,8 @@ import { SecondaryToolbar } from "web-secondary_toolbar"; import { Toolbar } from "web-toolbar"; import { ViewHistory } from "./view_history.js"; +/** @typedef {import("./interfaces.js").IL10n} IL10n */ + const FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; // ms diff --git a/web/base_tree_viewer.js b/web/base_tree_viewer.js index 5d91f748718cbb..820cc9bccad276 100644 --- a/web/base_tree_viewer.js +++ b/web/base_tree_viewer.js @@ -43,14 +43,14 @@ class BaseTreeViewer { } /** - * @private + * @protected */ _dispatchEvent(count) { throw new Error("Not implemented: _dispatchEvent"); } /** - * @private + * @protected */ _bindLink(element, params) { throw new Error("Not implemented: _bindLink"); @@ -71,7 +71,9 @@ class BaseTreeViewer { /** * Prepend a button before a tree item which allows the user to collapse or * expand all tree items at that level; see `_toggleTreeItem`. - * @private + * @protected + * @param {Element} div + * @param {any} [hidden=false] */ _addToggleButton(div, hidden = false) { const toggler = document.createElement("div"); diff --git a/web/external_services.js b/web/external_services.js index 509e084700873c..ff2aa42825ecb6 100644 --- a/web/external_services.js +++ b/web/external_services.js @@ -13,6 +13,8 @@ * limitations under the License. */ +/** @typedef {import("./l10n.js").L10n} L10n */ + class BaseExternalServices { constructor() { if (this.constructor === BaseExternalServices) { @@ -28,6 +30,9 @@ class BaseExternalServices { reportTelemetry(data) {} + /** + * @returns {Promise} + */ async createL10n() { throw new Error("Not implemented: createL10n"); } diff --git a/web/pdf_attachment_viewer.js b/web/pdf_attachment_viewer.js index f1106176efb9d0..845a1876f5733e 100644 --- a/web/pdf_attachment_viewer.js +++ b/web/pdf_attachment_viewer.js @@ -17,6 +17,9 @@ import { BaseTreeViewer } from "./base_tree_viewer.js"; import { getFilenameFromUrl } from "pdfjs-lib"; import { waitOnEventOrTimeout } from "./event_utils.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("./download_manager.js").DownloadManager} DownloadManager */ + /** * @typedef {Object} PDFAttachmentViewerOptions * @property {HTMLDivElement} container - The viewer element. @@ -27,6 +30,7 @@ import { waitOnEventOrTimeout } from "./event_utils.js"; /** * @typedef {Object} PDFAttachmentViewerRenderParameters * @property {Object|null} attachments - A lookup table of attachment objects. + * @property {boolean} keepRenderedCapability */ class PDFAttachmentViewer extends BaseTreeViewer { @@ -56,7 +60,7 @@ class PDFAttachmentViewer extends BaseTreeViewer { } /** - * @private + * @protected */ async _dispatchEvent(attachmentsCount) { this._renderedCapability.resolve(); @@ -87,7 +91,7 @@ class PDFAttachmentViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _bindLink(element, { content, filename }) { element.onclick = () => { diff --git a/web/pdf_cursor_tools.js b/web/pdf_cursor_tools.js index 416122b132d04a..8369b4b76f8a7d 100644 --- a/web/pdf_cursor_tools.js +++ b/web/pdf_cursor_tools.js @@ -17,6 +17,8 @@ import { AnnotationEditorType, shadow } from "pdfjs-lib"; import { CursorTool, PresentationModeState } from "./ui_utils.js"; import { GrabToPan } from "./grab_to_pan.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ + /** * @typedef {Object} PDFCursorToolsOptions * @property {HTMLDivElement} container - The document container. diff --git a/web/pdf_document_properties.js b/web/pdf_document_properties.js index 0b029b7cbe8361..6926f8e3ee5cce 100644 --- a/web/pdf_document_properties.js +++ b/web/pdf_document_properties.js @@ -16,6 +16,11 @@ import { getPageSizeInches, isPortraitOrientation } from "./ui_utils.js"; import { PDFDateString } from "pdfjs-lib"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("./interfaces.js").IL10n} IL10n */ +/** @typedef {import("./overlay_manager.js").OverlayManager} OverlayManager */ +/** @typedef {import("../src/display/api").PDFDocumentProxy} PDFDocumentProxy */ + const DEFAULT_FIELD_CONTENT = "-"; // See https://en.wikibooks.org/wiki/Lentis/Conversion_to_the_Metric_Standard_in_the_United_States diff --git a/web/pdf_layer_viewer.js b/web/pdf_layer_viewer.js index e9c1150fc641b2..6b1c348704586a 100644 --- a/web/pdf_layer_viewer.js +++ b/web/pdf_layer_viewer.js @@ -15,6 +15,10 @@ import { BaseTreeViewer } from "./base_tree_viewer.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("../src/optional_content_config.js").OptionalContentConfig} OptionalContentConfig */ +/** @typedef {import("../src/document.js").PDFDocument} PDFDocument */ + /** * @typedef {Object} PDFLayerViewerOptions * @property {HTMLDivElement} container - The viewer element. @@ -48,7 +52,7 @@ class PDFLayerViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _dispatchEvent(layersCount) { this.eventBus.dispatch("layersloaded", { @@ -58,7 +62,7 @@ class PDFLayerViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _bindLink(element, { groupId, input }) { const setVisibility = () => { @@ -97,7 +101,7 @@ class PDFLayerViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _addToggleButton(div, { name = null }) { super._addToggleButton(div, /* hidden = */ name === null); diff --git a/web/pdf_outline_viewer.js b/web/pdf_outline_viewer.js index 02e4d5f2769ea9..90aa72cfa2f39b 100644 --- a/web/pdf_outline_viewer.js +++ b/web/pdf_outline_viewer.js @@ -16,6 +16,11 @@ import { BaseTreeViewer } from "./base_tree_viewer.js"; import { SidebarView } from "./ui_utils.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("./download_manager.js").DownloadManager} DownloadManager */ +/** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */ +/** @typedef {import("../src/document.js").PDFDocument} PDFDocument */ + /** * @typedef {Object} PDFOutlineViewerOptions * @property {HTMLDivElement} container - The viewer element. @@ -75,7 +80,7 @@ class PDFOutlineViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _dispatchEvent(outlineCount) { this._currentOutlineItemCapability = Promise.withResolvers(); @@ -98,7 +103,7 @@ class PDFOutlineViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _bindLink( element, @@ -162,7 +167,7 @@ class PDFOutlineViewer extends BaseTreeViewer { } /** - * @private + * @protected */ _addToggleButton(div, { count, items }) { let hidden = false; diff --git a/web/pdf_presentation_mode.js b/web/pdf_presentation_mode.js index e916693a9d004a..2af7ac1e47d768 100644 --- a/web/pdf_presentation_mode.js +++ b/web/pdf_presentation_mode.js @@ -21,6 +21,9 @@ import { } from "./ui_utils.js"; import { AnnotationEditorType } from "pdfjs-lib"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("./pdf_viewer.js").PDFViewer} PDFViewer */ + const DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms const ACTIVE_SELECTOR = "pdfPresentationMode"; const CONTROLS_SELECTOR = "pdfPresentationModeControls"; diff --git a/web/pdf_sidebar.js b/web/pdf_sidebar.js index d61c2bc5186992..962a10110360e5 100644 --- a/web/pdf_sidebar.js +++ b/web/pdf_sidebar.js @@ -26,6 +26,9 @@ const SIDEBAR_MIN_WIDTH = 200; // pixels const SIDEBAR_RESIZING_CLASS = "sidebarResizing"; const UI_NOTIFICATION_CLASS = "pdfSidebarNotification"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ +/** @typedef {import("./interfaces.js").IL10n} IL10n */ + /** * @typedef {Object} PDFSidebarOptions * @property {PDFSidebarElements} elements - The DOM elements. diff --git a/web/secondary_toolbar.js b/web/secondary_toolbar.js index d4c3c954169d6e..502a91b15ff9b5 100644 --- a/web/secondary_toolbar.js +++ b/web/secondary_toolbar.js @@ -22,6 +22,8 @@ import { } from "./ui_utils.js"; import { PagesCountLimit } from "./pdf_viewer.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ + /** * @typedef {Object} SecondaryToolbarOptions * @property {HTMLDivElement} toolbar - Container for the secondary toolbar. diff --git a/web/toolbar.js b/web/toolbar.js index d59f3055660574..9506d68599e1c4 100644 --- a/web/toolbar.js +++ b/web/toolbar.js @@ -22,6 +22,8 @@ import { toggleCheckedBtn, } from "./ui_utils.js"; +/** @typedef {import("./event_utils.js").EventBus} EventBus */ + /** * @typedef {Object} ToolbarOptions * @property {HTMLDivElement} container - Container for the secondary toolbar.