@inboxsdk/core 0.2.28-alpha.3 → 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 (398) hide show
  1. package/inboxsdk.js +1 -1
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +5 -1
  4. package/src/build/exec.js +26 -0
  5. package/src/build/spawn.js +17 -0
  6. package/src/common/ajax.js +90 -0
  7. package/src/common/cachebust-url.js +10 -0
  8. package/src/common/censorHTMLstring.js +37 -0
  9. package/src/common/censorHTMLtree.js +28 -0
  10. package/src/common/censorJSONTree.js +15 -0
  11. package/src/common/connectivity-test.js +21 -0
  12. package/src/common/defer.js +11 -0
  13. package/src/common/find-parent.js +10 -0
  14. package/src/common/get-extension-id.js +7 -0
  15. package/src/common/get-or-fail.js +8 -0
  16. package/src/common/get-session-id.js +14 -0
  17. package/src/common/get-stack-trace.js +6 -0
  18. package/src/common/html-to-text.js +7 -0
  19. package/src/common/isElementVisible.js +6 -0
  20. package/src/common/load-script.js +127 -0
  21. package/src/common/log-error.js +191 -0
  22. package/src/common/quoted-split.js +18 -0
  23. package/src/common/rate-limit-queuer.js +57 -0
  24. package/src/common/rate-limit.js +14 -0
  25. package/src/common/version.js +6 -0
  26. package/src/inboxsdk-js/check-requirements.js +7 -3
  27. package/src/inboxsdk-js/header.js +1 -0
  28. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  29. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  30. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  31. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  32. package/src/inboxsdk-js/inboxsdk.js +33 -39
  33. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  34. package/src/inboxsdk-js/loading/platform-implementation-loader.js +27 -0
  35. package/src/injected-js/gmail/constants.js +2 -0
  36. package/src/injected-js/gmail/modify-suggestions.js +106 -0
  37. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  38. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  39. package/src/injected-js/gmail/setup-gmonkey-handler.js +49 -0
  40. package/src/injected-js/gmail/sync-compose-processor-20220909.js +298 -0
  41. package/src/injected-js/gmail/sync-compose-processor.js +55 -0
  42. package/src/injected-js/gmail/sync-compose-request-processor.js +110 -0
  43. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  44. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  45. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  46. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  47. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  48. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  49. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  50. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  51. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  52. package/src/injected-js/injected-logger.js +50 -0
  53. package/src/injected-js/main.js +11 -24
  54. package/src/injected-js/message-metadata-holder.js +52 -82
  55. package/src/injected-js/setup-data-exposer.js +89 -148
  56. package/src/injected-js/setup-error-silencer.js +21 -21
  57. package/src/injected-js/setup-event-reemitter.js +30 -22
  58. package/src/injected-js/setupCustomViewEventAssassin.js +90 -0
  59. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  60. package/src/injected-js/setupPushStateListener.js +18 -11
  61. package/src/injected-js/xhr-helper.js +62 -65
  62. package/src/injected-js/xhr-proxy-factory.js +195 -445
  63. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  64. package/src/platform-implementation-js/constants/nav-item-types.js +19 -0
  65. package/src/platform-implementation-js/constants/router.js +14 -9
  66. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  67. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  68. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  69. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +21 -0
  70. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +28 -0
  71. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +98 -0
  72. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +4 -0
  73. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  74. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  75. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +8 -0
  76. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  77. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  78. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +12 -0
  79. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +33 -0
  80. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +4 -0
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +44 -0
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +95 -0
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +38 -0
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +12 -0
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +253 -0
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +200 -0
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +533 -0
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +289 -0
  115. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +21 -0
  116. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  117. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +28 -0
  118. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +19 -0
  119. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +126 -0
  120. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  121. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  122. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  123. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  124. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  125. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  126. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  127. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +101 -0
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +38 -0
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +28 -0
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +22 -0
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +233 -0
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +223 -0
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +157 -0
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +109 -0
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +5 -0
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +759 -0
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +84 -0
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  180. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  181. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +33 -0
  182. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +325 -0
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +58 -0
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +55 -0
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +96 -0
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +30 -0
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +10 -0
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +22 -0
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  196. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  197. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  198. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  199. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  200. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  201. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  202. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  203. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  204. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  205. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  206. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  207. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  208. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  209. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  210. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  211. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  212. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  213. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  214. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  215. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  216. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  217. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  218. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  219. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  220. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  221. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  222. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  223. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  224. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  225. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  226. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  227. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  228. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  229. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  230. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  231. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  232. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  233. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  234. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  235. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  236. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  237. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  238. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  239. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  240. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  241. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  242. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  243. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  244. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  245. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  246. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  247. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  248. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  249. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  250. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  251. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  252. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  253. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  254. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  255. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  256. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  257. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  258. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +17 -0
  259. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  260. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  261. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +33 -0
  262. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  263. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +49 -0
  264. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  265. package/src/platform-implementation-js/driver-common/gmailAjax.js +65 -0
  266. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  267. package/src/platform-implementation-js/driver-common/render-custom-icon.js +16 -0
  268. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  269. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  270. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  271. package/src/platform-implementation-js/driver-common/update-icon.js +90 -0
  272. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  273. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  274. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  275. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  276. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  277. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  278. package/src/platform-implementation-js/lib/ErrorCollector.js +47 -0
  279. package/src/platform-implementation-js/lib/Membrane.js +22 -0
  280. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +30 -0
  281. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  282. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  283. package/src/platform-implementation-js/lib/attemptWithRetries.js +16 -0
  284. package/src/platform-implementation-js/lib/common-page-communicator.js +137 -0
  285. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  286. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  287. package/src/platform-implementation-js/lib/delay-asap.js +12 -0
  288. package/src/platform-implementation-js/lib/delay-idle.js +16 -0
  289. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +36 -0
  290. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  291. package/src/platform-implementation-js/lib/dom/generic-button-view.js +39 -0
  292. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +39 -0
  293. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  294. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +38 -0
  295. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  296. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  297. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +12 -0
  298. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +79 -0
  299. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +28 -0
  300. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +15 -0
  301. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +15 -0
  302. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +5 -0
  303. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  304. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +39 -0
  305. package/src/platform-implementation-js/lib/dom/parentNodes.js +8 -0
  306. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  307. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +6 -0
  308. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +22 -0
  309. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  310. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  311. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  312. package/src/platform-implementation-js/lib/dom/simulate-key.js +46 -0
  313. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +16 -0
  314. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +7 -0
  315. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +25 -0
  316. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  317. package/src/platform-implementation-js/lib/fake-window-resize.js +5 -0
  318. package/src/platform-implementation-js/lib/from-event-target-capture.js +12 -0
  319. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +10 -0
  320. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  321. package/src/platform-implementation-js/lib/handler-registry.js +67 -0
  322. package/src/platform-implementation-js/lib/idMap.js +45 -0
  323. package/src/platform-implementation-js/lib/imageRequest.js +8 -0
  324. package/src/platform-implementation-js/lib/incrementName.js +7 -0
  325. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +14 -0
  326. package/src/platform-implementation-js/lib/inject-script.js +33 -0
  327. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  328. package/src/platform-implementation-js/lib/is-valid-app-id.js +27 -0
  329. package/src/platform-implementation-js/lib/is-valid-email.js +14 -0
  330. package/src/platform-implementation-js/lib/isNotNil.js +5 -0
  331. package/src/platform-implementation-js/lib/isStreakAppId.js +11 -0
  332. package/src/platform-implementation-js/lib/logger.js +441 -0
  333. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  334. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  335. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  336. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  337. package/src/platform-implementation-js/lib/persistent-queue.js +107 -0
  338. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  339. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  340. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  341. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  342. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  343. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  344. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  345. package/src/platform-implementation-js/lib/safe-event-emitter.js +17 -0
  346. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  347. package/src/platform-implementation-js/lib/stopper-pool.js +41 -0
  348. package/src/platform-implementation-js/lib/stream-wait-for.js +30 -0
  349. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  350. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  351. package/src/platform-implementation-js/lib/wait-for.js +28 -0
  352. package/src/platform-implementation-js/lib/waitForAsync.js +19 -0
  353. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  354. package/src/platform-implementation-js/main.js +9 -24
  355. package/src/platform-implementation-js/namespaces/app-menu.d.ts.map +1 -1
  356. package/src/platform-implementation-js/namespaces/app-menu.js +31 -0
  357. package/src/platform-implementation-js/namespaces/butter-bar.js +163 -0
  358. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  359. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  360. package/src/platform-implementation-js/namespaces/global.js +27 -39
  361. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  362. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  363. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  364. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  365. package/src/platform-implementation-js/namespaces/router.js +70 -137
  366. package/src/platform-implementation-js/namespaces/search.js +19 -17
  367. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  368. package/src/platform-implementation-js/namespaces/user.js +36 -37
  369. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  370. package/src/platform-implementation-js/platform-implementation.js +98 -229
  371. package/src/platform-implementation-js/views/SimpleElementView.js +16 -0
  372. package/src/platform-implementation-js/views/app-menu-item-view.js +257 -0
  373. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  374. package/src/platform-implementation-js/views/collapsible-panel-view.js +222 -0
  375. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  376. package/src/platform-implementation-js/views/compose-button-view.js +45 -0
  377. package/src/platform-implementation-js/views/compose-view.js +312 -0
  378. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  379. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  380. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  381. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  382. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  383. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +14 -0
  384. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  385. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  386. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  387. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  388. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  389. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  390. package/src/platform-implementation-js/views/section-view.js +60 -52
  391. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  392. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +39 -0
  393. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +98 -0
  394. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +122 -0
  395. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  396. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  397. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  398. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,66 +1,50 @@
1
- /* @flow */
2
-
3
- import { defn } from 'ud';
4
- import Kefir from 'kefir';
5
- import kefirStopper from 'kefir-stopper';
6
- import kefirBus from 'kefir-bus';
7
- import InboxBackdrop from './inbox-backdrop';
8
- import fromEventTargetCapture from '../../../lib/from-event-target-capture';
9
- import type { DrawerViewOptions } from '../../../driver-interfaces/driver';
10
- import type ComposeView from '../../../views/compose-view';
11
- import findParent from '../../../../common/find-parent';
12
-
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _ud = require("ud");
10
+ var _kefir = _interopRequireDefault(require("kefir"));
11
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
12
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
13
+ var _inboxBackdrop = _interopRequireDefault(require("./inbox-backdrop"));
14
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../../lib/from-event-target-capture"));
15
+ var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
13
16
  const TAKE_OVER_EVENT = 'inboxSDKdrawerViewTakingOver';
14
17
  const zIndex = 500;
15
-
16
18
  class InboxDrawerView {
17
- _chrome: boolean;
18
- _exitEl: HTMLElement;
19
- _containerEl: HTMLElement;
20
- _el: HTMLElement;
21
- _backdrop: ?InboxBackdrop = null;
22
- _slideAnimationDone: Kefir.Observable<null>;
23
- _closing = kefirStopper();
24
- _closed = kefirStopper();
25
- _composeChanges = kefirBus();
26
- _preAutoCloseStream = kefirBus();
27
-
28
- constructor(options: DrawerViewOptions) {
19
+ constructor(options) {
20
+ (0, _defineProperty2.default)(this, "_backdrop", null);
21
+ (0, _defineProperty2.default)(this, "_closing", (0, _kefirStopper.default)());
22
+ (0, _defineProperty2.default)(this, "_closed", (0, _kefirStopper.default)());
23
+ (0, _defineProperty2.default)(this, "_composeChanges", (0, _kefirBus.default)());
24
+ (0, _defineProperty2.default)(this, "_preAutoCloseStream", (0, _kefirBus.default)());
29
25
  this._chrome = typeof options.chrome === 'boolean' ? options.chrome : true;
30
-
31
- let insertionTarget = ((document.body: any): HTMLElement);
26
+ let insertionTarget = document.body;
32
27
  let composeRect = null;
33
-
34
- const { composeView, closeWithCompose } = options;
28
+ const {
29
+ composeView,
30
+ closeWithCompose
31
+ } = options;
35
32
  if (composeView) {
36
- const ret = this._setupComposeInsertionTarget(
37
- composeView,
38
- closeWithCompose
39
- );
33
+ const ret = this._setupComposeInsertionTarget(composeView, closeWithCompose);
40
34
  insertionTarget = ret.insertionTarget;
41
35
  composeRect = ret.composeRect;
42
36
  }
43
-
44
37
  this._setupElement(options, insertionTarget);
45
38
 
46
39
  // Move or resize the ComposeView so that it's not clipped by the DrawerView.
47
40
  let composeNeedToMoveLeft = 0;
48
41
  if (composeView) {
49
42
  if (!composeRect) throw new Error('should not happen');
50
- composeNeedToMoveLeft = this._setupComposeAnimation(
51
- composeView,
52
- composeRect,
53
- true
54
- );
43
+ composeNeedToMoveLeft = this._setupComposeAnimation(composeView, composeRect, true);
55
44
  }
56
-
57
45
  this._el.offsetHeight; // force layout so that adding a class does a transition.
58
46
  this._el.classList.add('inboxsdk__active');
59
- this._slideAnimationDone = Kefir.fromEvents(this._el, 'transitionend')
60
- .take(1)
61
- .takeUntilBy(this._closing)
62
- .map(() => null);
63
-
47
+ this._slideAnimationDone = _kefir.default.fromEvents(this._el, 'transitionend').take(1).takeUntilBy(this._closing).map(() => null);
64
48
  if (composeView) {
65
49
  this._positionCompose(composeView, composeNeedToMoveLeft);
66
50
  }
@@ -68,41 +52,29 @@ class InboxDrawerView {
68
52
  // Gmail calls preventDefault on escape keypresses. We want to close the
69
53
  // drawer for any escape keypresses which weren't preventDefaulted by the
70
54
  // current extension.
71
- fromEventTargetCapture(document, 'keydown')
72
- .filter((e) => (e.key ? e.key === 'Escape' : e.which === 27))
73
- .takeUntilBy(this._closing)
74
- .onValue((e) => {
75
- const origPreventDefault = e.preventDefault;
76
- e.preventDefault = function () {
77
- this._defaultPreventedInContext = true;
78
- return origPreventDefault.call(this);
79
- };
80
- });
81
- Kefir.fromEvents(document, 'keydown')
82
- .filter((e) => (e.key ? e.key === 'Escape' : e.which === 27))
83
- .filter((e) => !e._defaultPreventedInContext)
84
- .filter((event) => {
85
- let isCanceled = false;
86
- const appEvent = {
87
- type: 'escape',
88
- cause: event,
89
- cancel: () => {
90
- isCanceled = true;
91
- },
92
- };
93
- this._preAutoCloseStream.emit(appEvent);
94
- return !isCanceled;
95
- })
96
- .takeUntilBy(this._closing)
97
- .onValue(() => {
98
- this.close();
99
- });
55
+ (0, _fromEventTargetCapture.default)(document, 'keydown').filter(e => e.key ? e.key === 'Escape' : e.which === 27).takeUntilBy(this._closing).onValue(e => {
56
+ const origPreventDefault = e.preventDefault;
57
+ e.preventDefault = function () {
58
+ this._defaultPreventedInContext = true;
59
+ return origPreventDefault.call(this);
60
+ };
61
+ });
62
+ _kefir.default.fromEvents(document, 'keydown').filter(e => e.key ? e.key === 'Escape' : e.which === 27).filter(e => !e._defaultPreventedInContext).filter(event => {
63
+ let isCanceled = false;
64
+ const appEvent = {
65
+ type: 'escape',
66
+ cause: event,
67
+ cancel: () => {
68
+ isCanceled = true;
69
+ }
70
+ };
71
+ this._preAutoCloseStream.emit(appEvent);
72
+ return !isCanceled;
73
+ }).takeUntilBy(this._closing).onValue(() => {
74
+ this.close();
75
+ });
100
76
  }
101
-
102
- _setupComposeInsertionTarget(
103
- composeView: ComposeView,
104
- closeWithCompose: ?boolean
105
- ): { composeRect: ClientRect, insertionTarget: HTMLElement } {
77
+ _setupComposeInsertionTarget(composeView, closeWithCompose) {
106
78
  if (composeView.isMinimized()) {
107
79
  throw new Error("Can't attach DrawerView to minimized ComposeView");
108
80
  }
@@ -112,22 +84,11 @@ class InboxDrawerView {
112
84
  if (composeView.isFullscreen()) {
113
85
  composeView.setFullscreen(false);
114
86
  }
115
- const closeEvents = [
116
- Kefir.fromEvents(composeView, 'restored'),
117
- Kefir.later(10).flatMap(() =>
118
- Kefir.fromEvents(composeView, 'fullscreenChanged')
119
- ),
120
- ];
87
+ const closeEvents = [_kefir.default.fromEvents(composeView, 'restored'), _kefir.default.later(10).flatMap(() => _kefir.default.fromEvents(composeView, 'fullscreenChanged'))];
121
88
  if (closeWithCompose) {
122
- closeEvents.push(
123
- Kefir.fromEvents(composeView, 'destroy'),
124
- Kefir.fromEvents(composeView, 'minimized')
125
- );
89
+ closeEvents.push(_kefir.default.fromEvents(composeView, 'destroy'), _kefir.default.fromEvents(composeView, 'minimized'));
126
90
  }
127
- Kefir.merge(closeEvents)
128
- .takeUntilBy(this._closing.merge(this._composeChanges))
129
- .onValue(() => this.close());
130
-
91
+ _kefir.default.merge(closeEvents).takeUntilBy(this._closing.merge(this._composeChanges)).onValue(() => this.close());
131
92
  const composeEl = composeView.getElement();
132
93
 
133
94
  // Read the compose size before any DOM modifications besides un-fullscreening it.
@@ -147,155 +108,103 @@ class InboxDrawerView {
147
108
  // set up the z-indexes of the ComposeView's offsetParent and the
148
109
  // insertionTarget point so everything will look right.
149
110
  const composeOffsetParent = composeEl.offsetParent;
150
- if (!(composeOffsetParent instanceof HTMLElement))
151
- throw new Error('should not happen');
152
- const insertionTarget =
153
- findParent(
154
- composeOffsetParent,
155
- (el) =>
156
- window.getComputedStyle(el).getPropertyValue('z-index') !== 'auto' &&
157
- el.getBoundingClientRect().left === 0
158
- ) || ((document.body: any): HTMLElement);
159
-
160
- composeEl.dispatchEvent(
161
- new CustomEvent(TAKE_OVER_EVENT, {
162
- bubbles: false,
163
- cancelable: false,
164
- detail: null,
165
- })
166
- );
167
- composeOffsetParent.dispatchEvent(
168
- new CustomEvent(TAKE_OVER_EVENT, {
169
- bubbles: false,
170
- cancelable: false,
171
- detail: null,
172
- })
173
- );
174
- insertionTarget.dispatchEvent(
175
- new CustomEvent(TAKE_OVER_EVENT, {
176
- bubbles: false,
177
- cancelable: false,
178
- detail: null,
179
- })
180
- );
111
+ if (!(composeOffsetParent instanceof HTMLElement)) throw new Error('should not happen');
112
+ const insertionTarget = (0, _findParent.default)(composeOffsetParent, el => window.getComputedStyle(el).getPropertyValue('z-index') !== 'auto' && el.getBoundingClientRect().left === 0) || document.body;
113
+ composeEl.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
114
+ bubbles: false,
115
+ cancelable: false,
116
+ detail: null
117
+ }));
118
+ composeOffsetParent.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
119
+ bubbles: false,
120
+ cancelable: false,
121
+ detail: null
122
+ }));
123
+ insertionTarget.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
124
+ bubbles: false,
125
+ cancelable: false,
126
+ detail: null
127
+ }));
181
128
 
182
129
  // Needed to stop composeviews from coming apart visually in Gmail.
183
130
  insertionTarget.classList.add('inboxsdk__drawers_in_use');
184
131
  // Needed to make DrawerView show over search bar in Inbox.
185
132
  insertionTarget.style.zIndex = String(zIndex);
186
-
187
133
  if (!composeOffsetParent.hasAttribute('data-drawer-old-zindex')) {
188
- composeOffsetParent.setAttribute(
189
- 'data-drawer-old-zindex',
190
- composeOffsetParent.style.zIndex
191
- );
134
+ composeOffsetParent.setAttribute('data-drawer-old-zindex', composeOffsetParent.style.zIndex);
192
135
  }
193
136
  composeOffsetParent.style.zIndex = String(zIndex + 2); // 1 more than compose
194
137
 
195
- this._closed
196
- .takeUntilBy(Kefir.fromEvents(insertionTarget, TAKE_OVER_EVENT))
197
- .onValue(() => {
198
- insertionTarget.style.zIndex = '';
199
- });
200
- this._closed
201
- .merge(this._composeChanges)
202
- .takeUntilBy(Kefir.fromEvents(composeOffsetParent, TAKE_OVER_EVENT))
203
- .onValue(() => {
204
- composeOffsetParent.style.zIndex =
205
- composeOffsetParent.getAttribute('data-drawer-old-zindex') || '';
206
- composeOffsetParent.removeAttribute('data-drawer-old-zindex');
207
- });
208
-
209
- return { composeRect, insertionTarget };
210
- }
211
-
212
- _setupElement(options: DrawerViewOptions, insertionTarget: HTMLElement) {
213
- const backdrop = (this._backdrop = new InboxBackdrop(
214
- zIndex,
138
+ this._closed.takeUntilBy(_kefir.default.fromEvents(insertionTarget, TAKE_OVER_EVENT)).onValue(() => {
139
+ insertionTarget.style.zIndex = '';
140
+ });
141
+ this._closed.merge(this._composeChanges).takeUntilBy(_kefir.default.fromEvents(composeOffsetParent, TAKE_OVER_EVENT)).onValue(() => {
142
+ composeOffsetParent.style.zIndex = composeOffsetParent.getAttribute('data-drawer-old-zindex') || '';
143
+ composeOffsetParent.removeAttribute('data-drawer-old-zindex');
144
+ });
145
+ return {
146
+ composeRect,
215
147
  insertionTarget
216
- ));
148
+ };
149
+ }
150
+ _setupElement(options, insertionTarget) {
151
+ const backdrop = this._backdrop = new _inboxBackdrop.default(zIndex, insertionTarget);
217
152
  this._preAutoCloseStream.plug(backdrop.getPreAutoCloseStream());
218
- backdrop
219
- .getStopper()
220
- .takeUntilBy(this._closing)
221
- .onValue(() => {
222
- this.close();
223
- });
224
-
153
+ backdrop.getStopper().takeUntilBy(this._closing).onValue(() => {
154
+ this.close();
155
+ });
225
156
  this._containerEl = document.createElement('div');
226
157
  this._containerEl.className = 'inboxsdk__drawer_view_container';
227
158
  this._containerEl.style.zIndex = String(zIndex + 1);
228
-
229
159
  this._el = document.createElement('div');
230
160
  this._el.setAttribute('role', 'dialog');
231
161
  this._el.tabIndex = 0;
232
162
  this._el.className = 'inboxsdk__drawer_view';
233
-
234
163
  if (options.matchSidebarContentPanelWidth) {
235
164
  this._el.classList.add('inboxsdk__match_sidebar_content_panel_width');
236
165
  }
237
-
238
166
  this._containerEl.appendChild(this._el);
239
-
240
167
  if (this._chrome) {
241
168
  const titleBar = document.createElement('div');
242
169
  titleBar.className = 'inboxsdk__drawer_title_bar';
243
-
244
170
  const closeButton = document.createElement('button');
245
171
  closeButton.type = 'button';
246
172
  closeButton.title = 'Close';
247
173
  closeButton.className = 'inboxsdk__close_button';
248
- closeButton.addEventListener('click', (e: MouseEvent) => {
174
+ closeButton.addEventListener('click', e => {
249
175
  this.close();
250
176
  });
251
177
  titleBar.appendChild(closeButton);
252
-
253
178
  const title = document.createElement('div');
254
179
  title.className = 'inboxsdk__drawer_title';
255
180
  title.setAttribute('role', 'heading');
256
181
  title.textContent = options.title || '';
257
182
  titleBar.appendChild(title);
258
-
259
183
  this._el.appendChild(titleBar);
260
184
  }
261
-
262
185
  this._el.appendChild(options.el);
263
-
264
186
  insertionTarget.appendChild(this._containerEl);
265
-
266
187
  this._closing.onValue(() => {
267
188
  if (this._backdrop) this._backdrop.destroy();
268
189
  this._el.classList.remove('inboxsdk__active');
269
- Kefir.fromEvents(this._el, 'transitionend')
270
- .merge(Kefir.later(200)) // transition might not finish if element is hidden
271
- .take(1)
272
- .onValue(() => {
273
- this._closed.destroy();
274
- this._containerEl.remove();
275
- });
190
+ _kefir.default.fromEvents(this._el, 'transitionend').merge(_kefir.default.later(200)) // transition might not finish if element is hidden
191
+ .take(1).onValue(() => {
192
+ this._closed.destroy();
193
+ this._containerEl.remove();
194
+ });
276
195
  });
277
196
  }
278
-
279
- _setupComposeAnimation(
280
- composeView: ComposeView,
281
- composeRect: ClientRect,
282
- forceLayout: boolean
283
- ): number {
197
+ _setupComposeAnimation(composeView, composeRect, forceLayout) {
284
198
  const composeEl = composeView.getElement();
285
- const parentEl: HTMLElement = (composeEl.parentElement: any);
199
+ const parentEl = composeEl.parentElement;
286
200
  const drawerRect = this._el.getBoundingClientRect();
287
-
288
201
  const margin = 24;
289
202
  const preexistingLeftAdjustment = parseInt(parentEl.style.left) || 0;
290
- const composeNeedToMoveLeft =
291
- composeRect.right -
292
- preexistingLeftAdjustment -
293
- (window.innerWidth - drawerRect.width - margin);
203
+ const composeNeedToMoveLeft = composeRect.right - preexistingLeftAdjustment - (window.innerWidth - drawerRect.width - margin);
294
204
  if (composeNeedToMoveLeft > 0) {
295
205
  parentEl.style.position = 'relative';
296
206
  parentEl.style.transition = 'left 150ms cubic-bezier(.4,0,.2,1)';
297
207
  parentEl.style.left = '0';
298
-
299
208
  if (forceLayout) {
300
209
  parentEl.offsetHeight;
301
210
  }
@@ -303,84 +212,58 @@ class InboxDrawerView {
303
212
  // animation here. We let the caller do that after they've forced layout
304
213
  // of the DrawerView _el too if they want.
305
214
  }
215
+
306
216
  return composeNeedToMoveLeft;
307
217
  }
308
-
309
- _positionCompose(composeView: ComposeView, composeNeedToMoveLeft: number) {
218
+ _positionCompose(composeView, composeNeedToMoveLeft) {
310
219
  if (composeNeedToMoveLeft > 0) {
311
220
  const composeEl = composeView.getElement();
312
- const parentEl: HTMLElement = (composeEl.parentElement: any);
221
+ const parentEl = composeEl.parentElement;
313
222
  parentEl.style.left = `${-composeNeedToMoveLeft}px`;
314
223
 
315
224
  // When the drawer closes, animate the compose back to its original
316
225
  // location, and then unset our extra CSS.
317
226
  // If the drawer has a different compose associated with it, then just
318
227
  // immediately remove this compose view's extra CSS.
319
- this._closing
320
- .takeUntilBy(this._composeChanges)
321
- .takeUntilBy(Kefir.fromEvents(composeEl, TAKE_OVER_EVENT))
322
- .onValue(() => {
323
- parentEl.style.left = '0';
324
- })
325
- .flatMap(
326
- () =>
327
- Kefir.fromEvents(parentEl, 'transitionend').merge(Kefir.later(200)) // transition might not finish if element is hidden
328
- )
329
- .merge(this._composeChanges)
330
- .take(1)
331
- .takeUntilBy(Kefir.fromEvents(composeEl, TAKE_OVER_EVENT))
332
- .onValue(() => {
333
- parentEl.style.position = '';
334
- parentEl.style.left = '';
335
- parentEl.style.transition = '';
336
- });
228
+ this._closing.takeUntilBy(this._composeChanges).takeUntilBy(_kefir.default.fromEvents(composeEl, TAKE_OVER_EVENT)).onValue(() => {
229
+ parentEl.style.left = '0';
230
+ }).flatMap(() => _kefir.default.fromEvents(parentEl, 'transitionend').merge(_kefir.default.later(200)) // transition might not finish if element is hidden
231
+ ).merge(this._composeChanges).take(1).takeUntilBy(_kefir.default.fromEvents(composeEl, TAKE_OVER_EVENT)).onValue(() => {
232
+ parentEl.style.position = '';
233
+ parentEl.style.left = '';
234
+ parentEl.style.transition = '';
235
+ });
337
236
  }
338
237
  }
339
-
340
- associateComposeView(composeView: ComposeView, closeWithCompose: boolean) {
238
+ associateComposeView(composeView, closeWithCompose) {
341
239
  this._composeChanges.emit(null);
342
-
343
- const { insertionTarget, composeRect } = this._setupComposeInsertionTarget(
344
- composeView,
345
- closeWithCompose
346
- );
347
-
348
- if (this._backdrop)
349
- insertionTarget.appendChild(this._backdrop.getElement());
350
- if (this._containerEl.parentElement !== insertionTarget)
351
- insertionTarget.appendChild(this._containerEl);
352
-
353
- const composeNeedToMoveLeft = this._setupComposeAnimation(
354
- composeView,
355
- composeRect,
356
- false
357
- );
240
+ const {
241
+ insertionTarget,
242
+ composeRect
243
+ } = this._setupComposeInsertionTarget(composeView, closeWithCompose);
244
+ if (this._backdrop) insertionTarget.appendChild(this._backdrop.getElement());
245
+ if (this._containerEl.parentElement !== insertionTarget) insertionTarget.appendChild(this._containerEl);
246
+ const composeNeedToMoveLeft = this._setupComposeAnimation(composeView, composeRect, false);
358
247
  this._positionCompose(composeView, composeNeedToMoveLeft);
359
248
  }
360
-
361
249
  disassociateComposeView() {
362
250
  this._composeChanges.emit(null);
363
251
  }
364
-
365
252
  getSlideAnimationDone() {
366
253
  return this._slideAnimationDone;
367
254
  }
368
-
369
255
  getClosingStream() {
370
256
  return this._closing;
371
257
  }
372
-
373
258
  getClosedStream() {
374
259
  return this._closed;
375
260
  }
376
-
377
261
  getPreAutoCloseStream() {
378
262
  return this._preAutoCloseStream;
379
263
  }
380
-
381
264
  close() {
382
265
  this._closing.destroy();
383
266
  }
384
267
  }
385
-
386
- export default defn(module, InboxDrawerView);
268
+ var _default = (0, _ud.defn)(module, InboxDrawerView);
269
+ exports.default = _default;
@@ -1,26 +1,25 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- export default class InboxDropdownView {
4
- _containerEl: HTMLElement;
5
- _contentEl: HTMLElement;
6
-
7
- constructor(className?: string) {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ class InboxDropdownView {
8
+ constructor(className) {
8
9
  this._containerEl = document.createElement('div');
9
10
  this._containerEl.className = 'inboxsdk__dropdown ' + (className || '');
10
11
  this._contentEl = document.createElement('div');
11
12
  this._contentEl.className = 'inboxsdk__dropdown_content';
12
13
  this._containerEl.appendChild(this._contentEl);
13
14
  }
14
-
15
- getContentElement(): HTMLElement {
15
+ getContentElement() {
16
16
  return this._contentEl;
17
17
  }
18
-
19
- getContainerElement(): HTMLElement {
18
+ getContainerElement() {
20
19
  return this._containerEl;
21
20
  }
22
-
23
21
  destroy() {
24
22
  this._containerEl.remove();
25
23
  }
26
24
  }
25
+ exports.default = InboxDropdownView;
@@ -1,82 +1,64 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import kefirStopper from 'kefir-stopper';
5
- import kefirBus from 'kefir-bus';
6
-
7
- import type { RouteViewDriver } from '../../../driver-interfaces/route-view-driver';
8
-
9
- export default class InboxDummyRouteView {
10
- _type: string;
11
- _eventStream = kefirBus();
12
- _stopper = kefirStopper();
13
-
14
- constructor(type: string) {
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _kefir = _interopRequireDefault(require("kefir"));
10
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
11
+ var _kefirBus = _interopRequireDefault(require("kefir-bus"));
12
+ class InboxDummyRouteView {
13
+ constructor(type) {
14
+ (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
15
+ (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
15
16
  // Check we implement interface
16
- (this: RouteViewDriver);
17
+ this;
17
18
  this._type = type;
18
19
  }
19
-
20
20
  getStopper() {
21
21
  return this._stopper;
22
22
  }
23
-
24
23
  destroy() {
25
24
  this._eventStream.end();
26
25
  this._stopper.destroy();
27
26
  }
28
-
29
- getElement(): HTMLElement {
27
+ getElement() {
30
28
  throw new Error('Should not happen');
31
29
  }
32
-
33
- getType(): string {
30
+ getType() {
34
31
  return this._type;
35
32
  }
36
-
37
- getRouteType(): string {
33
+ getRouteType() {
38
34
  return 'UNKNOWN';
39
35
  }
40
-
41
- getRouteID(): string {
36
+ getRouteID() {
42
37
  return 'UNKNOWN';
43
38
  }
44
-
45
- getParams(): Object {
39
+ getParams() {
46
40
  return {};
47
41
  }
48
-
49
- getEventStream(): Kefir.Observable<Object> {
42
+ getEventStream() {
50
43
  return this._eventStream;
51
44
  }
52
-
53
- getCustomViewElement(): ?HTMLElement {
45
+ getCustomViewElement() {
54
46
  return null;
55
47
  }
56
-
57
48
  refresh() {
58
49
  // stub
59
50
  }
60
-
61
- getHash(): string {
51
+ getHash() {
62
52
  throw new Error('should not happen');
63
53
  }
64
-
65
- addCollapsibleSection(
66
- sectionDescriptorProperty: Kefir.Observable<?Object>,
67
- groupOrderHint: any
68
- ) {
54
+ addCollapsibleSection(sectionDescriptorProperty, groupOrderHint) {
69
55
  throw new Error('should not happen');
70
56
  }
71
-
72
- addSection(
73
- sectionDescriptorProperty: Kefir.Observable<?Object>,
74
- groupOrderHint: any
75
- ) {
57
+ addSection(sectionDescriptorProperty, groupOrderHint) {
76
58
  throw new Error('should not happen');
77
59
  }
78
-
79
- setFullWidth(fullWidth: boolean) {
60
+ setFullWidth(fullWidth) {
80
61
  throw new Error('should not happen');
81
62
  }
82
63
  }
64
+ exports.default = InboxDummyRouteView;