@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,49 +1,44 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type { PageParserTreeOptions } from 'page-parser-tree';
4
-
5
- import Logger from '../../lib/logger';
6
- import censorHTMLtree from '../../../common/censorHTMLtree';
7
- import t from 'transducers.js';
8
- import find from 'lodash/find';
9
- import uniq from 'lodash/uniq';
10
- import closest from 'closest-ng';
11
-
12
- const pageParserOptions: PageParserTreeOptions = {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _logger = _interopRequireDefault(require("../../lib/logger"));
9
+ var _censorHTMLtree = _interopRequireDefault(require("../../../common/censorHTMLtree"));
10
+ var _transducers = _interopRequireDefault(require("transducers.js"));
11
+ var _find = _interopRequireDefault(require("lodash/find"));
12
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
13
+ var _closestNg = _interopRequireDefault(require("closest-ng"));
14
+ const pageParserOptions = {
13
15
  tags: {
14
16
  message: {
15
- ownedBy: ['thread'],
17
+ ownedBy: ['thread']
16
18
  },
17
19
  attachmentCard: {
18
- ownedBy: ['message', 'threadRow', 'bundleRow'],
20
+ ownedBy: ['message', 'threadRow', 'bundleRow']
19
21
  },
20
22
  inlineCompose: {
21
- ownedBy: ['thread'],
22
- },
23
+ ownedBy: ['thread']
24
+ }
23
25
  },
24
26
  finders: {
25
27
  leftNav: {
26
- interval: (count, timeRunning) =>
27
- count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
28
+ interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
28
29
  fn(root) {
29
- return root.querySelectorAll(
30
- 'nav[aria-hidden]:not([role]) div[role=menu]'
31
- );
32
- },
30
+ return root.querySelectorAll('nav[aria-hidden]:not([role]) div[role=menu]');
31
+ }
33
32
  },
34
33
  thread: {
35
34
  fn(root) {
36
- return root.querySelectorAll(
37
- 'div[aria-expanded=true][data-item-id*="thread-"], div.scroll-list-item-open[data-item-id*="thread-"]'
38
- );
39
- },
35
+ return root.querySelectorAll('div[aria-expanded=true][data-item-id*="thread-"], div.scroll-list-item-open[data-item-id*="thread-"]');
36
+ }
40
37
  },
41
38
  message: {
42
39
  fn(root) {
43
- return root.querySelectorAll(
44
- 'div[role=listitem][aria-expanded][data-msg-id*="msg-"]'
45
- );
46
- },
40
+ return root.querySelectorAll('div[role=listitem][aria-expanded][data-msg-id*="msg-"]');
41
+ }
47
42
  },
48
43
  attachmentCard: {
49
44
  fn(root) {
@@ -51,402 +46,220 @@ const pageParserOptions: PageParserTreeOptions = {
51
46
  div[data-msg-id] section > div > div[tabindex][title],
52
47
  div[jsaction*="update_chip_carousel_arrows"] div[role=listitem][tabindex][jsaction]
53
48
  `);
54
- },
49
+ }
55
50
  },
56
51
  attachmentOverlay: {
57
- fn: (function () {
58
- const _t = t.compose(
59
- t.filter((iframe) => iframe.style.display !== 'none'),
60
- t.mapcat((iframe) =>
61
- Array.prototype.slice.call(
62
- iframe.contentDocument.querySelectorAll(
63
- 'div[role=dialog]:not([aria-hidden=true])'
64
- )
65
- )
66
- )
67
- );
68
-
69
- return (root) => {
70
- return t.toArray(
71
- Array.prototype.slice.call(
72
- root.querySelectorAll('iframe[frameborder]:not([src])')
73
- ),
74
- _t
75
- );
52
+ fn: function () {
53
+ const _t = _transducers.default.compose(_transducers.default.filter(iframe => iframe.style.display !== 'none'), _transducers.default.mapcat(iframe => Array.prototype.slice.call(iframe.contentDocument.querySelectorAll('div[role=dialog]:not([aria-hidden=true])'))));
54
+ return root => {
55
+ return _transducers.default.toArray(Array.prototype.slice.call(root.querySelectorAll('iframe[frameborder]:not([src])')), _t);
76
56
  };
77
- })(),
57
+ }()
78
58
  },
79
59
  nativeDrawer: {
80
60
  fn(root) {
81
- const drawerUploadFilesBtn = root.querySelector(
82
- 'div[jsaction="global.exit_full_screen"] div[role=dialog][aria-busy=true] div[role=link][jsaction$=".open_local_file_picker"]'
83
- );
61
+ const drawerUploadFilesBtn = root.querySelector('div[jsaction="global.exit_full_screen"] div[role=dialog][aria-busy=true] div[role=link][jsaction$=".open_local_file_picker"]');
84
62
  if (drawerUploadFilesBtn) {
85
- const drawer = closest(drawerUploadFilesBtn, '[role=dialog]');
63
+ const drawer = (0, _closestNg.default)(drawerUploadFilesBtn, '[role=dialog]');
86
64
  if (drawer) return [drawer];
87
65
  }
88
66
  return [];
89
- },
67
+ }
90
68
  },
91
69
  searchBar: {
92
- interval: (count, timeRunning) =>
93
- count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
70
+ interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
94
71
  fn(root) {
95
- return root.querySelectorAll(
96
- 'nav[role=banner] div[jsaction*="scroll_to_top"] > :last-child > div:empty + div:not(:empty)'
97
- );
98
- },
72
+ return root.querySelectorAll('nav[role=banner] div[jsaction*="scroll_to_top"] > :last-child > div:empty + div:not(:empty)');
73
+ }
99
74
  },
100
75
  searchAutocompleteResults: {
101
76
  fn(root) {
102
- return root.querySelectorAll(
103
- 'div[jsaction*="clickonly:global.empty_space_click"] div[role=listbox] ul:last-of-type'
104
- );
105
- },
77
+ return root.querySelectorAll('div[jsaction*="clickonly:global.empty_space_click"] div[role=listbox] ul:last-of-type');
78
+ }
106
79
  },
107
80
  chatSidebar: {
108
- interval: (count) => (count === 0 ? 5 * 1000 : 120 * 1000),
81
+ interval: count => count === 0 ? 5 * 1000 : 120 * 1000,
109
82
  fn(root) {
110
83
  return [root.querySelector('#in')].filter(Boolean);
111
- },
84
+ }
112
85
  },
113
86
  appToolbarLocation: {
114
- interval: (count, timeRunning) =>
115
- count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
87
+ interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
116
88
  fn(root) {
117
- const chatToggle = root.querySelector(
118
- 'div[role=button][jsaction*="global.toggle_chat_roster"]'
119
- );
120
- const appToolbarLocation = chatToggle
121
- ? (chatToggle: any).parentElement.parentElement.parentElement
122
- : null;
89
+ const chatToggle = root.querySelector('div[role=button][jsaction*="global.toggle_chat_roster"]');
90
+ const appToolbarLocation = chatToggle ? chatToggle.parentElement.parentElement.parentElement : null;
123
91
  return appToolbarLocation ? [appToolbarLocation] : [];
124
- },
92
+ }
125
93
  },
126
-
127
94
  inlineCompose: {
128
95
  fn(root) {
129
- const inlineComposesByPopoutBtn = Array.prototype.filter
130
- .call(
131
- root.querySelectorAll(
132
- 'div[role=main] div[role=list] div[role=listitem] div[jsvs] button[jsaction$=".quick_compose_popout_mole"]'
133
- ),
134
- (el) => el.style.display !== 'none'
135
- )
136
- .map((el) => closest(el, '[jsvs]'));
137
-
138
- const inlineComposesByBody = Array.prototype.map.call(
139
- root.querySelectorAll(
140
- 'div[role=main] div[role=list] ~ div div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"], div[role=main] div[role=listitem][aria-multiselectable] div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"]'
141
- ),
142
- (el) => closest(el, '[jsvs]')
143
- );
96
+ const inlineComposesByPopoutBtn = Array.prototype.filter.call(root.querySelectorAll('div[role=main] div[role=list] div[role=listitem] div[jsvs] button[jsaction$=".quick_compose_popout_mole"]'), el => el.style.display !== 'none').map(el => (0, _closestNg.default)(el, '[jsvs]'));
97
+ const inlineComposesByBody = Array.prototype.map.call(root.querySelectorAll('div[role=main] div[role=list] ~ div div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"], div[role=main] div[role=listitem][aria-multiselectable] div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"]'), el => (0, _closestNg.default)(el, '[jsvs]'));
144
98
 
145
99
  // The above are currently expected to match, though they don't match
146
100
  // for all of our historical data.
147
101
 
148
- const inlineComposes = uniq(
149
- inlineComposesByPopoutBtn.concat(inlineComposesByBody)
150
- );
102
+ const inlineComposes = (0, _uniq.default)(inlineComposesByPopoutBtn.concat(inlineComposesByBody));
151
103
  return inlineComposes;
152
- },
104
+ }
153
105
  },
154
106
  regularCompose: {
155
107
  fn(root) {
156
- return Array.prototype.filter.call(
157
- root.querySelectorAll('div[role=dialog]:not(.inboxsdk__mole_view)'),
158
- (el) =>
159
- el.querySelector(
160
- 'div[jsaction^="compose"][jsaction$=".focus_mole"]'
161
- ) && !closest(el, 'div[tabindex][jsaction*="exit_full_screen"]')
162
- );
163
- },
108
+ return Array.prototype.filter.call(root.querySelectorAll('div[role=dialog]:not(.inboxsdk__mole_view)'), el => el.querySelector('div[jsaction^="compose"][jsaction$=".focus_mole"]') && !(0, _closestNg.default)(el, 'div[tabindex][jsaction*="exit_full_screen"]'));
109
+ }
164
110
  },
165
111
  fullscreenCompose: {
166
112
  fn(root) {
167
- return Array.prototype.filter.call(
168
- root.querySelectorAll(
169
- 'div[tabindex][jsaction*="exit_full_screen"] div[role=dialog]'
170
- ),
171
- (el) =>
172
- el.querySelector(
173
- 'div[jsaction^="compose"][jsaction$=".focus_mole"]'
174
- )
175
- );
176
- },
177
- },
113
+ return Array.prototype.filter.call(root.querySelectorAll('div[tabindex][jsaction*="exit_full_screen"] div[role=dialog]'), el => el.querySelector('div[jsaction^="compose"][jsaction$=".focus_mole"]'));
114
+ }
115
+ }
178
116
  },
179
- watchers: [
180
- {
181
- sources: [null],
182
- tag: 'leftNav',
183
- selectors: [
184
- 'body',
185
- '[id][jsaction]',
186
- 'nav[aria-hidden]:not([role])',
187
- 'div[role=menu]',
188
- ],
189
- },
190
- {
191
- sources: [null],
192
- tag: 'topRow',
193
- selectors: [
194
- 'body',
195
- '[id][jsaction]',
196
- 'div[jsaction]:not([role])',
197
- '*',
198
- { $or: [['[role=main]'], [':not([role])', '*', '[role=main]']] },
199
- '[role=application]',
200
- '[role=list]',
201
- '*',
202
- '*',
203
- '.scroll-list-section-body',
204
- '[role=listitem]',
205
- ],
206
- },
207
- {
208
- sources: ['topRow'],
209
- tag: 'bundleRow',
210
- selectors: [
211
- {
212
- $filter: (el) =>
213
- !/thread-/.test(el.getAttribute('data-item-id') || ''),
214
- },
215
- ],
216
- },
217
- {
218
- sources: ['topRow'],
219
- tag: 'threadRow',
220
- selectors: [
221
- {
222
- $filter: (el) =>
223
- /thread-/.test(el.getAttribute('data-item-id') || ''),
224
- },
225
- ],
226
- },
227
- {
228
- sources: ['bundleRow'],
229
- tag: 'threadRow',
230
- selectors: [
231
- {
232
- $watch: {
233
- attributeFilter: ['aria-expanded'],
234
- cond: '[aria-expanded=true]',
235
- },
236
- },
237
- '[role=list]',
238
- '*',
239
- ':not([id])',
240
- '*',
241
- '*',
242
- '[role=listitem]',
243
- ],
244
- },
245
- {
246
- sources: ['threadRow'],
247
- tag: 'collapsedThreadRow',
248
- selectors: [
249
- {
250
- $watch: {
251
- attributeFilter: ['class'],
252
- cond: ':not(.scroll-list-item-open), .scroll-list-item-measuring-open',
253
- },
254
- },
255
- ':first-child',
256
- { $map: (el) => (el: any).parentElement },
257
- ],
258
- },
259
- {
260
- sources: ['threadRow'],
261
- tag: 'thread',
262
- selectors: [
263
- {
264
- $watch: {
265
- attributeFilter: ['class'],
266
- cond: '.scroll-list-item-open',
267
- },
268
- },
269
- ],
270
- },
271
- {
272
- sources: ['thread'],
273
- tag: 'message',
274
- selectors: [
275
- '*',
276
- ':not([role=heading])',
277
- '[role=list]',
278
- 'div',
279
- {
280
- $watch: {
281
- attributeFilter: ['role', 'data-msg-id'],
282
- cond: '[role=listitem][data-msg-id]',
283
- },
284
- },
285
- ],
286
- },
287
-
288
- {
289
- sources: ['message'],
290
- tag: 'attachmentCard',
291
- selectors: [
292
- '*',
293
- '*',
294
- 'section',
295
- '*',
296
- { $filter: (el) => el.style.display !== 'none' },
297
- 'div[tabindex]',
298
- { $filter: (el) => el.style.display !== 'none' },
299
- ],
300
- },
301
- {
302
- sources: ['bundleRow', 'threadRow'],
303
- tag: 'attachmentCard',
304
- selectors: [
305
- '*',
306
- '[jsaction]',
307
- '[role=list][jsaction]',
308
- '*',
309
- 'div[role=listitem]',
310
- { $watch: { attributeFilter: ['tabindex'], cond: '[tabindex]' } },
311
- { $filter: (el) => el.style.display !== 'none' },
312
- ],
313
- },
314
- {
315
- sources: [null],
316
- tag: 'attachmentOverlay',
317
- selectors: [
318
- 'body',
319
- 'iframe[id][frameborder]:not([src])',
320
- {
321
- $map: (el) =>
322
- (el: any).contentDocument && (el: any).contentDocument.body,
323
- },
324
- 'div[aria-label][role=dialog]',
325
- {
326
- $watch: {
327
- attributeFilter: ['aria-hidden'],
328
- cond: ':not([aria-hidden=true])',
329
- },
330
- },
331
- ],
332
- },
333
-
334
- {
335
- sources: [null],
336
- tag: 'chatSidebar',
337
- selectors: [
338
- 'body',
339
- '[id][jsaction]',
340
- 'div[id]',
341
- 'div[class]',
342
- 'div.in#in',
343
- ],
344
- },
345
-
346
- {
347
- sources: [null],
348
- tag: 'searchAutocompleteResults',
349
- selectors: [
350
- 'body',
351
- '[id][jsaction]',
352
- '[id][jsaction]',
353
- 'div[class]',
354
- 'div[class]',
355
- '[role=listbox]',
356
- 'ul:last-of-type',
357
- ],
358
- },
359
-
360
- {
361
- sources: ['thread'],
362
- tag: 'inlineCompose',
363
- selectors: [
364
- '*',
365
- ':not([role=heading])',
366
- ':not([role=list])',
367
- '*',
368
- '[jsvs]',
369
- {
370
- $map(el) {
371
- // <2016-11-02 support
372
- const oldButton = find(
373
- el.children,
374
- (child) => child.nodeName === 'BUTTON'
375
- );
376
- if (oldButton) return oldButton;
377
-
378
- const buttonEl = el.querySelector(
379
- 'div[jsaction="global.none"] > div[role=button]'
380
- );
381
- if (buttonEl) return (buttonEl.parentElement: any);
382
-
383
- Logger.error(new Error('inline compose button not found'), {
384
- el,
385
- html: censorHTMLtree(el),
386
- });
387
- },
388
- },
389
- {
390
- $watch: {
391
- attributeFilter: ['style'],
392
- cond: (el) => el.style.display !== 'none',
393
- },
394
- },
395
- { $map: (el) => (el.parentElement: any) },
396
- ],
397
- },
398
- {
399
- sources: [null],
400
- tag: 'regularCompose',
401
- selectors: [
402
- 'body',
403
- 'div[id][jsaction]',
404
- 'div[id][class]:not([role])',
405
- 'div[class]',
406
- 'div[id]',
407
- 'div[jstcache][class]:not([aria-hidden]):not([tabindex])',
408
- {
409
- $map(el) {
410
- const composeEl = el.querySelector(
411
- 'div[role=dialog]:not(.inboxsdk__mole_view)'
412
- );
413
- if (!composeEl) {
414
- Logger.error(new Error('compose dialog element not found'), {
415
- html: censorHTMLtree(el),
416
- });
417
- }
418
- return composeEl;
419
- },
420
- },
421
- ],
422
- },
423
- {
424
- sources: [null],
425
- tag: 'fullscreenCompose',
426
- selectors: [
427
- 'body',
428
- '[id][jsaction]',
429
- 'div[id]:not([jsaction])',
430
- 'div[tabindex][jsaction*="exit_full_screen"]',
431
- '*',
432
- '*',
433
- '*',
434
- '*',
435
- '*',
436
- '[role=dialog]:not(.inboxsdk__drawer_view)',
437
- ],
438
- },
439
-
440
- {
441
- sources: ['searchBar'],
442
- tag: 'listToolBar',
443
- selectors: [
444
- { $map: (el) => (el.parentElement: any) },
445
- 'div:empty + div:not(:empty) + div',
446
- 'ul[jsaction]',
447
- ],
448
- },
449
- ],
117
+ watchers: [{
118
+ sources: [null],
119
+ tag: 'leftNav',
120
+ selectors: ['body', '[id][jsaction]', 'nav[aria-hidden]:not([role])', 'div[role=menu]']
121
+ }, {
122
+ sources: [null],
123
+ tag: 'topRow',
124
+ selectors: ['body', '[id][jsaction]', 'div[jsaction]:not([role])', '*', {
125
+ $or: [['[role=main]'], [':not([role])', '*', '[role=main]']]
126
+ }, '[role=application]', '[role=list]', '*', '*', '.scroll-list-section-body', '[role=listitem]']
127
+ }, {
128
+ sources: ['topRow'],
129
+ tag: 'bundleRow',
130
+ selectors: [{
131
+ $filter: el => !/thread-/.test(el.getAttribute('data-item-id') || '')
132
+ }]
133
+ }, {
134
+ sources: ['topRow'],
135
+ tag: 'threadRow',
136
+ selectors: [{
137
+ $filter: el => /thread-/.test(el.getAttribute('data-item-id') || '')
138
+ }]
139
+ }, {
140
+ sources: ['bundleRow'],
141
+ tag: 'threadRow',
142
+ selectors: [{
143
+ $watch: {
144
+ attributeFilter: ['aria-expanded'],
145
+ cond: '[aria-expanded=true]'
146
+ }
147
+ }, '[role=list]', '*', ':not([id])', '*', '*', '[role=listitem]']
148
+ }, {
149
+ sources: ['threadRow'],
150
+ tag: 'collapsedThreadRow',
151
+ selectors: [{
152
+ $watch: {
153
+ attributeFilter: ['class'],
154
+ cond: ':not(.scroll-list-item-open), .scroll-list-item-measuring-open'
155
+ }
156
+ }, ':first-child', {
157
+ $map: el => el.parentElement
158
+ }]
159
+ }, {
160
+ sources: ['threadRow'],
161
+ tag: 'thread',
162
+ selectors: [{
163
+ $watch: {
164
+ attributeFilter: ['class'],
165
+ cond: '.scroll-list-item-open'
166
+ }
167
+ }]
168
+ }, {
169
+ sources: ['thread'],
170
+ tag: 'message',
171
+ selectors: ['*', ':not([role=heading])', '[role=list]', 'div', {
172
+ $watch: {
173
+ attributeFilter: ['role', 'data-msg-id'],
174
+ cond: '[role=listitem][data-msg-id]'
175
+ }
176
+ }]
177
+ }, {
178
+ sources: ['message'],
179
+ tag: 'attachmentCard',
180
+ selectors: ['*', '*', 'section', '*', {
181
+ $filter: el => el.style.display !== 'none'
182
+ }, 'div[tabindex]', {
183
+ $filter: el => el.style.display !== 'none'
184
+ }]
185
+ }, {
186
+ sources: ['bundleRow', 'threadRow'],
187
+ tag: 'attachmentCard',
188
+ selectors: ['*', '[jsaction]', '[role=list][jsaction]', '*', 'div[role=listitem]', {
189
+ $watch: {
190
+ attributeFilter: ['tabindex'],
191
+ cond: '[tabindex]'
192
+ }
193
+ }, {
194
+ $filter: el => el.style.display !== 'none'
195
+ }]
196
+ }, {
197
+ sources: [null],
198
+ tag: 'attachmentOverlay',
199
+ selectors: ['body', 'iframe[id][frameborder]:not([src])', {
200
+ $map: el => el.contentDocument && el.contentDocument.body
201
+ }, 'div[aria-label][role=dialog]', {
202
+ $watch: {
203
+ attributeFilter: ['aria-hidden'],
204
+ cond: ':not([aria-hidden=true])'
205
+ }
206
+ }]
207
+ }, {
208
+ sources: [null],
209
+ tag: 'chatSidebar',
210
+ selectors: ['body', '[id][jsaction]', 'div[id]', 'div[class]', 'div.in#in']
211
+ }, {
212
+ sources: [null],
213
+ tag: 'searchAutocompleteResults',
214
+ selectors: ['body', '[id][jsaction]', '[id][jsaction]', 'div[class]', 'div[class]', '[role=listbox]', 'ul:last-of-type']
215
+ }, {
216
+ sources: ['thread'],
217
+ tag: 'inlineCompose',
218
+ selectors: ['*', ':not([role=heading])', ':not([role=list])', '*', '[jsvs]', {
219
+ $map(el) {
220
+ // <2016-11-02 support
221
+ const oldButton = (0, _find.default)(el.children, child => child.nodeName === 'BUTTON');
222
+ if (oldButton) return oldButton;
223
+ const buttonEl = el.querySelector('div[jsaction="global.none"] > div[role=button]');
224
+ if (buttonEl) return buttonEl.parentElement;
225
+ _logger.default.error(new Error('inline compose button not found'), {
226
+ el,
227
+ html: (0, _censorHTMLtree.default)(el)
228
+ });
229
+ }
230
+ }, {
231
+ $watch: {
232
+ attributeFilter: ['style'],
233
+ cond: el => el.style.display !== 'none'
234
+ }
235
+ }, {
236
+ $map: el => el.parentElement
237
+ }]
238
+ }, {
239
+ sources: [null],
240
+ tag: 'regularCompose',
241
+ selectors: ['body', 'div[id][jsaction]', 'div[id][class]:not([role])', 'div[class]', 'div[id]', 'div[jstcache][class]:not([aria-hidden]):not([tabindex])', {
242
+ $map(el) {
243
+ const composeEl = el.querySelector('div[role=dialog]:not(.inboxsdk__mole_view)');
244
+ if (!composeEl) {
245
+ _logger.default.error(new Error('compose dialog element not found'), {
246
+ html: (0, _censorHTMLtree.default)(el)
247
+ });
248
+ }
249
+ return composeEl;
250
+ }
251
+ }]
252
+ }, {
253
+ sources: [null],
254
+ tag: 'fullscreenCompose',
255
+ selectors: ['body', '[id][jsaction]', 'div[id]:not([jsaction])', 'div[tabindex][jsaction*="exit_full_screen"]', '*', '*', '*', '*', '*', '[role=dialog]:not(.inboxsdk__drawer_view)']
256
+ }, {
257
+ sources: ['searchBar'],
258
+ tag: 'listToolBar',
259
+ selectors: [{
260
+ $map: el => el.parentElement
261
+ }, 'div:empty + div:not(:empty) + div', 'ul[jsaction]']
262
+ }]
450
263
  };
451
-
452
- export default pageParserOptions;
264
+ var _default = pageParserOptions;
265
+ exports.default = _default;