@inboxsdk/core 1.1.6 → 1.1.8

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