1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | 'use strict';
|
23 |
|
24 | Object.defineProperty(exports, "__esModule", {
|
25 | value: true
|
26 | });
|
27 | exports.Toolbar = undefined;
|
28 |
|
29 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
30 |
|
31 | var _ui_utils = require('./ui_utils');
|
32 |
|
33 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
34 |
|
35 | var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';
|
36 | var SCALE_SELECT_CONTAINER_PADDING = 8;
|
37 | var SCALE_SELECT_PADDING = 22;
|
38 |
|
39 | var Toolbar = function () {
|
40 | function Toolbar(options, mainContainer, eventBus) {
|
41 | var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n;
|
42 |
|
43 | _classCallCheck(this, Toolbar);
|
44 |
|
45 | this.toolbar = options.container;
|
46 | this.mainContainer = mainContainer;
|
47 | this.eventBus = eventBus;
|
48 | this.l10n = l10n;
|
49 | this.items = options;
|
50 | this._wasLocalized = false;
|
51 | this.reset();
|
52 | this._bindListeners();
|
53 | }
|
54 |
|
55 | _createClass(Toolbar, [{
|
56 | key: 'setPageNumber',
|
57 | value: function setPageNumber(pageNumber, pageLabel) {
|
58 | this.pageNumber = pageNumber;
|
59 | this.pageLabel = pageLabel;
|
60 | this._updateUIState(false);
|
61 | }
|
62 | }, {
|
63 | key: 'setPagesCount',
|
64 | value: function setPagesCount(pagesCount, hasPageLabels) {
|
65 | this.pagesCount = pagesCount;
|
66 | this.hasPageLabels = hasPageLabels;
|
67 | this._updateUIState(true);
|
68 | }
|
69 | }, {
|
70 | key: 'setPageScale',
|
71 | value: function setPageScale(pageScaleValue, pageScale) {
|
72 | this.pageScaleValue = pageScaleValue;
|
73 | this.pageScale = pageScale;
|
74 | this._updateUIState(false);
|
75 | }
|
76 | }, {
|
77 | key: 'reset',
|
78 | value: function reset() {
|
79 | this.pageNumber = 0;
|
80 | this.pageLabel = null;
|
81 | this.hasPageLabels = false;
|
82 | this.pagesCount = 0;
|
83 | this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
|
84 | this.pageScale = _ui_utils.DEFAULT_SCALE;
|
85 | this._updateUIState(true);
|
86 | }
|
87 | }, {
|
88 | key: '_bindListeners',
|
89 | value: function _bindListeners() {
|
90 | var _this = this;
|
91 |
|
92 | var eventBus = this.eventBus,
|
93 | items = this.items;
|
94 |
|
95 | var self = this;
|
96 | items.previous.addEventListener('click', function () {
|
97 | eventBus.dispatch('previouspage');
|
98 | });
|
99 | items.next.addEventListener('click', function () {
|
100 | eventBus.dispatch('nextpage');
|
101 | });
|
102 | items.zoomIn.addEventListener('click', function () {
|
103 | eventBus.dispatch('zoomin');
|
104 | });
|
105 | items.zoomOut.addEventListener('click', function () {
|
106 | eventBus.dispatch('zoomout');
|
107 | });
|
108 | items.pageNumber.addEventListener('click', function () {
|
109 | this.select();
|
110 | });
|
111 | items.pageNumber.addEventListener('change', function () {
|
112 | eventBus.dispatch('pagenumberchanged', {
|
113 | source: self,
|
114 | value: this.value
|
115 | });
|
116 | });
|
117 | items.scaleSelect.addEventListener('change', function () {
|
118 | if (this.value === 'custom') {
|
119 | return;
|
120 | }
|
121 | eventBus.dispatch('scalechanged', {
|
122 | source: self,
|
123 | value: this.value
|
124 | });
|
125 | });
|
126 | items.presentationModeButton.addEventListener('click', function () {
|
127 | eventBus.dispatch('presentationmode');
|
128 | });
|
129 | items.openFile.addEventListener('click', function () {
|
130 | eventBus.dispatch('openfile');
|
131 | });
|
132 | items.print.addEventListener('click', function () {
|
133 | eventBus.dispatch('print');
|
134 | });
|
135 | items.download.addEventListener('click', function () {
|
136 | eventBus.dispatch('download');
|
137 | });
|
138 | items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler;
|
139 | eventBus.on('localized', function () {
|
140 | _this._localized();
|
141 | });
|
142 | }
|
143 | }, {
|
144 | key: '_localized',
|
145 | value: function _localized() {
|
146 | this._wasLocalized = true;
|
147 | this._adjustScaleWidth();
|
148 | this._updateUIState(true);
|
149 | }
|
150 | }, {
|
151 | key: '_updateUIState',
|
152 | value: function _updateUIState() {
|
153 | var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
154 |
|
155 | if (!this._wasLocalized) {
|
156 | return;
|
157 | }
|
158 | var pageNumber = this.pageNumber,
|
159 | pagesCount = this.pagesCount,
|
160 | items = this.items;
|
161 |
|
162 | var scaleValue = (this.pageScaleValue || this.pageScale).toString();
|
163 | var scale = this.pageScale;
|
164 | if (resetNumPages) {
|
165 | if (this.hasPageLabels) {
|
166 | items.pageNumber.type = 'text';
|
167 | } else {
|
168 | items.pageNumber.type = 'number';
|
169 | this.l10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}').then(function (msg) {
|
170 | items.numPages.textContent = msg;
|
171 | });
|
172 | }
|
173 | items.pageNumber.max = pagesCount;
|
174 | }
|
175 | if (this.hasPageLabels) {
|
176 | items.pageNumber.value = this.pageLabel;
|
177 | this.l10n.get('page_of_pages', {
|
178 | pageNumber: pageNumber,
|
179 | pagesCount: pagesCount
|
180 | }, '({{pageNumber}} of {{pagesCount}})').then(function (msg) {
|
181 | items.numPages.textContent = msg;
|
182 | });
|
183 | } else {
|
184 | items.pageNumber.value = pageNumber;
|
185 | }
|
186 | items.previous.disabled = pageNumber <= 1;
|
187 | items.next.disabled = pageNumber >= pagesCount;
|
188 | items.zoomOut.disabled = scale <= _ui_utils.MIN_SCALE;
|
189 | items.zoomIn.disabled = scale >= _ui_utils.MAX_SCALE;
|
190 | var customScale = Math.round(scale * 10000) / 100;
|
191 | this.l10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%').then(function (msg) {
|
192 | var options = items.scaleSelect.options;
|
193 | var predefinedValueFound = false;
|
194 | for (var i = 0, ii = options.length; i < ii; i++) {
|
195 | var option = options[i];
|
196 | if (option.value !== scaleValue) {
|
197 | option.selected = false;
|
198 | continue;
|
199 | }
|
200 | option.selected = true;
|
201 | predefinedValueFound = true;
|
202 | }
|
203 | if (!predefinedValueFound) {
|
204 | items.customScaleOption.textContent = msg;
|
205 | items.customScaleOption.selected = true;
|
206 | }
|
207 | });
|
208 | }
|
209 | }, {
|
210 | key: 'updateLoadingIndicatorState',
|
211 | value: function updateLoadingIndicatorState() {
|
212 | var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
213 |
|
214 | var pageNumberInput = this.items.pageNumber;
|
215 | if (loading) {
|
216 | pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR);
|
217 | } else {
|
218 | pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR);
|
219 | }
|
220 | }
|
221 | }, {
|
222 | key: '_adjustScaleWidth',
|
223 | value: function _adjustScaleWidth() {
|
224 | var container = this.items.scaleSelectContainer;
|
225 | var select = this.items.scaleSelect;
|
226 | _ui_utils.animationStarted.then(function () {
|
227 | if (container.clientWidth === 0) {
|
228 | container.setAttribute('style', 'display: inherit;');
|
229 | }
|
230 | if (container.clientWidth > 0) {
|
231 | select.setAttribute('style', 'min-width: inherit;');
|
232 | var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;
|
233 | select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;');
|
234 | container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;');
|
235 | }
|
236 | });
|
237 | }
|
238 | }]);
|
239 |
|
240 | return Toolbar;
|
241 | }();
|
242 |
|
243 | exports.Toolbar = Toolbar; |
\ | No newline at end of file |