@inboxsdk/core 1.2.5 → 1.2.8-0

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