/** * @licstart The following is the entire license notice for the * JavaScript code in this page * * Copyright 2022 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.PDFCursorTools = exports.CursorTool = void 0; var _grab_to_pan = require("./grab_to_pan.js"); var _ui_utils = require("./ui_utils.js"); const CursorTool = { SELECT: 0, HAND: 1, ZOOM: 2 }; exports.CursorTool = CursorTool; class PDFCursorTools { constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) { this.container = container; this.eventBus = eventBus; this.active = CursorTool.SELECT; this.activeBeforePresentationMode = null; this.handTool = new _grab_to_pan.GrabToPan({ element: this.container }); this.#addEventListeners(); Promise.resolve().then(() => { this.switchTool(cursorToolOnLoad); }); } get activeTool() { return this.active; } switchTool(tool) { if (this.activeBeforePresentationMode !== null) { return; } if (tool === this.active) { return; } const disableActiveTool = () => { switch (this.active) { case CursorTool.SELECT: break; case CursorTool.HAND: this.handTool.deactivate(); break; case CursorTool.ZOOM: } }; switch (tool) { case CursorTool.SELECT: disableActiveTool(); break; case CursorTool.HAND: disableActiveTool(); this.handTool.activate(); break; case CursorTool.ZOOM: default: console.error(`switchTool: "${tool}" is an unsupported value.`); return; } this.active = tool; this.#dispatchEvent(); } #dispatchEvent() { this.eventBus.dispatch("cursortoolchanged", { source: this, tool: this.active }); } #addEventListeners() { this.eventBus._on("switchcursortool", evt => { this.switchTool(evt.tool); }); this.eventBus._on("presentationmodechanged", evt => { switch (evt.state) { case _ui_utils.PresentationModeState.FULLSCREEN: { const previouslyActive = this.active; this.switchTool(CursorTool.SELECT); this.activeBeforePresentationMode = previouslyActive; break; } case _ui_utils.PresentationModeState.NORMAL: { const previouslyActive = this.activeBeforePresentationMode; this.activeBeforePresentationMode = null; this.switchTool(previouslyActive); break; } } }); } } exports.PDFCursorTools = PDFCursorTools;