better-pdfjs-rails 1.6.380.5 → 1.6.422.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/lib/better/pdfjs/rails/version.rb +1 -1
  3. data/vendor/assets/javascripts/generic/build/pdf.js +68 -17
  4. data/vendor/assets/javascripts/generic/build/pdf.worker.js +139 -74
  5. data/vendor/assets/javascripts/generic/web/compatibility.js +3 -1
  6. data/vendor/assets/javascripts/generic/web/locale/ast/viewer.properties +2 -0
  7. data/vendor/assets/javascripts/generic/web/locale/az/viewer.properties +7 -0
  8. data/vendor/assets/javascripts/generic/web/locale/bn-BD/viewer.properties +5 -0
  9. data/vendor/assets/javascripts/generic/web/locale/el/viewer.properties +6 -1
  10. data/vendor/assets/javascripts/generic/web/locale/eo/viewer.properties +8 -0
  11. data/vendor/assets/javascripts/generic/web/locale/es-MX/viewer.properties +5 -0
  12. data/vendor/assets/javascripts/generic/web/locale/ff/viewer.properties +8 -0
  13. data/vendor/assets/javascripts/generic/web/locale/ga-IE/viewer.properties +8 -0
  14. data/vendor/assets/javascripts/generic/web/locale/hi-IN/viewer.properties +1 -0
  15. data/vendor/assets/javascripts/generic/web/locale/km/viewer.properties +9 -1
  16. data/vendor/assets/javascripts/generic/web/locale/mr/viewer.properties +5 -0
  17. data/vendor/assets/javascripts/generic/web/locale/nb-NO/viewer.properties +7 -0
  18. data/vendor/assets/javascripts/generic/web/locale/ro/viewer.properties +7 -0
  19. data/vendor/assets/javascripts/generic/web/locale/sl/viewer.properties +8 -0
  20. data/vendor/assets/javascripts/generic/web/locale/xh/viewer.properties +8 -0
  21. data/vendor/assets/javascripts/generic/web/locale/zh-CN/viewer.properties +1 -1
  22. data/vendor/assets/javascripts/generic/web/viewer.css +17 -3
  23. data/vendor/assets/javascripts/generic/web/viewer.js +258 -247
  24. data/vendor/assets/javascripts/pdf.js +68 -17
  25. data/vendor/assets/javascripts/pdf.worker.js +139 -74
  26. data/vendor/assets/javascripts/version.json +3 -3
  27. data/vendor/assets/javascripts/viewer.js +258 -247
  28. metadata +2 -2
@@ -19,11 +19,14 @@ next.title=Iphepha elilandelayo
19
19
  next_label=Okulandelayo
20
20
 
21
21
  # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
22
+ page.title=Iphepha
22
23
  # LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
23
24
  # representing the total number of pages in the document.
25
+ of_pages=kwali- {{pagesCount}}
24
26
  # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
25
27
  # will be replaced by a number representing the currently visible page,
26
28
  # respectively a number representing the total number of pages in the document.
29
+ page_of_pages=({{pageNumber}} kwali {{pagesCount}})
27
30
 
28
31
  zoom_out.title=Bhekelisela Kudana
29
32
  zoom_out_label=Bhekelisela Kudana
@@ -88,14 +91,18 @@ document_properties_version=Uhlelo lwe-PDF:
88
91
  document_properties_page_count=Inani lamaphepha:
89
92
  document_properties_close=Vala
90
93
 
94
+ print_progress_message=Ilungisa uxwebhu ukuze iprinte…
91
95
  # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
92
96
  # a numerical per cent value.
97
+ print_progress_percent={{inkqubela}}%
98
+ print_progress_close=Rhoxisa
93
99
 
94
100
  # Tooltips and alt text for side panel toolbar buttons
95
101
  # (the _label strings are alt text for the buttons, the .title strings are
96
102
  # tooltips)
97
103
  toggle_sidebar.title=Togola ngebha eseCaleni
98
104
  toggle_sidebar_label=Togola ngebha eseCaleni
105
+ document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto)
99
106
  document_outline_label=Isishwankathelo soxwebhu
100
107
  attachments.title=Bonisa iziqhotyoshelwa
101
108
  attachments_label=Iziqhoboshelo
@@ -167,6 +174,7 @@ text_annotation_type.alt=[{{type}} Ubhalo-nqaku]
167
174
  password_label=Faka ipasiwedi ukuze uvule le fayile yePDF.
168
175
  password_invalid=Ipasiwedi ayisebenzi. Nceda uzame kwakhona.
169
176
  password_ok=KULUNGILE
177
+ password_cancel=Rhoxisa
170
178
 
171
179
  printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza.
172
180
  printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta.
@@ -129,7 +129,7 @@ find_highlight=全部高亮显示
129
129
  find_match_case_label=区分大小写
130
130
  find_reached_top=到达文档开头,从末尾继续
131
131
  find_reached_bottom=到达文档末尾,从开头继续
132
- find_not_found=词语未找到
132
+ find_not_found=找不到指定词语
133
133
 
134
134
  # Error panel labels
135
135
  error_more_info=更多信息
@@ -112,7 +112,9 @@
112
112
 
113
113
  .annotationLayer .textWidgetAnnotation input,
114
114
  .annotationLayer .textWidgetAnnotation textarea,
115
- .annotationLayer .choiceWidgetAnnotation select {
115
+ .annotationLayer .choiceWidgetAnnotation select,
116
+ .annotationLayer .buttonWidgetAnnotation.checkBox input,
117
+ .annotationLayer .buttonWidgetAnnotation.radioButton input {
116
118
  background-color: rgba(0, 54, 255, 0.13);
117
119
  border: 1px solid transparent;
118
120
  box-sizing: border-box;
@@ -131,7 +133,9 @@
131
133
 
132
134
  .annotationLayer .textWidgetAnnotation input[disabled],
133
135
  .annotationLayer .textWidgetAnnotation textarea[disabled],
134
- .annotationLayer .choiceWidgetAnnotation select[disabled] {
136
+ .annotationLayer .choiceWidgetAnnotation select[disabled],
137
+ .annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],
138
+ .annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {
135
139
  background: none;
136
140
  border: 1px solid transparent;
137
141
  cursor: not-allowed;
@@ -139,7 +143,9 @@
139
143
 
140
144
  .annotationLayer .textWidgetAnnotation input:hover,
141
145
  .annotationLayer .textWidgetAnnotation textarea:hover,
142
- .annotationLayer .choiceWidgetAnnotation select:hover {
146
+ .annotationLayer .choiceWidgetAnnotation select:hover,
147
+ .annotationLayer .buttonWidgetAnnotation.checkBox input:hover,
148
+ .annotationLayer .buttonWidgetAnnotation.radioButton input:hover {
143
149
  border: 1px solid #000;
144
150
  }
145
151
 
@@ -166,6 +172,14 @@
166
172
  width: 115%;
167
173
  }
168
174
 
175
+ .annotationLayer .buttonWidgetAnnotation.checkBox input,
176
+ .annotationLayer .buttonWidgetAnnotation.radioButton input {
177
+ -webkit-appearance: none;
178
+ -moz-appearance: none;
179
+ -ms-appearance: none;
180
+ appearance: none;
181
+ }
182
+
169
183
  .annotationLayer .popupWrapper {
170
184
  position: absolute;
171
185
  width: 20em;
@@ -625,66 +625,6 @@ var pdfjsWebLibs;
625
625
  };
626
626
  exports.DownloadManager = DownloadManager;
627
627
  }));
628
- (function (root, factory) {
629
- factory(root.pdfjsWebHandTool = {}, root.pdfjsWebGrabToPan, root.pdfjsWebPreferences);
630
- }(this, function (exports, grabToPan, preferences) {
631
- var GrabToPan = grabToPan.GrabToPan;
632
- var Preferences = preferences.Preferences;
633
- var HandTool = function HandToolClosure() {
634
- function HandTool(options) {
635
- this.container = options.container;
636
- this.eventBus = options.eventBus;
637
- this.wasActive = false;
638
- this.handTool = new GrabToPan({
639
- element: this.container,
640
- onActiveChanged: function (isActive) {
641
- this.eventBus.dispatch('handtoolchanged', { isActive: isActive });
642
- }.bind(this)
643
- });
644
- this.eventBus.on('togglehandtool', this.toggle.bind(this));
645
- this.eventBus.on('localized', function (e) {
646
- Preferences.get('enableHandToolOnLoad').then(function resolved(value) {
647
- if (value) {
648
- this.handTool.activate();
649
- }
650
- }.bind(this), function rejected(reason) {
651
- });
652
- }.bind(this));
653
- this.eventBus.on('presentationmodechanged', function (e) {
654
- if (e.switchInProgress) {
655
- return;
656
- }
657
- if (e.active) {
658
- this.enterPresentationMode();
659
- } else {
660
- this.exitPresentationMode();
661
- }
662
- }.bind(this));
663
- }
664
- HandTool.prototype = {
665
- get isActive() {
666
- return !!this.handTool.active;
667
- },
668
- toggle: function HandTool_toggle() {
669
- this.handTool.toggle();
670
- },
671
- enterPresentationMode: function HandTool_enterPresentationMode() {
672
- if (this.isActive) {
673
- this.wasActive = true;
674
- this.handTool.deactivate();
675
- }
676
- },
677
- exitPresentationMode: function HandTool_exitPresentationMode() {
678
- if (this.wasActive) {
679
- this.wasActive = false;
680
- this.handTool.activate();
681
- }
682
- }
683
- };
684
- return HandTool;
685
- }();
686
- exports.HandTool = HandTool;
687
- }));
688
628
  (function (root, factory) {
689
629
  factory(root.pdfjsWebPDFAttachmentViewer = {}, root.pdfjsWebPDFJS);
690
630
  }(this, function (exports, pdfjsLib) {
@@ -1631,6 +1571,68 @@ var pdfjsWebLibs;
1631
1571
  exports.attachDOMEventsToEventBus = attachDOMEventsToEventBus;
1632
1572
  exports.getGlobalEventBus = getGlobalEventBus;
1633
1573
  }));
1574
+ (function (root, factory) {
1575
+ factory(root.pdfjsWebHandTool = {}, root.pdfjsWebGrabToPan, root.pdfjsWebPreferences, root.pdfjsWebUIUtils);
1576
+ }(this, function (exports, grabToPan, preferences, uiUtils) {
1577
+ var GrabToPan = grabToPan.GrabToPan;
1578
+ var Preferences = preferences.Preferences;
1579
+ var localized = uiUtils.localized;
1580
+ var HandTool = function HandToolClosure() {
1581
+ function HandTool(options) {
1582
+ this.container = options.container;
1583
+ this.eventBus = options.eventBus;
1584
+ this.wasActive = false;
1585
+ this.handTool = new GrabToPan({
1586
+ element: this.container,
1587
+ onActiveChanged: function (isActive) {
1588
+ this.eventBus.dispatch('handtoolchanged', { isActive: isActive });
1589
+ }.bind(this)
1590
+ });
1591
+ this.eventBus.on('togglehandtool', this.toggle.bind(this));
1592
+ Promise.all([
1593
+ localized,
1594
+ Preferences.get('enableHandToolOnLoad')
1595
+ ]).then(function resolved(values) {
1596
+ if (values[1] === true) {
1597
+ this.handTool.activate();
1598
+ }
1599
+ }.bind(this)).catch(function rejected(reason) {
1600
+ });
1601
+ this.eventBus.on('presentationmodechanged', function (e) {
1602
+ if (e.switchInProgress) {
1603
+ return;
1604
+ }
1605
+ if (e.active) {
1606
+ this.enterPresentationMode();
1607
+ } else {
1608
+ this.exitPresentationMode();
1609
+ }
1610
+ }.bind(this));
1611
+ }
1612
+ HandTool.prototype = {
1613
+ get isActive() {
1614
+ return !!this.handTool.active;
1615
+ },
1616
+ toggle: function HandTool_toggle() {
1617
+ this.handTool.toggle();
1618
+ },
1619
+ enterPresentationMode: function HandTool_enterPresentationMode() {
1620
+ if (this.isActive) {
1621
+ this.wasActive = true;
1622
+ this.handTool.deactivate();
1623
+ }
1624
+ },
1625
+ exitPresentationMode: function HandTool_exitPresentationMode() {
1626
+ if (this.wasActive) {
1627
+ this.wasActive = false;
1628
+ this.handTool.activate();
1629
+ }
1630
+ }
1631
+ };
1632
+ return HandTool;
1633
+ }();
1634
+ exports.HandTool = HandTool;
1635
+ }));
1634
1636
  (function (root, factory) {
1635
1637
  factory(root.pdfjsWebPasswordPrompt = {}, root.pdfjsWebUIUtils, root.pdfjsWebOverlayManager, root.pdfjsWebPDFJS);
1636
1638
  }(this, function (exports, uiUtils, overlayManager, pdfjsLib) {
@@ -2920,7 +2922,7 @@ var pdfjsWebLibs;
2920
2922
  toggleHandToolButton.title = mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool');
2921
2923
  toggleHandToolButton.firstElementChild.textContent = mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool');
2922
2924
  }
2923
- }.bind(this));
2925
+ });
2924
2926
  },
2925
2927
  open: function SecondaryToolbar_open() {
2926
2928
  if (this.opened) {
@@ -4204,7 +4206,7 @@ var pdfjsWebLibs;
4204
4206
  }
4205
4207
  if (error === 'cancelled') {
4206
4208
  self.error = null;
4207
- return;
4209
+ return Promise.resolve(undefined);
4208
4210
  }
4209
4211
  self.renderingState = RenderingStates.FINISHED;
4210
4212
  if (self.loadingIconDiv) {
@@ -4230,21 +4232,25 @@ var pdfjsWebLibs;
4230
4232
  pageNumber: self.id,
4231
4233
  cssTransform: false
4232
4234
  });
4235
+ if (error) {
4236
+ return Promise.reject(error);
4237
+ }
4238
+ return Promise.resolve(undefined);
4233
4239
  };
4234
4240
  var paintTask = this.renderer === RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper);
4235
4241
  paintTask.onRenderContinue = renderContinueCallback;
4236
4242
  this.paintTask = paintTask;
4237
4243
  var resultPromise = paintTask.promise.then(function () {
4238
- finishPaintTask(null);
4239
- if (textLayer) {
4240
- pdfPage.getTextContent({ normalizeWhitespace: true }).then(function textContentResolved(textContent) {
4241
- textLayer.setTextContent(textContent);
4242
- textLayer.render(TEXT_LAYER_RENDER_DELAY);
4243
- });
4244
- }
4244
+ return finishPaintTask(null).then(function () {
4245
+ if (textLayer) {
4246
+ pdfPage.getTextContent({ normalizeWhitespace: true }).then(function textContentResolved(textContent) {
4247
+ textLayer.setTextContent(textContent);
4248
+ textLayer.render(TEXT_LAYER_RENDER_DELAY);
4249
+ });
4250
+ }
4251
+ });
4245
4252
  }, function (reason) {
4246
- finishPaintTask(reason);
4247
- throw reason;
4253
+ return finishPaintTask(reason);
4248
4254
  });
4249
4255
  if (this.annotationLayerFactory) {
4250
4256
  if (!this.annotationLayer) {
@@ -5660,133 +5666,62 @@ var pdfjsWebLibs;
5660
5666
  eventBus: null,
5661
5667
  pageRotation: 0,
5662
5668
  isInitialViewSet: false,
5663
- preferenceSidebarViewOnLoad: SidebarView.NONE,
5664
- preferencePdfBugEnabled: false,
5665
- preferenceShowPreviousViewOnLoad: true,
5666
- preferenceDefaultZoomValue: '',
5667
- preferenceDisablePageLabels: false,
5669
+ viewerPrefs: {
5670
+ sidebarViewOnLoad: SidebarView.NONE,
5671
+ pdfBugEnabled: false,
5672
+ showPreviousViewOnLoad: true,
5673
+ defaultZoomValue: '',
5674
+ disablePageLabels: false,
5675
+ renderer: 'canvas',
5676
+ enhanceTextSelection: false,
5677
+ renderInteractiveForms: false
5678
+ },
5668
5679
  isViewerEmbedded: window.parent !== window,
5669
5680
  url: '',
5670
5681
  baseUrl: '',
5671
5682
  externalServices: DefaultExernalServices,
5672
5683
  initialize: function pdfViewInitialize(appConfig) {
5673
- configure(pdfjsLib.PDFJS);
5674
- this.appConfig = appConfig;
5675
- var eventBus = appConfig.eventBus || getGlobalEventBus();
5676
- this.eventBus = eventBus;
5677
- this.bindEvents();
5678
- var pdfRenderingQueue = new PDFRenderingQueue();
5679
- pdfRenderingQueue.onIdle = this.cleanup.bind(this);
5680
- this.pdfRenderingQueue = pdfRenderingQueue;
5681
- var pdfLinkService = new PDFLinkService({ eventBus: eventBus });
5682
- this.pdfLinkService = pdfLinkService;
5683
- var downloadManager = this.externalServices.createDownloadManager();
5684
- this.downloadManager = downloadManager;
5685
- var container = appConfig.mainContainer;
5686
- var viewer = appConfig.viewerContainer;
5687
- this.pdfViewer = new PDFViewer({
5688
- container: container,
5689
- viewer: viewer,
5690
- eventBus: eventBus,
5691
- renderingQueue: pdfRenderingQueue,
5692
- linkService: pdfLinkService,
5693
- downloadManager: downloadManager,
5694
- enhanceTextSelection: false,
5695
- renderInteractiveForms: false
5696
- });
5697
- pdfRenderingQueue.setViewer(this.pdfViewer);
5698
- pdfLinkService.setViewer(this.pdfViewer);
5699
- var thumbnailContainer = appConfig.sidebar.thumbnailView;
5700
- this.pdfThumbnailViewer = new PDFThumbnailViewer({
5701
- container: thumbnailContainer,
5702
- renderingQueue: pdfRenderingQueue,
5703
- linkService: pdfLinkService
5704
- });
5705
- pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);
5684
+ var self = this;
5685
+ var PDFJS = pdfjsLib.PDFJS;
5706
5686
  Preferences.initialize();
5707
5687
  this.preferences = Preferences;
5708
- this.pdfHistory = new PDFHistory({
5709
- linkService: pdfLinkService,
5710
- eventBus: this.eventBus
5711
- });
5712
- pdfLinkService.setHistory(this.pdfHistory);
5713
- this.findController = new PDFFindController({ pdfViewer: this.pdfViewer });
5714
- this.findController.onUpdateResultsCount = function (matchCount) {
5715
- if (this.supportsIntegratedFind) {
5716
- return;
5717
- }
5718
- this.findBar.updateResultsCount(matchCount);
5719
- }.bind(this);
5720
- this.findController.onUpdateState = function (state, previous, matchCount) {
5721
- if (this.supportsIntegratedFind) {
5722
- this.externalServices.updateFindControlState({
5723
- result: state,
5724
- findPrevious: previous
5725
- });
5726
- } else {
5727
- this.findBar.updateUIState(state, previous, matchCount);
5728
- }
5729
- }.bind(this);
5730
- this.pdfViewer.setFindController(this.findController);
5731
- var findBarConfig = Object.create(appConfig.findBar);
5732
- findBarConfig.findController = this.findController;
5733
- findBarConfig.eventBus = this.eventBus;
5734
- this.findBar = new PDFFindBar(findBarConfig);
5735
- this.overlayManager = OverlayManager;
5736
- this.handTool = new HandTool({
5737
- container: container,
5738
- eventBus: this.eventBus
5739
- });
5740
- this.pdfDocumentProperties = new PDFDocumentProperties(appConfig.documentProperties);
5741
- this.toolbar = new Toolbar(appConfig.toolbar, container, eventBus);
5742
- this.secondaryToolbar = new SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
5743
- if (this.supportsFullscreen) {
5744
- this.pdfPresentationMode = new PDFPresentationMode({
5745
- container: container,
5746
- viewer: viewer,
5747
- pdfViewer: this.pdfViewer,
5748
- eventBus: this.eventBus,
5749
- contextMenuItems: appConfig.fullscreen
5688
+ configure(PDFJS);
5689
+ this.appConfig = appConfig;
5690
+ return this._readPreferences().then(function () {
5691
+ return self._initializeViewerComponents();
5692
+ }).then(function () {
5693
+ self.bindEvents();
5694
+ self.bindWindowEvents();
5695
+ localized.then(function () {
5696
+ self.eventBus.dispatch('localized');
5750
5697
  });
5751
- }
5752
- this.passwordPrompt = new PasswordPrompt(appConfig.passwordOverlay);
5753
- this.pdfOutlineViewer = new PDFOutlineViewer({
5754
- container: appConfig.sidebar.outlineView,
5755
- eventBus: this.eventBus,
5756
- linkService: pdfLinkService
5757
- });
5758
- this.pdfAttachmentViewer = new PDFAttachmentViewer({
5759
- container: appConfig.sidebar.attachmentsView,
5760
- eventBus: this.eventBus,
5761
- downloadManager: downloadManager
5698
+ if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) {
5699
+ PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP;
5700
+ }
5701
+ self.initialized = true;
5762
5702
  });
5763
- var sidebarConfig = Object.create(appConfig.sidebar);
5764
- sidebarConfig.pdfViewer = this.pdfViewer;
5765
- sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer;
5766
- sidebarConfig.pdfOutlineViewer = this.pdfOutlineViewer;
5767
- sidebarConfig.eventBus = this.eventBus;
5768
- this.pdfSidebar = new PDFSidebar(sidebarConfig);
5769
- this.pdfSidebar.onToggled = this.forceRendering.bind(this);
5703
+ },
5704
+ _readPreferences: function () {
5770
5705
  var self = this;
5771
5706
  var PDFJS = pdfjsLib.PDFJS;
5772
- var initializedPromise = Promise.all([
5707
+ return Promise.all([
5773
5708
  Preferences.get('enableWebGL').then(function resolved(value) {
5774
5709
  PDFJS.disableWebGL = !value;
5775
5710
  }),
5776
5711
  Preferences.get('sidebarViewOnLoad').then(function resolved(value) {
5777
- self.preferenceSidebarViewOnLoad = value;
5712
+ self.viewerPrefs['sidebarViewOnLoad'] = value;
5778
5713
  }),
5779
5714
  Preferences.get('pdfBugEnabled').then(function resolved(value) {
5780
- self.preferencePdfBugEnabled = value;
5715
+ self.viewerPrefs['pdfBugEnabled'] = value;
5781
5716
  }),
5782
5717
  Preferences.get('showPreviousViewOnLoad').then(function resolved(value) {
5783
- self.preferenceShowPreviousViewOnLoad = value;
5718
+ self.viewerPrefs['showPreviousViewOnLoad'] = value;
5784
5719
  }),
5785
5720
  Preferences.get('defaultZoomValue').then(function resolved(value) {
5786
- self.preferenceDefaultZoomValue = value;
5721
+ self.viewerPrefs['defaultZoomValue'] = value;
5787
5722
  }),
5788
5723
  Preferences.get('enhanceTextSelection').then(function resolved(value) {
5789
- self.pdfViewer.enhanceTextSelection = value;
5724
+ self.viewerPrefs['enhanceTextSelection'] = value;
5790
5725
  }),
5791
5726
  Preferences.get('disableTextLayer').then(function resolved(value) {
5792
5727
  if (PDFJS.disableTextLayer === true) {
@@ -5825,21 +5760,115 @@ var pdfjsWebLibs;
5825
5760
  PDFJS.externalLinkTarget = value;
5826
5761
  }),
5827
5762
  Preferences.get('renderer').then(function resolved(value) {
5828
- self.pdfViewer.renderer = value;
5763
+ self.viewerPrefs['renderer'] = value;
5829
5764
  }),
5830
5765
  Preferences.get('renderInteractiveForms').then(function resolved(value) {
5831
- self.pdfViewer.renderInteractiveForms = value;
5766
+ self.viewerPrefs['renderInteractiveForms'] = value;
5832
5767
  }),
5833
5768
  Preferences.get('disablePageLabels').then(function resolved(value) {
5834
- self.preferenceDisablePageLabels = value;
5769
+ self.viewerPrefs['disablePageLabels'] = value;
5835
5770
  })
5836
5771
  ]).catch(function (reason) {
5837
5772
  });
5838
- return initializedPromise.then(function () {
5839
- if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) {
5840
- PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP;
5773
+ },
5774
+ _initializeViewerComponents: function () {
5775
+ var self = this;
5776
+ var appConfig = this.appConfig;
5777
+ return new Promise(function (resolve, reject) {
5778
+ var eventBus = appConfig.eventBus || getGlobalEventBus();
5779
+ self.eventBus = eventBus;
5780
+ var pdfRenderingQueue = new PDFRenderingQueue();
5781
+ pdfRenderingQueue.onIdle = self.cleanup.bind(self);
5782
+ self.pdfRenderingQueue = pdfRenderingQueue;
5783
+ var pdfLinkService = new PDFLinkService({ eventBus: eventBus });
5784
+ self.pdfLinkService = pdfLinkService;
5785
+ var downloadManager = self.externalServices.createDownloadManager();
5786
+ self.downloadManager = downloadManager;
5787
+ var container = appConfig.mainContainer;
5788
+ var viewer = appConfig.viewerContainer;
5789
+ self.pdfViewer = new PDFViewer({
5790
+ container: container,
5791
+ viewer: viewer,
5792
+ eventBus: eventBus,
5793
+ renderingQueue: pdfRenderingQueue,
5794
+ linkService: pdfLinkService,
5795
+ downloadManager: downloadManager,
5796
+ renderer: self.viewerPrefs['renderer'],
5797
+ enhanceTextSelection: self.viewerPrefs['enhanceTextSelection'],
5798
+ renderInteractiveForms: self.viewerPrefs['renderInteractiveForms']
5799
+ });
5800
+ pdfRenderingQueue.setViewer(self.pdfViewer);
5801
+ pdfLinkService.setViewer(self.pdfViewer);
5802
+ var thumbnailContainer = appConfig.sidebar.thumbnailView;
5803
+ self.pdfThumbnailViewer = new PDFThumbnailViewer({
5804
+ container: thumbnailContainer,
5805
+ renderingQueue: pdfRenderingQueue,
5806
+ linkService: pdfLinkService
5807
+ });
5808
+ pdfRenderingQueue.setThumbnailViewer(self.pdfThumbnailViewer);
5809
+ self.pdfHistory = new PDFHistory({
5810
+ linkService: pdfLinkService,
5811
+ eventBus: eventBus
5812
+ });
5813
+ pdfLinkService.setHistory(self.pdfHistory);
5814
+ self.findController = new PDFFindController({ pdfViewer: self.pdfViewer });
5815
+ self.findController.onUpdateResultsCount = function (matchCount) {
5816
+ if (self.supportsIntegratedFind) {
5817
+ return;
5818
+ }
5819
+ self.findBar.updateResultsCount(matchCount);
5820
+ };
5821
+ self.findController.onUpdateState = function (state, previous, matchCount) {
5822
+ if (self.supportsIntegratedFind) {
5823
+ self.externalServices.updateFindControlState({
5824
+ result: state,
5825
+ findPrevious: previous
5826
+ });
5827
+ } else {
5828
+ self.findBar.updateUIState(state, previous, matchCount);
5829
+ }
5830
+ };
5831
+ self.pdfViewer.setFindController(self.findController);
5832
+ var findBarConfig = Object.create(appConfig.findBar);
5833
+ findBarConfig.findController = self.findController;
5834
+ findBarConfig.eventBus = eventBus;
5835
+ self.findBar = new PDFFindBar(findBarConfig);
5836
+ self.overlayManager = OverlayManager;
5837
+ self.handTool = new HandTool({
5838
+ container: container,
5839
+ eventBus: eventBus
5840
+ });
5841
+ self.pdfDocumentProperties = new PDFDocumentProperties(appConfig.documentProperties);
5842
+ self.toolbar = new Toolbar(appConfig.toolbar, container, eventBus);
5843
+ self.secondaryToolbar = new SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
5844
+ if (self.supportsFullscreen) {
5845
+ self.pdfPresentationMode = new PDFPresentationMode({
5846
+ container: container,
5847
+ viewer: viewer,
5848
+ pdfViewer: self.pdfViewer,
5849
+ eventBus: eventBus,
5850
+ contextMenuItems: appConfig.fullscreen
5851
+ });
5841
5852
  }
5842
- self.initialized = true;
5853
+ self.passwordPrompt = new PasswordPrompt(appConfig.passwordOverlay);
5854
+ self.pdfOutlineViewer = new PDFOutlineViewer({
5855
+ container: appConfig.sidebar.outlineView,
5856
+ eventBus: eventBus,
5857
+ linkService: pdfLinkService
5858
+ });
5859
+ self.pdfAttachmentViewer = new PDFAttachmentViewer({
5860
+ container: appConfig.sidebar.attachmentsView,
5861
+ eventBus: eventBus,
5862
+ downloadManager: downloadManager
5863
+ });
5864
+ var sidebarConfig = Object.create(appConfig.sidebar);
5865
+ sidebarConfig.pdfViewer = self.pdfViewer;
5866
+ sidebarConfig.pdfThumbnailViewer = self.pdfThumbnailViewer;
5867
+ sidebarConfig.pdfOutlineViewer = self.pdfOutlineViewer;
5868
+ sidebarConfig.eventBus = eventBus;
5869
+ self.pdfSidebar = new PDFSidebar(sidebarConfig);
5870
+ self.pdfSidebar.onToggled = self.forceRendering.bind(self);
5871
+ resolve(undefined);
5843
5872
  });
5844
5873
  },
5845
5874
  run: function pdfViewRun(config) {
@@ -6133,7 +6162,7 @@ var pdfjsWebLibs;
6133
6162
  });
6134
6163
  self.loadingBar.setWidth(self.appConfig.viewerContainer);
6135
6164
  if (!pdfjsLib.PDFJS.disableHistory && !self.isViewerEmbedded) {
6136
- if (!self.preferenceShowPreviousViewOnLoad) {
6165
+ if (!self.viewerPrefs['showPreviousViewOnLoad']) {
6137
6166
  self.pdfHistory.clearHistoryState();
6138
6167
  }
6139
6168
  self.pdfHistory.initialize(self.documentFingerprint);
@@ -6150,15 +6179,15 @@ var pdfjsWebLibs;
6150
6179
  };
6151
6180
  store.initializedPromise.then(function resolved() {
6152
6181
  var storedHash = null, sidebarView = null;
6153
- if (self.preferenceShowPreviousViewOnLoad && store.get('exists', false)) {
6182
+ if (self.viewerPrefs['showPreviousViewOnLoad'] && store.get('exists', false)) {
6154
6183
  var pageNum = store.get('page', '1');
6155
- var zoom = self.preferenceDefaultZoomValue || store.get('zoom', DEFAULT_SCALE_VALUE);
6184
+ var zoom = self.viewerPrefs['defaultZoomValue'] || store.get('zoom', DEFAULT_SCALE_VALUE);
6156
6185
  var left = store.get('scrollLeft', '0');
6157
6186
  var top = store.get('scrollTop', '0');
6158
6187
  storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + left + ',' + top;
6159
6188
  sidebarView = store.get('sidebarView', SidebarView.NONE);
6160
- } else if (self.preferenceDefaultZoomValue) {
6161
- storedHash = 'page=1&zoom=' + self.preferenceDefaultZoomValue;
6189
+ } else if (self.viewerPrefs['defaultZoomValue']) {
6190
+ storedHash = 'page=1&zoom=' + self.viewerPrefs['defaultZoomValue'];
6162
6191
  }
6163
6192
  self.setInitialView(storedHash, {
6164
6193
  scale: scale,
@@ -6186,7 +6215,7 @@ var pdfjsWebLibs;
6186
6215
  });
6187
6216
  });
6188
6217
  pdfDocument.getPageLabels().then(function (labels) {
6189
- if (!labels || self.preferenceDisablePageLabels) {
6218
+ if (!labels || self.viewerPrefs['disablePageLabels']) {
6190
6219
  return;
6191
6220
  }
6192
6221
  var i = 0, numLabels = labels.length;
@@ -6264,7 +6293,7 @@ var pdfjsWebLibs;
6264
6293
  var scale = options && options.scale;
6265
6294
  var sidebarView = options && options.sidebarView;
6266
6295
  this.isInitialViewSet = true;
6267
- this.pdfSidebar.setInitialView(this.preferenceSidebarViewOnLoad || sidebarView | 0);
6296
+ this.pdfSidebar.setInitialView(this.viewerPrefs['sidebarViewOnLoad'] || sidebarView | 0);
6268
6297
  if (this.initialDestination) {
6269
6298
  this.pdfLinkService.navigateTo(this.initialDestination);
6270
6299
  this.initialDestination = null;
@@ -6384,6 +6413,31 @@ var pdfjsWebLibs;
6384
6413
  eventBus.on('find', webViewerFind);
6385
6414
  eventBus.on('findfromurlhash', webViewerFindFromUrlHash);
6386
6415
  eventBus.on('fileinputchange', webViewerFileInputChange);
6416
+ },
6417
+ bindWindowEvents: function pdfViewBindWindowEvents() {
6418
+ var eventBus = this.eventBus;
6419
+ window.addEventListener('wheel', webViewerWheel);
6420
+ window.addEventListener('click', webViewerClick);
6421
+ window.addEventListener('keydown', webViewerKeyDown);
6422
+ window.addEventListener('resize', function windowResize() {
6423
+ eventBus.dispatch('resize');
6424
+ });
6425
+ window.addEventListener('hashchange', function windowHashChange() {
6426
+ eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) });
6427
+ });
6428
+ window.addEventListener('beforeprint', function windowBeforePrint() {
6429
+ eventBus.dispatch('beforeprint');
6430
+ });
6431
+ window.addEventListener('afterprint', function windowAfterPrint() {
6432
+ eventBus.dispatch('afterprint');
6433
+ });
6434
+ window.addEventListener('change', function windowChange(evt) {
6435
+ var files = evt.target.files;
6436
+ if (!files || files.length === 0) {
6437
+ return;
6438
+ }
6439
+ eventBus.dispatch('fileinputchange', { fileInput: evt.target });
6440
+ });
6387
6441
  }
6388
6442
  };
6389
6443
  var validateFileURL;
@@ -6447,7 +6501,7 @@ var pdfjsWebLibs;
6447
6501
  fileInput.value = null;
6448
6502
  }
6449
6503
  var PDFJS = pdfjsLib.PDFJS;
6450
- if (PDFViewerApplication.preferencePdfBugEnabled) {
6504
+ if (PDFViewerApplication.viewerPrefs['pdfBugEnabled']) {
6451
6505
  var hash = document.location.hash.substring(1);
6452
6506
  var hashParams = parseQueryString(hash);
6453
6507
  if ('disableworker' in hashParams) {
@@ -6574,9 +6628,6 @@ var pdfjsWebLibs;
6574
6628
  function webViewerTextLayerRendered(e) {
6575
6629
  }
6576
6630
  function webViewerPageMode(e) {
6577
- if (!PDFViewerApplication.initialized) {
6578
- return;
6579
- }
6580
6631
  var mode = e.mode, view;
6581
6632
  switch (mode) {
6582
6633
  case 'thumbs':
@@ -6599,9 +6650,6 @@ var pdfjsWebLibs;
6599
6650
  PDFViewerApplication.pdfSidebar.switchView(view, true);
6600
6651
  }
6601
6652
  function webViewerNamedAction(e) {
6602
- if (!PDFViewerApplication.initialized) {
6603
- return;
6604
- }
6605
6653
  var action = e.action;
6606
6654
  switch (action) {
6607
6655
  case 'GoToPage':
@@ -6620,9 +6668,6 @@ var pdfjsWebLibs;
6620
6668
  PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? PresentationModeState.CHANGING : active ? PresentationModeState.FULLSCREEN : PresentationModeState.NORMAL;
6621
6669
  }
6622
6670
  function webViewerSidebarViewChanged(e) {
6623
- if (!PDFViewerApplication.initialized) {
6624
- return;
6625
- }
6626
6671
  PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;
6627
6672
  var store = PDFViewerApplication.store;
6628
6673
  if (!store || !PDFViewerApplication.isInitialViewSet) {
@@ -6634,9 +6679,6 @@ var pdfjsWebLibs;
6634
6679
  });
6635
6680
  }
6636
6681
  function webViewerUpdateViewarea(e) {
6637
- if (!PDFViewerApplication.initialized) {
6638
- return;
6639
- }
6640
6682
  var location = e.location, store = PDFViewerApplication.store;
6641
6683
  if (store) {
6642
6684
  store.initializedPromise.then(function () {
@@ -6658,27 +6700,15 @@ var pdfjsWebLibs;
6658
6700
  var loading = currentPage.renderingState !== RenderingStates.FINISHED;
6659
6701
  PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
6660
6702
  }
6661
- window.addEventListener('resize', function webViewerResize(evt) {
6662
- if (!PDFViewerApplication.eventBus) {
6663
- return;
6664
- }
6665
- PDFViewerApplication.eventBus.dispatch('resize');
6666
- });
6667
6703
  function webViewerResize() {
6668
- if (PDFViewerApplication.initialized) {
6669
- var currentScaleValue = PDFViewerApplication.pdfViewer.currentScaleValue;
6670
- if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {
6671
- PDFViewerApplication.pdfViewer.currentScaleValue = currentScaleValue;
6672
- } else if (!currentScaleValue) {
6673
- PDFViewerApplication.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;
6674
- }
6675
- PDFViewerApplication.pdfViewer.update();
6704
+ var currentScaleValue = PDFViewerApplication.pdfViewer.currentScaleValue;
6705
+ if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') {
6706
+ PDFViewerApplication.pdfViewer.currentScaleValue = currentScaleValue;
6707
+ } else if (!currentScaleValue) {
6708
+ PDFViewerApplication.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;
6676
6709
  }
6710
+ PDFViewerApplication.pdfViewer.update();
6677
6711
  }
6678
- window.addEventListener('hashchange', function webViewerHashchange(evt) {
6679
- var hash = document.location.hash.substring(1);
6680
- PDFViewerApplication.eventBus.dispatch('hashchange', { hash: hash });
6681
- });
6682
6712
  function webViewerHashchange(e) {
6683
6713
  if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) {
6684
6714
  var hash = e.hash;
@@ -6693,13 +6723,6 @@ var pdfjsWebLibs;
6693
6723
  }
6694
6724
  }
6695
6725
  var webViewerFileInputChange;
6696
- window.addEventListener('change', function webViewerChange(evt) {
6697
- var files = evt.target.files;
6698
- if (!files || files.length === 0) {
6699
- return;
6700
- }
6701
- PDFViewerApplication.eventBus.dispatch('fileinputchange', { fileInput: evt.target });
6702
- }, true);
6703
6726
  webViewerFileInputChange = function webViewerFileInputChange(e) {
6704
6727
  var file = e.fileInput.files[0];
6705
6728
  if (!pdfjsLib.PDFJS.disableCreateObjectURL && typeof URL !== 'undefined' && URL.createObjectURL) {
@@ -6720,10 +6743,6 @@ var pdfjsWebLibs;
6720
6743
  appConfig.toolbar.download.setAttribute('hidden', 'true');
6721
6744
  appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true');
6722
6745
  };
6723
- function webViewerLocalized() {
6724
- document.getElementsByTagName('html')[0].dir = mozL10n.getDirection();
6725
- PDFViewerApplication.eventBus.dispatch('localized');
6726
- }
6727
6746
  function webViewerPresentationMode() {
6728
6747
  PDFViewerApplication.requestPresentationMode();
6729
6748
  }
@@ -6798,9 +6817,6 @@ var pdfjsWebLibs;
6798
6817
  }
6799
6818
  function webViewerScaleChanging(e) {
6800
6819
  PDFViewerApplication.toolbar.setPageScale(e.presetValue, e.scale);
6801
- if (!PDFViewerApplication.initialized) {
6802
- return;
6803
- }
6804
6820
  PDFViewerApplication.pdfViewer.update();
6805
6821
  }
6806
6822
  function webViewerPageChanging(e) {
@@ -6818,9 +6834,9 @@ var pdfjsWebLibs;
6818
6834
  }
6819
6835
  }
6820
6836
  var zoomDisabled = false, zoomDisabledTimeout;
6821
- function handleMouseWheel(evt) {
6837
+ function webViewerWheel(evt) {
6822
6838
  var pdfViewer = PDFViewerApplication.pdfViewer;
6823
- if (!pdfViewer || pdfViewer.isInPresentationMode) {
6839
+ if (pdfViewer.isInPresentationMode) {
6824
6840
  return;
6825
6841
  }
6826
6842
  if (evt.ctrlKey || evt.metaKey) {
@@ -6858,8 +6874,7 @@ var pdfjsWebLibs;
6858
6874
  }, 1000);
6859
6875
  }
6860
6876
  }
6861
- window.addEventListener('wheel', handleMouseWheel);
6862
- window.addEventListener('click', function click(evt) {
6877
+ function webViewerClick(evt) {
6863
6878
  if (!PDFViewerApplication.secondaryToolbar.isOpen) {
6864
6879
  return;
6865
6880
  }
@@ -6867,8 +6882,8 @@ var pdfjsWebLibs;
6867
6882
  if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) {
6868
6883
  PDFViewerApplication.secondaryToolbar.close();
6869
6884
  }
6870
- }, true);
6871
- window.addEventListener('keydown', function keydown(evt) {
6885
+ }
6886
+ function webViewerKeyDown(evt) {
6872
6887
  if (OverlayManager.active) {
6873
6888
  return;
6874
6889
  }
@@ -7088,14 +7103,10 @@ var pdfjsWebLibs;
7088
7103
  if (handled) {
7089
7104
  evt.preventDefault();
7090
7105
  }
7106
+ }
7107
+ localized.then(function webViewerLocalized() {
7108
+ document.getElementsByTagName('html')[0].dir = mozL10n.getDirection();
7091
7109
  });
7092
- window.addEventListener('beforeprint', function beforePrint(evt) {
7093
- PDFViewerApplication.eventBus.dispatch('beforeprint');
7094
- });
7095
- window.addEventListener('afterprint', function afterPrint(evt) {
7096
- PDFViewerApplication.eventBus.dispatch('afterprint');
7097
- });
7098
- localized.then(webViewerLocalized);
7099
7110
  var PDFPrintServiceFactory = {
7100
7111
  instance: {
7101
7112
  supportsPrinting: false,