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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  12. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  13. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  14. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  15. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  16. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  18. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  19. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  20. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  21. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  22. package/src/injected-js/main.js +11 -24
  23. package/src/injected-js/message-metadata-holder.js +52 -82
  24. package/src/injected-js/setup-data-exposer.js +89 -148
  25. package/src/injected-js/setup-error-silencer.js +21 -21
  26. package/src/injected-js/setup-event-reemitter.js +30 -22
  27. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  28. package/src/injected-js/setupPushStateListener.js +18 -11
  29. package/src/injected-js/xhr-helper.js +62 -65
  30. package/src/injected-js/xhr-proxy-factory.js +195 -445
  31. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  32. package/src/platform-implementation-js/constants/router.js +14 -9
  33. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  34. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  35. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  66. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  67. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  116. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  117. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  124. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  125. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  126. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  127. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  129. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  130. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  140. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  141. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  142. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  144. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  146. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  149. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  151. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  152. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  153. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  154. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  155. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  157. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  161. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  183. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  184. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  185. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  186. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  187. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  188. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  189. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  190. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  191. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  192. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  193. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  194. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  195. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  196. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  197. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  198. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  199. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  200. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  202. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  203. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  204. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  205. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  206. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  207. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  208. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  209. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  210. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  211. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  212. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  213. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  214. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  215. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  216. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  217. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  218. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  220. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  221. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  222. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  223. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  225. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  227. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  228. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  229. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  230. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  231. package/src/platform-implementation-js/main.js +9 -24
  232. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  233. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  234. package/src/platform-implementation-js/namespaces/global.js +27 -39
  235. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  236. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  237. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  238. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  239. package/src/platform-implementation-js/namespaces/router.js +70 -137
  240. package/src/platform-implementation-js/namespaces/search.js +19 -17
  241. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  242. package/src/platform-implementation-js/namespaces/user.js +36 -37
  243. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  244. package/src/platform-implementation-js/platform-implementation.js +98 -229
  245. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  246. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  247. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  248. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  249. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  250. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  251. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  252. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  253. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  254. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  255. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  256. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  257. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  258. package/src/platform-implementation-js/views/section-view.js +60 -52
  259. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  260. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  261. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  262. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  263. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,71 +1,55 @@
1
- /* @flow */
2
-
3
- import find from 'lodash/find';
4
- import Kefir from 'kefir';
5
- import kefirStopper from 'kefir-stopper';
6
- import util from 'util';
7
- import autoHtml from 'auto-html';
8
- import { defn } from 'ud';
9
- import type GmailDriver from '../gmail-driver';
10
-
11
- import type GmailMessageView from './gmail-message-view';
12
- import fromEventTargetCapture from '../../../lib/from-event-target-capture';
13
- import querySelector from '../../../lib/dom/querySelectorOrFail';
14
- import ButtonView from '../widgets/buttons/button-view';
15
- import BasicButtonViewController from '../../../widgets/buttons/basic-button-view-controller';
16
-
17
- import { simulateClick } from '../../../lib/dom/simulate-mouse-event';
18
- import waitFor from '../../../lib/wait-for';
19
- import streamWaitFor from '../../../lib/stream-wait-for';
20
-
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 _find = _interopRequireDefault(require("lodash/find"));
10
+ var _kefir = _interopRequireDefault(require("kefir"));
11
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
12
+ var _util = _interopRequireDefault(require("util"));
13
+ var _autoHtml = _interopRequireDefault(require("auto-html"));
14
+ var _ud = require("ud");
15
+ var _fromEventTargetCapture = _interopRequireDefault(require("../../../lib/from-event-target-capture"));
16
+ var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
17
+ var _buttonView = _interopRequireDefault(require("../widgets/buttons/button-view"));
18
+ var _basicButtonViewController = _interopRequireDefault(require("../../../widgets/buttons/basic-button-view-controller"));
19
+ var _simulateMouseEvent = require("../../../lib/dom/simulate-mouse-event");
20
+ var _waitFor = _interopRequireDefault(require("../../../lib/wait-for"));
21
+ var _streamWaitFor = _interopRequireDefault(require("../../../lib/stream-wait-for"));
21
22
  class GmailAttachmentCardView {
22
- _element: HTMLElement;
23
- _driver: GmailDriver;
24
- _messageViewDriver: ?GmailMessageView;
25
- _cachedType: any;
26
- _stopper: Kefir.Observable<null> & { destroy(): void } = kefirStopper();
27
- _previewClicks = Kefir.pool();
28
-
29
- constructor(
30
- options: Object,
31
- driver: GmailDriver,
32
- messageViewDriver: ?GmailMessageView
33
- ) {
23
+ constructor(options, driver, messageViewDriver) {
24
+ (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
25
+ (0, _defineProperty2.default)(this, "_previewClicks", _kefir.default.pool());
34
26
  this._driver = driver;
35
27
  this._messageViewDriver = messageViewDriver;
36
-
37
28
  if (options.element) {
38
29
  this._element = options.element;
39
30
  } else {
40
31
  this._createNewElement(options);
41
32
  }
42
33
  }
43
-
44
34
  destroy() {
45
35
  this._stopper.destroy();
46
36
  }
47
-
48
- getElement(): HTMLElement {
37
+ getElement() {
49
38
  return this._element;
50
39
  }
51
-
52
40
  getMessageViewDriver() {
53
41
  return this._messageViewDriver;
54
42
  }
55
-
56
- getStopper(): Kefir.Observable<null> {
43
+ getStopper() {
57
44
  return this._stopper;
58
45
  }
59
-
60
- getPreviewClicks(): Kefir.Observable<Event> {
46
+ getPreviewClicks() {
61
47
  return this._previewClicks.takeUntilBy(this._stopper);
62
48
  }
63
-
64
- _isStandardAttachment(): boolean {
49
+ _isStandardAttachment() {
65
50
  return this.getAttachmentType() === 'FILE';
66
51
  }
67
-
68
- getAttachmentType(): string {
52
+ getAttachmentType() {
69
53
  if (this._cachedType) {
70
54
  return this._cachedType;
71
55
  }
@@ -75,16 +59,12 @@ class GmailAttachmentCardView {
75
59
  }
76
60
  return type;
77
61
  }
78
-
79
- _readAttachmentType(): string {
62
+ _readAttachmentType() {
80
63
  if (this._element.classList.contains('inboxsdk__attachmentCard')) {
81
64
  return 'CUSTOM';
82
65
  }
83
66
  // FILE attachment cards are never in unloaded state.
84
- if (
85
- this._element.children.length === 1 &&
86
- this._element.children[0].children.length === 0
87
- ) {
67
+ if (this._element.children.length === 1 && this._element.children[0].children.length === 0) {
88
68
  return 'UNLOADED';
89
69
  }
90
70
  const link = this._getDownloadLink();
@@ -97,35 +77,29 @@ class GmailAttachmentCardView {
97
77
  }
98
78
  return 'UNKNOWN';
99
79
  }
100
-
101
- addButton(options: Object) {
102
- var buttonView = new ButtonView({
80
+ addButton(options) {
81
+ var buttonView = new _buttonView.default({
103
82
  iconUrl: options.iconUrl,
104
- tooltip: options.tooltip,
83
+ tooltip: options.tooltip
105
84
  });
106
-
107
- var basicButtonViewController = new BasicButtonViewController({
85
+ var basicButtonViewController = new _basicButtonViewController.default({
108
86
  activateFunction: () => {
109
87
  if (options.onClick) {
110
88
  options.onClick({
111
- getDownloadURL: () => this.getDownloadURL(),
89
+ getDownloadURL: () => this.getDownloadURL()
112
90
  });
113
91
  }
114
92
  },
115
- buttonView: buttonView,
93
+ buttonView: buttonView
116
94
  });
117
-
118
95
  this._addButton(buttonView);
119
96
  }
120
-
121
- getTitle(): string {
97
+ getTitle() {
122
98
  const title = this._element.querySelector('span .aV3');
123
99
  return title ? title.textContent : '';
124
100
  }
125
-
126
- _getDownloadLink(): ?string {
127
- const firstChild: ?HTMLAnchorElement = (this._element
128
- .firstElementChild: any);
101
+ _getDownloadLink() {
102
+ const firstChild = this._element.firstElementChild;
129
103
  if (!firstChild) throw new Error('Failed to find link');
130
104
  if (firstChild.tagName !== 'A' || !firstChild.href) {
131
105
  const download_url = this._element.getAttribute('download_url');
@@ -136,33 +110,24 @@ class GmailAttachmentCardView {
136
110
  } else {
137
111
  const firstChildHref = firstChild.href;
138
112
  if (firstChildHref) {
139
- return firstChildHref.replace(
140
- /([?&])disp=inline(?=&|$)/,
141
- '$1disp=safe'
142
- );
113
+ return firstChildHref.replace(/([?&])disp=inline(?=&|$)/, '$1disp=safe');
143
114
  }
144
115
  return firstChildHref;
145
116
  }
146
117
  }
147
118
 
148
119
  // Resolves the short-lived cookie-less download URL
149
- async getDownloadURL(): Promise<?string> {
120
+ async getDownloadURL() {
150
121
  try {
151
122
  if (this._isStandardAttachment()) {
152
- const downloadUrl = await waitFor(() => this._getDownloadLink());
123
+ const downloadUrl = await (0, _waitFor.default)(() => this._getDownloadLink());
153
124
  if (!downloadUrl) return null;
154
- const finalUrl: string = await this._driver.resolveUrlRedirects(
155
- downloadUrl
156
- );
157
- if (
158
- !/^https:\/\/mail-attachment\.googleusercontent\.com\/attachment\//.test(
159
- finalUrl
160
- )
161
- ) {
125
+ const finalUrl = await this._driver.resolveUrlRedirects(downloadUrl);
126
+ if (!/^https:\/\/mail-attachment\.googleusercontent\.com\/attachment\//.test(finalUrl)) {
162
127
  console.error('getDownloadURL returned unexpected url', finalUrl); //eslint-disable-line
163
128
  const err = new Error('getDownloadURL returned unexpected url');
164
129
  this._driver.getLogger().error(err, {
165
- finalUrlCensored: finalUrl.replace(/\?[^/]+$/, '?[...]'),
130
+ finalUrlCensored: finalUrl.replace(/\?[^/]+$/, '?[...]')
166
131
  });
167
132
  if (/^https:\/\/mail\.google\.com\//.test(finalUrl)) {
168
133
  // This URL definitely isn't right: these URLs generally require
@@ -172,58 +137,43 @@ class GmailAttachmentCardView {
172
137
  // Otherwise, don't throw; only log. Maybe Gmail has changed the URL
173
138
  // structure and things will just work.
174
139
  }
140
+
175
141
  return finalUrl;
176
142
  } else {
177
- const downloadButton = this._element.querySelector(
178
- '[data-inboxsdk-download-url]'
179
- );
180
- return downloadButton
181
- ? downloadButton.getAttribute('data-inboxsdk-download-url')
182
- : null;
143
+ const downloadButton = this._element.querySelector('[data-inboxsdk-download-url]');
144
+ return downloadButton ? downloadButton.getAttribute('data-inboxsdk-download-url') : null;
183
145
  }
184
146
  } catch (err) {
185
147
  this._driver.getLogger().error(err);
186
148
  throw err;
187
149
  }
188
150
  }
189
-
190
- _extractFileNameFromElement(): string {
191
- return querySelector(this._element, '.aQA > span').textContent;
151
+ _extractFileNameFromElement() {
152
+ return (0, _querySelectorOrFail.default)(this._element, '.aQA > span').textContent;
192
153
  }
193
-
194
- _createNewElement(options: Object) {
154
+ _createNewElement(options) {
195
155
  this._element = document.createElement('span');
196
156
  this._element.classList.add('aZo');
197
157
  this._element.classList.add('inboxsdk__attachmentCard');
198
-
199
- var htmlArray = [
200
- autoHtml`
158
+ var htmlArray = [(0, _autoHtml.default)`
201
159
  <a target="_blank" role="link" class="aQy e" href="">
202
160
  <div aria-hidden="true">
203
161
  <div class="aSG"></div>
204
162
  <div class="aVY aZn">
205
163
  <div class="aZm"></div>
206
164
  </div>
207
- <div class="aSH">`,
208
- ];
209
-
165
+ <div class="aSH">`];
210
166
  if (options.iconThumbnailUrl) {
211
- htmlArray = htmlArray.concat([
212
- autoHtml`
167
+ htmlArray = htmlArray.concat([(0, _autoHtml.default)`
213
168
  <div class="aYv">
214
169
  <img class="aZG aYw" src="${options.iconThumbnailUrl}">
215
- </div>`,
216
- ]);
170
+ </div>`]);
217
171
  } else {
218
- htmlArray = htmlArray.concat([
219
- autoHtml`
172
+ htmlArray = htmlArray.concat([(0, _autoHtml.default)`
220
173
  <img class="aQG aYB inboxsdk__attachmentCard_previewThumbnailUrl"
221
- src="${options.previewThumbnailUrl}">`,
222
- ]);
174
+ src="${options.previewThumbnailUrl}">`]);
223
175
  }
224
-
225
- htmlArray = htmlArray.concat([
226
- autoHtml`
176
+ htmlArray = htmlArray.concat([(0, _autoHtml.default)`
227
177
  <div class="aYy">
228
178
  <div class="aYA">
229
179
  <img class="aSM" src="${options.fileIconImageUrl}">
@@ -245,178 +195,120 @@ class GmailAttachmentCardView {
245
195
  </div>
246
196
  </div>
247
197
  </a>
248
- <div class="aQw"></div>`,
249
- ]);
250
-
198
+ <div class="aQw"></div>`]);
251
199
  this._element.innerHTML = htmlArray.join('');
252
-
253
- (this._element.children[0]: any).href = options.previewUrl;
254
-
200
+ this._element.children[0].href = options.previewUrl;
255
201
  if (options.mimeType && options.mimeType.split('/')[0] === 'image') {
256
202
  this._element.children[0].classList.add('aZI');
257
203
  }
258
-
259
- querySelector(this._element, 'span .aV3').textContent = options.title;
260
- querySelector(this._element, 'div.aYp > span').textContent =
261
- options.description || '';
262
- querySelector(this._element, 'div.aSJ').style.borderColor =
263
- options.foldColor;
264
-
204
+ (0, _querySelectorOrFail.default)(this._element, 'span .aV3').textContent = options.title;
205
+ (0, _querySelectorOrFail.default)(this._element, 'div.aYp > span').textContent = options.description || '';
206
+ (0, _querySelectorOrFail.default)(this._element, 'div.aSJ').style.borderColor = options.foldColor;
265
207
  this._addHoverEvents();
266
-
267
208
  if (options.buttons) {
268
- const downloadButton = find(options.buttons, function (button) {
209
+ const downloadButton = (0, _find.default)(options.buttons, function (button) {
269
210
  return button.downloadUrl;
270
211
  });
271
-
272
212
  if (downloadButton) {
273
213
  this._addDownloadButton(downloadButton);
274
214
  }
275
-
276
215
  this._addMoreButtons(options.buttons);
277
216
  }
278
-
279
217
  var self = this;
280
218
  // :any to work around https://github.com/facebook/flow/issues/1155
281
- this._previewClicks.plug(
282
- Kefir.fromEvents(this._element, 'click').map((event) => ({
283
- preventDefault: () => event.preventDefault(),
284
- }))
285
- );
286
-
219
+ this._previewClicks.plug(_kefir.default.fromEvents(this._element, 'click').map(event => ({
220
+ preventDefault: () => event.preventDefault()
221
+ })));
287
222
  if (options.previewThumbnailUrl && options.failoverPreviewIconUrl) {
288
- const previewThumbnailUrlImage = querySelector(
289
- this._element,
290
- '.inboxsdk__attachmentCard_previewThumbnailUrl'
291
- );
292
- previewThumbnailUrlImage.onerror = (e) => {
223
+ const previewThumbnailUrlImage = (0, _querySelectorOrFail.default)(this._element, '.inboxsdk__attachmentCard_previewThumbnailUrl');
224
+ previewThumbnailUrlImage.onerror = e => {
293
225
  var iconDiv = document.createElement('div');
294
226
  iconDiv.classList.add('aYv');
295
- iconDiv.innerHTML =
296
- '<img class="aZG aYw" src="' + options.failoverPreviewIconUrl + '">';
227
+ iconDiv.innerHTML = '<img class="aZG aYw" src="' + options.failoverPreviewIconUrl + '">';
297
228
  const parent = previewThumbnailUrlImage.parentElement;
298
229
  if (!parent) throw new Error('Could not find parent element');
299
- parent.insertBefore(
300
- iconDiv,
301
- previewThumbnailUrlImage.nextElementSibling
302
- );
303
-
230
+ parent.insertBefore(iconDiv, previewThumbnailUrlImage.nextElementSibling);
304
231
  previewThumbnailUrlImage.remove();
305
232
  };
306
233
  }
307
234
  }
308
-
309
235
  _addHoverEvents() {
310
- Kefir.merge([
311
- Kefir.fromEvents(this._element, 'mouseenter'),
312
- fromEventTargetCapture(this._element, 'focus'),
313
- ]).onValue(() => {
236
+ _kefir.default.merge([_kefir.default.fromEvents(this._element, 'mouseenter'), (0, _fromEventTargetCapture.default)(this._element, 'focus')]).onValue(() => {
314
237
  this._element.classList.add('aZp');
315
238
  });
316
-
317
- Kefir.merge([
318
- Kefir.fromEvents(this._element, 'mouseleave'),
319
- fromEventTargetCapture(this._element, 'blur'),
320
- ]).onValue(() => {
239
+ _kefir.default.merge([_kefir.default.fromEvents(this._element, 'mouseleave'), (0, _fromEventTargetCapture.default)(this._element, 'blur')]).onValue(() => {
321
240
  this._element.classList.remove('aZp');
322
241
  });
323
-
324
- const anchor = querySelector(this._element, 'a');
325
- Kefir.fromEvents(anchor, 'focus').onValue(() => {
242
+ const anchor = (0, _querySelectorOrFail.default)(this._element, 'a');
243
+ _kefir.default.fromEvents(anchor, 'focus').onValue(() => {
326
244
  anchor.classList.add('a1U');
327
245
  });
328
- Kefir.fromEvents(anchor, 'blur').onValue(() => {
246
+ _kefir.default.fromEvents(anchor, 'blur').onValue(() => {
329
247
  anchor.classList.remove('a1U');
330
248
  });
331
249
  }
332
-
333
- _addDownloadButton(options: Object) {
334
- const buttonView = new ButtonView({
250
+ _addDownloadButton(options) {
251
+ const buttonView = new _buttonView.default({
335
252
  tooltip: 'Download',
336
- iconClass: 'aSK J-J5-Ji aYr',
253
+ iconClass: 'aSK J-J5-Ji aYr'
337
254
  });
338
-
339
- buttonView
340
- .getElement()
341
- .setAttribute('data-inboxsdk-download-url', options.downloadUrl);
342
-
343
- const basicButtonViewController = new BasicButtonViewController({
255
+ buttonView.getElement().setAttribute('data-inboxsdk-download-url', options.downloadUrl);
256
+ const basicButtonViewController = new _basicButtonViewController.default({
344
257
  activateFunction: function () {
345
258
  let prevented = false;
346
-
347
259
  if (options.onClick) {
348
260
  options.onClick({
349
261
  preventDefault: function () {
350
262
  prevented = true;
351
- },
263
+ }
352
264
  });
353
265
  }
354
-
355
266
  if (prevented) {
356
267
  return;
357
268
  }
358
-
359
269
  const downloadLink = document.createElement('a');
360
270
  downloadLink.href = options.downloadUrl;
361
271
  if (options.downloadFilename) {
362
272
  downloadLink.download = options.downloadFilename;
363
273
  }
364
-
365
- downloadLink.addEventListener(
366
- 'click',
367
- function (e: MouseEvent) {
368
- e.stopPropagation();
369
- },
370
- true
371
- );
372
-
274
+ downloadLink.addEventListener('click', function (e) {
275
+ e.stopPropagation();
276
+ }, true);
373
277
  if (options.openInNewTab) {
374
278
  downloadLink.setAttribute('target', '_blank');
375
279
  }
376
-
377
- ((document.body: any): HTMLElement).appendChild(downloadLink);
378
-
379
- simulateClick(downloadLink);
280
+ document.body.appendChild(downloadLink);
281
+ (0, _simulateMouseEvent.simulateClick)(downloadLink);
380
282
  downloadLink.remove();
381
283
  },
382
- buttonView: buttonView,
284
+ buttonView: buttonView
383
285
  });
384
-
385
286
  this._addButton(buttonView);
386
287
  }
387
-
388
- _addMoreButtons(buttonDescriptors: ?(Object[])) {
389
- (buttonDescriptors || [])
390
- .filter(function (buttonDescriptor) {
391
- return !buttonDescriptor.downloadUrl;
392
- })
393
- .forEach((desc) => {
394
- this.addButton(desc);
395
- });
288
+ _addMoreButtons(buttonDescriptors) {
289
+ (buttonDescriptors || []).filter(function (buttonDescriptor) {
290
+ return !buttonDescriptor.downloadUrl;
291
+ }).forEach(desc => {
292
+ this.addButton(desc);
293
+ });
396
294
  }
397
-
398
- _addButton(buttonView: ButtonView) {
295
+ _addButton(buttonView) {
399
296
  buttonView.addClass('aQv');
400
-
401
297
  this._getButtonContainerElement().appendChild(buttonView.getElement());
402
298
  }
403
-
404
- _getPreviewImageUrl(): ?string {
299
+ _getPreviewImageUrl() {
405
300
  var previewImage = this._getPreviewImage();
406
301
  if (!previewImage) {
407
302
  return null;
408
303
  }
409
-
410
304
  return previewImage.src;
411
305
  }
412
-
413
- _getPreviewImage(): HTMLImageElement {
414
- return (this._element.querySelector('img.aQG'): any);
306
+ _getPreviewImage() {
307
+ return this._element.querySelector('img.aQG');
415
308
  }
416
-
417
- _getButtonContainerElement(): HTMLElement {
418
- return querySelector(this._element, '.aQw');
309
+ _getButtonContainerElement() {
310
+ return (0, _querySelectorOrFail.default)(this._element, '.aQw');
419
311
  }
420
312
  }
421
-
422
- export default defn(module, GmailAttachmentCardView);
313
+ var _default = (0, _ud.defn)(module, GmailAttachmentCardView);
314
+ exports.default = _default;