@inboxsdk/core 1.2.5 → 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 (328) hide show
  1. package/inboxsdk.js +4462 -456
  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/inboxsdk.d.ts +29 -0
  7. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  8. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  9. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  15. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  16. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  19. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  20. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  21. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  22. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  23. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  24. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  25. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  26. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  27. package/src/build/exec.js +0 -26
  28. package/src/build/spawn.js +0 -17
  29. package/src/common/ajax.js +0 -90
  30. package/src/common/cachebust-url.js +0 -10
  31. package/src/common/censorHTMLstring.js +0 -37
  32. package/src/common/censorHTMLtree.js +0 -28
  33. package/src/common/censorJSONTree.js +0 -15
  34. package/src/common/connectivity-test.js +0 -21
  35. package/src/common/defer.js +0 -11
  36. package/src/common/find-parent.js +0 -10
  37. package/src/common/get-extension-id.js +0 -7
  38. package/src/common/get-or-fail.js +0 -8
  39. package/src/common/get-session-id.js +0 -14
  40. package/src/common/get-stack-trace.js +0 -6
  41. package/src/common/html-to-text.js +0 -7
  42. package/src/common/isElementVisible.js +0 -6
  43. package/src/common/load-script.js +0 -126
  44. package/src/common/log-error.js +0 -185
  45. package/src/common/quoted-split.js +0 -18
  46. package/src/common/rate-limit-queuer.js +0 -57
  47. package/src/common/rate-limit.js +0 -14
  48. package/src/common/version.js +0 -8
  49. package/src/inboxsdk-js/header.js +0 -19
  50. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  51. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  52. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  53. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  54. package/src/inboxsdk-js/inboxsdk.js +0 -23
  55. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  56. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -28
  57. package/src/injected-js/gmail/constants.js +0 -2
  58. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  59. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  60. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  61. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  62. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  63. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  64. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  65. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  66. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  67. package/src/injected-js/injected-logger.js +0 -50
  68. package/src/injected-js/main.js +0 -49
  69. package/src/injected-js/message-metadata-holder.js +0 -103
  70. package/src/injected-js/setup-data-exposer.js +0 -135
  71. package/src/injected-js/setup-error-silencer.js +0 -15
  72. package/src/injected-js/setup-event-reemitter.js +0 -47
  73. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  74. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  75. package/src/injected-js/setupPushStateListener.js +0 -14
  76. package/src/injected-js/xhr-helper.js +0 -43
  77. package/src/injected-js/xhr-proxy-factory.js +0 -537
  78. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  79. package/src/platform-implementation-js/constants/router.js +0 -60
  80. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  124. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  125. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  126. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  127. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -338
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  182. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  198. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  199. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  200. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  201. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  202. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  203. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  204. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  205. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  206. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  207. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  208. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  209. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  210. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  211. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  212. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  213. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  214. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  215. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  216. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  217. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  218. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  219. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  220. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  221. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  222. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  223. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  224. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  225. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  226. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  227. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  228. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  229. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  230. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  231. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  232. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  233. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  234. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  235. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  236. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  237. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  238. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  239. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  240. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  241. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  242. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  243. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  244. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  245. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  246. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  247. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  248. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  249. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  250. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  251. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  252. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  253. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  254. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  255. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  256. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  257. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  258. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  259. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  260. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  261. package/src/platform-implementation-js/lib/idMap.js +0 -40
  262. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  263. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  264. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -13
  265. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  266. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  267. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  268. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  269. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  270. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  271. package/src/platform-implementation-js/lib/logger.js +0 -439
  272. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  273. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  274. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  275. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  276. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  277. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  278. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  279. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  280. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  281. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  282. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  283. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  284. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  285. package/src/platform-implementation-js/main.js +0 -42
  286. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  287. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  288. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  289. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  290. package/src/platform-implementation-js/namespaces/global.js +0 -30
  291. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  292. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  293. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  294. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  295. package/src/platform-implementation-js/namespaces/router.js +0 -139
  296. package/src/platform-implementation-js/namespaces/search.js +0 -29
  297. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  298. package/src/platform-implementation-js/namespaces/user.js +0 -57
  299. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  300. package/src/platform-implementation-js/platform-implementation.js +0 -178
  301. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  302. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  303. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  304. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  305. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  306. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  307. package/src/platform-implementation-js/views/compose-view.js +0 -310
  308. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  309. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  310. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  311. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  312. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  313. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  314. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  315. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  316. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  317. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  318. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  319. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  320. package/src/platform-implementation-js/views/section-view.js +0 -60
  321. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  322. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  323. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  324. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  325. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  326. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  327. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  328. 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;