pdf.js/web/hand_tool.js
Jonas Jenwald 3b35c15d42 Convert the files in the /web folder to ES6 modules
Note that as discussed on IRC, this makes the viewer slightly slower to load *only* in `gulp server` mode, however the difference seem slight enough that I think it will be fine.
2017-04-09 11:55:48 +02:00

101 lines
2.6 KiB
JavaScript

/* Copyright 2013 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.
*/
import { GrabToPan } from 'pdfjs-web/grab_to_pan';
import { localized } from 'pdfjs-web/ui_utils';
import { Preferences } from 'pdfjs-web/preferences';
/**
* @typedef {Object} HandToolOptions
* @property {HTMLDivElement} container - The document container.
* @property {EventBus} eventBus - The application event bus.
*/
/**
* @class
*/
var HandTool = (function HandToolClosure() {
/**
* @constructs HandTool
* @param {HandToolOptions} options
*/
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 = {
/**
* @return {boolean}
*/
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;
})();
export {
HandTool,
};