@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,26 +0,0 @@
1
- import idMap from '../../../../lib/idMap';
2
- export default class WidthManager {
3
- _contentContainerEl;
4
- _addonSidebarContainerEl;
5
- constructor(contentContainerEl, addonSidebarContainerEl) {
6
- this._contentContainerEl = contentContainerEl;
7
- this._addonSidebarContainerEl = addonSidebarContainerEl;
8
- }
9
- fixWidths() {
10
- // right now width manager really just cares about when
11
- // there are no icons sdk or native and adds/removes some styling
12
- // classes accordingly
13
- const tabList = this._addonSidebarContainerEl.querySelector('[role=tablist]');
14
- if (!tabList)
15
- return;
16
- if (this._addonSidebarContainerEl.classList.contains(idMap('app_sidebar_in_use'))) {
17
- this._contentContainerEl.classList.remove(idMap('container_app_sidebar_no_icons'));
18
- return;
19
- }
20
- const noIconsVisible = ![...tabList.children].some((child) => child.style.display !== 'none');
21
- if (noIconsVisible)
22
- this._contentContainerEl.classList.add(idMap('container_app_sidebar_no_icons'));
23
- else
24
- this._contentContainerEl.classList.remove(idMap('container_app_sidebar_no_icons'));
25
- }
26
- }
@@ -1,658 +0,0 @@
1
- import delay from 'pdelay';
2
- import * as Kefir from 'kefir';
3
- import kefirBus from 'kefir-bus';
4
- import kefirStopper from 'kefir-stopper';
5
- import findParent from '../../../../common/find-parent';
6
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
7
- import querySelector from '../../../lib/dom/querySelectorOrFail';
8
- import idMap from '../../../lib/idMap';
9
- import SimpleElementView from '../../../views/SimpleElementView';
10
- import CustomMessageView from '../../../views/conversations/custom-message-view';
11
- import GmailElementGetter from '../gmail-element-getter';
12
- import GmailMessageView from './gmail-message-view';
13
- import GmailToolbarView from './gmail-toolbar-view';
14
- import WidthManager from './gmail-thread-view/width-manager';
15
- let hasLoggedAddonInfo = false;
16
- class GmailThreadView {
17
- _element;
18
- _routeViewDriver;
19
- _driver;
20
- _isPreviewedThread;
21
- _eventStream;
22
- _stopper = kefirStopper();
23
- _widthManager = null;
24
- _toolbarView;
25
- _messageViewDrivers;
26
- _newMessageMutationObserver;
27
- _readyStream;
28
- _threadID;
29
- _syncThreadID;
30
- _customMessageViews = new Set();
31
- _hiddenCustomMessageViews = new Set();
32
- _hiddenCustomMessageNoticeProvider;
33
- _hiddenCustomMessageNoticeElement;
34
- _resolveUnmountHiddenNoticePromise;
35
- constructor(element, routeViewDriver, driver, isPreviewedThread = false) {
36
- this._element = element;
37
- this._routeViewDriver = routeViewDriver;
38
- this._driver = driver;
39
- this._isPreviewedThread = isPreviewedThread;
40
- this._eventStream = kefirBus();
41
- this._messageViewDrivers = [];
42
- this._logAddonElementInfo().catch((err) => this._driver.getLogger().error(err));
43
- const waitForSidebarReady = this._driver
44
- .waitForGlobalSidebarReady()
45
- .merge(this._driver
46
- .delayToTimeAfterReady(15 * 1000)
47
- .flatMap(() => Kefir.constantError(new Error('15 second timeout while waiting for sidebar fired'))))
48
- .take(1)
49
- .takeErrors(1)
50
- .flatMapErrors((err) => {
51
- this._driver.getLogger().error(err);
52
- return Kefir.constant(null);
53
- })
54
- .toProperty();
55
- let combinedReadyStream;
56
- if (driver.getOpts().REQUESTED_API_VERSION === 1 &&
57
- driver.isUsingSyncAPI()) {
58
- combinedReadyStream = Kefir.combine([
59
- waitForSidebarReady,
60
- Kefir.fromPromise(this.getThreadIDAsync()),
61
- ]);
62
- }
63
- else {
64
- combinedReadyStream = waitForSidebarReady;
65
- }
66
- this._readyStream = combinedReadyStream
67
- .map(() => {
68
- this._setupToolbarView();
69
- this._setupMessageViewStream();
70
- return null;
71
- })
72
- .takeUntilBy(this._stopper)
73
- .toProperty();
74
- this._listenToExpandCollapseAll();
75
- this._stopper.take(1).onValue(() => {
76
- if (this._resolveUnmountHiddenNoticePromise) {
77
- this._resolveUnmountHiddenNoticePromise();
78
- }
79
- });
80
- }
81
- // TODO use livesets eventually
82
- getMessageViewDriverStream() {
83
- return Kefir.constant(this._messageViewDrivers)
84
- .flatten()
85
- .merge(this._eventStream
86
- .filter((event) => event.type === 'internal' && event.eventName === 'messageCreated')
87
- .map((event) => event.view));
88
- }
89
- isLoadingStub() {
90
- return false;
91
- }
92
- getStopper() {
93
- return this._stopper;
94
- }
95
- getEventStream() {
96
- return this._eventStream;
97
- }
98
- getElement() {
99
- return this._element;
100
- }
101
- getRouteViewDriver() {
102
- return this._routeViewDriver;
103
- }
104
- getIsPreviewedThread() {
105
- return this._isPreviewedThread;
106
- }
107
- getToolbarView() {
108
- return this._toolbarView;
109
- }
110
- getMessageViewDrivers() {
111
- return this._messageViewDrivers;
112
- }
113
- destroy() {
114
- this._eventStream.end();
115
- this._stopper.destroy();
116
- if (this._toolbarView)
117
- this._toolbarView.destroy();
118
- this._messageViewDrivers.forEach((messageView) => {
119
- messageView.destroy();
120
- });
121
- this._messageViewDrivers.length = 0;
122
- if (this._newMessageMutationObserver) {
123
- this._newMessageMutationObserver.disconnect();
124
- }
125
- for (const customMessageView of this._customMessageViews) {
126
- customMessageView.destroy();
127
- }
128
- }
129
- addSidebarContentPanel(descriptor) {
130
- const sidebar = this._driver.getGlobalSidebar();
131
- return sidebar.addThreadSidebarContentPanel(descriptor, this);
132
- }
133
- _subjectContainerSelectors = {
134
- '2022_10_21': '.a98.iY > .nH',
135
- '2022_10_12': '.PeIF1d > .nH',
136
- [2018]: '.if > .nH',
137
- };
138
- addNoticeBar() {
139
- const el = document.createElement('div');
140
- el.className = idMap('thread_noticeBar');
141
- let version;
142
- let subjectContainer;
143
- for (const [currentVersion, selector] of Object.entries(this._subjectContainerSelectors)) {
144
- // Flow should be able to infer selector to be a string,
145
- // Typescript can. Remove this when ported.
146
- const el = this._element.querySelector(selector);
147
- if (!el) {
148
- continue;
149
- }
150
- version = currentVersion;
151
- subjectContainer = el;
152
- break;
153
- }
154
- if (!subjectContainer)
155
- throw new Error('Failed to find subject container');
156
- this._driver.getLogger().eventSdkPassive('addNoticeBar subjectContainer', {
157
- version,
158
- });
159
- subjectContainer.insertAdjacentElement('afterend', el);
160
- const view = new SimpleElementView(el);
161
- this._stopper
162
- .takeUntilBy(Kefir.fromEvents(view, 'destroy'))
163
- .onValue(() => view.destroy());
164
- return view;
165
- }
166
- registerHiddenCustomMessageNoticeProvider(provider) {
167
- this._hiddenCustomMessageNoticeProvider = provider;
168
- }
169
- addCustomMessage(descriptorStream) {
170
- const parentElement = this._element.parentElement;
171
- if (!parentElement)
172
- throw new Error('missing parent element');
173
- const customMessageView = new CustomMessageView(descriptorStream, () => {
174
- this._readyStream.onValue(async () => {
175
- const messageContainer = this._element.querySelector('[role=list]');
176
- if (!messageContainer)
177
- return;
178
- let mostRecentDate = Number.MIN_SAFE_INTEGER;
179
- let insertBeforeMessage;
180
- let isInHidden = false;
181
- const messages = [
182
- ...(await Promise.all(this._messageViewDrivers.map(async (messageView) => ({
183
- sortDatetime: (await messageView.getDate()) || 0,
184
- isHidden: messageView.getViewState() === 'HIDDEN',
185
- element: messageView.getElement(),
186
- })))),
187
- ...Array.from(this._customMessageViews)
188
- .filter((cmv) => cmv !== customMessageView && cmv.getElement().parentElement
189
- /* it has been inserted into dom */
190
- )
191
- .map((cmv) => {
192
- const date = cmv.getSortDate();
193
- const datetime = date ? date.getTime() : null;
194
- return {
195
- sortDatetime: datetime || 0,
196
- isHidden: cmv
197
- .getElement()
198
- .classList.contains('inboxsdk__custom_message_view_hidden'),
199
- element: cmv.getElement(),
200
- };
201
- }),
202
- ].sort((a, b) => a.sortDatetime - b.sortDatetime);
203
- const messageDate = customMessageView.getSortDate();
204
- if (!messageDate)
205
- return;
206
- for (const message of messages) {
207
- isInHidden = message.isHidden;
208
- if (messageDate.getTime() >= mostRecentDate &&
209
- messageDate.getTime() <= message.sortDatetime) {
210
- insertBeforeMessage = message.element;
211
- break;
212
- }
213
- mostRecentDate = message.sortDatetime;
214
- }
215
- if (insertBeforeMessage)
216
- insertBeforeMessage.insertAdjacentElement('beforebegin', customMessageView.getElement());
217
- else
218
- messageContainer.insertAdjacentElement('beforeend', customMessageView.getElement());
219
- if (isInHidden) {
220
- this._setupHiddenCustomMessage(customMessageView);
221
- }
222
- parentElement.classList.add('inboxsdk__thread_view_with_custom_view');
223
- });
224
- });
225
- this._customMessageViews.add(customMessageView);
226
- customMessageView.on('destroy', () => {
227
- this._customMessageViews.delete(customMessageView);
228
- if (this._customMessageViews.size > 0)
229
- parentElement.classList.add('inboxsdk__thread_view_with_custom_view');
230
- else
231
- parentElement.classList.remove('inboxsdk__thread_view_with_custom_view');
232
- });
233
- return customMessageView;
234
- }
235
- _setupHiddenCustomMessage(customMessageView) {
236
- this._hiddenCustomMessageViews.add(customMessageView);
237
- // hide the element
238
- customMessageView
239
- .getElement()
240
- .classList.add('inboxsdk__custom_message_view_hidden');
241
- // get the message element that contains the hidden messages notice
242
- let hiddenNoticeMessageElement = this._element.querySelector('.adv');
243
- let nativeHiddenNoticePresent = true;
244
- if (!hiddenNoticeMessageElement) {
245
- nativeHiddenNoticePresent = false;
246
- const superCollapsedMessageElements = Array.from(this._element.querySelectorAll('.kQ'));
247
- if (superCollapsedMessageElements.length < 2)
248
- return;
249
- hiddenNoticeMessageElement = superCollapsedMessageElements[1];
250
- }
251
- // listen for a class change on that message which occurs when it becomes visible
252
- makeMutationObserverChunkedStream(hiddenNoticeMessageElement, {
253
- attributes: true,
254
- attributeFilter: ['class'],
255
- })
256
- .takeUntilBy(Kefir.merge([
257
- this._stopper,
258
- Kefir.fromEvents(customMessageView, 'destroy'),
259
- ]))
260
- .filter(() => (hiddenNoticeMessageElement &&
261
- !hiddenNoticeMessageElement.classList.contains('kQ'))) //when kQ is gone, message is visible
262
- .onValue(() => {
263
- customMessageView
264
- .getElement()
265
- .classList.remove('inboxsdk__custom_message_view_hidden');
266
- if (this._hiddenCustomMessageNoticeElement)
267
- this._hiddenCustomMessageNoticeElement.remove();
268
- this._hiddenCustomMessageNoticeElement = null;
269
- });
270
- this._updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent);
271
- Kefir.fromEvents(customMessageView, 'destroy')
272
- .takeUntilBy(this._stopper)
273
- .take(1)
274
- .onValue(() => {
275
- this._hiddenCustomMessageViews.delete(customMessageView);
276
- if (hiddenNoticeMessageElement)
277
- this._updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent);
278
- });
279
- }
280
- _updateHiddenNotice(hiddenNoticeMessageElement, nativeHiddenNoticePresent) {
281
- const existingAppNoticeElement = this._hiddenCustomMessageNoticeElement;
282
- if (existingAppNoticeElement) {
283
- existingAppNoticeElement.remove();
284
- this._hiddenCustomMessageNoticeElement = null;
285
- if (this._resolveUnmountHiddenNoticePromise)
286
- this._resolveUnmountHiddenNoticePromise();
287
- }
288
- const noticeProvider = this._hiddenCustomMessageNoticeProvider;
289
- if (!noticeProvider)
290
- return;
291
- const appNoticeContainerElement = (this._hiddenCustomMessageNoticeElement =
292
- document.createElement('span'));
293
- appNoticeContainerElement.classList.add('inboxsdk__custom_message_view_app_notice_content');
294
- const numberCustomHiddenMessages = this._hiddenCustomMessageViews.size;
295
- let numberNativeHiddenMessages = null;
296
- if (nativeHiddenNoticePresent) {
297
- const nativeHiddenNoticeCountSpan = querySelector(hiddenNoticeMessageElement, '.adx span');
298
- numberNativeHiddenMessages = Number(nativeHiddenNoticeCountSpan.innerHTML);
299
- if (isNaN(numberNativeHiddenMessages)) {
300
- throw new Error("Couldn't find number of native hidden messages in dom structure");
301
- }
302
- }
303
- const appNoticeElement = noticeProvider(numberCustomHiddenMessages, numberNativeHiddenMessages, new Promise((resolve) => {
304
- this._resolveUnmountHiddenNoticePromise = resolve;
305
- }));
306
- if (!appNoticeElement) {
307
- return;
308
- }
309
- appNoticeContainerElement.appendChild(appNoticeElement);
310
- if (!nativeHiddenNoticePresent) {
311
- const fakeAppNoticeElement = document.createElement('span');
312
- fakeAppNoticeElement.classList.add('adx');
313
- const insertionPoint = querySelector(hiddenNoticeMessageElement, '.G3');
314
- insertionPoint.appendChild(fakeAppNoticeElement);
315
- }
316
- const hiddenNoticeElement = querySelector(hiddenNoticeMessageElement, '.adx');
317
- hiddenNoticeElement.classList.add('inboxsdk__custom_message_view_app_notice_container');
318
- hiddenNoticeElement.appendChild(appNoticeContainerElement);
319
- }
320
- getSubject() {
321
- var subjectElement = this._element.querySelector('.ha h2');
322
- if (!subjectElement) {
323
- return '';
324
- }
325
- if (subjectElement.querySelector('img[data-emoji]')) {
326
- return Array.from(subjectElement.childNodes)
327
- .map((c) => {
328
- if (c instanceof HTMLElement && c.nodeName === 'IMG') {
329
- const maybeEmoji = c.getAttribute('data-emoji');
330
- return maybeEmoji;
331
- }
332
- if (c.nodeName === '#text') {
333
- return c.wholeText;
334
- }
335
- })
336
- .filter((x) => x != null)
337
- .join('');
338
- }
339
- return subjectElement.textContent;
340
- }
341
- getInternalID() {
342
- return this._syncThreadID || this.getThreadID();
343
- }
344
- // Follows a similar structure to getThreadIDAsync, but gives up if async work is needed
345
- getThreadID() {
346
- if (this._threadID)
347
- return this._threadID;
348
- let threadID;
349
- if (this._driver.isUsingSyncAPI()) {
350
- const idElement = this._element.querySelector('[data-thread-perm-id]');
351
- if (!idElement)
352
- throw new Error('threadID element not found');
353
- const syncThreadID = (this._syncThreadID = idElement.getAttribute('data-thread-perm-id'));
354
- if (!syncThreadID)
355
- throw new Error('syncThreadID attribute with no value');
356
- threadID = idElement.getAttribute('data-legacy-thread-id');
357
- if (!threadID) {
358
- const err = new Error('Failed to get id for thread: data-legacy-thread-id attribute missing');
359
- this._driver.getLogger().error(err); // throw err;
360
- // Fall back to old behavior instead of throwing. Probably not super sensible, but
361
- // this is a deprecated method and preserving the current behavior is
362
- // probably an okay choice.
363
- }
364
- }
365
- if (!threadID) {
366
- if (this._isPreviewedThread) {
367
- threadID = this._driver
368
- .getPageCommunicator()
369
- .getCurrentThreadID(this._element, true);
370
- }
371
- else {
372
- const params = this._routeViewDriver
373
- ? this._routeViewDriver.getParams()
374
- : null;
375
- if (params && params.threadID) {
376
- threadID = params.threadID;
377
- }
378
- else {
379
- const err = new Error('Failed to get id for thread');
380
- this._driver.getLogger().error(err);
381
- throw err;
382
- }
383
- }
384
- }
385
- this._threadID = threadID;
386
- return threadID;
387
- }
388
- async getThreadIDAsync() {
389
- let threadID;
390
- if (this._driver.isUsingSyncAPI()) {
391
- const idElement = this._element.querySelector('[data-thread-perm-id]');
392
- if (!idElement)
393
- throw new Error('threadID element not found');
394
- const syncThreadID = (this._syncThreadID = idElement.getAttribute('data-thread-perm-id'));
395
- if (!syncThreadID)
396
- throw new Error('syncThreadID attribute with no value');
397
- this._threadID = threadID = idElement.getAttribute('data-legacy-thread-id');
398
- if (!threadID) {
399
- this._threadID = threadID =
400
- await this._driver.getOldGmailThreadIdFromSyncThreadId(syncThreadID);
401
- }
402
- }
403
- else {
404
- if (this._isPreviewedThread) {
405
- threadID = this._driver
406
- .getPageCommunicator()
407
- .getCurrentThreadID(this._element, true);
408
- }
409
- else {
410
- const params = this._routeViewDriver
411
- ? this._routeViewDriver.getParams()
412
- : null;
413
- if (params && params.threadID) {
414
- threadID = params.threadID;
415
- }
416
- else {
417
- const err = new Error('Failed to get id for thread');
418
- this._driver.getLogger().error(err);
419
- throw err;
420
- }
421
- }
422
- this._threadID = threadID;
423
- }
424
- if (this._threadID)
425
- return this._threadID;
426
- else
427
- throw new Error('Failed to get id for thread');
428
- }
429
- addLabel() {
430
- const labelContainer = this._element.querySelector('.ha .J-J5-Ji');
431
- if (!labelContainer) {
432
- throw new Error('Thread view label container not found');
433
- }
434
- const el = document.createElement('span');
435
- labelContainer.appendChild(el);
436
- const view = new SimpleElementView(el);
437
- const observer = new MutationObserver((mutationsList) => {
438
- if (mutationsList.some((mutation) => mutation.type === 'childList' &&
439
- mutation.removedNodes &&
440
- mutation.removedNodes.length &&
441
- mutation.removedNodes.length > 0)) {
442
- if (!labelContainer.contains(el)) {
443
- labelContainer.appendChild(el);
444
- }
445
- }
446
- });
447
- observer.observe(labelContainer, {
448
- childList: true,
449
- });
450
- this._stopper
451
- .takeUntilBy(Kefir.fromEvents(view, 'destroy'))
452
- .onValue(() => view.destroy());
453
- Kefir.fromEvents(view, 'destroy')
454
- .take(1)
455
- .onValue(() => {
456
- observer.disconnect();
457
- });
458
- return view;
459
- }
460
- _setupToolbarView() {
461
- const toolbarElement = this._findToolbarElement();
462
- if (!toolbarElement)
463
- throw new Error('No toolbar element found');
464
- const toolbarParent = toolbarElement.parentElement;
465
- if (toolbarParent)
466
- toolbarParent.classList.add('inboxsdk__thread_toolbar_parent');
467
- this._toolbarView = new GmailToolbarView(toolbarElement, this._driver, this._routeViewDriver, this);
468
- }
469
- _findToolbarElement() {
470
- var toolbarContainerElements = document.querySelectorAll('[gh=tm]');
471
- for (var ii = 0; ii < toolbarContainerElements.length; ii++) {
472
- if (this._isToolbarContainerRelevant(toolbarContainerElements[ii])) {
473
- return toolbarContainerElements[ii].querySelector('[gh=mtb]');
474
- }
475
- }
476
- return null;
477
- }
478
- _isToolbarContainerRelevant(toolbarContainerElement) {
479
- if (toolbarContainerElement.parentElement.parentElement ===
480
- this._element.parentElement.parentElement) {
481
- return true;
482
- }
483
- if (toolbarContainerElement.parentElement.getAttribute('role') !==
484
- 'main' &&
485
- this._element.parentElement.getAttribute('role') !== 'main') {
486
- return true;
487
- }
488
- if (toolbarContainerElement.parentElement.getAttribute('role') ===
489
- 'main' &&
490
- toolbarContainerElement.parentElement.querySelector('.if, .PeIF1d, .a98.iY') &&
491
- toolbarContainerElement.parentElement.querySelector('.if, .PeIF1d, .a98.iY').parentElement === this._element) {
492
- let version = '2018';
493
- if (toolbarContainerElement.parentElement.querySelector('.a98.iY')) {
494
- version = '2022-10-20';
495
- }
496
- else if (toolbarContainerElement.parentElement.querySelector('.PeIF1d')) {
497
- version = '2022-10-12';
498
- }
499
- this._driver
500
- .getLogger()
501
- .eventSdkPassive('gmailThreadView_isToolbarContainerRelevant', {
502
- version,
503
- });
504
- return true;
505
- }
506
- return false;
507
- }
508
- _setupMessageViewStream() {
509
- var openMessage = this._element.querySelector('.h7');
510
- if (!openMessage) {
511
- var self = this;
512
- setTimeout(function () {
513
- if (self._element) {
514
- self._setupMessageViewStream();
515
- }
516
- }, 500);
517
- return;
518
- }
519
- var messageContainer = openMessage.parentElement;
520
- this._initializeExistingMessages(messageContainer);
521
- this._observeNewMessages(messageContainer);
522
- }
523
- _initializeExistingMessages(messageContainer) {
524
- var self = this;
525
- var children = messageContainer.children;
526
- Array.prototype.forEach.call(children, function (childElement) {
527
- self._createMessageView(childElement);
528
- });
529
- }
530
- _observeNewMessages(messageContainer) {
531
- this._newMessageMutationObserver = new MutationObserver(this._handleNewMessageMutations.bind(this));
532
- this._newMessageMutationObserver.observe(messageContainer, {
533
- childList: true,
534
- });
535
- }
536
- _handleNewMessageMutations(mutations) {
537
- var self = this;
538
- mutations.forEach(function (mutation) {
539
- Array.prototype.forEach.call(mutation.addedNodes, function (addedNode) {
540
- if (!addedNode.classList.contains('inboxsdk__custom_message_view'))
541
- self._createMessageView(addedNode);
542
- });
543
- });
544
- }
545
- _createMessageView(messageElement) {
546
- var messageView = new GmailMessageView(messageElement, this, this._driver);
547
- this._eventStream.plug(messageView.getEventStream());
548
- this._messageViewDrivers.push(messageView);
549
- this._eventStream.emit({
550
- type: 'internal',
551
- eventName: 'messageCreated',
552
- view: messageView,
553
- });
554
- }
555
- _setupWidthManager() {
556
- let widthManager = this._widthManager;
557
- if (!widthManager) {
558
- const addonSidebarElement = GmailElementGetter.getAddonSidebarContainerElement();
559
- if (!addonSidebarElement)
560
- throw new Error('addonSidebarElement not found');
561
- const mainContentBodyContainerElement = GmailElementGetter.getMainContentBodyContainerElement();
562
- if (!mainContentBodyContainerElement)
563
- throw new Error('mainContentBodyContainerElement not found');
564
- const contentContainer = mainContentBodyContainerElement.parentElement;
565
- if (!contentContainer)
566
- throw new Error('mainContentBodyContainerElement has no parent element');
567
- this._widthManager = widthManager = new WidthManager(contentContainer, addonSidebarElement);
568
- }
569
- return widthManager;
570
- }
571
- getReadyStream() {
572
- return this._readyStream;
573
- }
574
- async _logAddonElementInfo() {
575
- if (hasLoggedAddonInfo)
576
- return;
577
- function readInfo() {
578
- const container = GmailElementGetter.getAddonSidebarContainerElement();
579
- if (!container)
580
- return null;
581
- const isDisplayNone = {
582
- parent: container.parentElement
583
- ? container.parentElement.style.display === 'none'
584
- : null,
585
- self: container.style.display === 'none',
586
- children: Array.from(container.children).map((el) => el.style
587
- ? el.style.display === 'none'
588
- : null),
589
- };
590
- const rect = container.getBoundingClientRect();
591
- const size = {
592
- width: rect.width,
593
- height: rect.height,
594
- };
595
- return {
596
- isDisplayNone,
597
- size,
598
- };
599
- }
600
- const eventData = {
601
- time: {},
602
- };
603
- eventData.time[0] = readInfo();
604
- await Promise.all([30, 5000].map(async (time) => {
605
- await delay(time);
606
- if (this._stopper.stopped)
607
- return;
608
- eventData.time[time] = readInfo();
609
- }));
610
- if (this._stopper.stopped)
611
- return;
612
- this._driver
613
- .getLogger()
614
- .eventSdkPassive('gmailSidebarElementInfo', eventData);
615
- hasLoggedAddonInfo = true;
616
- }
617
- _listenToExpandCollapseAll() {
618
- //expand all
619
- const expandAllElementImg = this._element.querySelector('img.gx');
620
- if (expandAllElementImg) {
621
- const expandAllElement = findParent(expandAllElementImg, (el) => el.getAttribute('role') === 'button');
622
- if (expandAllElement) {
623
- Kefir.merge([
624
- Kefir.fromEvents(expandAllElement, 'click'),
625
- Kefir.fromEvents(expandAllElement, 'keydown').filter((e) => e.which === 13
626
- /* enter */
627
- ),
628
- ])
629
- .takeUntilBy(this._stopper)
630
- .onValue(() => {
631
- for (const customMessageView of this._customMessageViews) {
632
- customMessageView.expand();
633
- }
634
- });
635
- }
636
- }
637
- //collapse all
638
- const collapseAllElementImg = this._element.querySelector('img.gq');
639
- if (collapseAllElementImg) {
640
- const collapseAllElement = findParent(collapseAllElementImg, (el) => el.getAttribute('role') === 'button');
641
- if (collapseAllElement) {
642
- Kefir.merge([
643
- Kefir.fromEvents(collapseAllElement, 'click'),
644
- Kefir.fromEvents(collapseAllElement, 'keydown').filter((e) => e.which === 13
645
- /* enter */
646
- ),
647
- ])
648
- .takeUntilBy(this._stopper)
649
- .onValue(() => {
650
- for (const customMessageView of this._customMessageViews) {
651
- customMessageView.collapse();
652
- }
653
- });
654
- }
655
- }
656
- }
657
- }
658
- export default GmailThreadView;