@inboxsdk/core 1.2.5 → 1.2.8-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/inboxsdk.js +4462 -456
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +3 -2
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/inboxsdk.d.ts +29 -0
  7. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  8. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  9. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  15. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  16. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts +15 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.d.ts.map +1 -1
  19. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  20. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  21. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts +9 -0
  22. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.d.ts.map +1 -1
  23. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  24. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  25. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  26. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  27. package/src/platform-implementation-js/views/compose-view.d.ts +8 -2
  28. package/src/platform-implementation-js/views/compose-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  30. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  31. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  32. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  33. package/src/build/exec.js +0 -26
  34. package/src/build/spawn.js +0 -17
  35. package/src/common/ajax.js +0 -90
  36. package/src/common/cachebust-url.js +0 -10
  37. package/src/common/censorHTMLstring.js +0 -37
  38. package/src/common/censorHTMLtree.js +0 -28
  39. package/src/common/censorJSONTree.js +0 -15
  40. package/src/common/connectivity-test.js +0 -21
  41. package/src/common/defer.js +0 -11
  42. package/src/common/find-parent.js +0 -10
  43. package/src/common/get-extension-id.js +0 -7
  44. package/src/common/get-or-fail.js +0 -8
  45. package/src/common/get-session-id.js +0 -14
  46. package/src/common/get-stack-trace.js +0 -6
  47. package/src/common/html-to-text.js +0 -7
  48. package/src/common/isElementVisible.js +0 -6
  49. package/src/common/load-script.js +0 -126
  50. package/src/common/log-error.js +0 -185
  51. package/src/common/quoted-split.js +0 -18
  52. package/src/common/rate-limit-queuer.js +0 -57
  53. package/src/common/rate-limit.js +0 -14
  54. package/src/common/version.js +0 -8
  55. package/src/inboxsdk-js/header.js +0 -19
  56. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  57. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  58. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  59. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  60. package/src/inboxsdk-js/inboxsdk.js +0 -23
  61. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  62. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -28
  63. package/src/injected-js/gmail/constants.js +0 -2
  64. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  65. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  66. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  67. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  68. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  69. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  70. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  71. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  72. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  73. package/src/injected-js/injected-logger.js +0 -50
  74. package/src/injected-js/main.js +0 -49
  75. package/src/injected-js/message-metadata-holder.js +0 -103
  76. package/src/injected-js/setup-data-exposer.js +0 -135
  77. package/src/injected-js/setup-error-silencer.js +0 -15
  78. package/src/injected-js/setup-event-reemitter.js +0 -47
  79. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  80. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  81. package/src/injected-js/setupPushStateListener.js +0 -14
  82. package/src/injected-js/xhr-helper.js +0 -43
  83. package/src/injected-js/xhr-proxy-factory.js +0 -537
  84. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  85. package/src/platform-implementation-js/constants/router.js +0 -60
  86. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  124. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  125. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  126. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  127. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  128. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  129. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  130. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  131. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  132. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  133. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -338
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  186. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  187. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  188. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  198. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  199. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  200. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  201. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  202. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  203. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  204. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  205. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  206. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  207. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  208. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  209. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  210. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  211. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  212. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  213. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  214. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  215. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  216. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  217. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  218. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  219. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  220. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  221. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  222. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  223. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  224. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  225. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  226. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  227. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  228. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  229. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  230. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  231. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  232. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  233. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  234. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  235. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  236. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  237. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  238. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  239. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  240. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  241. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  242. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  243. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  244. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  245. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  246. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  247. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  248. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  249. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  250. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  251. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  252. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  253. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  254. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  255. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  256. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  257. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  258. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  259. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  260. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  261. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  262. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  263. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  264. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  265. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  266. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  267. package/src/platform-implementation-js/lib/idMap.js +0 -40
  268. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  269. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  270. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -13
  271. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  272. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  273. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  274. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  275. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  276. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  277. package/src/platform-implementation-js/lib/logger.js +0 -439
  278. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  279. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  280. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  281. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  282. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  283. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  284. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  285. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  286. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  287. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  288. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  289. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  290. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  291. package/src/platform-implementation-js/main.js +0 -42
  292. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  293. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  294. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  295. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  296. package/src/platform-implementation-js/namespaces/global.js +0 -30
  297. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  298. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  299. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  300. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  301. package/src/platform-implementation-js/namespaces/router.js +0 -139
  302. package/src/platform-implementation-js/namespaces/search.js +0 -29
  303. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  304. package/src/platform-implementation-js/namespaces/user.js +0 -57
  305. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  306. package/src/platform-implementation-js/platform-implementation.js +0 -178
  307. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  308. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  309. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  310. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  311. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  312. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  313. package/src/platform-implementation-js/views/compose-view.js +0 -310
  314. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  315. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  316. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  317. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  318. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  319. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  320. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  321. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  322. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  323. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  324. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  325. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  326. package/src/platform-implementation-js/views/section-view.js +0 -60
  327. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  328. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  329. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  330. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  331. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  332. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  333. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  334. package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
@@ -1,40 +0,0 @@
1
- import isIntegratedViewGmail, { isCollapsiblePanelHidden, } from './isIntegratedViewGmail';
2
- import { waitForMenuReady } from './add-nav-item';
3
- import { checkForDarkThemeSafe } from './track-gmail-styles';
4
- export default async function gmailLoadEvent(driver) {
5
- const pageCommunicator = driver.getPageCommunicator();
6
- const isConversationViewDisabled = await pageCommunicator.isConversationViewDisabled();
7
- await waitForMenuReady();
8
- const isUsingDarkTheme = await checkForDarkThemeSafe();
9
- driver.getLogger().eventSite('gmailSettings', {
10
- isGmailIntegratedView: isIntegratedViewGmail(),
11
- isCollapsiblePanelHidden: isCollapsiblePanelHidden(),
12
- isDarkTheme: isUsingDarkTheme,
13
- screenWidth: window.screen?.width,
14
- screenHeight: window.screen?.height,
15
- windowWidth: window.innerWidth,
16
- windowHeight: window.innerHeight,
17
- language: pageCommunicator.getUserLanguage(),
18
- isUsingSyncAPI: pageCommunicator.isUsingSyncAPI(),
19
- previewPane: pageCommunicator.getUserOriginalPreviewPaneMode(),
20
- isConversationViewDisabled,
21
- wasAccountSwitcherReadyAtStart: driver.getEnvData().wasAccountSwitcherReadyAtStart,
22
- timings: {
23
- responseStart: global.performance?.timing.responseStart,
24
- responseEnd: global.performance?.timing.responseEnd,
25
- domLoading: global.performance?.timing.domLoading,
26
- domInteractive: global.performance?.timing.domInteractive,
27
- domComplete: global.performance?.timing.domComplete,
28
- domContentLoadedEventStart: global.performance?.timing.domContentLoadedEventStart,
29
- domContentLoadedEventEnd: global.performance?.timing.domContentLoadedEventEnd,
30
- domainLookupEnd: global.performance?.timing.domainLookupEnd,
31
- domainLookupStart: global.performance?.timing.domainLookupStart,
32
- fetchStart: global.performance?.timing.fetchStart,
33
- loadEventStart: global.performance?.timing.loadEventStart,
34
- loadEventEnd: global.performance?.timing.loadEventEnd,
35
- navigationStart: global.performance?.timing.navigationStart,
36
- requestStart: global.performance?.timing.requestStart,
37
- ...driver.getTimings(),
38
- },
39
- });
40
- }
@@ -1,55 +0,0 @@
1
- import includes from 'lodash/includes';
2
- import * as ud from 'ud';
3
- import { NATIVE_ROUTE_IDS } from '../../../constants/router';
4
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
5
- const gotoView = ud.defn(module, async function gotoView(gmailDriver, viewName, params) {
6
- if (viewName[0] === '#') {
7
- if (params) {
8
- throw new Error("params parameter can't be passed with resolved URL");
9
- }
10
- viewName = viewName.slice(1);
11
- }
12
- if (includes(NATIVE_ROUTE_IDS, viewName)) {
13
- if (gmailDriver.isUsingSyncAPI()) {
14
- // need to go to the new url
15
- if (params && typeof params !== 'string') {
16
- const threadID = params.threadID;
17
- if (threadID && typeof threadID === 'string') {
18
- const int = parseInt(threadID, 16);
19
- if (!isNaN(int)) {
20
- //we got an old id
21
- const syncThreadId = await gmailDriver.getSyncThreadIdForOldGmailThreadId(threadID);
22
- params = {
23
- ...params,
24
- threadID: '#' + syncThreadId,
25
- };
26
- }
27
- }
28
- }
29
- }
30
- const newHash = gmailDriver.createLink(viewName, params);
31
- // Create a fake link and simulate a click event on it to let Gmail handle
32
- // the view change. If we just set window.location.hash ourselves to the
33
- // newHash, it's a Gmail hash, and any composes are open, then Gmail will
34
- // redirect the user to the hash with ?compose=... appended to the end and
35
- // break the back button. If we try to pre-empt Gmail and add the
36
- // ?compose=... part ourselves, then sometimes Gmail thinks it's new and
37
- // actually triggers now composes to open. This fake link method avoids the
38
- // issue.
39
- const link = document.createElement('a');
40
- link.style.display = 'none';
41
- link.href = newHash;
42
- document.body.appendChild(link);
43
- simulateClick(link);
44
- link.remove();
45
- }
46
- else {
47
- const newHash = gmailDriver.createLink(viewName, params);
48
- // If it's not a gmail view name, then it's probably a hash for a custom
49
- // view. We need to set the hash ourselves. Gmail won't react at all to a
50
- // hashchange event for a hash it doesn't recognize, so we don't have to
51
- // worry about the above issue.
52
- window.location.hash = newHash;
53
- }
54
- });
55
- export default gotoView;
@@ -1,14 +0,0 @@
1
- /**
2
- * https://support.google.com/mail/answer/11555490
3
- */
4
- export default function isIntegratedViewGmail() {
5
- const nav = document.querySelector('div[role=navigation]');
6
- return Boolean(nav?.firstElementChild?.classList.contains('Xa'));
7
- }
8
- /** @returns null if the app menu is configured off */
9
- export function isCollapsiblePanelHidden() {
10
- if (!isIntegratedViewGmail()) {
11
- return null;
12
- }
13
- return document.querySelector('div[role=navigation].aBA') != null;
14
- }
@@ -1,177 +0,0 @@
1
- import escape from 'lodash/escape';
2
- import kefirStopper from 'kefir-stopper';
3
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
4
- import querySelector from '../../../lib/dom/querySelectorOrFail';
5
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
6
- export default class KeyboardShortcutHelpModifier {
7
- _appId;
8
- _appName;
9
- _appIconUrl;
10
- _stopper;
11
- _shortcuts;
12
- constructor() {
13
- this._appId = null; // TODO have these passed to the constructor
14
- this._appName = null;
15
- this._appIconUrl = null;
16
- this._stopper = kefirStopper();
17
- this._shortcuts = new Set();
18
- this._monitorKeyboardHelp();
19
- }
20
- destroy() {
21
- this._stopper.destroy();
22
- this._shortcuts.clear();
23
- }
24
- set(keyboardShortcutHandle, appId, appName, appIconUrl) {
25
- this._initializeAppValues(appId, appName, appIconUrl);
26
- this._shortcuts.add(keyboardShortcutHandle);
27
- }
28
- delete(keyboardShortcutHandle) {
29
- this._shortcuts.delete(keyboardShortcutHandle);
30
- }
31
- _initializeAppValues(appId, appName, appIconUrl) {
32
- if (!this._appId) {
33
- this._appId = appId;
34
- }
35
- if (!this._appName) {
36
- this._appName = appName;
37
- }
38
- if (!this._appIconUrl) {
39
- this._appIconUrl = appIconUrl;
40
- }
41
- }
42
- _monitorKeyboardHelp() {
43
- makeElementChildStream(document.body)
44
- .map((event) => event.el)
45
- .filter((node) => node && node.classList && node.classList.contains('wa'))
46
- .flatMap((node) => makeMutationObserverChunkedStream(node, {
47
- attributes: true,
48
- attributeFilter: ['class'],
49
- })
50
- .filter(() => !node.classList.contains('aou'))
51
- .toProperty(() => null)
52
- .map(() => node))
53
- .takeUntilBy(this._stopper)
54
- .onValue((node) => this._renderHelp(node));
55
- }
56
- _renderHelp(node) {
57
- if (this._shortcuts.size === 0) {
58
- return;
59
- }
60
- this._shortcuts.keys();
61
- var header = this._renderHeader();
62
- var table = this._renderTable();
63
- var bodies = table.querySelectorAll('tbody tbody');
64
- var index = 0;
65
- this._shortcuts.forEach((keyboardShortcutHandle) => {
66
- this._renderShortcut(bodies[index % 2], keyboardShortcutHandle);
67
- index++;
68
- });
69
- const firstHeader = querySelector(node, '.aov');
70
- const parent = firstHeader.parentElement;
71
- if (!parent)
72
- throw new Error('Could not find parent');
73
- parent.insertBefore(header, firstHeader);
74
- parent.insertBefore(table, firstHeader);
75
- }
76
- _renderHeader() {
77
- const header = document.createElement('div');
78
- header.setAttribute('class', 'aov aox');
79
- header.innerHTML = [
80
- '<div class="aow">',
81
- '<span class="inboxsdk__shortcutHelp_title">',
82
- escape(this._appName || this._appId) + ' keyboard shortcuts',
83
- '</span>',
84
- '</div>',
85
- ].join('');
86
- if (this._appIconUrl) {
87
- const img = document.createElement('img');
88
- if (this._appIconUrl) {
89
- img.src = this._appIconUrl;
90
- }
91
- img.setAttribute('class', 'inboxsdk__icon');
92
- const title = querySelector(header, '.inboxsdk__shortcutHelp_title');
93
- title.insertBefore(img, title.firstChild);
94
- }
95
- return header;
96
- }
97
- _renderTable() {
98
- var table = document.createElement('table');
99
- table.setAttribute('cellpadding', '0');
100
- table.setAttribute('class', 'cf wd inboxsdk__shortcutHelp_table');
101
- table.innerHTML = [
102
- '<tbody>',
103
- '<tr>',
104
- '<td class="Dn">',
105
- '<table cellpadding="0" class="cf">',
106
- '<tbody>',
107
- '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>',
108
- '</tbody>',
109
- '</table>',
110
- '</td>',
111
- '<td class="Dn">',
112
- '<table cellpadding="0" class="cf">',
113
- '<tbody>',
114
- '<tr><th>&nbsp;</th><th>&nbsp;</th></tr>',
115
- '</tbody>',
116
- '</table>',
117
- '</td>',
118
- '</tr',
119
- '</tbody>',
120
- ].join('');
121
- return table;
122
- }
123
- _renderShortcut(tableBody, keyboardShortcutHandle) {
124
- var shortcutRow = document.createElement('tr');
125
- shortcutRow.innerHTML = [
126
- '<td class="wg Dn"> ',
127
- _getShortcutHTML(keyboardShortcutHandle.chord),
128
- '</td>',
129
- '<td class="we Dn"> ',
130
- escape(keyboardShortcutHandle.description || ''),
131
- '</td>',
132
- ].join('');
133
- tableBody.appendChild(shortcutRow);
134
- }
135
- }
136
- function _getShortcutHTML(chord) {
137
- const retArray = [];
138
- const parts = chord.split(/[\s+]/g);
139
- const separators = chord.match(/[\s+]/g);
140
- for (var ii = 0; ii < parts.length; ii++) {
141
- retArray.push('<span class="wh">' + escape(_getAngledBracket(parts[ii])) + '</span>');
142
- if (separators && separators[ii]) {
143
- retArray.push(_getSeparatorHTML(separators[ii]));
144
- }
145
- }
146
- retArray.push(' :');
147
- return retArray.join('');
148
- }
149
- function _getAngledBracket(chordChar) {
150
- switch (chordChar.toLowerCase()) {
151
- case 'shift':
152
- return '<Shift>';
153
- case 'ctrl':
154
- return '<Ctrl>';
155
- case 'alt':
156
- return '<Alt>';
157
- case 'meta':
158
- case 'command':
159
- return '<⌘>';
160
- case 'mod':
161
- // Operating system check copied from Combokeys.
162
- // https://github.com/avocode/combokeys/blob/0b80e13cf7e5217c5b4fbd393289a87b1f48f7cc/helpers/special-aliases.js#L14
163
- return /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? '<⌘>' : '<Ctrl>';
164
- default:
165
- return chordChar;
166
- }
167
- }
168
- function _getSeparatorHTML(separator) {
169
- switch (separator) {
170
- case ' ':
171
- return '<span class="wb">then</span> ';
172
- case '+':
173
- return ' <span class="wb">+</span> ';
174
- default:
175
- return '';
176
- }
177
- }
@@ -1,17 +0,0 @@
1
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
2
- import GmailElementGetter from '../gmail-element-getter';
3
- import waitFor from '../../../lib/wait-for';
4
- export default async function openComposeWindow(_gmailDriver) {
5
- await GmailElementGetter.waitForGmailModeToSettle();
6
- if (GmailElementGetter.isStandaloneComposeWindow() ||
7
- GmailElementGetter.isStandaloneThreadWindow()) {
8
- throw new Error('Can not open new compose while in standalone window');
9
- }
10
- if (!GmailElementGetter.getComposeButton()) {
11
- await waitFor(() => !!GmailElementGetter.getComposeButton());
12
- }
13
- const composeButton = GmailElementGetter.getComposeButton();
14
- if (!composeButton)
15
- throw new Error('Could not find compose button');
16
- simulateClick(composeButton);
17
- }
@@ -1,44 +0,0 @@
1
- import qs from 'querystring';
2
- import getSyncThreadsForSearch from '../../../driver-common/getSyncThreadsForSearch';
3
- import encodeDraftUrlId from './encodeDraftUrlId';
4
- import getRfcMessageIdForGmailMessageId from './get-rfc-message-id-for-gmail-message-id';
5
- export default async function openDraftByMessageID(driver, messageID) {
6
- let newHash;
7
- if (driver.isUsingSyncAPI()) {
8
- const rfcMessageID = await getRfcMessageIdForGmailMessageId(driver, messageID);
9
- const { threads } = await getSyncThreadsForSearch(driver, 'rfc822msgid:' + rfcMessageID);
10
- if (threads.length === 0) {
11
- throw new Error('Failed to get sync message id');
12
- }
13
- const thread = threads[0];
14
- const syncMessageData = thread.extraMetaData.syncMessageData.find((m) => m.oldMessageID === messageID);
15
- if (!syncMessageData) {
16
- throw new Error('Failed to find syncMessageData');
17
- }
18
- const { syncMessageID } = syncMessageData;
19
- newHash = makeNewSyncHash(window.location.hash, thread.syncThreadID, syncMessageID);
20
- }
21
- else {
22
- newHash = makeNewHash(window.location.hash, messageID);
23
- }
24
- window.location.hash = newHash;
25
- }
26
- export function makeNewHash(oldHash, messageID) {
27
- oldHash = '#' + oldHash.replace(/^#/, '');
28
- const [pre, query] = oldHash.split('?');
29
- const params = qs.parse(query);
30
- if (params.compose) {
31
- params.compose += ',' + messageID;
32
- }
33
- else {
34
- params.compose = messageID;
35
- }
36
- return pre + '?' + qs.stringify(params);
37
- }
38
- export function makeNewSyncHash(oldHash, syncThreadID, syncMessageID) {
39
- oldHash = '#' + oldHash.replace(/^#/, '');
40
- const [pre, query] = oldHash.split('?');
41
- const params = qs.parse(query);
42
- params.compose = encodeDraftUrlId(syncThreadID, syncMessageID);
43
- return pre + '?' + qs.stringify(params);
44
- }
@@ -1,49 +0,0 @@
1
- import { defn } from 'ud';
2
- import GmailElementGetter from '../gmail-element-getter';
3
- import onMouseDownAndUp from '../../../lib/dom/on-mouse-down-and-up';
4
- export default function overrideGmailBackButton(gmailDriver, gmailRouteProcessor) {
5
- GmailElementGetter.waitForGmailModeToSettle().then(function () {
6
- if (GmailElementGetter.isStandalone()) {
7
- return;
8
- }
9
- _setupManagement(gmailDriver, gmailRouteProcessor);
10
- });
11
- }
12
- function _setupManagement(gmailDriver, gmailRouteProcessor) {
13
- gmailDriver
14
- .getRouteViewDriverStream()
15
- .scan((prev, gmailRouteView) => {
16
- let lastCustomRouteID, lastCustomRouteParams;
17
- if (prev &&
18
- prev.gmailRouteView &&
19
- prev.gmailRouteView.isCustomRouteBelongingToApp()) {
20
- lastCustomRouteID = prev.gmailRouteView.getRouteID();
21
- lastCustomRouteParams = prev.gmailRouteView.getParams();
22
- }
23
- return { gmailRouteView, lastCustomRouteID, lastCustomRouteParams };
24
- }, undefined)
25
- .changes()
26
- .onValue(({ gmailRouteView, lastCustomRouteID, lastCustomRouteParams }) => {
27
- handleGmailRouteView(gmailRouteView, lastCustomRouteID, lastCustomRouteParams, gmailDriver, gmailRouteProcessor);
28
- });
29
- }
30
- const handleGmailRouteView = defn(module, function handleGmailRouteView(gmailRouteView, lastCustomRouteID, lastCustomRouteParams, gmailDriver, gmailRouteProcessor) {
31
- if (lastCustomRouteID &&
32
- gmailRouteView.getRouteType() === gmailRouteProcessor.RouteTypes.THREAD) {
33
- _bindToBackButton(gmailDriver, gmailRouteView);
34
- }
35
- });
36
- function _bindToBackButton(gmailDriver, gmailRouteView) {
37
- const backButton = GmailElementGetter.getThreadBackButton();
38
- if (!backButton) {
39
- return;
40
- }
41
- onMouseDownAndUp(backButton)
42
- .takeUntilBy(gmailRouteView.getStopper())
43
- .filter((e) => !e.defaultPrevented)
44
- .onValue((e) => {
45
- window.history.back();
46
- e.preventDefault();
47
- e.stopImmediatePropagation();
48
- });
49
- }
@@ -1,18 +0,0 @@
1
- export default function registerSearchQueryRewriter(pageCommunicator, obj) {
2
- pageCommunicator.createCustomSearchTerm(obj.term);
3
- pageCommunicator.ajaxInterceptStream
4
- .filter((event) => {
5
- return (event.type === 'searchQueryForReplacement' && event.term === obj.term);
6
- })
7
- .onValue((event) => {
8
- Promise.resolve(obj.termReplacer({})).then((result) => {
9
- if (typeof result != 'string') {
10
- throw new Error('termReplacer response must be a string');
11
- }
12
- const newTerm = '(' + result + ')';
13
- const newQuery = event.query.replace(obj.term, () => newTerm // Callback used so $ escapes aren't interpreted
14
- );
15
- pageCommunicator.setSearchQueryReplacement(event.query, newQuery);
16
- });
17
- });
18
- }
@@ -1,138 +0,0 @@
1
- import once from 'lodash/once';
2
- import find from 'lodash/find';
3
- import * as Kefir from 'kefir';
4
- import fromEventTargetCapture from '../../../lib/from-event-target-capture';
5
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
6
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
7
- import gmailElementGetter from '../gmail-element-getter';
8
- import copyAndValidateAutocompleteResults from '../../../lib/copyAndValidateAutocompleteResults';
9
- export default function registerSearchSuggestionsProvider(driver, handler) {
10
- // We inject the app-provided suggestions into Gmail's AJAX response. Then we
11
- // watch the DOM for our injected suggestions to show up and attach click and
12
- // enter handlers to them to let them do custom actions.
13
- const providerId = 'inboxsdk__suggestions_' +
14
- ('' + Date.now() + Math.random()).replace(/\D+/g, '');
15
- const pageCommunicator = driver.getPageCommunicator();
16
- pageCommunicator.registerSuggestionsModifier(providerId);
17
- // Listen for the AJAX requests, call the application's handler function, and
18
- // give the application's suggestions back to the pageCommunicator for it to
19
- // inject into the AJAX responses.
20
- const suggestionsStream = pageCommunicator.ajaxInterceptStream
21
- .filter((event) => event.type === 'suggestionsRequest')
22
- .flatMapLatest(({ query }) => Kefir.fromPromise(Promise.resolve(handler(query)))
23
- .flatMap((results) => {
24
- try {
25
- const validatedResults = copyAndValidateAutocompleteResults(driver, results);
26
- const validatedResultsWithIds = validatedResults.map((result) => ({
27
- ...result,
28
- providerId,
29
- id: `${Date.now()}-${Math.random()}`,
30
- }));
31
- return Kefir.constant(validatedResultsWithIds);
32
- }
33
- catch (e) {
34
- return Kefir.constantError(e);
35
- }
36
- })
37
- .mapErrors((err) => {
38
- driver.getLogger().error(err);
39
- return [];
40
- })
41
- .map((suggestions) => {
42
- return { query, suggestions };
43
- }))
44
- .onValue((event) => {
45
- pageCommunicator.provideAutocompleteSuggestions(providerId, event.query, event.suggestions);
46
- })
47
- .map((event) => event.suggestions);
48
- // Wait for the first routeViewDriver to happen before looking for the search box.
49
- const searchBoxStream = driver
50
- .getRouteViewDriverStream()
51
- .toProperty(() => null)
52
- .map(() => gmailElementGetter.getSearchInput())
53
- .filter(Boolean)
54
- .take(1);
55
- // Wait for the search box to be focused before looking for the suggestions box.
56
- const suggestionsBoxTbodyStream = searchBoxStream
57
- .flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'focus'))
58
- .map(() => gmailElementGetter.getSearchSuggestionsBoxParent())
59
- .filter(Boolean)
60
- .flatMapLatest(makeElementChildStream)
61
- .map((x) => x.el.firstElementChild)
62
- .take(1)
63
- .toProperty();
64
- // This stream emits an event after every time Gmail changes the suggestions
65
- // list.
66
- const suggestionsBoxGmailChanges = suggestionsBoxTbodyStream
67
- .flatMap((suggestionsBoxTbody) => makeMutationObserverChunkedStream(suggestionsBoxTbody, {
68
- childList: true,
69
- }).toProperty(() => null))
70
- .map(() => null);
71
- // We listen to the event on the document node so that the event can be
72
- // canceled before Gmail receives it.
73
- const suggestionsBoxEnterPresses = searchBoxStream.flatMap((searchBox) => fromEventTargetCapture(document, 'keydown').filter((event) => event.keyCode == 13 && event.target === searchBox));
74
- // Stream of arrays of row elements belonging to this provider.
75
- const providedRows = suggestionsBoxTbodyStream
76
- .sampledBy(suggestionsBoxGmailChanges)
77
- .map((suggestionsBoxTbody) => Array.from(suggestionsBoxTbody.children).filter((row) => row.getElementsByClassName(providerId).length > 0));
78
- providedRows.onValue((rows) => {
79
- if (rows[0] && rows[0].previousElementSibling) {
80
- const prevFirstChild = rows[0].previousElementSibling.firstElementChild;
81
- if (prevFirstChild) {
82
- prevFirstChild.classList.add('inboxsdk__suggestions_separator_before');
83
- }
84
- const firstChild = rows[0].firstElementChild;
85
- if (firstChild) {
86
- firstChild.classList.add('inboxsdk__suggestions_separator_after');
87
- }
88
- }
89
- });
90
- const rowSelectionEvents = providedRows.flatMapLatest((rows) => Kefir.merge(rows.map((row) => Kefir.merge([
91
- fromEventTargetCapture(row, 'click'),
92
- suggestionsBoxEnterPresses.filter(() => row.classList.contains('gssb_i')),
93
- ]).map((event) => ({ event, row })))));
94
- const activeSuggestionsStream = Kefir.merge([
95
- suggestionsStream,
96
- searchBoxStream
97
- .flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'blur'))
98
- .map(() => []),
99
- ]).toProperty();
100
- Kefir.combine([rowSelectionEvents, searchBoxStream], [
101
- activeSuggestionsStream,
102
- ]).onValue((tuple) => {
103
- const [{ event, row }, searchBox, suggestions] = tuple;
104
- const itemDataSpan = row.querySelector('span[data-inboxsdk-suggestion]');
105
- const itemData = itemDataSpan
106
- ? JSON.parse(itemDataSpan.getAttribute('data-inboxsdk-suggestion') || 'null')
107
- : null;
108
- const clearSearch = once(() => {
109
- event.stopImmediatePropagation();
110
- event.preventDefault();
111
- searchBox.blur();
112
- searchBox.value = '';
113
- });
114
- if (itemData) {
115
- const { id } = itemData;
116
- const suggestion = find(suggestions, (s) => s.id === id);
117
- if (!suggestion) {
118
- // I can imagine this happening if Gmail caches old suggestions
119
- // results. Unknown if it does that so let's log. If it does, then
120
- // activeSuggestionsStream should be changed to have more than just
121
- // the most recent suggestions.
122
- driver.getLogger().error(new Error('Failed to find suggestion by id'));
123
- }
124
- if (suggestion && suggestion.onClick) {
125
- clearSearch();
126
- suggestion.onClick.call(null);
127
- }
128
- }
129
- if (itemData && itemData.routeName) {
130
- clearSearch();
131
- driver.goto(itemData.routeName, itemData.routeParams);
132
- }
133
- else if (itemData && itemData.externalURL) {
134
- clearSearch();
135
- window.open(itemData.externalURL);
136
- }
137
- });
138
- }
@@ -1,112 +0,0 @@
1
- import * as Kefir from 'kefir';
2
- import udKefir from 'ud-kefir';
3
- import kefirMakeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
4
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
5
- import elementViewMapper from '../../../lib/dom/element-view-mapper';
6
- import makeElementStreamMerger from '../../../lib/dom/make-element-stream-merger';
7
- import GmailElementGetter from '../gmail-element-getter';
8
- import GmailComposeView from '../views/gmail-compose-view';
9
- var impStream = udKefir(module, imp);
10
- export default function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
11
- return impStream.flatMapLatest((imp) => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
12
- }
13
- function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
14
- return Kefir.fromPromise(GmailElementGetter.waitForGmailModeToSettle())
15
- .flatMap(() => {
16
- var elementStream;
17
- var isStandalone = false;
18
- if (GmailElementGetter.isStandaloneComposeWindow()) {
19
- elementStream = _setupStandaloneComposeElementStream();
20
- isStandalone = true;
21
- }
22
- else if (GmailElementGetter.isStandaloneThreadWindow()) {
23
- elementStream = Kefir.never();
24
- }
25
- else {
26
- elementStream = _setupStandardComposeElementStream();
27
- }
28
- return elementStream.map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
29
- isStandalone,
30
- isInlineReplyForm: false,
31
- })));
32
- })
33
- .merge(messageViewDriverStream.flatMap((gmailMessageView) => gmailMessageView.getReplyElementStream().map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
34
- isStandalone: false,
35
- isInlineReplyForm: true,
36
- })))))
37
- .flatMap((composeViewDriver) => composeViewDriver.ready());
38
- }
39
- function _setupStandardComposeElementStream() {
40
- return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.getComposeWindowContainer())
41
- .flatMap((composeGrandParent) => {
42
- var composeParentEl = composeGrandParent.el.querySelector('div.AD');
43
- if (composeParentEl) {
44
- return makeElementChildStream(composeParentEl)
45
- .takeUntilBy(composeGrandParent.removalStream)
46
- .map(_informElement('composeFullscreenStateChanged'));
47
- }
48
- else {
49
- return Kefir.never();
50
- }
51
- })
52
- .merge(GmailElementGetter.getFullscreenComposeWindowContainerStream()
53
- .flatMap(({ el, removalStream }) => makeElementChildStream(el).takeUntilBy(removalStream))
54
- .map(_informElement('composeFullscreenStateChanged'))
55
- .map(({ el, removalStream }) => {
56
- // If you close a fullscreen compose while it's still saving, Gmail never
57
- // removes it from the DOM, and instead only removes a specific child
58
- // element. Ugh. Watch for its removal too.
59
- const targetEl = el.querySelector('[role=dialog] div.aaZ');
60
- if (!targetEl)
61
- return null;
62
- var hiddenStream = kefirMakeMutationObserverChunkedStream(targetEl, {
63
- childList: true,
64
- })
65
- .filter(() => targetEl.childElementCount === 0)
66
- .map(() => null);
67
- return {
68
- el,
69
- removalStream: removalStream.merge(hiddenStream).take(1),
70
- };
71
- })
72
- .filter(Boolean))
73
- .flatMap((event) => {
74
- if (!event)
75
- throw new Error('Should not happen');
76
- const el = event.el.querySelector('[role=dialog]');
77
- if (!el || !el.querySelector('form')) {
78
- return Kefir.never();
79
- }
80
- return Kefir.constant({
81
- el,
82
- removalStream: event.removalStream,
83
- });
84
- })
85
- .flatMap(makeElementStreamMerger());
86
- }
87
- function _setupStandaloneComposeElementStream() {
88
- return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.StandaloneCompose.getComposeWindowContainer());
89
- }
90
- function _waitForContainerAndMonitorChildrenStream(containerFn) {
91
- return Kefir.interval(2000, undefined) // TODO replace this with page-parser-tree
92
- .map(containerFn)
93
- .filter()
94
- .take(1)
95
- .flatMap((containerEl) => makeElementChildStream(containerEl));
96
- }
97
- function _informElement(eventName) {
98
- return function (event) {
99
- const composeEl = event &&
100
- event.el &&
101
- event.el.querySelector &&
102
- event.el.querySelector('[role=dialog]');
103
- if (composeEl) {
104
- composeEl.dispatchEvent(new CustomEvent(eventName, {
105
- bubbles: false,
106
- cancelable: false,
107
- detail: null,
108
- }));
109
- }
110
- return event;
111
- };
112
- }