text: /* Copyright 2017 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.
   */
  'use strict';
  
  var grabToPan = require('./grab_to_pan.js');
  var preferences = require('./preferences.js');
  var uiUtils = require('./ui_utils.js');
  var GrabToPan = grabToPan.GrabToPan;
  var Preferences = preferences.Preferences;
  var localized = uiUtils.localized;
  var HandTool = function HandToolClosure() {
    function HandTool(options) {
      this.container = options.container;
      this.eventBus = options.eventBus;
      this.wasActive = false;
      this.handTool = new GrabToPan({
        element: this.container,
        onActiveChanged: function (isActive) {
          this.eventBus.dispatch('handtoolchanged', { isActive: isActive });
        }.bind(this)
      });
      this.eventBus.on('togglehandtool', this.toggle.bind(this));
      Promise.all([localized, Preferences.get('enableHandToolOnLoad')]).then(function resolved(values) {
        if (values[1] === true) {
          this.handTool.activate();
        }
      }.bind(this)).catch(function rejected(reason) {});
      this.eventBus.on('presentationmodechanged', function (e) {
        if (e.switchInProgress) {
          return;
        }
        if (e.active) {
          this.enterPresentationMode();
        } else {
          this.exitPresentationMode();
        }
      }.bind(this));
    }
    HandTool.prototype = {
      get isActive() {
        return !!this.handTool.active;
      },
      toggle: function HandTool_toggle() {
        this.handTool.toggle();
      },
      enterPresentationMode: function HandTool_enterPresentationMode() {
        if (this.isActive) {
          this.wasActive = true;
          this.handTool.deactivate();
        }
      },
      exitPresentationMode: function HandTool_exitPresentationMode() {
        if (this.wasActive) {
          this.wasActive = false;
          this.handTool.activate();
        }
      }
    };
    return HandTool;
  }();
  exports.HandTool = HandTool;