@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,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)); */