@inboxsdk/core 0.2.28-alpha.3 → 0.2.28-alpha.5

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 (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,88 +1,46 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import kefirStopper from 'kefir-stopper';
5
- import once from 'lodash/once';
6
-
7
- import SafeEventEmitter from '../../lib/safe-event-emitter';
8
-
9
- export type CustomMessageDescriptor = {
10
- collapsedEl: HTMLElement,
11
- headerEl: HTMLElement,
12
- bodyEl: HTMLElement,
13
- iconUrl: string,
14
- sortDate: Date,
15
- };
16
-
17
- export default class CustomMessageView extends SafeEventEmitter {
18
- _el: HTMLElement;
19
- _iconEl: HTMLElement;
20
- _contentEl: HTMLElement;
21
- _contentHeaderEl: HTMLElement;
22
- _contentBodyEl: HTMLElement;
23
- _destroyed: boolean = false;
24
- _stopper = kefirStopper();
25
- _isCollapsed: boolean = true;
26
- _lastDescriptor: ?CustomMessageDescriptor;
27
-
28
- constructor(
29
- descriptorStream: Kefir.Observable<CustomMessageDescriptor>,
30
- onReady: () => any
31
- ) {
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
11
+ var _once = _interopRequireDefault(require("lodash/once"));
12
+ var _safeEventEmitter = _interopRequireDefault(require("../../lib/safe-event-emitter"));
13
+ class CustomMessageView extends _safeEventEmitter.default {
14
+ constructor(descriptorStream, onReady) {
32
15
  super();
33
-
16
+ (0, _defineProperty2.default)(this, "_destroyed", false);
17
+ (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
18
+ (0, _defineProperty2.default)(this, "_isCollapsed", true);
34
19
  this._setupElement();
35
-
36
- descriptorStream
37
- .takeUntilBy(this._stopper)
38
- .onValue((descriptor) => {
39
- this._el.setAttribute(
40
- 'data-inboxsdk-sortdate',
41
- String(descriptor.sortDate.getTime())
42
- );
43
-
44
- const previousDescriptor = this._lastDescriptor;
45
- this._lastDescriptor = descriptor;
46
-
47
- if (
48
- !previousDescriptor ||
49
- previousDescriptor.iconUrl !== descriptor.iconUrl
50
- ) {
51
- const img = document.createElement('img');
52
- img.src = descriptor.iconUrl;
53
- this._iconEl.innerHTML = '';
54
- this._iconEl.appendChild(img);
55
- }
56
-
57
- if (
58
- (!previousDescriptor ||
59
- previousDescriptor.collapsedEl !== descriptor.collapsedEl) &&
60
- this._isCollapsed
61
- ) {
62
- if (previousDescriptor) previousDescriptor.collapsedEl.remove();
63
- this._contentEl.appendChild(descriptor.collapsedEl);
64
- }
65
-
66
- if (
67
- !previousDescriptor ||
68
- previousDescriptor.headerEl !== descriptor.headerEl
69
- ) {
70
- if (previousDescriptor) previousDescriptor.headerEl.remove();
71
- this._contentHeaderEl.appendChild(descriptor.headerEl);
72
- }
73
-
74
- if (
75
- !previousDescriptor ||
76
- previousDescriptor.bodyEl !== descriptor.bodyEl
77
- ) {
78
- if (previousDescriptor) previousDescriptor.bodyEl.remove();
79
- this._contentBodyEl.appendChild(descriptor.bodyEl);
80
- }
81
- })
82
- .take(1)
83
- .onValue(onReady);
20
+ descriptorStream.takeUntilBy(this._stopper).onValue(descriptor => {
21
+ this._el.setAttribute('data-inboxsdk-sortdate', String(descriptor.sortDate.getTime()));
22
+ const previousDescriptor = this._lastDescriptor;
23
+ this._lastDescriptor = descriptor;
24
+ if (!previousDescriptor || previousDescriptor.iconUrl !== descriptor.iconUrl) {
25
+ const img = document.createElement('img');
26
+ img.src = descriptor.iconUrl;
27
+ this._iconEl.innerHTML = '';
28
+ this._iconEl.appendChild(img);
29
+ }
30
+ if ((!previousDescriptor || previousDescriptor.collapsedEl !== descriptor.collapsedEl) && this._isCollapsed) {
31
+ if (previousDescriptor) previousDescriptor.collapsedEl.remove();
32
+ this._contentEl.appendChild(descriptor.collapsedEl);
33
+ }
34
+ if (!previousDescriptor || previousDescriptor.headerEl !== descriptor.headerEl) {
35
+ if (previousDescriptor) previousDescriptor.headerEl.remove();
36
+ this._contentHeaderEl.appendChild(descriptor.headerEl);
37
+ }
38
+ if (!previousDescriptor || previousDescriptor.bodyEl !== descriptor.bodyEl) {
39
+ if (previousDescriptor) previousDescriptor.bodyEl.remove();
40
+ this._contentBodyEl.appendChild(descriptor.bodyEl);
41
+ }
42
+ }).take(1).onValue(onReady);
84
43
  }
85
-
86
44
  destroy() {
87
45
  if (this._destroyed) return;
88
46
  this._destroyed = true;
@@ -90,76 +48,58 @@ export default class CustomMessageView extends SafeEventEmitter {
90
48
  this.emit('destroy');
91
49
  this._el.remove();
92
50
  }
93
-
94
51
  expand() {
95
52
  this._isCollapsed = false;
96
53
  const descriptor = this._lastDescriptor;
97
-
98
54
  if (descriptor) descriptor.collapsedEl.remove();
99
-
100
55
  this._contentEl.appendChild(this._contentHeaderEl);
101
56
  this._contentEl.appendChild(this._contentBodyEl);
102
-
103
57
  this._el.classList.remove('inboxsdk__custom_message_view_collapsed');
104
58
  this.emit('expanded');
105
59
  }
106
-
107
60
  collapse() {
108
61
  this._isCollapsed = true;
109
62
  this._contentHeaderEl.remove();
110
63
  this._contentBodyEl.remove();
111
-
112
64
  const descriptor = this._lastDescriptor;
113
-
114
65
  if (descriptor) {
115
66
  this._contentEl.appendChild(descriptor.collapsedEl);
116
67
  }
117
-
118
68
  this._el.classList.add('inboxsdk__custom_message_view_collapsed');
119
69
  this.emit('collapsed');
120
70
  }
121
-
122
71
  getElement() {
123
72
  return this._el;
124
73
  }
125
-
126
74
  getSortDate() {
127
- if (this._lastDescriptor) return this._lastDescriptor.sortDate;
128
- else return null;
75
+ if (this._lastDescriptor) return this._lastDescriptor.sortDate;else return null;
129
76
  }
130
-
131
77
  _setupElement() {
132
78
  this._el = document.createElement('div');
133
79
  this._el.classList.add('inboxsdk__custom_message_view');
134
80
  this._el.classList.add('inboxsdk__custom_message_view_collapsed');
135
-
136
81
  this._iconEl = document.createElement('div');
137
82
  this._iconEl.classList.add('inboxsdk__custom_message_view_icon');
138
-
139
83
  this._contentEl = document.createElement('div');
140
84
  this._contentEl.classList.add('inboxsdk__custom_message_view_content');
141
-
142
85
  this._contentHeaderEl = document.createElement('div');
143
86
  this._contentHeaderEl.classList.add('inboxsdk__custom_message_view_header');
144
-
145
87
  this._contentBodyEl = document.createElement('div');
146
88
  this._contentBodyEl.classList.add('inboxsdk__custom_message_view_body');
147
-
148
89
  this._el.appendChild(this._iconEl);
149
90
  this._el.appendChild(this._contentEl);
150
-
151
- this._el.addEventListener('click', (e: MouseEvent) => {
91
+ this._el.addEventListener('click', e => {
152
92
  if (this._isCollapsed) {
153
93
  this.expand();
154
94
  e.preventDefault();
155
95
  e.stopPropagation();
156
96
  }
157
97
  });
158
-
159
- this._contentHeaderEl.addEventListener('click', (e: MouseEvent) => {
98
+ this._contentHeaderEl.addEventListener('click', e => {
160
99
  this.collapse();
161
100
  e.preventDefault();
162
101
  e.stopPropagation();
163
102
  });
164
103
  }
165
104
  }
105
+ exports.default = CustomMessageView;
@@ -1,288 +1,217 @@
1
- /* @flow */
2
-
3
- import { defn, defonce } from 'ud';
4
- import asap from 'asap';
5
- import EventEmitter from '../../lib/safe-event-emitter';
6
- import type Membrane from '../../lib/Membrane';
7
- import get from '../../../common/get-or-fail';
8
- import AttachmentCardView from './attachment-card-view';
9
- import { MessageViewToolbarSectionNames } from '../../namespaces/conversations';
10
- import type ThreadView from './thread-view';
11
- import type {
12
- MessageViewDriver,
13
- VIEW_STATE,
14
- MessageViewLinkDescriptor,
15
- MessageViewToolbarButtonDescriptor,
16
- } from '../../driver-interfaces/message-view-driver';
17
- import type { Driver } from '../../driver-interfaces/driver';
18
-
19
- const memberMap = defonce(module, () => new WeakMap());
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _ud = require("ud");
10
+ var _asap = _interopRequireDefault(require("asap"));
11
+ var _safeEventEmitter = _interopRequireDefault(require("../../lib/safe-event-emitter"));
12
+ var _getOrFail = _interopRequireDefault(require("../../../common/get-or-fail"));
13
+ var _attachmentCardView = _interopRequireDefault(require("./attachment-card-view"));
14
+ var _conversations = require("../../namespaces/conversations");
15
+ const memberMap = (0, _ud.defonce)(module, () => new WeakMap());
20
16
 
21
17
  // documented in src/docs/
22
- class MessageView extends EventEmitter {
23
- destroyed: boolean = false;
24
-
25
- constructor(
26
- messageViewImplementation: MessageViewDriver,
27
- appId: string,
28
- membrane: Membrane,
29
- Conversations: Object,
30
- driver: Driver
31
- ) {
18
+ class MessageView extends _safeEventEmitter.default {
19
+ constructor(messageViewImplementation, appId, membrane, Conversations, driver) {
32
20
  super();
33
-
21
+ (0, _defineProperty2.default)(this, "destroyed", false);
34
22
  const members = {
35
23
  messageViewImplementation,
36
24
  membrane,
37
25
  Conversations,
38
26
  driver,
39
- linksInBody: (null: ?Array<MessageViewLinkDescriptor>),
27
+ linksInBody: null
40
28
  };
41
29
  memberMap.set(this, members);
42
-
43
- _bindToEventStream(
44
- this,
45
- members,
46
- messageViewImplementation.getEventStream()
47
- );
30
+ _bindToEventStream(this, members, messageViewImplementation.getEventStream());
48
31
  }
49
-
50
- addAttachmentCardView(cardOptions: Object): AttachmentCardView {
51
- const { messageViewImplementation, membrane } = get(memberMap, this);
52
- const attachmentCardViewDriver =
53
- messageViewImplementation.addAttachmentCard(cardOptions);
32
+ addAttachmentCardView(cardOptions) {
33
+ const {
34
+ messageViewImplementation,
35
+ membrane
36
+ } = (0, _getOrFail.default)(memberMap, this);
37
+ const attachmentCardViewDriver = messageViewImplementation.addAttachmentCard(cardOptions);
54
38
  const attachmentCardView = membrane.get(attachmentCardViewDriver);
55
-
56
- attachmentCardViewDriver.getPreviewClicks().onValue((e) => {
39
+ attachmentCardViewDriver.getPreviewClicks().onValue(e => {
57
40
  if (cardOptions.previewOnClick) {
58
41
  cardOptions.previewOnClick({
59
42
  attachmentCardView,
60
- preventDefault: () => e.preventDefault(),
43
+ preventDefault: () => e.preventDefault()
61
44
  });
62
45
  }
63
46
  });
64
-
65
47
  return attachmentCardView;
66
48
  }
67
49
 
68
50
  // TODO why is this a separate method?
69
- addAttachmentCardViewNoPreview(cardOptions: Object): AttachmentCardView {
51
+ addAttachmentCardViewNoPreview(cardOptions) {
70
52
  return this.addAttachmentCardView(cardOptions);
71
53
  }
72
-
73
- addAttachmentsToolbarButton(buttonOptions: Object) {
74
- const { messageViewImplementation, membrane } = get(memberMap, this);
54
+ addAttachmentsToolbarButton(buttonOptions) {
55
+ const {
56
+ messageViewImplementation,
57
+ membrane
58
+ } = (0, _getOrFail.default)(memberMap, this);
75
59
  messageViewImplementation.addButtonToDownloadAllArea({
76
60
  tooltip: buttonOptions.tooltip,
77
61
  iconUrl: buttonOptions.iconUrl,
78
62
  onClick: () => {
79
- const attachmentCardViews = messageViewImplementation
80
- .getAttachmentCardViewDrivers()
81
- .map((cardDriver) => membrane.get(cardDriver));
82
- buttonOptions.onClick({ attachmentCardViews });
83
- },
63
+ const attachmentCardViews = messageViewImplementation.getAttachmentCardViewDrivers().map(cardDriver => membrane.get(cardDriver));
64
+ buttonOptions.onClick({
65
+ attachmentCardViews
66
+ });
67
+ }
84
68
  });
85
69
  }
86
-
87
- addToolbarButton(buttonOptions: MessageViewToolbarButtonDescriptor) {
88
- if (
89
- typeof buttonOptions.onClick !== 'function' ||
90
- typeof buttonOptions.title !== 'string' ||
91
- !Object.prototype.hasOwnProperty.call(
92
- MessageViewToolbarSectionNames,
93
- buttonOptions.section
94
- )
95
- ) {
96
- throw new Error(
97
- 'Missing required properties on MessageViewToolbarButtonDescriptor object'
98
- );
70
+ addToolbarButton(buttonOptions) {
71
+ if (typeof buttonOptions.onClick !== 'function' || typeof buttonOptions.title !== 'string' || !Object.prototype.hasOwnProperty.call(_conversations.MessageViewToolbarSectionNames, buttonOptions.section)) {
72
+ throw new Error('Missing required properties on MessageViewToolbarButtonDescriptor object');
99
73
  }
100
- const { messageViewImplementation } = get(memberMap, this);
74
+ const {
75
+ messageViewImplementation
76
+ } = (0, _getOrFail.default)(memberMap, this);
101
77
  messageViewImplementation.addMoreMenuItem(buttonOptions);
102
78
  }
103
-
104
- getBodyElement(): HTMLElement {
105
- return get(memberMap, this).messageViewImplementation.getContentsElement();
79
+ getBodyElement() {
80
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getContentsElement();
106
81
  }
107
-
108
- getMessageID(): string {
109
- get(memberMap, this)
110
- .driver.getLogger()
111
- .deprecationWarning(
112
- 'messageView.getMessageID',
113
- 'messageView.getMessageIDAsync'
114
- );
115
- return get(memberMap, this).messageViewImplementation.getMessageID();
82
+ getMessageID() {
83
+ (0, _getOrFail.default)(memberMap, this).driver.getLogger().deprecationWarning('messageView.getMessageID', 'messageView.getMessageIDAsync');
84
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getMessageID();
116
85
  }
117
-
118
- getMessageIDAsync(): Promise<string> {
119
- return get(memberMap, this).messageViewImplementation.getMessageIDAsync();
86
+ getMessageIDAsync() {
87
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getMessageIDAsync();
120
88
  }
121
89
 
122
90
  // TODO non-file-attachment card views are asynchronously loaded. Add some sort of
123
91
  // registerAttachmentCardViewHandler function to listen for other types of
124
92
  // attachment cards if we want to continue support for them.
125
- getFileAttachmentCardViews(): Array<AttachmentCardView> {
126
- const { messageViewImplementation, membrane } = get(memberMap, this);
127
- return messageViewImplementation
128
- .getAttachmentCardViewDrivers()
129
- .filter((cardDriver) => cardDriver.getAttachmentType() === 'FILE')
130
- .map((attachmentCardViewDriver) =>
131
- membrane.get(attachmentCardViewDriver)
132
- );
93
+ getFileAttachmentCardViews() {
94
+ const {
95
+ messageViewImplementation,
96
+ membrane
97
+ } = (0, _getOrFail.default)(memberMap, this);
98
+ return messageViewImplementation.getAttachmentCardViewDrivers().filter(cardDriver => cardDriver.getAttachmentType() === 'FILE').map(attachmentCardViewDriver => membrane.get(attachmentCardViewDriver));
133
99
  }
134
100
 
135
101
  // Deprecated name
136
- getAttachmentCardViews(): Array<AttachmentCardView> {
137
- const { driver } = get(memberMap, this);
138
- driver
139
- .getLogger()
140
- .deprecationWarning(
141
- 'MessageView.getAttachmentCardViews',
142
- 'MessageView.getFileAttachmentCardViews'
143
- );
102
+ getAttachmentCardViews() {
103
+ const {
104
+ driver
105
+ } = (0, _getOrFail.default)(memberMap, this);
106
+ driver.getLogger().deprecationWarning('MessageView.getAttachmentCardViews', 'MessageView.getFileAttachmentCardViews');
144
107
  if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
145
108
  throw new Error('This method was discontinued after API version 1');
146
109
  }
147
110
  return this.getFileAttachmentCardViews();
148
111
  }
149
-
150
- isElementInQuotedArea(element: HTMLElement): boolean {
151
- return get(memberMap, this).messageViewImplementation.isElementInQuotedArea(
152
- element
153
- );
112
+ isElementInQuotedArea(element) {
113
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.isElementInQuotedArea(element);
154
114
  }
155
-
156
- isLoaded(): boolean {
157
- return get(memberMap, this).messageViewImplementation.isLoaded();
115
+ isLoaded() {
116
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.isLoaded();
158
117
  }
159
-
160
- getLinksInBody(): Array<MessageViewLinkDescriptor> {
161
- const members = get(memberMap, this);
118
+ getLinksInBody() {
119
+ const members = (0, _getOrFail.default)(memberMap, this);
162
120
  if (!members.linksInBody) {
163
121
  const anchors = this.getBodyElement().querySelectorAll('a');
164
- members.linksInBody = Array.from((anchors: any)).map(
165
- (anchor: HTMLAnchorElement) => ({
166
- text: anchor.textContent,
167
- html: anchor.innerHTML,
168
- href: anchor.href,
169
- element: anchor,
170
- isInQuotedArea: this.isElementInQuotedArea(anchor),
171
- })
172
- );
122
+ members.linksInBody = Array.from(anchors).map(anchor => ({
123
+ text: anchor.textContent,
124
+ html: anchor.innerHTML,
125
+ href: anchor.href,
126
+ element: anchor,
127
+ isInQuotedArea: this.isElementInQuotedArea(anchor)
128
+ }));
173
129
  }
174
-
175
130
  return members.linksInBody;
176
131
  }
177
-
178
- getSender(): Contact {
179
- return get(memberMap, this).messageViewImplementation.getSender();
132
+ getSender() {
133
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getSender();
180
134
  }
181
-
182
- getRecipients(): Array<Contact> {
183
- get(memberMap, this)
184
- .driver.getLogger()
185
- .deprecationWarning(
186
- 'MessageView.getRecipients',
187
- 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()'
188
- );
189
- return this.getRecipientEmailAddresses().map((emailAddress) => ({
135
+ getRecipients() {
136
+ (0, _getOrFail.default)(memberMap, this).driver.getLogger().deprecationWarning('MessageView.getRecipients', 'MessageView.getRecipientEmailAddresses() or MessageView.getRecipientsFull()');
137
+ return this.getRecipientEmailAddresses().map(emailAddress => ({
190
138
  emailAddress,
191
- name: null,
139
+ name: null
192
140
  }));
193
141
  }
194
-
195
- getRecipientEmailAddresses(): Array<string> {
196
- return get(
197
- memberMap,
198
- this
199
- ).messageViewImplementation.getRecipientEmailAddresses();
142
+ getRecipientEmailAddresses() {
143
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getRecipientEmailAddresses();
200
144
  }
201
-
202
- getRecipientsFull(): Promise<Array<Contact>> {
203
- return get(memberMap, this).messageViewImplementation.getRecipientsFull();
145
+ getRecipientsFull() {
146
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getRecipientsFull();
204
147
  }
205
-
206
- getThreadView(): ThreadView {
207
- const { messageViewImplementation, membrane } = get(memberMap, this);
148
+ getThreadView() {
149
+ const {
150
+ messageViewImplementation,
151
+ membrane
152
+ } = (0, _getOrFail.default)(memberMap, this);
208
153
  return membrane.get(messageViewImplementation.getThreadViewDriver());
209
154
  }
210
-
211
- getDateString(): string {
212
- return get(memberMap, this).messageViewImplementation.getDateString();
155
+ getDateString() {
156
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.getDateString();
213
157
  }
214
-
215
- addAttachmentIcon(iconDescriptor: Object) {
216
- return get(memberMap, this).messageViewImplementation.addAttachmentIcon(
217
- iconDescriptor
218
- );
158
+ addAttachmentIcon(iconDescriptor) {
159
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.addAttachmentIcon(iconDescriptor);
219
160
  }
220
-
221
- getViewState(): VIEW_STATE {
222
- const members = get(memberMap, this);
223
- return members.Conversations.MessageViewViewStates[
224
- members.messageViewImplementation.getViewState()
225
- ];
161
+ getViewState() {
162
+ const members = (0, _getOrFail.default)(memberMap, this);
163
+ return members.Conversations.MessageViewViewStates[members.messageViewImplementation.getViewState()];
226
164
  }
227
-
228
- hasOpenReply(): boolean {
229
- const { driver, messageViewImplementation } = get(memberMap, this);
165
+ hasOpenReply() {
166
+ const {
167
+ driver,
168
+ messageViewImplementation
169
+ } = (0, _getOrFail.default)(memberMap, this);
230
170
  driver.getLogger().deprecationWarning('MessageView.hasOpenReply');
231
171
  if (driver.getOpts().REQUESTED_API_VERSION !== 1) {
232
172
  throw new Error('This method was discontinued after API version 1');
233
173
  }
234
- return get(memberMap, this).messageViewImplementation.hasOpenReply();
174
+ return (0, _getOrFail.default)(memberMap, this).messageViewImplementation.hasOpenReply();
235
175
  }
236
176
  }
237
-
238
177
  function _bindToEventStream(messageView, members, stream) {
239
178
  stream.onEnd(function () {
240
179
  messageView.destroyed = true;
241
180
  messageView.emit('destroy');
242
-
243
181
  messageView.removeAllListeners();
244
182
  });
245
-
246
- stream
247
- .filter(function (event) {
248
- return event.type !== 'internal' && event.eventName === 'contactHover';
249
- })
250
- .onValue(function (event) {
251
- messageView.emit(event.eventName, {
252
- contactType: event.contactType,
253
- contact: event.contact,
254
- messageView: messageView,
255
- threadView: messageView.getThreadView(),
256
- });
183
+ stream.filter(function (event) {
184
+ return event.type !== 'internal' && event.eventName === 'contactHover';
185
+ }).onValue(function (event) {
186
+ messageView.emit(event.eventName, {
187
+ contactType: event.contactType,
188
+ contact: event.contact,
189
+ messageView: messageView,
190
+ threadView: messageView.getThreadView()
257
191
  });
258
-
192
+ });
259
193
  if (messageView.isLoaded()) {
260
- asap(() => {
261
- messageView.emit('load', { messageView });
194
+ (0, _asap.default)(() => {
195
+ messageView.emit('load', {
196
+ messageView
197
+ });
262
198
  });
263
199
  } else {
264
- stream
265
- .filter((event) => event.eventName === 'messageLoad')
266
- .onValue((event) => {
267
- messageView.emit('load', {
268
- messageView: messageView,
269
- });
200
+ stream.filter(event => event.eventName === 'messageLoad').onValue(event => {
201
+ messageView.emit('load', {
202
+ messageView: messageView
270
203
  });
204
+ });
271
205
  }
272
-
273
- stream
274
- .filter(function (event) {
275
- return event.eventName === 'viewStateChange';
276
- })
277
- .onValue(function (event) {
278
- messageView.emit('viewStateChange', {
279
- oldViewState:
280
- members.Conversations.MessageViewViewStates[event.oldValue],
281
- newViewState:
282
- members.Conversations.MessageViewViewStates[event.newValue],
283
- messageView: messageView,
284
- });
206
+ stream.filter(function (event) {
207
+ return event.eventName === 'viewStateChange';
208
+ }).onValue(function (event) {
209
+ messageView.emit('viewStateChange', {
210
+ oldViewState: members.Conversations.MessageViewViewStates[event.oldValue],
211
+ newViewState: members.Conversations.MessageViewViewStates[event.newValue],
212
+ messageView: messageView
285
213
  });
214
+ });
286
215
  }
287
-
288
- export default defn(module, MessageView);
216
+ var _default = (0, _ud.defn)(module, MessageView);
217
+ exports.default = _default;