| /** | 
 |  * @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.PDFCursorTools = exports.CursorTool = void 0; | 
 |  | 
 | var _grab_to_pan = require("./grab_to_pan.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 => { | 
 |       if (evt.switchInProgress) { | 
 |         return; | 
 |       } | 
 |  | 
 |       let previouslyActive; | 
 |  | 
 |       if (evt.active) { | 
 |         previouslyActive = this.active; | 
 |         this.switchTool(CursorTool.SELECT); | 
 |         this.activeBeforePresentationMode = previouslyActive; | 
 |       } else { | 
 |         previouslyActive = this.activeBeforePresentationMode; | 
 |         this.activeBeforePresentationMode = null; | 
 |         this.switchTool(previouslyActive); | 
 |       } | 
 |     }); | 
 |   } | 
 |  | 
 | } | 
 |  | 
 | exports.PDFCursorTools = PDFCursorTools; |