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

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 (264) 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/inboxsdk.d.ts +2 -0
  12. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  13. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  14. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  15. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  16. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  18. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  19. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  20. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  21. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  22. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  23. package/src/injected-js/main.js +11 -24
  24. package/src/injected-js/message-metadata-holder.js +52 -82
  25. package/src/injected-js/setup-data-exposer.js +89 -148
  26. package/src/injected-js/setup-error-silencer.js +21 -21
  27. package/src/injected-js/setup-event-reemitter.js +30 -22
  28. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  29. package/src/injected-js/setupPushStateListener.js +18 -11
  30. package/src/injected-js/xhr-helper.js +62 -65
  31. package/src/injected-js/xhr-proxy-factory.js +195 -445
  32. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  33. package/src/platform-implementation-js/constants/router.js +14 -9
  34. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  35. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  66. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  67. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  116. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  117. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  124. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  125. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  126. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  127. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  129. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  130. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  140. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  141. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  142. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  144. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  146. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  149. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  151. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  152. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  153. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  154. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  155. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  157. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  161. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  183. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  184. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  185. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  186. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  187. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  188. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  189. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  190. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  191. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  192. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  193. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  194. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  195. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  196. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  197. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  198. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  199. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  200. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  202. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  203. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  204. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  205. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  206. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  207. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  208. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  209. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  210. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  211. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  212. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  213. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  214. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  215. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  216. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  217. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  218. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  220. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  221. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  222. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  223. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  225. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  227. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  228. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  229. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  230. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  231. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  232. package/src/platform-implementation-js/main.js +9 -24
  233. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  234. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  235. package/src/platform-implementation-js/namespaces/global.js +27 -39
  236. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  237. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  238. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  239. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  240. package/src/platform-implementation-js/namespaces/router.js +70 -137
  241. package/src/platform-implementation-js/namespaces/search.js +19 -17
  242. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  243. package/src/platform-implementation-js/namespaces/user.js +36 -37
  244. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  245. package/src/platform-implementation-js/platform-implementation.js +98 -229
  246. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  247. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  248. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  249. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  250. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  251. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  252. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  253. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  254. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  255. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  256. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  257. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  258. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  259. package/src/platform-implementation-js/views/section-view.js +60 -52
  260. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  261. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  262. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  263. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  264. 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
+ }