@inboxsdk/core 1.2.4 → 1.2.7

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 (332) hide show
  1. package/inboxsdk.js +4474 -463
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/common/load-script.d.ts +0 -6
  7. package/src/common/load-script.d.ts.map +1 -1
  8. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
  9. package/src/inboxsdk.d.ts +29 -0
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  15. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  16. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  17. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  19. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  20. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  21. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  22. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  23. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  24. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  25. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  26. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  27. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  28. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  30. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  31. package/src/build/exec.js +0 -26
  32. package/src/build/spawn.js +0 -17
  33. package/src/common/ajax.js +0 -90
  34. package/src/common/cachebust-url.js +0 -10
  35. package/src/common/censorHTMLstring.js +0 -37
  36. package/src/common/censorHTMLtree.js +0 -28
  37. package/src/common/censorJSONTree.js +0 -15
  38. package/src/common/connectivity-test.js +0 -21
  39. package/src/common/defer.js +0 -11
  40. package/src/common/find-parent.js +0 -10
  41. package/src/common/get-extension-id.js +0 -7
  42. package/src/common/get-or-fail.js +0 -8
  43. package/src/common/get-session-id.js +0 -14
  44. package/src/common/get-stack-trace.js +0 -6
  45. package/src/common/html-to-text.js +0 -7
  46. package/src/common/isElementVisible.js +0 -6
  47. package/src/common/load-script.js +0 -128
  48. package/src/common/log-error.js +0 -185
  49. package/src/common/quoted-split.js +0 -18
  50. package/src/common/rate-limit-queuer.js +0 -57
  51. package/src/common/rate-limit.js +0 -14
  52. package/src/common/version.js +0 -8
  53. package/src/inboxsdk-js/header.js +0 -19
  54. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  55. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  56. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  57. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  58. package/src/inboxsdk-js/inboxsdk.js +0 -23
  59. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  60. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
  61. package/src/injected-js/gmail/constants.js +0 -2
  62. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  63. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  64. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  65. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  66. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  67. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  68. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  69. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  70. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  71. package/src/injected-js/injected-logger.js +0 -50
  72. package/src/injected-js/main.js +0 -49
  73. package/src/injected-js/message-metadata-holder.js +0 -103
  74. package/src/injected-js/setup-data-exposer.js +0 -135
  75. package/src/injected-js/setup-error-silencer.js +0 -15
  76. package/src/injected-js/setup-event-reemitter.js +0 -47
  77. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  78. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  79. package/src/injected-js/setupPushStateListener.js +0 -14
  80. package/src/injected-js/xhr-helper.js +0 -43
  81. package/src/injected-js/xhr-proxy-factory.js +0 -537
  82. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  83. package/src/platform-implementation-js/constants/router.js +0 -60
  84. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  124. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  125. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  126. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  127. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  128. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  129. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  130. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  131. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  186. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  198. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  199. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  200. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  201. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  202. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  203. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  204. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  205. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  206. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  207. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  208. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  209. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  210. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  211. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  212. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  213. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  214. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  215. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  216. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  217. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  218. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  219. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  220. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  221. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  222. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  223. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  224. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  225. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  226. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  227. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  228. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  229. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  230. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  231. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  232. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  233. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  234. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  235. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  236. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  237. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  238. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  239. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  240. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  241. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  242. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  243. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  244. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  245. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  246. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  247. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  248. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  249. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  250. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  251. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  252. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  253. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  254. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  255. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  256. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  257. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  258. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  259. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  260. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  261. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  262. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  263. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  264. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  265. package/src/platform-implementation-js/lib/idMap.js +0 -40
  266. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  267. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  268. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
  269. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  270. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  271. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  272. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  273. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  274. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  275. package/src/platform-implementation-js/lib/logger.js +0 -439
  276. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  277. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  278. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  279. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  280. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  281. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  282. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  283. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  284. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  285. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  286. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  287. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  288. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  289. package/src/platform-implementation-js/main.js +0 -42
  290. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  291. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  292. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  293. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  294. package/src/platform-implementation-js/namespaces/global.js +0 -30
  295. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  296. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  297. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  298. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  299. package/src/platform-implementation-js/namespaces/router.js +0 -139
  300. package/src/platform-implementation-js/namespaces/search.js +0 -29
  301. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  302. package/src/platform-implementation-js/namespaces/user.js +0 -57
  303. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  304. package/src/platform-implementation-js/platform-implementation.js +0 -178
  305. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  306. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  307. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  308. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  309. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  310. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  311. package/src/platform-implementation-js/views/compose-view.js +0 -310
  312. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  313. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  314. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  315. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  316. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  317. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  318. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  319. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  320. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  321. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  322. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  323. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  324. package/src/platform-implementation-js/views/section-view.js +0 -60
  325. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  326. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  327. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  328. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  329. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  330. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  331. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  332. package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
@@ -1,737 +0,0 @@
1
- import sortBy from 'lodash/sortBy';
2
- import once from 'lodash/once';
3
- import autoHtml from 'auto-html';
4
- import * as Kefir from 'kefir';
5
- import kefirBus from 'kefir-bus';
6
- import kefirStopper from 'kefir-stopper';
7
- import kefirCast from 'kefir-cast';
8
- import GmailAttachmentAreaView from './gmail-attachment-area-view';
9
- import GmailAttachmentCardView from './gmail-attachment-card-view';
10
- import getUpdatedContact from './gmail-message-view/get-updated-contact';
11
- import AttachmentIcon from './gmail-message-view/attachment-icon';
12
- import makeMutationObserverStream from '../../../lib/dom/make-mutation-observer-stream';
13
- import querySelector from '../../../lib/dom/querySelectorOrFail';
14
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
15
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
16
- import censorHTMLtree from '../../../../common/censorHTMLtree';
17
- import findParent from '../../../../common/find-parent';
18
- import reemitClickEvent from '../../../lib/dom/reemitClickEventForReact';
19
- let hasSeenOldElement = false;
20
- class GmailMessageView {
21
- _element;
22
- _driver;
23
- _eventStream = kefirBus();
24
- _stopper = kefirStopper();
25
- _threadViewDriver;
26
- _moreMenuItemDescriptors;
27
- _moreMenuAddedElements;
28
- _replyElementStream;
29
- _readyStream;
30
- _replyElement;
31
- _gmailAttachmentAreaView;
32
- _messageLoaded = false;
33
- _openMoreMenu;
34
- _sender = null;
35
- _recipients = null;
36
- _recipientEmailAddresses = null;
37
- _recipientsFull = null;
38
- constructor(element, gmailThreadView, driver) {
39
- this._element = element;
40
- this._threadViewDriver = gmailThreadView;
41
- this._driver = driver;
42
- this._moreMenuItemDescriptors = [];
43
- this._moreMenuAddedElements = [];
44
- this._replyElement = null;
45
- // Outputs the same type of stream as makeElementChildStream does.
46
- this._replyElementStream = this._eventStream
47
- .filter(function (event) {
48
- return event.eventName === 'replyElement';
49
- })
50
- .map((event) => event.change);
51
- this._setupMessageStateStream();
52
- this._monitorEmailAddressHovering();
53
- this._setupMoreMenuWatching();
54
- let partialReadyStream;
55
- if (driver.isUsingSyncAPI()) {
56
- // handle the case that the data-message-id is available, but the data-legacy-message-id is not
57
- // this happens when you're looking at a thread, and then you reply to a message, the message id is generated
58
- // client side, so the new message added (from your reply) shows up in the UI right away and has a data-message-id but
59
- // because it hasn't been synced to the server it does not have a data-legacy-messag-id
60
- // so we wait until the message has been synced to the server before saying this is ready
61
- const messageIdElement = this._element.querySelector('[data-message-id]');
62
- if (messageIdElement) {
63
- const syncMessageId = messageIdElement.getAttribute('data-message-id');
64
- if (!syncMessageId)
65
- throw new Error('data-message-id attribute has no value');
66
- // Only respect data-legacy-message-id if data-message-id is not the id
67
- // of a draft we've seen recently, in order to work around a Gmail bug.
68
- // https://github.com/StreakYC/GmailSDK/issues/515#issuecomment-457420619
69
- if (messageIdElement.hasAttribute('data-legacy-message-id') &&
70
- !this._driver.isRecentSyncDraftId(syncMessageId.replace('#', ''))) {
71
- partialReadyStream = Kefir.constant(null);
72
- }
73
- else {
74
- // we have a data message id, but not the legacy message id. So now we have to poll for the gmail message id
75
- partialReadyStream = Kefir.fromPromise((async () => {
76
- for (let ii = 0; ii < 10; ii++) {
77
- try {
78
- const gmailMessageId = await this._driver.getGmailMessageIdForSyncMessageId(syncMessageId.replace('#', ''));
79
- // set the legacy message id attribute so subsequent calls to getMessageId find the legacy message id in the dom
80
- messageIdElement.setAttribute('data-legacy-message-id', gmailMessageId);
81
- return null;
82
- }
83
- catch (e) {
84
- await new Promise((resolve) => setTimeout(resolve, ii * 200));
85
- }
86
- }
87
- throw new Error('gmail message id never became available');
88
- })());
89
- }
90
- }
91
- else {
92
- partialReadyStream = Kefir.constant(null);
93
- }
94
- }
95
- else {
96
- partialReadyStream = Kefir.constant(null);
97
- }
98
- this._readyStream = partialReadyStream
99
- .takeUntilBy(this._stopper)
100
- .onValue(() => this._processInitialState());
101
- }
102
- destroy() {
103
- this._stopper.destroy();
104
- this._eventStream.end();
105
- if (this._gmailAttachmentAreaView)
106
- this._gmailAttachmentAreaView.destroy();
107
- this._moreMenuAddedElements.forEach((el) => {
108
- el.remove();
109
- });
110
- }
111
- getEventStream() {
112
- return this._eventStream;
113
- }
114
- getReplyElementStream() {
115
- return this._replyElementStream;
116
- }
117
- getElement() {
118
- return this._element;
119
- }
120
- getThreadViewDriver() {
121
- return this._threadViewDriver;
122
- }
123
- isLoaded() {
124
- return this._messageLoaded;
125
- }
126
- getContentsElement() {
127
- if (!this._messageLoaded) {
128
- throw new Error('tried to get message contents before message is loaded');
129
- }
130
- try {
131
- return querySelector(this._element, 'div.ii.gt');
132
- }
133
- catch (err) {
134
- // Keep old fallback selector until we're confident of the new one.
135
- this._driver.getLogger().error(err);
136
- return querySelector(this._element, '.adP');
137
- }
138
- }
139
- isElementInQuotedArea(element) {
140
- return findParent(element, (el) => el.nodeName === 'BLOCKQUOTE') != null;
141
- }
142
- getSender() {
143
- let sender = this._sender;
144
- if (sender)
145
- return sender;
146
- const senderSpan = querySelector(this._element, 'td.gF span[email]');
147
- const emailAddress = senderSpan.getAttribute('email');
148
- if (!emailAddress)
149
- throw new Error('Could not find email address');
150
- sender = this._sender = {
151
- name: senderSpan.getAttribute('name'),
152
- emailAddress,
153
- };
154
- return sender;
155
- }
156
- getRecipients() {
157
- let recipients = this._recipients;
158
- if (recipients)
159
- return recipients;
160
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
161
- recipients = this._recipients = receipientSpans.map((span) => {
162
- return this._getUpdatedContact({
163
- name: span.getAttribute('name'),
164
- emailAddress: span.getAttribute('email') || '',
165
- });
166
- });
167
- return recipients;
168
- }
169
- getRecipientEmailAddresses() {
170
- let recipients = this._recipientEmailAddresses;
171
- if (recipients)
172
- return recipients;
173
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
174
- recipients = this._recipientEmailAddresses = receipientSpans.map((span) => span.getAttribute('email') || '');
175
- return recipients;
176
- }
177
- async getRecipientsFull() {
178
- let recipients = this._recipientsFull;
179
- if (recipients)
180
- return recipients;
181
- if (this._driver.isUsingSyncAPI()) {
182
- const threadID = this._threadViewDriver.getInternalID();
183
- recipients = this._recipientsFull = (await this._driver
184
- .getPageCommunicator()
185
- .getMessageRecipients(threadID, this._element));
186
- if (!recipients) {
187
- this._driver
188
- .getLogger()
189
- .error(new Error('Failed to find message recipients from response'), {
190
- threadID,
191
- });
192
- recipients = this._recipientsFull = this.getRecipients();
193
- }
194
- }
195
- else {
196
- const receipientSpans = Array.from(this._element.querySelectorAll('.hb span[email]'));
197
- recipients = this._recipientsFull = receipientSpans.map((span) => {
198
- return this._getUpdatedContact({
199
- name: span.getAttribute('name'),
200
- emailAddress: span.getAttribute('email') || '',
201
- });
202
- });
203
- }
204
- return recipients;
205
- }
206
- getDateString() {
207
- return querySelector(this._element, '.ads .gK .g3').title;
208
- }
209
- async getDate() {
210
- const threadID = this._threadViewDriver.getInternalID();
211
- return await this._driver
212
- .getPageCommunicator()
213
- .getMessageDate(threadID, this._element);
214
- }
215
- getAttachmentCardViewDrivers() {
216
- if (!this._gmailAttachmentAreaView) {
217
- return [];
218
- }
219
- return this._gmailAttachmentAreaView.getAttachmentCardViews();
220
- }
221
- addButtonToDownloadAllArea(options) {
222
- var gmailAttachmentAreaView = this._getAttachmentArea();
223
- if (!gmailAttachmentAreaView) {
224
- return;
225
- }
226
- gmailAttachmentAreaView.addButtonToDownloadAllArea(options);
227
- }
228
- addMoreMenuItem(options) {
229
- this._moreMenuItemDescriptors = sortBy(this._moreMenuItemDescriptors.concat([options]), (o) => o.orderHint);
230
- this._updateMoreMenu();
231
- }
232
- _setupMoreMenuWatching() {
233
- // At the start, and whenever the view state changes, watch the
234
- // 'aria-expanded' property of the more button, and when that changes,
235
- // update the _openMoreMenu property.
236
- this._openMoreMenu = null;
237
- this._eventStream
238
- .filter((e) => e.eventName === 'viewStateChange')
239
- .toProperty(() => null)
240
- .flatMapLatest(() => {
241
- const moreButton = this._getMoreButton();
242
- if (!moreButton) {
243
- return Kefir.constant(null);
244
- }
245
- return makeMutationObserverChunkedStream(moreButton, {
246
- attributes: true,
247
- attributeFilter: ['aria-expanded'],
248
- }).map(() => moreButton.getAttribute('aria-expanded') === 'true'
249
- ? this._getOpenMoreMenu()
250
- : null);
251
- })
252
- .takeUntilBy(this._stopper)
253
- .onValue((openMoreMenu) => {
254
- this._openMoreMenu = openMoreMenu;
255
- this._updateMoreMenu();
256
- });
257
- }
258
- _getMoreButton() {
259
- if (this.getViewState() !== 'EXPANDED') {
260
- return null;
261
- }
262
- return this._element.querySelector('tr.acZ div.T-I.J-J5-Ji.aap.L3[role=button][aria-haspopup]');
263
- }
264
- _getOpenMoreMenu() {
265
- const selector_2022_11_23 = 'td > div.nH.a98.iY > div.nH.aHU .b7.J-M[aria-haspopup=true]';
266
- const maybeMoreMenu = document.body.querySelector(selector_2022_11_23);
267
- // This will find any message's open more menu! The caller needs to make
268
- // sure it belongs to this message!
269
- return (maybeMoreMenu ||
270
- document.body.querySelector('td > div.nH.if > div.nH.aHU div.b7.J-M[aria-haspopup=true]'));
271
- }
272
- _closeActiveEmailMenu() {
273
- const moreButton = this._getMoreButton();
274
- if (moreButton) {
275
- simulateClick(moreButton);
276
- }
277
- }
278
- _updateMoreMenu() {
279
- this._moreMenuAddedElements.forEach((el) => {
280
- el.remove();
281
- });
282
- this._moreMenuAddedElements.length = 0;
283
- const openMoreMenu = this._openMoreMenu;
284
- if (openMoreMenu && this._moreMenuItemDescriptors.length) {
285
- const originalHeight = openMoreMenu.offsetHeight;
286
- const originalWidth = openMoreMenu.offsetWidth;
287
- const dividerEl = document.createElement('div');
288
- dividerEl.className = 'J-Kh';
289
- this._moreMenuAddedElements.push(dividerEl);
290
- openMoreMenu.appendChild(dividerEl);
291
- this._moreMenuItemDescriptors.forEach((options) => {
292
- const itemEl = document.createElement('div');
293
- itemEl.className = 'J-N';
294
- itemEl.setAttribute('role', 'menuitem');
295
- itemEl.innerHTML = autoHtml `<div class="J-N-Jz">${options.title}</div>`;
296
- itemEl.addEventListener('mouseenter', () => itemEl.classList.add('J-N-JT'));
297
- itemEl.addEventListener('mouseleave', () => itemEl.classList.remove('J-N-JT'));
298
- itemEl.addEventListener('click', () => {
299
- this._closeActiveEmailMenu();
300
- options.onClick();
301
- });
302
- if (options.iconUrl || options.iconClass) {
303
- const iconEl = document.createElement('img');
304
- iconEl.className = `f4 J-N-JX inboxsdk__message_more_icon ${options.iconClass || ''}`;
305
- iconEl.src = options.iconUrl || 'images/cleardot.gif';
306
- const insertionPoint = itemEl.firstElementChild;
307
- if (insertionPoint)
308
- insertionPoint.appendChild(iconEl);
309
- }
310
- this._moreMenuAddedElements.push(itemEl);
311
- openMoreMenu.appendChild(itemEl);
312
- });
313
- const menuRect = openMoreMenu.getBoundingClientRect();
314
- const addedWidth = menuRect.width - originalWidth;
315
- if (addedWidth > 0) {
316
- openMoreMenu.style.left =
317
- Math.max(0, parseInt(openMoreMenu.style.left) - addedWidth) + 'px';
318
- }
319
- const moreButton = this._getMoreButton();
320
- if (moreButton) {
321
- const moreButtonRect = moreButton.getBoundingClientRect();
322
- // If the menu is positioned above the button, then adjust the menu
323
- // upwards to compensate for the buttons we added.
324
- if (menuRect.top < moreButtonRect.top) {
325
- const addedHeight = menuRect.height - originalHeight;
326
- openMoreMenu.style.top =
327
- Math.max(0, parseInt(openMoreMenu.style.top) - addedHeight) + 'px';
328
- }
329
- }
330
- }
331
- }
332
- getMessageID(ignoreLoadStatus = false) {
333
- if (!ignoreLoadStatus && !this._messageLoaded) {
334
- throw new Error('tried to get message id before message is loaded');
335
- }
336
- const messageIdElement = this._element.querySelector('[data-legacy-message-id]');
337
- if (messageIdElement) {
338
- const messageId = messageIdElement.getAttribute('data-legacy-message-id');
339
- if (!messageId)
340
- throw new Error('message id attribute with no value, wtf?');
341
- return messageId;
342
- }
343
- const messageEl = this._element.querySelector('div.ii.gt');
344
- if (!messageEl) {
345
- const err = new Error('Could not find message id element');
346
- this._driver.getLogger().error(err, {
347
- elementHtml: censorHTMLtree(this._element),
348
- });
349
- throw err;
350
- }
351
- const m = messageEl.className.match(/\bm([0-9a-f]+)\b/);
352
- if (m) {
353
- if (!hasSeenOldElement) {
354
- hasSeenOldElement = true;
355
- this._driver.getLogger().eventSite('old messageid location');
356
- }
357
- return m[1];
358
- }
359
- else {
360
- const messageElChild = messageEl.firstElementChild;
361
- if (!messageElChild) {
362
- const err = new Error('Could not find message id value');
363
- this._driver.getLogger().error(err, {
364
- reason: 'Could not find element',
365
- messageHtml: censorHTMLtree(messageEl),
366
- });
367
- throw err;
368
- }
369
- const m = messageElChild.className.match(/\bm([0-9a-f]+)\b/);
370
- if (!m) {
371
- const err = new Error('Could not find message id value');
372
- this._driver.getLogger().error(err, {
373
- reason: 'Element was missing message className',
374
- messageHtml: censorHTMLtree(messageEl),
375
- });
376
- throw err;
377
- }
378
- return m[1];
379
- }
380
- }
381
- async getMessageIDAsync() {
382
- return this.getMessageID();
383
- }
384
- addAttachmentIcon(iconDescriptor) {
385
- const attachmentIcon = new AttachmentIcon();
386
- if (!this._element) {
387
- console.warn('addDateIcon called on destroyed message');
388
- return attachmentIcon;
389
- }
390
- this._element.setAttribute('inboxsdk__message_added_attachment_icon', 'true');
391
- const getImgElement = once(() => {
392
- const img = document.createElement('img');
393
- img.src = 'images/cleardot.gif';
394
- return img;
395
- });
396
- const getCustomIconWrapper = once(() => {
397
- const div = document.createElement('div');
398
- return div;
399
- });
400
- const getTooltipNodeWrapper = once(() => {
401
- const div = document.createElement('div');
402
- return div;
403
- });
404
- let added = false;
405
- let currentIconUrl = null;
406
- this._stopper.onValue(() => {
407
- if (added) {
408
- getCustomIconWrapper().remove();
409
- getTooltipNodeWrapper().remove();
410
- getImgElement().remove();
411
- added = false;
412
- }
413
- });
414
- kefirCast(Kefir, iconDescriptor)
415
- .combine(this._eventStream
416
- .filter((event) => event.eventName === 'viewStateChange')
417
- .toProperty(() => null), (opts) => opts)
418
- .takeUntilBy(this._stopper)
419
- .onValue((opts) => {
420
- if (!opts) {
421
- if (added) {
422
- getCustomIconWrapper().remove();
423
- getImgElement().remove();
424
- getTooltipNodeWrapper().remove();
425
- added = false;
426
- }
427
- }
428
- else {
429
- let attachmentDiv;
430
- if (this.getViewState() === 'COLLAPSED') {
431
- attachmentDiv = querySelector(this._element, '.adf.ads td.gH span');
432
- }
433
- else {
434
- attachmentDiv = querySelector(this._element, 'td.gH div.gK span');
435
- }
436
- const img = opts.iconHtml != null ? getCustomIconWrapper() : getImgElement();
437
- const onClick = opts.onClick;
438
- if (onClick) {
439
- img.onclick = function (event) {
440
- event.preventDefault();
441
- event.stopPropagation();
442
- onClick();
443
- };
444
- img.style.cursor = 'pointer';
445
- }
446
- else {
447
- img.onclick = null;
448
- img.style.cursor = '';
449
- }
450
- if (opts.tooltip &&
451
- typeof opts.tooltip == 'object' &&
452
- opts.tooltip instanceof HTMLElement) {
453
- const tooltipWrapper = getTooltipNodeWrapper();
454
- tooltipWrapper.className =
455
- 'inboxsdk__message_attachment_tooltipWrapper';
456
- tooltipWrapper.onclick = function (event) {
457
- event.stopPropagation();
458
- reemitClickEvent(event);
459
- };
460
- tooltipWrapper.appendChild(opts.tooltip);
461
- img.onmouseenter = function (event) {
462
- event.preventDefault();
463
- event.stopPropagation();
464
- img.appendChild(tooltipWrapper);
465
- attachmentIcon.emit('tooltipShown');
466
- };
467
- img.onmouseleave = function (event) {
468
- event.preventDefault();
469
- event.stopPropagation();
470
- img.removeChild(tooltipWrapper);
471
- attachmentIcon.emit('tooltipHidden');
472
- };
473
- img.removeAttribute('data-tooltip');
474
- }
475
- else if (opts.tooltip && typeof opts.tooltip == 'string') {
476
- img.setAttribute('data-tooltip', opts.tooltip);
477
- }
478
- else {
479
- img.removeAttribute('data-tooltip');
480
- }
481
- img.className =
482
- opts.iconHtml != null
483
- ? `inboxsdk__message_attachment_iconWrapper ${opts.iconClass || ''}`
484
- : 'inboxsdk__message_attachment_icon ' + (opts.iconClass || '');
485
- if (opts.iconHtml != null) {
486
- if (attachmentDiv.contains(getImgElement())) {
487
- getImgElement().remove();
488
- }
489
- img.innerHTML = opts.iconHtml;
490
- }
491
- else if (currentIconUrl != opts.iconUrl) {
492
- if (attachmentDiv.contains(getCustomIconWrapper())) {
493
- getCustomIconWrapper().remove();
494
- }
495
- img.style.background = opts.iconUrl
496
- ? 'url(' + opts.iconUrl + ') no-repeat 0 0'
497
- : '';
498
- currentIconUrl = opts.iconUrl;
499
- }
500
- if (!attachmentDiv.contains(img)) {
501
- attachmentDiv.appendChild(img);
502
- added = true;
503
- }
504
- }
505
- });
506
- return attachmentIcon;
507
- }
508
- getViewState() {
509
- if (this._element.classList.contains('kQ') ||
510
- this._element.classList.contains('kx')) {
511
- return 'HIDDEN';
512
- }
513
- else if (this._element.classList.contains('kv')) {
514
- return 'COLLAPSED';
515
- }
516
- else {
517
- return 'EXPANDED';
518
- }
519
- }
520
- hasOpenReply() {
521
- return Boolean(this._replyElement);
522
- }
523
- addAttachmentCard(options) {
524
- var gmailAttachmentCardView = new GmailAttachmentCardView(options, this._driver, this);
525
- if (!this._gmailAttachmentAreaView) {
526
- this._gmailAttachmentAreaView = this._getAttachmentArea();
527
- }
528
- if (!this._gmailAttachmentAreaView) {
529
- this._gmailAttachmentAreaView = this._createAttachmentArea();
530
- }
531
- this._gmailAttachmentAreaView.addGmailAttachmentCardView(gmailAttachmentCardView);
532
- return gmailAttachmentCardView;
533
- }
534
- _setupMessageStateStream() {
535
- var self = this;
536
- this._eventStream.plug(makeMutationObserverStream(this._element, {
537
- attributes: true,
538
- attributeFilter: ['class'],
539
- attributeOldValue: true,
540
- })
541
- .takeUntilBy(this._stopper)
542
- .map(function (mutation) {
543
- const currentClassList = mutation.target.classList;
544
- const mutationOldValue = mutation.oldValue;
545
- let oldValue;
546
- let newValue;
547
- if (mutationOldValue.indexOf('kQ') > -1 ||
548
- mutationOldValue.indexOf('kx') > -1) {
549
- oldValue = 'HIDDEN';
550
- }
551
- else if (mutationOldValue.indexOf('kv') > -1 ||
552
- mutationOldValue.indexOf('ky') > -1) {
553
- oldValue = 'COLLAPSED';
554
- }
555
- else if (mutationOldValue.indexOf('h7') > -1) {
556
- oldValue = 'EXPANDED';
557
- }
558
- if (currentClassList.contains('kQ') ||
559
- currentClassList.contains('kx')) {
560
- newValue = 'HIDDEN';
561
- }
562
- else if (currentClassList.contains('kv') ||
563
- currentClassList.contains('ky')) {
564
- newValue = 'COLLAPSED';
565
- }
566
- else if (currentClassList.contains('h7')) {
567
- newValue = 'EXPANDED';
568
- }
569
- return {
570
- oldValue,
571
- newValue,
572
- currentClassList,
573
- };
574
- })
575
- .map(function (event) {
576
- if (event.newValue === 'EXPANDED' && event.oldValue !== 'EXPANDED') {
577
- self._checkMessageOpenState(event.currentClassList);
578
- }
579
- return event;
580
- })
581
- .filter(function (event) {
582
- return (event.newValue !== event.oldValue &&
583
- !!event.oldValue &&
584
- !!event.newValue);
585
- })
586
- .map(function (event) {
587
- return {
588
- eventName: 'viewStateChange',
589
- oldValue: event.oldValue,
590
- newValue: event.newValue,
591
- };
592
- }));
593
- }
594
- _processInitialState() {
595
- this._checkMessageOpenState(this._element.classList);
596
- }
597
- _checkMessageOpenState(classList) {
598
- if (!classList.contains('h7')) {
599
- return;
600
- }
601
- if (this._messageLoaded) {
602
- return;
603
- }
604
- let messageId;
605
- try {
606
- messageId = this.getMessageID(true);
607
- }
608
- catch (err) {
609
- this._driver.getLogger().error(err);
610
- return;
611
- }
612
- this._messageLoaded = true;
613
- try {
614
- this._driver.associateThreadAndMessageIDs(this._threadViewDriver.getThreadID(), messageId);
615
- }
616
- catch (err) {
617
- this._driver.getLogger().error(err);
618
- }
619
- this._gmailAttachmentAreaView = this._getAttachmentArea();
620
- this._eventStream.emit({
621
- type: 'internal',
622
- eventName: 'messageLoad',
623
- });
624
- this._setupReplyStream();
625
- }
626
- _setupReplyStream() {
627
- const replyContainer = this._element.querySelector('.ip');
628
- if (!replyContainer) {
629
- return;
630
- }
631
- var self = this;
632
- var currentReplyElementRemovalStream = null;
633
- // hold off on emitting the mutation for a millisecond so
634
- // that compose-view-driver-stream is listening to reply stream
635
- Kefir.combine([
636
- makeMutationObserverChunkedStream(replyContainer, {
637
- attributes: true,
638
- attributeFilter: ['class'],
639
- }),
640
- Kefir.later(1, null),
641
- ])
642
- .merge(Kefir.later(1, undefined))
643
- .takeUntilBy(this._stopper)
644
- .beforeEnd(() => 'END')
645
- .onValue((mutation) => {
646
- if (mutation !== 'END' && replyContainer.classList.contains('adB')) {
647
- if (!currentReplyElementRemovalStream) {
648
- const replyElement = replyContainer.firstElementChild;
649
- self._replyElement = replyElement;
650
- if (replyElement) {
651
- currentReplyElementRemovalStream = kefirBus();
652
- self._eventStream.emit({
653
- type: 'internal',
654
- eventName: 'replyElement',
655
- change: {
656
- el: replyElement,
657
- removalStream: currentReplyElementRemovalStream,
658
- },
659
- });
660
- }
661
- }
662
- }
663
- else {
664
- if (currentReplyElementRemovalStream) {
665
- // Ending the currentReplyElementRemovalStream can trigger something
666
- // that triggers the mutation observer stream which will call back into
667
- // this function before we've unset currentReplyElementRemovalStream,
668
- // so we need to copy the bus to a temporary variable and unset
669
- // currentReplyElementRemovalStream first.
670
- var temp = currentReplyElementRemovalStream;
671
- currentReplyElementRemovalStream = null;
672
- temp.emit(null);
673
- temp.end();
674
- self._replyElement = null;
675
- }
676
- }
677
- });
678
- }
679
- _monitorEmailAddressHovering() {
680
- var self = this;
681
- this._eventStream.plug(Kefir.fromEvents(this._element, 'mouseover')
682
- .map((e) => e.target)
683
- .filter(function (element) {
684
- return element && element.getAttribute('email');
685
- })
686
- .map(function (element) {
687
- let contactType = null;
688
- if (!self._element.classList.contains('h7')) {
689
- contactType = 'sender';
690
- }
691
- else {
692
- if (self._element.querySelector('h3.iw').contains(element)) {
693
- contactType = 'sender';
694
- }
695
- else {
696
- contactType = 'recipient';
697
- }
698
- }
699
- return {
700
- get contact() {
701
- return self._getUpdatedContact(_extractContactInformation(element));
702
- },
703
- contactType: contactType,
704
- eventName: 'contactHover',
705
- messageViewDriver: self,
706
- };
707
- }));
708
- }
709
- _getAttachmentArea() {
710
- if (this._element.querySelector('.hq')) {
711
- return new GmailAttachmentAreaView(this._element.querySelector('.hq'), this._driver, this);
712
- }
713
- return null;
714
- }
715
- _createAttachmentArea() {
716
- const gmailAttachmentAreaView = new GmailAttachmentAreaView(null, this._driver, this);
717
- const beforeElement = querySelector(this._element, '.hi');
718
- const parentNode = beforeElement.parentNode;
719
- if (!parentNode)
720
- throw new Error('parentNode not found');
721
- parentNode.insertBefore(gmailAttachmentAreaView.getElement(), beforeElement);
722
- return gmailAttachmentAreaView;
723
- }
724
- _getUpdatedContact(inContact) {
725
- return getUpdatedContact(inContact, this._element);
726
- }
727
- getReadyStream() {
728
- return this._readyStream;
729
- }
730
- }
731
- function _extractContactInformation(span) {
732
- return {
733
- name: span.getAttribute('name'),
734
- emailAddress: span.getAttribute('email'),
735
- };
736
- }
737
- export default GmailMessageView;