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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/inboxsdk.d.ts +2 -0
  12. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  13. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  14. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  15. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  16. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  18. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  19. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  20. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  21. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  22. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  23. package/src/injected-js/main.js +11 -24
  24. package/src/injected-js/message-metadata-holder.js +52 -82
  25. package/src/injected-js/setup-data-exposer.js +89 -148
  26. package/src/injected-js/setup-error-silencer.js +21 -21
  27. package/src/injected-js/setup-event-reemitter.js +30 -22
  28. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  29. package/src/injected-js/setupPushStateListener.js +18 -11
  30. package/src/injected-js/xhr-helper.js +62 -65
  31. package/src/injected-js/xhr-proxy-factory.js +195 -445
  32. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  33. package/src/platform-implementation-js/constants/router.js +14 -9
  34. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  35. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  66. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  67. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  116. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  117. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  124. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  125. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  126. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  127. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  129. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  130. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  140. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  141. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  142. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  144. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  146. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  149. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  151. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  152. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  153. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  154. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  155. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  157. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  161. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  183. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  184. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  185. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  186. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  187. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  188. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  189. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  190. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  191. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  192. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  193. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  194. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  195. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  196. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  197. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  198. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  199. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  200. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  202. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  203. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  204. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  205. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  206. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  207. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  208. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  209. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  210. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  211. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  212. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  213. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  214. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  215. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  216. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  217. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  218. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  220. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  221. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  222. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  223. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  225. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  227. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  228. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  229. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  230. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  231. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  232. package/src/platform-implementation-js/main.js +9 -24
  233. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  234. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  235. package/src/platform-implementation-js/namespaces/global.js +27 -39
  236. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  237. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  238. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  239. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  240. package/src/platform-implementation-js/namespaces/router.js +70 -137
  241. package/src/platform-implementation-js/namespaces/search.js +19 -17
  242. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  243. package/src/platform-implementation-js/namespaces/user.js +36 -37
  244. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  245. package/src/platform-implementation-js/platform-implementation.js +98 -229
  246. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  247. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  248. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  249. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  250. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  251. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  252. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  253. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  254. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  255. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  256. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  257. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  258. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  259. package/src/platform-implementation-js/views/section-view.js +60 -52
  260. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  261. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  262. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  263. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  264. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,85 +1,53 @@
1
- /* @flow */
2
-
3
- import t from 'transducers.js';
4
- import ErrorCollector from '../../../../lib/ErrorCollector';
5
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
6
-
7
- import { defn } from 'ud';
8
-
9
- function parser(el: HTMLElement) {
10
- const ec = new ErrorCollector('attachmentOverlay');
11
-
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 _transducers = _interopRequireDefault(require("transducers.js"));
9
+ var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
10
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
11
+ var _ud = require("ud");
12
+ function parser(el) {
13
+ const ec = new _ErrorCollector.default('attachmentOverlay');
12
14
  ec.run('tabindex', () => {
13
15
  if (!el.hasAttribute('tabindex')) throw new Error('expected tabindex');
14
16
  });
15
-
16
- const downloadButton: ?HTMLElement = ec.run('downloadButton', () => {
17
- const candidate: ?HTMLElement = t.toArray(
18
- Array.prototype.slice.call(
19
- el.querySelectorAll(
20
- 'div[role=button][tabindex][data-tooltip]:not([aria-disabled=true]):not([aria-pressed]):not([aria-expanded])'
21
- )
22
- ),
23
- t.compose(
24
- t.filter(
25
- (el) =>
26
- el.childElementCount === 1 &&
27
- el.firstElementChild.childElementCount === 0
28
- ),
29
- t.filter((el) => {
30
- if (global.document) {
31
- const rect = el.getBoundingClientRect();
32
- if (rect.top > 100) return false;
33
- return true;
34
- } else {
35
- // Can't use screen position logic in unit tests so we're cheating a
36
- // little and depending on an exact class name.
37
- return el.parentElement.classList.contains(
38
- 'ndfHFb-c4YZDc-Wrql6b-C7uZwb-b0t70b'
39
- );
40
- }
41
- }),
42
- t.filter((el) => {
43
- const elIx = Array.prototype.indexOf.call(
44
- el.parentElement.children,
45
- el
46
- );
47
- const nextDivSibling = Array.prototype.filter.call(
48
- el.parentElement.children,
49
- (el, i) => i > elIx && el.nodeName === 'DIV'
50
- )[0];
51
- return (
52
- nextDivSibling &&
53
- nextDivSibling.getAttribute('aria-haspopup') === 'true'
54
- );
55
- }),
56
- t.take(1)
57
- )
58
- )[0];
17
+ const downloadButton = ec.run('downloadButton', () => {
18
+ const candidate = _transducers.default.toArray(Array.prototype.slice.call(el.querySelectorAll('div[role=button][tabindex][data-tooltip]:not([aria-disabled=true]):not([aria-pressed]):not([aria-expanded])')), _transducers.default.compose(_transducers.default.filter(el => el.childElementCount === 1 && el.firstElementChild.childElementCount === 0), _transducers.default.filter(el => {
19
+ if (global.document) {
20
+ const rect = el.getBoundingClientRect();
21
+ if (rect.top > 100) return false;
22
+ return true;
23
+ } else {
24
+ // Can't use screen position logic in unit tests so we're cheating a
25
+ // little and depending on an exact class name.
26
+ return el.parentElement.classList.contains('ndfHFb-c4YZDc-Wrql6b-C7uZwb-b0t70b');
27
+ }
28
+ }), _transducers.default.filter(el => {
29
+ const elIx = Array.prototype.indexOf.call(el.parentElement.children, el);
30
+ const nextDivSibling = Array.prototype.filter.call(el.parentElement.children, (el, i) => i > elIx && el.nodeName === 'DIV')[0];
31
+ return nextDivSibling && nextDivSibling.getAttribute('aria-haspopup') === 'true';
32
+ }), _transducers.default.take(1)))[0];
59
33
  if (!candidate) throw new Error('Failed to find element');
60
- if (candidate.getAttribute('aria-label') === 'Print')
61
- throw new Error('Found print button instead');
34
+ if (candidate.getAttribute('aria-label') === 'Print') throw new Error('Found print button instead');
62
35
  return candidate;
63
36
  });
64
-
65
- const buttonContainer: ?HTMLElement = downloadButton
66
- ? (downloadButton: any).parentElement
67
- : null;
68
-
37
+ const buttonContainer = downloadButton ? downloadButton.parentElement : null;
69
38
  const elements = {
70
39
  downloadButton,
71
- buttonContainer,
40
+ buttonContainer
72
41
  };
73
42
  const score = 1 - ec.errorCount() / ec.runCount();
74
43
  return {
75
44
  elements,
76
45
  attributes: {},
77
46
  score,
78
- errors: ec.getErrorLogs(),
47
+ errors: ec.getErrorLogs()
79
48
  };
80
49
  }
81
50
 
82
51
  /*:: const x = parser(({}:any)); */
83
- export type Parsed = typeof x;
84
-
85
- export default defn(module, parser);
52
+ var _default = (0, _ud.defn)(module, parser);
53
+ exports.default = _default;
@@ -1,33 +1,31 @@
1
- /* @flow */
2
-
3
- import ErrorCollector from '../../../../lib/ErrorCollector';
4
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
5
-
6
- import { defn } from 'ud';
7
-
8
- function parser(el: HTMLElement) {
9
- const ec = new ErrorCollector('chatSidebar');
10
-
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 _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
+ var _ud = require("ud");
11
+ function parser(el) {
12
+ const ec = new _ErrorCollector.default('chatSidebar');
11
13
  ec.run('position:fixed', () => {
12
- if (getComputedStyle((el: any).parentElement).position !== 'fixed')
13
- throw new Error('expected position:fixed in parent');
14
+ if (getComputedStyle(el.parentElement).position !== 'fixed') throw new Error('expected position:fixed in parent');
14
15
  });
15
-
16
16
  ec.run('id', () => {
17
17
  if (!el.id) throw new Error('expected id');
18
18
  });
19
-
20
19
  const elements = {};
21
20
  const score = 1 - ec.errorCount() / ec.runCount();
22
21
  return {
23
22
  elements,
24
23
  attributes: {},
25
24
  score,
26
- errors: ec.getErrorLogs(),
25
+ errors: ec.getErrorLogs()
27
26
  };
28
27
  }
29
28
 
30
29
  /*:: const x = parser(({}:any)); */
31
- export type Parsed = typeof x;
32
-
33
- export default defn(module, parser);
30
+ var _default = (0, _ud.defn)(module, parser);
31
+ exports.default = _default;
@@ -1,184 +1,68 @@
1
- /* @flow */
2
-
3
- import ErrorCollector from '../../../../lib/ErrorCollector';
4
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
5
- import closest from 'closest-ng';
6
-
7
- import { defn } from 'ud';
8
-
9
- function parser(el: HTMLElement) {
10
- const ec = new ErrorCollector('compose');
11
-
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 _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
+ var _closestNg = _interopRequireDefault(require("closest-ng"));
11
+ var _ud = require("ud");
12
+ function parser(el) {
13
+ const ec = new _ErrorCollector.default('compose');
12
14
  const isInline = el.getAttribute('role') !== 'dialog';
13
-
14
- const sendBtn = ec.run('send button', () =>
15
- querySelectorOne(
16
- el,
17
- 'div[jstcache] > div[role=button][jsaction$=".send"], ' +
18
- 'div[jstcache] > div[role=button][disabled]:not([title]):not([data-tooltip])'
19
- )
20
- );
21
- const attachBtn = ec.run('attach button', () =>
22
- querySelectorOne(el, 'div[role=button][jsaction$=".attach"]')
23
- );
24
- const body = ec.run('body', () =>
25
- querySelectorOne(
26
- el,
27
- 'div[contenteditable][g_editable], div[id][tabindex][aria-label][jsaction*=".quick_compose_handle_input"]'
28
- )
29
- );
30
- const subject = isInline
31
- ? null
32
- : ec.run('subject', () => {
33
- const subject = querySelectorOne(
34
- el,
35
- 'div[jstcache][jsan] > div > input[type=text][title][placeholder][jsaction*="input:"]'
36
- );
37
- if (!(subject instanceof HTMLInputElement))
38
- throw new Error('Wrong type');
39
- return subject;
40
- });
41
- const popOutBtn = isInline
42
- ? ec.run('pop-out button', () =>
43
- querySelectorOne(el, 'button[jsaction$=".quick_compose_popout_mole"]')
44
- )
45
- : null;
46
-
47
- const discardBtn = ec.run('discard button', () =>
48
- querySelectorOne(el, 'button[jsaction$=".discard_draft"]')
49
- );
50
-
51
- const titleBar = isInline
52
- ? null
53
- : ec.run('title bar', () =>
54
- querySelectorOne(el, 'div[jsaction$=".focus_mole"]')
55
- );
56
-
57
- const toggleFullscreenButton = isInline
58
- ? null
59
- : ec.run('fullscreen button', () =>
60
- querySelectorOne(el, 'button[jsaction$=".toggle_full_screen"]')
61
- );
62
- const toggleFullscreenButtonImage = isInline
63
- ? null
64
- : ec.run(
65
- 'fullscreen button image',
66
- () =>
67
- ((querySelectorOne(
68
- el,
69
- 'button[jsaction$=".toggle_full_screen"] img'
70
- ): any): HTMLImageElement)
71
- );
72
- const closeBtn = isInline
73
- ? null
74
- : ec.run('close button', () =>
75
- querySelectorOne(
76
- el,
77
- 'div[jstcache][jsan][jsaction] > button[jsaction$=".close_mole"]'
78
- )
79
- );
80
- const minimizeBtn = isInline
81
- ? null
82
- : ec.run('minimize button', () =>
83
- querySelectorOne(
84
- el,
85
- 'div[jstcache][jsan][jsaction] > button[jsaction$=".minimize_mole"]'
86
- )
87
- );
88
- const minimizeBtnImage = isInline
89
- ? null
90
- : ec.run(
91
- 'minimize button image',
92
- () =>
93
- ((querySelectorOne(
94
- el,
95
- 'div[jstcache][jsan][jsaction] > button[jsaction$=".minimize_mole"] img'
96
- ): any): HTMLImageElement)
97
- );
98
- const bodyPlaceholder = isInline
99
- ? null
100
- : ec.run('body placeholder', () => {
101
- const el = body && body.previousElementSibling;
102
- if (!(el instanceof HTMLElement) || el.nodeName !== 'LABEL')
103
- throw new Error(
104
- `compose body placeholder wrong type ${
105
- el ? el.nodeName : 'undefined'
106
- }`
107
- );
108
- return el;
109
- });
110
-
111
- const fromPicker: ?HTMLElement = el.querySelector(
112
- 'div[role=button][jsaction*=toggle_custom_from_menu]'
113
- );
114
- const fromPickerEmailSpan = fromPicker
115
- ? ec.run('from picker email span', () =>
116
- querySelectorOne(fromPicker, 'span')
117
- )
118
- : null;
119
-
120
- const recipientFields = isInline
121
- ? null
122
- : ec.run('recipient fields', () => {
123
- const recipientFields: HTMLInputElement[] = (el.querySelectorAll(
124
- 'input[type=text][role=combobox]'
125
- ): any);
126
- if (recipientFields.length != 3)
127
- throw new Error(
128
- `Found ${recipientFields.length} recipient fields, expected 3`
129
- );
130
- return recipientFields;
131
- });
15
+ const sendBtn = ec.run('send button', () => (0, _querySelectorOne.default)(el, 'div[jstcache] > div[role=button][jsaction$=".send"], ' + 'div[jstcache] > div[role=button][disabled]:not([title]):not([data-tooltip])'));
16
+ const attachBtn = ec.run('attach button', () => (0, _querySelectorOne.default)(el, 'div[role=button][jsaction$=".attach"]'));
17
+ const body = ec.run('body', () => (0, _querySelectorOne.default)(el, 'div[contenteditable][g_editable], div[id][tabindex][aria-label][jsaction*=".quick_compose_handle_input"]'));
18
+ const subject = isInline ? null : ec.run('subject', () => {
19
+ const subject = (0, _querySelectorOne.default)(el, 'div[jstcache][jsan] > div > input[type=text][title][placeholder][jsaction*="input:"]');
20
+ if (!(subject instanceof HTMLInputElement)) throw new Error('Wrong type');
21
+ return subject;
22
+ });
23
+ const popOutBtn = isInline ? ec.run('pop-out button', () => (0, _querySelectorOne.default)(el, 'button[jsaction$=".quick_compose_popout_mole"]')) : null;
24
+ const discardBtn = ec.run('discard button', () => (0, _querySelectorOne.default)(el, 'button[jsaction$=".discard_draft"]'));
25
+ const titleBar = isInline ? null : ec.run('title bar', () => (0, _querySelectorOne.default)(el, 'div[jsaction$=".focus_mole"]'));
26
+ const toggleFullscreenButton = isInline ? null : ec.run('fullscreen button', () => (0, _querySelectorOne.default)(el, 'button[jsaction$=".toggle_full_screen"]'));
27
+ const toggleFullscreenButtonImage = isInline ? null : ec.run('fullscreen button image', () => (0, _querySelectorOne.default)(el, 'button[jsaction$=".toggle_full_screen"] img'));
28
+ const closeBtn = isInline ? null : ec.run('close button', () => (0, _querySelectorOne.default)(el, 'div[jstcache][jsan][jsaction] > button[jsaction$=".close_mole"]'));
29
+ const minimizeBtn = isInline ? null : ec.run('minimize button', () => (0, _querySelectorOne.default)(el, 'div[jstcache][jsan][jsaction] > button[jsaction$=".minimize_mole"]'));
30
+ const minimizeBtnImage = isInline ? null : ec.run('minimize button image', () => (0, _querySelectorOne.default)(el, 'div[jstcache][jsan][jsaction] > button[jsaction$=".minimize_mole"] img'));
31
+ const bodyPlaceholder = isInline ? null : ec.run('body placeholder', () => {
32
+ const el = body && body.previousElementSibling;
33
+ if (!(el instanceof HTMLElement) || el.nodeName !== 'LABEL') throw new Error(`compose body placeholder wrong type ${el ? el.nodeName : 'undefined'}`);
34
+ return el;
35
+ });
36
+ const fromPicker = el.querySelector('div[role=button][jsaction*=toggle_custom_from_menu]');
37
+ const fromPickerEmailSpan = fromPicker ? ec.run('from picker email span', () => (0, _querySelectorOne.default)(fromPicker, 'span')) : null;
38
+ const recipientFields = isInline ? null : ec.run('recipient fields', () => {
39
+ const recipientFields = el.querySelectorAll('input[type=text][role=combobox]');
40
+ if (recipientFields.length != 3) throw new Error(`Found ${recipientFields.length} recipient fields, expected 3`);
41
+ return recipientFields;
42
+ });
132
43
  const [toInput, ccInput, bccInput] = recipientFields || [];
133
-
134
- const toggleCcBccButton = isInline
135
- ? null
136
- : ec.run('toggle cc/bcc button', () =>
137
- querySelectorOne(el, 'button[jsaction*=".toggle_cc_bcc"]')
138
- );
139
-
140
- const toRow = isInline
141
- ? null
142
- : ec.run('to row', () => {
143
- if (!toInput) throw new Error('Could not locate To input');
144
-
145
- const toInputAncestor = closest(
146
- toInput,
147
- 'div > button[jsaction$=".toggle_cc_bcc"] + div'
148
- );
149
- const toRow = toInputAncestor && toInputAncestor.parentElement;
150
- if (!(toRow instanceof HTMLElement))
151
- throw new Error('Could not locate To row');
152
-
153
- return toRow;
154
- });
155
-
156
- const ccRow = isInline
157
- ? null
158
- : ec.run('cc row', () => {
159
- if (!ccInput) throw new Error('Could not locate CC input');
160
-
161
- const ccInputAncestor = closest(ccInput, 'div[class] > label + div');
162
- const ccRow = ccInputAncestor && ccInputAncestor.parentElement;
163
- if (!(ccRow instanceof HTMLElement))
164
- throw new Error('Could not locate CC row');
165
-
166
- return ccRow;
167
- });
168
-
169
- const bccRow = isInline
170
- ? null
171
- : ec.run('bcc row', () => {
172
- if (!bccInput) throw new Error('Could not locate BCC input');
173
-
174
- const bccInputAncestor = closest(bccInput, 'div[class] > label + div');
175
- const bccRow = bccInputAncestor && bccInputAncestor.parentElement;
176
- if (!(bccRow instanceof HTMLElement))
177
- throw new Error('Could not locate BCC row');
178
-
179
- return bccRow;
180
- });
181
-
44
+ const toggleCcBccButton = isInline ? null : ec.run('toggle cc/bcc button', () => (0, _querySelectorOne.default)(el, 'button[jsaction*=".toggle_cc_bcc"]'));
45
+ const toRow = isInline ? null : ec.run('to row', () => {
46
+ if (!toInput) throw new Error('Could not locate To input');
47
+ const toInputAncestor = (0, _closestNg.default)(toInput, 'div > button[jsaction$=".toggle_cc_bcc"] + div');
48
+ const toRow = toInputAncestor && toInputAncestor.parentElement;
49
+ if (!(toRow instanceof HTMLElement)) throw new Error('Could not locate To row');
50
+ return toRow;
51
+ });
52
+ const ccRow = isInline ? null : ec.run('cc row', () => {
53
+ if (!ccInput) throw new Error('Could not locate CC input');
54
+ const ccInputAncestor = (0, _closestNg.default)(ccInput, 'div[class] > label + div');
55
+ const ccRow = ccInputAncestor && ccInputAncestor.parentElement;
56
+ if (!(ccRow instanceof HTMLElement)) throw new Error('Could not locate CC row');
57
+ return ccRow;
58
+ });
59
+ const bccRow = isInline ? null : ec.run('bcc row', () => {
60
+ if (!bccInput) throw new Error('Could not locate BCC input');
61
+ const bccInputAncestor = (0, _closestNg.default)(bccInput, 'div[class] > label + div');
62
+ const bccRow = bccInputAncestor && bccInputAncestor.parentElement;
63
+ if (!(bccRow instanceof HTMLElement)) throw new Error('Could not locate BCC row');
64
+ return bccRow;
65
+ });
182
66
  const elements = {
183
67
  sendBtn,
184
68
  attachBtn,
@@ -201,20 +85,19 @@ function parser(el: HTMLElement) {
201
85
  toRow,
202
86
  ccRow,
203
87
  bccRow,
204
- toggleCcBccButton,
88
+ toggleCcBccButton
205
89
  };
206
90
  const score = 1 - ec.errorCount() / ec.runCount();
207
91
  return {
208
92
  elements,
209
93
  attributes: {
210
- isInline,
94
+ isInline
211
95
  },
212
96
  score,
213
- errors: ec.getErrorLogs(),
97
+ errors: ec.getErrorLogs()
214
98
  };
215
99
  }
216
100
 
217
101
  /*:: const x = parser(({}:any)); */
218
- export type Parsed = typeof x;
219
-
220
- export default defn(module, parser);
102
+ var _default = (0, _ud.defn)(module, parser);
103
+ exports.default = _default;
@@ -1,24 +1,25 @@
1
- /* @flow */
2
-
3
- import last from 'lodash/last';
4
- import ErrorCollector from '../../../../lib/ErrorCollector';
5
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
6
-
7
- export default function parser(el: HTMLElement) {
8
- const ec = new ErrorCollector('compose');
1
+ "use strict";
9
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = parser;
8
+ var _last = _interopRequireDefault(require("lodash/last"));
9
+ var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
10
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
11
+ function parser(el) {
12
+ const ec = new _ErrorCollector.default('compose');
10
13
  ec.run('tabindex', () => {
11
14
  if (!el.hasAttribute('tabindex')) throw new Error('expected tabindex');
12
15
  });
13
-
14
- const inboxMessageId: ?string = ec.run('message id', () => {
16
+ const inboxMessageId = ec.run('message id', () => {
15
17
  const m = /msg-[^:]+:[^:\d]*\d+/.exec(el.getAttribute('data-msg-id') || '');
16
18
  if (!m) {
17
19
  throw new Error('message id regex failed');
18
20
  }
19
21
  return m[0];
20
22
  });
21
-
22
23
  const heading = ec.run('heading', () => {
23
24
  const heading = el.querySelector('div[role=heading]');
24
25
  if (!heading) throw new Error('failed to find heading');
@@ -26,57 +27,29 @@ export default function parser(el: HTMLElement) {
26
27
  });
27
28
 
28
29
  // Super-collapsed/HIDDEN messages don't have a body.
29
- const body: ?HTMLElement = el.querySelector(
30
- 'div[role=heading] ~ div:not(:empty)'
31
- );
30
+ const body = el.querySelector('div[role=heading] ~ div:not(:empty)');
32
31
 
33
32
  // The last message in a thread is always loaded and doesn't have the toggle
34
33
  // collapse button.
35
- const toggleCollapse: ?HTMLElement = el.querySelector(
36
- 'div[jsaction$=".message_toggle_collapse"]'
37
- );
38
-
39
- const loaded =
40
- body != null &&
41
- (toggleCollapse == null ||
42
- toggleCollapse.getAttribute('role') === 'heading');
43
-
34
+ const toggleCollapse = el.querySelector('div[jsaction$=".message_toggle_collapse"]');
35
+ const loaded = body != null && (toggleCollapse == null || toggleCollapse.getAttribute('role') === 'heading');
44
36
  const viewState = loaded ? 'EXPANDED' : body != null ? 'COLLAPSED' : 'HIDDEN';
45
-
46
37
  const isDraft = loaded && heading && !heading.querySelector('span[email]');
47
-
48
- const sender =
49
- isDraft || !heading || !body
50
- ? null
51
- : ec.run('sender', () =>
52
- querySelectorOne(heading, '[email]:first-child')
53
- );
54
-
55
- const recipientElements = isDraft
56
- ? null
57
- : el.querySelectorAll(
58
- '[role=heading] [email]:not(:first-child), [role=heading] + div [email]'
59
- );
60
-
61
- const attachmentsArea: ?HTMLElement =
62
- isDraft || !body || viewState !== 'EXPANDED'
63
- ? null
64
- : ec.run('attachments area', () => {
65
- const lastSection = last(
66
- (body.parentElement: any).querySelectorAll('section:last-child')
67
- );
68
- if (!lastSection) {
69
- throw new Error('element not found');
70
- }
71
- return lastSection;
72
- });
73
-
38
+ const sender = isDraft || !heading || !body ? null : ec.run('sender', () => (0, _querySelectorOne.default)(heading, '[email]:first-child'));
39
+ const recipientElements = isDraft ? null : el.querySelectorAll('[role=heading] [email]:not(:first-child), [role=heading] + div [email]');
40
+ const attachmentsArea = isDraft || !body || viewState !== 'EXPANDED' ? null : ec.run('attachments area', () => {
41
+ const lastSection = (0, _last.default)(body.parentElement.querySelectorAll('section:last-child'));
42
+ if (!lastSection) {
43
+ throw new Error('element not found');
44
+ }
45
+ return lastSection;
46
+ });
74
47
  const elements = {
75
48
  heading,
76
49
  body,
77
50
  sender,
78
51
  toggleCollapse,
79
- attachmentsArea,
52
+ attachmentsArea
80
53
  };
81
54
  const score = 1 - ec.errorCount() / ec.runCount();
82
55
  return {
@@ -86,12 +59,11 @@ export default function parser(el: HTMLElement) {
86
59
  viewState,
87
60
  inboxMessageId,
88
61
  recipientElements,
89
- isDraft,
62
+ isDraft
90
63
  },
91
64
  score,
92
- errors: ec.getErrorLogs(),
65
+ errors: ec.getErrorLogs()
93
66
  };
94
67
  }
95
68
 
96
- /*:: const x = parser(({}:any)); */
97
- export type Parsed = typeof x;
69
+ /*:: const x = parser(({}:any)); */
@@ -1,10 +1,14 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import ErrorCollector from '../../../../lib/ErrorCollector';
4
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
5
-
6
- export default function parser(el: HTMLElement) {
7
- const errors: any[] = [];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = parser;
8
+ var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
+ function parser(el) {
11
+ const errors = [];
8
12
  if (el.childElementCount < 2) {
9
13
  errors.push('expected more children');
10
14
  }
@@ -18,13 +22,11 @@ export default function parser(el: HTMLElement) {
18
22
  if (window.innerHeight - rect.bottom > 100) {
19
23
  errors.push('expected element to border bottom side of screen');
20
24
  }
21
-
22
25
  return {
23
26
  elements: {},
24
27
  score: errors.length === 0 ? 1 : 0,
25
- errors,
28
+ errors
26
29
  };
27
30
  }
28
31
 
29
- /*:: const x = parser(({}:any)); */
30
- export type Parsed = typeof x;
32
+ /*:: const x = parser(({}:any)); */
@@ -1,28 +1,28 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import ErrorCollector from '../../../../lib/ErrorCollector';
4
- import querySelectorOne from '../../../../lib/dom/querySelectorOne';
5
-
6
- export default function parser(el: HTMLElement) {
7
- const collector = new ErrorCollector('searchBar');
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = parser;
8
+ var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
+ var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
+ function parser(el) {
11
+ const collector = new _ErrorCollector.default('searchBar');
8
12
  const rect = el.getBoundingClientRect();
9
-
10
13
  collector.run('position check', () => {
11
14
  if (rect.top > 100) {
12
15
  throw new Error('expected element to border top of screen');
13
16
  }
14
17
  });
15
-
16
- const searchInput = collector.run('searchInput', () =>
17
- querySelectorOne(el, 'div[role=search] input[role=combobox]')
18
- );
19
-
18
+ const searchInput = collector.run('searchInput', () => (0, _querySelectorOne.default)(el, 'div[role=search] input[role=combobox]'));
20
19
  return {
21
- elements: { searchInput },
20
+ elements: {
21
+ searchInput
22
+ },
22
23
  score: 1 - collector.errorCount() / collector.runCount(),
23
- errors: collector.getErrorLogs(),
24
+ errors: collector.getErrorLogs()
24
25
  };
25
26
  }
26
27
 
27
- /*:: const x = parser(({}:any)); */
28
- export type Parsed = typeof x;
28
+ /*:: const x = parser(({}:any)); */