dom_events.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /* Copyright 2017 Mozilla Foundation
  2. *
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. 'use strict';
  16. var uiUtils = require('./ui_utils.js');
  17. var EventBus = uiUtils.EventBus;
  18. function attachDOMEventsToEventBus(eventBus) {
  19. eventBus.on('documentload', function () {
  20. var event = document.createEvent('CustomEvent');
  21. event.initCustomEvent('documentload', true, true, {});
  22. window.dispatchEvent(event);
  23. });
  24. eventBus.on('pagerendered', function (e) {
  25. var event = document.createEvent('CustomEvent');
  26. event.initCustomEvent('pagerendered', true, true, {
  27. pageNumber: e.pageNumber,
  28. cssTransform: e.cssTransform
  29. });
  30. e.source.div.dispatchEvent(event);
  31. });
  32. eventBus.on('textlayerrendered', function (e) {
  33. var event = document.createEvent('CustomEvent');
  34. event.initCustomEvent('textlayerrendered', true, true, { pageNumber: e.pageNumber });
  35. e.source.textLayerDiv.dispatchEvent(event);
  36. });
  37. eventBus.on('pagechange', function (e) {
  38. var event = document.createEvent('UIEvents');
  39. event.initUIEvent('pagechange', true, true, window, 0);
  40. event.pageNumber = e.pageNumber;
  41. e.source.container.dispatchEvent(event);
  42. });
  43. eventBus.on('pagesinit', function (e) {
  44. var event = document.createEvent('CustomEvent');
  45. event.initCustomEvent('pagesinit', true, true, null);
  46. e.source.container.dispatchEvent(event);
  47. });
  48. eventBus.on('pagesloaded', function (e) {
  49. var event = document.createEvent('CustomEvent');
  50. event.initCustomEvent('pagesloaded', true, true, { pagesCount: e.pagesCount });
  51. e.source.container.dispatchEvent(event);
  52. });
  53. eventBus.on('scalechange', function (e) {
  54. var event = document.createEvent('UIEvents');
  55. event.initUIEvent('scalechange', true, true, window, 0);
  56. event.scale = e.scale;
  57. event.presetValue = e.presetValue;
  58. e.source.container.dispatchEvent(event);
  59. });
  60. eventBus.on('updateviewarea', function (e) {
  61. var event = document.createEvent('UIEvents');
  62. event.initUIEvent('updateviewarea', true, true, window, 0);
  63. event.location = e.location;
  64. e.source.container.dispatchEvent(event);
  65. });
  66. eventBus.on('find', function (e) {
  67. if (e.source === window) {
  68. return;
  69. }
  70. var event = document.createEvent('CustomEvent');
  71. event.initCustomEvent('find' + e.type, true, true, {
  72. query: e.query,
  73. phraseSearch: e.phraseSearch,
  74. caseSensitive: e.caseSensitive,
  75. highlightAll: e.highlightAll,
  76. findPrevious: e.findPrevious
  77. });
  78. window.dispatchEvent(event);
  79. });
  80. eventBus.on('attachmentsloaded', function (e) {
  81. var event = document.createEvent('CustomEvent');
  82. event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: e.attachmentsCount });
  83. e.source.container.dispatchEvent(event);
  84. });
  85. eventBus.on('sidebarviewchanged', function (e) {
  86. var event = document.createEvent('CustomEvent');
  87. event.initCustomEvent('sidebarviewchanged', true, true, { view: e.view });
  88. e.source.outerContainer.dispatchEvent(event);
  89. });
  90. eventBus.on('pagemode', function (e) {
  91. var event = document.createEvent('CustomEvent');
  92. event.initCustomEvent('pagemode', true, true, { mode: e.mode });
  93. e.source.pdfViewer.container.dispatchEvent(event);
  94. });
  95. eventBus.on('namedaction', function (e) {
  96. var event = document.createEvent('CustomEvent');
  97. event.initCustomEvent('namedaction', true, true, { action: e.action });
  98. e.source.pdfViewer.container.dispatchEvent(event);
  99. });
  100. eventBus.on('presentationmodechanged', function (e) {
  101. var event = document.createEvent('CustomEvent');
  102. event.initCustomEvent('presentationmodechanged', true, true, {
  103. active: e.active,
  104. switchInProgress: e.switchInProgress
  105. });
  106. window.dispatchEvent(event);
  107. });
  108. eventBus.on('outlineloaded', function (e) {
  109. var event = document.createEvent('CustomEvent');
  110. event.initCustomEvent('outlineloaded', true, true, { outlineCount: e.outlineCount });
  111. e.source.container.dispatchEvent(event);
  112. });
  113. }
  114. var globalEventBus = null;
  115. function getGlobalEventBus() {
  116. if (globalEventBus) {
  117. return globalEventBus;
  118. }
  119. globalEventBus = new EventBus();
  120. attachDOMEventsToEventBus(globalEventBus);
  121. return globalEventBus;
  122. }
  123. exports.attachDOMEventsToEventBus = attachDOMEventsToEventBus;
  124. exports.getGlobalEventBus = getGlobalEventBus;