@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.5

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 (263) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  12. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  13. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  14. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  15. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  16. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  18. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  19. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  20. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  21. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  22. package/src/injected-js/main.js +11 -24
  23. package/src/injected-js/message-metadata-holder.js +52 -82
  24. package/src/injected-js/setup-data-exposer.js +89 -148
  25. package/src/injected-js/setup-error-silencer.js +21 -21
  26. package/src/injected-js/setup-event-reemitter.js +30 -22
  27. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  28. package/src/injected-js/setupPushStateListener.js +18 -11
  29. package/src/injected-js/xhr-helper.js +62 -65
  30. package/src/injected-js/xhr-proxy-factory.js +195 -445
  31. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  32. package/src/platform-implementation-js/constants/router.js +14 -9
  33. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  34. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  35. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  66. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  67. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  116. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  117. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  124. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  125. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  126. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  127. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  129. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  130. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  140. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  141. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  142. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  144. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  146. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  149. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  151. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  152. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  153. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  154. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  155. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  157. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  161. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  183. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  184. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  185. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  186. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  187. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  188. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  189. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  190. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  191. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  192. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  193. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  194. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  195. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  196. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  197. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  198. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  199. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  200. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  202. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  203. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  204. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  205. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  206. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  207. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  208. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  209. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  210. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  211. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  212. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  213. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  214. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  215. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  216. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  217. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  218. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  220. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  221. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  222. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  223. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  225. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  227. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  228. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  229. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  230. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  231. package/src/platform-implementation-js/main.js +9 -24
  232. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  233. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  234. package/src/platform-implementation-js/namespaces/global.js +27 -39
  235. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  236. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  237. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  238. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  239. package/src/platform-implementation-js/namespaces/router.js +70 -137
  240. package/src/platform-implementation-js/namespaces/search.js +19 -17
  241. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  242. package/src/platform-implementation-js/namespaces/user.js +36 -37
  243. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  244. package/src/platform-implementation-js/platform-implementation.js +98 -229
  245. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  246. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  247. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  248. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  249. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  250. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  251. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  252. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  253. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  254. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  255. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  256. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  257. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  258. package/src/platform-implementation-js/views/section-view.js +60 -52
  259. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  260. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  261. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  262. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  263. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,125 +1,79 @@
1
- /* @flow */
2
-
3
- import once from 'lodash/once';
4
- import find from 'lodash/find';
5
- import Kefir from 'kefir';
6
- import fromEventTargetCapture from '../../../lib/from-event-target-capture';
7
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
8
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
9
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
10
- import gmailElementGetter from '../gmail-element-getter';
11
- import copyAndValidateAutocompleteResults from '../../../lib/copyAndValidateAutocompleteResults';
12
-
13
- import type GmailDriver from '../gmail-driver';
14
- import type {
15
- AutocompleteSearchResult,
16
- AutocompleteSearchResultWithId,
17
- } from '../../../../injected-js/gmail/modify-suggestions';
18
-
19
- export default function registerSearchSuggestionsProvider(
20
- driver: GmailDriver,
21
- handler: Function
22
- ) {
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = registerSearchSuggestionsProvider;
8
+ var _once = _interopRequireDefault(require("lodash/once"));
9
+ var _find = _interopRequireDefault(require("lodash/find"));
10
+ var _kefir = _interopRequireDefault(require("kefir"));
11
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../../lib/from-event-target-capture"));
12
+ var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
13
+ var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
14
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
15
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
16
+ var _copyAndValidateAutocompleteResults = _interopRequireDefault(require("../../../lib/copyAndValidateAutocompleteResults"));
17
+ function registerSearchSuggestionsProvider(driver, handler) {
23
18
  // We inject the app-provided suggestions into Gmail's AJAX response. Then we
24
19
  // watch the DOM for our injected suggestions to show up and attach click and
25
20
  // enter handlers to them to let them do custom actions.
26
21
 
27
- const providerId =
28
- 'inboxsdk__suggestions_' +
29
- ('' + Date.now() + Math.random()).replace(/\D+/g, '');
22
+ const providerId = 'inboxsdk__suggestions_' + ('' + Date.now() + Math.random()).replace(/\D+/g, '');
30
23
  const pageCommunicator = driver.getPageCommunicator();
31
24
  pageCommunicator.registerSuggestionsModifier(providerId);
32
25
 
33
26
  // Listen for the AJAX requests, call the application's handler function, and
34
27
  // give the application's suggestions back to the pageCommunicator for it to
35
28
  // inject into the AJAX responses.
36
- const suggestionsStream = pageCommunicator.ajaxInterceptStream
37
- .filter((event) => event.type === 'suggestionsRequest')
38
- .flatMapLatest(({ query }) =>
39
- Kefir.fromPromise(Promise.resolve(handler(query)))
40
- .flatMap((results: Array<AutocompleteSearchResult>) => {
41
- try {
42
- const validatedResults = copyAndValidateAutocompleteResults(
43
- driver,
44
- results
45
- );
46
-
47
- const validatedResultsWithIds = validatedResults.map((result) => ({
48
- ...result,
49
- providerId,
50
- id: `${Date.now()}-${Math.random()}`,
51
- }));
52
-
53
- return Kefir.constant(validatedResultsWithIds);
54
- } catch (e) {
55
- return Kefir.constantError(e);
56
- }
57
- })
58
- .mapErrors((err) => {
59
- driver.getLogger().error(err);
60
- return [];
61
- })
62
- .map((suggestions) => {
63
- return { query, suggestions };
64
- })
65
- )
66
- .onValue((event) => {
67
- pageCommunicator.provideAutocompleteSuggestions(
68
- providerId,
69
- event.query,
70
- event.suggestions
71
- );
72
- })
73
- .map((event) => event.suggestions);
29
+ const suggestionsStream = pageCommunicator.ajaxInterceptStream.filter(event => event.type === 'suggestionsRequest').flatMapLatest(_ref => {
30
+ let {
31
+ query
32
+ } = _ref;
33
+ return _kefir.default.fromPromise(Promise.resolve(handler(query))).flatMap(results => {
34
+ try {
35
+ const validatedResults = (0, _copyAndValidateAutocompleteResults.default)(driver, results);
36
+ const validatedResultsWithIds = validatedResults.map(result => ({
37
+ ...result,
38
+ providerId,
39
+ id: `${Date.now()}-${Math.random()}`
40
+ }));
41
+ return _kefir.default.constant(validatedResultsWithIds);
42
+ } catch (e) {
43
+ return _kefir.default.constantError(e);
44
+ }
45
+ }).mapErrors(err => {
46
+ driver.getLogger().error(err);
47
+ return [];
48
+ }).map(suggestions => {
49
+ return {
50
+ query,
51
+ suggestions
52
+ };
53
+ });
54
+ }).onValue(event => {
55
+ pageCommunicator.provideAutocompleteSuggestions(providerId, event.query, event.suggestions);
56
+ }).map(event => event.suggestions);
74
57
 
75
58
  // Wait for the first routeViewDriver to happen before looking for the search box.
76
- const searchBoxStream: Kefir.Observable<HTMLInputElement> = driver
77
- .getRouteViewDriverStream()
78
- .toProperty(() => null)
79
- .map(() => gmailElementGetter.getSearchInput())
80
- .filter(Boolean)
81
- .take(1);
59
+ const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => _gmailElementGetter.default.getSearchInput()).filter(Boolean).take(1);
82
60
 
83
61
  // Wait for the search box to be focused before looking for the suggestions box.
84
- const suggestionsBoxTbodyStream: Kefir.Observable<HTMLElement> =
85
- searchBoxStream
86
- .flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'focus'))
87
- .map(() => gmailElementGetter.getSearchSuggestionsBoxParent())
88
- .filter(Boolean)
89
- .flatMapLatest(makeElementChildStream)
90
- .map((x) => (x.el: any).firstElementChild)
91
- .take(1)
92
- .toProperty();
62
+ const suggestionsBoxTbodyStream = searchBoxStream.flatMapLatest(searchBox => _kefir.default.fromEvents(searchBox, 'focus')).map(() => _gmailElementGetter.default.getSearchSuggestionsBoxParent()).filter(Boolean).flatMapLatest(_makeElementChildStream.default).map(x => x.el.firstElementChild).take(1).toProperty();
93
63
 
94
64
  // This stream emits an event after every time Gmail changes the suggestions
95
65
  // list.
96
- const suggestionsBoxGmailChanges = suggestionsBoxTbodyStream
97
- .flatMap((suggestionsBoxTbody) =>
98
- makeMutationObserverChunkedStream(suggestionsBoxTbody, {
99
- childList: true,
100
- }).toProperty(() => null)
101
- )
102
- .map(() => null);
66
+ const suggestionsBoxGmailChanges = suggestionsBoxTbodyStream.flatMap(suggestionsBoxTbody => (0, _makeMutationObserverChunkedStream.default)(suggestionsBoxTbody, {
67
+ childList: true
68
+ }).toProperty(() => null)).map(() => null);
103
69
 
104
70
  // We listen to the event on the document node so that the event can be
105
71
  // canceled before Gmail receives it.
106
- const suggestionsBoxEnterPresses = searchBoxStream.flatMap((searchBox) =>
107
- fromEventTargetCapture(document, 'keydown').filter(
108
- (event) => event.keyCode == 13 && event.target === searchBox
109
- )
110
- );
72
+ const suggestionsBoxEnterPresses = searchBoxStream.flatMap(searchBox => (0, _fromEventTargetCapture.default)(document, 'keydown').filter(event => event.keyCode == 13 && event.target === searchBox));
111
73
 
112
74
  // Stream of arrays of row elements belonging to this provider.
113
- const providedRows: Kefir.Observable<HTMLElement[]> =
114
- suggestionsBoxTbodyStream
115
- .sampledBy(suggestionsBoxGmailChanges)
116
- .map((suggestionsBoxTbody) =>
117
- Array.from(suggestionsBoxTbody.children).filter(
118
- (row) => row.getElementsByClassName(providerId).length > 0
119
- )
120
- );
121
-
122
- providedRows.onValue((rows) => {
75
+ const providedRows = suggestionsBoxTbodyStream.sampledBy(suggestionsBoxGmailChanges).map(suggestionsBoxTbody => Array.from(suggestionsBoxTbody.children).filter(row => row.getElementsByClassName(providerId).length > 0));
76
+ providedRows.onValue(rows => {
123
77
  if (rows[0] && rows[0].previousElementSibling) {
124
78
  const prevFirstChild = rows[0].previousElementSibling.firstElementChild;
125
79
  if (prevFirstChild) {
@@ -131,59 +85,29 @@ export default function registerSearchSuggestionsProvider(
131
85
  }
132
86
  }
133
87
  });
134
-
135
- const rowSelectionEvents: Kefir.Observable<{
136
- event: Object,
137
- row: HTMLElement,
138
- }> = providedRows.flatMapLatest((rows) =>
139
- Kefir.merge(
140
- rows.map((row) =>
141
- Kefir.merge([
142
- fromEventTargetCapture(row, 'click'),
143
- suggestionsBoxEnterPresses.filter(() =>
144
- row.classList.contains('gssb_i')
145
- ),
146
- ]).map((event) => ({ event, row }))
147
- )
148
- )
149
- );
150
-
151
- const activeSuggestionsStream: Kefir.Observable<
152
- Array<AutocompleteSearchResultWithId>
153
- > = Kefir.merge([
154
- suggestionsStream,
155
- searchBoxStream
156
- .flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'blur'))
157
- .map(() => []),
158
- ]).toProperty();
159
-
160
- Kefir.combine(
161
- [rowSelectionEvents, searchBoxStream],
162
- [activeSuggestionsStream]
163
- ).onValue((tuple: any) => {
164
- const [{ event, row }, searchBox, suggestions] = (tuple: [
165
- { event: Object, row: HTMLElement },
166
- HTMLInputElement,
167
- Array<AutocompleteSearchResultWithId>
168
- ]);
169
-
88
+ const rowSelectionEvents = providedRows.flatMapLatest(rows => _kefir.default.merge(rows.map(row => _kefir.default.merge([(0, _fromEventTargetCapture.default)(row, 'click'), suggestionsBoxEnterPresses.filter(() => row.classList.contains('gssb_i'))]).map(event => ({
89
+ event,
90
+ row
91
+ })))));
92
+ const activeSuggestionsStream = _kefir.default.merge([suggestionsStream, searchBoxStream.flatMapLatest(searchBox => _kefir.default.fromEvents(searchBox, 'blur')).map(() => [])]).toProperty();
93
+ _kefir.default.combine([rowSelectionEvents, searchBoxStream], [activeSuggestionsStream]).onValue(tuple => {
94
+ const [{
95
+ event,
96
+ row
97
+ }, searchBox, suggestions] = tuple;
170
98
  const itemDataSpan = row.querySelector('span[data-inboxsdk-suggestion]');
171
- const itemData = itemDataSpan
172
- ? JSON.parse(
173
- itemDataSpan.getAttribute('data-inboxsdk-suggestion') || 'null'
174
- )
175
- : null;
176
-
177
- const clearSearch = once(() => {
99
+ const itemData = itemDataSpan ? JSON.parse(itemDataSpan.getAttribute('data-inboxsdk-suggestion') || 'null') : null;
100
+ const clearSearch = (0, _once.default)(() => {
178
101
  event.stopImmediatePropagation();
179
102
  event.preventDefault();
180
103
  searchBox.blur();
181
104
  searchBox.value = '';
182
105
  });
183
-
184
106
  if (itemData) {
185
- const { id } = itemData;
186
- const suggestion = find(suggestions, (s) => s.id === id);
107
+ const {
108
+ id
109
+ } = itemData;
110
+ const suggestion = (0, _find.default)(suggestions, s => s.id === id);
187
111
  if (!suggestion) {
188
112
  // I can imagine this happening if Gmail caches old suggestions
189
113
  // results. Unknown if it does that so let's log. If it does, then
@@ -204,4 +128,4 @@ export default function registerSearchSuggestionsProvider(
204
128
  window.open(itemData.externalURL);
205
129
  }
206
130
  });
207
- }
131
+ }
@@ -1,162 +1,105 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import Kefir from 'kefir';
4
- import udKefir from 'ud-kefir';
5
- import streamWaitFor from '../../../lib/stream-wait-for';
6
-
7
- import kefirMakeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
8
- import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
9
- import elementViewMapper from '../../../lib/dom/element-view-mapper';
10
- import makeElementStreamMerger from '../../../lib/dom/make-element-stream-merger';
11
- import GmailElementGetter from '../gmail-element-getter';
12
-
13
- import GmailComposeView from '../views/gmail-compose-view';
14
- import type GmailMessageView from '../views/gmail-message-view';
15
-
16
- import Logger from '../../../lib/logger';
17
- import type GmailDriver from '../gmail-driver';
18
-
19
- var impStream = udKefir(module, imp);
20
-
21
- export default function setupComposeViewDriverStream(
22
- gmailDriver: GmailDriver,
23
- messageViewDriverStream: Kefir.Observable<GmailMessageView>,
24
- xhrInterceptorStream: Kefir.Observable<Object>
25
- ): Kefir.Observable<GmailComposeView> {
26
- return impStream.flatMapLatest((imp) =>
27
- imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream)
28
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = setupComposeViewDriverStream;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _udKefir = _interopRequireDefault(require("ud-kefir"));
10
+ var _streamWaitFor = _interopRequireDefault(require("../../../lib/stream-wait-for"));
11
+ var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
12
+ var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
13
+ var _elementViewMapper = _interopRequireDefault(require("../../../lib/dom/element-view-mapper"));
14
+ var _makeElementStreamMerger = _interopRequireDefault(require("../../../lib/dom/make-element-stream-merger"));
15
+ var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
16
+ var _gmailComposeView = _interopRequireDefault(require("../views/gmail-compose-view"));
17
+ var _logger = _interopRequireDefault(require("../../../lib/logger"));
18
+ var impStream = (0, _udKefir.default)(module, imp);
19
+ function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
20
+ return impStream.flatMapLatest(imp => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
29
21
  }
30
-
31
- function imp(
32
- gmailDriver: GmailDriver,
33
- messageViewDriverStream: Kefir.Observable<GmailMessageView>,
34
- xhrInterceptorStream: Kefir.Observable<Object>
35
- ): Kefir.Observable<GmailComposeView> {
36
- return Kefir.fromPromise(GmailElementGetter.waitForGmailModeToSettle())
37
- .flatMap(() => {
38
- var elementStream;
39
- var isStandalone = false;
40
-
41
- if (GmailElementGetter.isStandaloneComposeWindow()) {
42
- elementStream = _setupStandaloneComposeElementStream();
43
- isStandalone = true;
44
- } else if (GmailElementGetter.isStandaloneThreadWindow()) {
45
- elementStream = Kefir.never();
46
- } else {
47
- elementStream = _setupStandardComposeElementStream();
48
- }
49
-
50
- return elementStream.map(
51
- elementViewMapper(
52
- (el) =>
53
- new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
54
- isStandalone,
55
- isInlineReplyForm: false,
56
- })
57
- )
58
- );
59
- })
60
- .merge(
61
- messageViewDriverStream.flatMap((gmailMessageView) =>
62
- gmailMessageView.getReplyElementStream().map(
63
- elementViewMapper(
64
- (el) =>
65
- new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
66
- isStandalone: false,
67
- isInlineReplyForm: true,
68
- })
69
- )
70
- )
71
- )
72
- )
73
- .flatMap((composeViewDriver: any) => composeViewDriver.ready());
22
+ function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
23
+ return _kefir.default.fromPromise(_gmailElementGetter.default.waitForGmailModeToSettle()).flatMap(() => {
24
+ var elementStream;
25
+ var isStandalone = false;
26
+ if (_gmailElementGetter.default.isStandaloneComposeWindow()) {
27
+ elementStream = _setupStandaloneComposeElementStream();
28
+ isStandalone = true;
29
+ } else if (_gmailElementGetter.default.isStandaloneThreadWindow()) {
30
+ elementStream = _kefir.default.never();
31
+ } else {
32
+ elementStream = _setupStandardComposeElementStream();
33
+ }
34
+ return elementStream.map((0, _elementViewMapper.default)(el => new _gmailComposeView.default(el, xhrInterceptorStream, gmailDriver, {
35
+ isStandalone,
36
+ isInlineReplyForm: false
37
+ })));
38
+ }).merge(messageViewDriverStream.flatMap(gmailMessageView => gmailMessageView.getReplyElementStream().map((0, _elementViewMapper.default)(el => new _gmailComposeView.default(el, xhrInterceptorStream, gmailDriver, {
39
+ isStandalone: false,
40
+ isInlineReplyForm: true
41
+ }))))).flatMap(composeViewDriver => composeViewDriver.ready());
74
42
  }
75
-
76
43
  function _setupStandardComposeElementStream() {
77
- return _waitForContainerAndMonitorChildrenStream(() =>
78
- GmailElementGetter.getComposeWindowContainer()
79
- )
80
- .flatMap((composeGrandParent) => {
81
- var composeParentEl = composeGrandParent.el.querySelector('div.AD');
82
- if (composeParentEl) {
83
- return makeElementChildStream(composeParentEl)
84
- .takeUntilBy(composeGrandParent.removalStream)
85
- .map(_informElement('composeFullscreenStateChanged'));
86
- } else {
87
- return Kefir.never();
88
- }
89
- })
90
- .merge(
91
- GmailElementGetter.getFullscreenComposeWindowContainerStream()
92
- .flatMap(({ el, removalStream }) =>
93
- makeElementChildStream(el).takeUntilBy(removalStream)
94
- )
95
- .map(_informElement('composeFullscreenStateChanged'))
96
- .map(({ el, removalStream }) => {
97
- // If you close a fullscreen compose while it's still saving, Gmail never
98
- // removes it from the DOM, and instead only removes a specific child
99
- // element. Ugh. Watch for its removal too.
100
- const targetEl = el.querySelector('[role=dialog] div.aaZ');
101
- if (!targetEl) return null;
102
- var hiddenStream = kefirMakeMutationObserverChunkedStream(targetEl, {
103
- childList: true,
104
- })
105
- .filter(() => targetEl.childElementCount === 0)
106
- .map(() => null);
107
- return {
108
- el,
109
- removalStream: removalStream.merge(hiddenStream).take(1),
110
- };
111
- })
112
- .filter(Boolean)
113
- )
114
- .flatMap((event) => {
115
- if (!event) throw new Error('Should not happen');
116
- const el = event.el.querySelector('[role=dialog]');
117
- if (!el || !el.querySelector('form')) {
118
- return Kefir.never();
119
- }
120
- return Kefir.constant({
121
- el,
122
- removalStream: event.removalStream,
123
- });
124
- })
125
- .flatMap(makeElementStreamMerger());
44
+ return _waitForContainerAndMonitorChildrenStream(() => _gmailElementGetter.default.getComposeWindowContainer()).flatMap(composeGrandParent => {
45
+ var composeParentEl = composeGrandParent.el.querySelector('div.AD');
46
+ if (composeParentEl) {
47
+ return (0, _makeElementChildStream.default)(composeParentEl).takeUntilBy(composeGrandParent.removalStream).map(_informElement('composeFullscreenStateChanged'));
48
+ } else {
49
+ return _kefir.default.never();
50
+ }
51
+ }).merge(_gmailElementGetter.default.getFullscreenComposeWindowContainerStream().flatMap(_ref => {
52
+ let {
53
+ el,
54
+ removalStream
55
+ } = _ref;
56
+ return (0, _makeElementChildStream.default)(el).takeUntilBy(removalStream);
57
+ }).map(_informElement('composeFullscreenStateChanged')).map(_ref2 => {
58
+ let {
59
+ el,
60
+ removalStream
61
+ } = _ref2;
62
+ // If you close a fullscreen compose while it's still saving, Gmail never
63
+ // removes it from the DOM, and instead only removes a specific child
64
+ // element. Ugh. Watch for its removal too.
65
+ const targetEl = el.querySelector('[role=dialog] div.aaZ');
66
+ if (!targetEl) return null;
67
+ var hiddenStream = (0, _makeMutationObserverChunkedStream.default)(targetEl, {
68
+ childList: true
69
+ }).filter(() => targetEl.childElementCount === 0).map(() => null);
70
+ return {
71
+ el,
72
+ removalStream: removalStream.merge(hiddenStream).take(1)
73
+ };
74
+ }).filter(Boolean)).flatMap(event => {
75
+ if (!event) throw new Error('Should not happen');
76
+ const el = event.el.querySelector('[role=dialog]');
77
+ if (!el || !el.querySelector('form')) {
78
+ return _kefir.default.never();
79
+ }
80
+ return _kefir.default.constant({
81
+ el,
82
+ removalStream: event.removalStream
83
+ });
84
+ }).flatMap((0, _makeElementStreamMerger.default)());
126
85
  }
127
-
128
86
  function _setupStandaloneComposeElementStream() {
129
- return _waitForContainerAndMonitorChildrenStream(() =>
130
- GmailElementGetter.StandaloneCompose.getComposeWindowContainer()
131
- );
87
+ return _waitForContainerAndMonitorChildrenStream(() => _gmailElementGetter.default.StandaloneCompose.getComposeWindowContainer());
132
88
  }
133
-
134
- function _waitForContainerAndMonitorChildrenStream(
135
- containerFn: () => ?HTMLElement
136
- ) {
137
- return Kefir.interval(2000) // TODO replace this with page-parser-tree
138
- .map(containerFn)
139
- .filter()
140
- .take(1)
141
- .flatMap((containerEl) => makeElementChildStream(containerEl));
89
+ function _waitForContainerAndMonitorChildrenStream(containerFn) {
90
+ return _kefir.default.interval(2000) // TODO replace this with page-parser-tree
91
+ .map(containerFn).filter().take(1).flatMap(containerEl => (0, _makeElementChildStream.default)(containerEl));
142
92
  }
143
-
144
93
  function _informElement(eventName) {
145
94
  return function (event) {
146
- const composeEl =
147
- event &&
148
- event.el &&
149
- event.el.querySelector &&
150
- event.el.querySelector('[role=dialog]');
95
+ const composeEl = event && event.el && event.el.querySelector && event.el.querySelector('[role=dialog]');
151
96
  if (composeEl) {
152
- composeEl.dispatchEvent(
153
- new CustomEvent(eventName, {
154
- bubbles: false,
155
- cancelable: false,
156
- detail: null,
157
- })
158
- );
97
+ composeEl.dispatchEvent(new CustomEvent(eventName, {
98
+ bubbles: false,
99
+ cancelable: false,
100
+ detail: null
101
+ }));
159
102
  }
160
103
  return event;
161
104
  };
162
- }
105
+ }