/** * @licstart The following is the entire license notice for the * Javascript code in this page * * Copyright 2020 Mozilla Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @licend The above is the entire license notice for the * Javascript code in this page */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DownloadManager = void 0; var _pdf = require("../pdf"); var _viewer_compatibility = require("./viewer_compatibility.js"); ; const DISABLE_CREATE_OBJECT_URL = _viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL || false; function download(blobUrl, filename) { const a = document.createElement("a"); if (!a.click) { throw new Error('DownloadManager: "a.click()" is not supported.'); } a.href = blobUrl; a.target = "_parent"; if ("download" in a) { a.download = filename; } (document.body || document.documentElement).appendChild(a); a.click(); a.remove(); } class DownloadManager { constructor({ disableCreateObjectURL = DISABLE_CREATE_OBJECT_URL }) { this.disableCreateObjectURL = disableCreateObjectURL; } downloadUrl(url, filename) { if (!(0, _pdf.createValidAbsoluteUrl)(url, "http://example.com")) { return; } download(url + "#pdfjs.action=download", filename); } downloadData(data, filename, contentType) { if (navigator.msSaveBlob) { navigator.msSaveBlob(new Blob([data], { type: contentType }), filename); return; } const blobUrl = (0, _pdf.createObjectURL)(data, contentType, this.disableCreateObjectURL); download(blobUrl, filename); } download(blob, url, filename) { if (navigator.msSaveBlob) { if (!navigator.msSaveBlob(blob, filename)) { this.downloadUrl(url, filename); } return; } if (this.disableCreateObjectURL) { this.downloadUrl(url, filename); return; } const blobUrl = URL.createObjectURL(blob); download(blobUrl, filename); } } exports.DownloadManager = DownloadManager;