diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 5d40e23498d83..1bac155c9828d 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -650,6 +650,20 @@ class OutputScale { } } +// See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types +// to know which types are supported by the browser. +const SupportedImageMimeTypes = [ + "image/apng", + "image/avif", + "image/bmp", + "image/gif", + "image/jpeg", + "image/png", + "image/svg+xml", + "image/webp", + "image/x-icon", +]; + export { deprecated, fetchData, @@ -672,5 +686,6 @@ export { setLayerDimensions, StatTimer, stopEvent, + SupportedImageMimeTypes, SVG_NS, }; diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index ad7c5e10202f6..cb51a73d7c7b5 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -17,7 +17,7 @@ import { AnnotationEditorType, shadow } from "../../shared/util.js"; import { DrawingEditor, DrawingOptions } from "./draw.js"; import { AnnotationEditor } from "./editor.js"; import { SignatureExtractor } from "./drawers/signaturedraw.js"; -import { StampEditor } from "./stamp.js"; +import { SupportedImageMimeTypes } from "../display_utils.js"; class SignatureOptions extends DrawingOptions { #viewParameters; @@ -106,7 +106,7 @@ class SignatureEditor extends DrawingEditor { async #extractSignature() { const input = document.createElement("input"); input.type = "file"; - input.accept = StampEditor.supportedTypesStr; + input.accept = SupportedImageMimeTypes.join(","); const signal = this._uiManager._signal; const { promise, resolve } = Promise.withResolvers(); diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index 72ebfa6f8be7c..c6b8586bdee3d 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -13,12 +13,12 @@ * limitations under the License. */ +import { AnnotationEditorType, AnnotationPrefix } from "../../shared/util.js"; import { - AnnotationEditorType, - AnnotationPrefix, - shadow, -} from "../../shared/util.js"; -import { OutputScale, PixelsPerInch } from "../display_utils.js"; + OutputScale, + PixelsPerInch, + SupportedImageMimeTypes, +} from "../display_utils.js"; import { AnnotationEditor } from "./editor.js"; import { StampAnnotationElement } from "../annotation_layer.js"; @@ -63,34 +63,9 @@ class StampEditor extends AnnotationEditor { AnnotationEditor.initialize(l10n, uiManager); } - static get supportedTypes() { - // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types - // to know which types are supported by the browser. - const types = [ - "apng", - "avif", - "bmp", - "gif", - "jpeg", - "png", - "svg+xml", - "webp", - "x-icon", - ]; - return shadow( - this, - "supportedTypes", - types.map(type => `image/${type}`) - ); - } - - static get supportedTypesStr() { - return shadow(this, "supportedTypesStr", this.supportedTypes.join(",")); - } - /** @inheritdoc */ static isHandlingMimeForPasting(mime) { - return this.supportedTypes.includes(mime); + return SupportedImageMimeTypes.includes(mime); } /** @inheritdoc */ @@ -258,7 +233,7 @@ class StampEditor extends AnnotationEditor { document.body.append(input); } input.type = "file"; - input.accept = StampEditor.supportedTypesStr; + input.accept = SupportedImageMimeTypes.join(","); const signal = this._uiManager._signal; this.#bitmapPromise = new Promise(resolve => { input.addEventListener( diff --git a/src/pdf.js b/src/pdf.js index 757e97e4ccf11..edac1d0537318 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -61,6 +61,7 @@ import { RenderingCancelledException, setLayerDimensions, stopEvent, + SupportedImageMimeTypes, } from "./display/display_utils.js"; import { AnnotationEditorLayer } from "./display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "./display/editor/tools.js"; @@ -126,6 +127,7 @@ export { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index e5f0caceb5e59..8b13b440672e5 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -52,6 +52,7 @@ import { RenderingCancelledException, setLayerDimensions, stopEvent, + SupportedImageMimeTypes, } from "../../src/display/display_utils.js"; import { AnnotationEditorLayer } from "../../src/display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js"; @@ -103,6 +104,7 @@ const expectedAPI = Object.freeze({ setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, diff --git a/web/pdfjs.js b/web/pdfjs.js index 7ac129513be5a..23c46dbb76cb4 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -52,6 +52,7 @@ const { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, @@ -99,6 +100,7 @@ export { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util,