@inboxsdk/core 1.2.4 → 1.2.7

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