/** * @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.PasswordPrompt = void 0; var _ui_utils = require("./ui_utils.js"); var _pdf = require("../pdf"); class PasswordPrompt { constructor(options, overlayManager, l10n = _ui_utils.NullL10n) { this.overlayName = options.overlayName; this.container = options.container; this.label = options.label; this.input = options.input; this.submitButton = options.submitButton; this.cancelButton = options.cancelButton; this.overlayManager = overlayManager; this.l10n = l10n; this.updateCallback = null; this.reason = null; this.submitButton.addEventListener("click", this.verify.bind(this)); this.cancelButton.addEventListener("click", this.close.bind(this)); this.input.addEventListener("keydown", e => { if (e.keyCode === 13) { this.verify(); } }); this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true); } open() { this.overlayManager.open(this.overlayName).then(() => { this.input.focus(); let promptString; if (this.reason === _pdf.PasswordResponses.INCORRECT_PASSWORD) { promptString = this.l10n.get("password_invalid", null, "Invalid password. Please try again."); } else { promptString = this.l10n.get("password_label", null, "Enter the password to open this PDF file."); } promptString.then(msg => { this.label.textContent = msg; }); }); } close() { this.overlayManager.close(this.overlayName).then(() => { this.input.value = ""; }); } verify() { const password = this.input.value; if (password && password.length > 0) { this.close(); this.updateCallback(password); } } setUpdateCallback(updateCallback, reason) { this.updateCallback = updateCallback; this.reason = reason; } } exports.PasswordPrompt = PasswordPrompt;