@inboxsdk/core 1.2.5 → 1.2.7

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 (328) hide show
  1. package/inboxsdk.js +4462 -456
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/inboxsdk.d.ts +29 -0
  7. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  8. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  9. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  15. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  16. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  17. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  19. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  20. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  21. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  22. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  23. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  24. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  25. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  26. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  27. package/src/build/exec.js +0 -26
  28. package/src/build/spawn.js +0 -17
  29. package/src/common/ajax.js +0 -90
  30. package/src/common/cachebust-url.js +0 -10
  31. package/src/common/censorHTMLstring.js +0 -37
  32. package/src/common/censorHTMLtree.js +0 -28
  33. package/src/common/censorJSONTree.js +0 -15
  34. package/src/common/connectivity-test.js +0 -21
  35. package/src/common/defer.js +0 -11
  36. package/src/common/find-parent.js +0 -10
  37. package/src/common/get-extension-id.js +0 -7
  38. package/src/common/get-or-fail.js +0 -8
  39. package/src/common/get-session-id.js +0 -14
  40. package/src/common/get-stack-trace.js +0 -6
  41. package/src/common/html-to-text.js +0 -7
  42. package/src/common/isElementVisible.js +0 -6
  43. package/src/common/load-script.js +0 -126
  44. package/src/common/log-error.js +0 -185
  45. package/src/common/quoted-split.js +0 -18
  46. package/src/common/rate-limit-queuer.js +0 -57
  47. package/src/common/rate-limit.js +0 -14
  48. package/src/common/version.js +0 -8
  49. package/src/inboxsdk-js/header.js +0 -19
  50. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  51. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  52. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  53. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  54. package/src/inboxsdk-js/inboxsdk.js +0 -23
  55. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  56. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -28
  57. package/src/injected-js/gmail/constants.js +0 -2
  58. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  59. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  60. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  61. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  62. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  63. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  64. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  65. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  66. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  67. package/src/injected-js/injected-logger.js +0 -50
  68. package/src/injected-js/main.js +0 -49
  69. package/src/injected-js/message-metadata-holder.js +0 -103
  70. package/src/injected-js/setup-data-exposer.js +0 -135
  71. package/src/injected-js/setup-error-silencer.js +0 -15
  72. package/src/injected-js/setup-event-reemitter.js +0 -47
  73. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  74. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  75. package/src/injected-js/setupPushStateListener.js +0 -14
  76. package/src/injected-js/xhr-helper.js +0 -43
  77. package/src/injected-js/xhr-proxy-factory.js +0 -537
  78. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  79. package/src/platform-implementation-js/constants/router.js +0 -60
  80. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  81. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  82. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  83. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  84. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  124. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  125. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  126. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  127. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  128. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  129. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  130. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  131. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -338
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  182. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  183. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  184. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  185. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  186. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  198. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  199. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  200. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  201. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  202. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  203. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  204. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  205. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  206. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  207. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  208. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  209. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  210. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  211. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  212. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  213. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  214. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  215. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  216. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  217. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  218. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  219. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  220. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  221. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  222. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  223. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  224. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  225. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  226. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  227. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  228. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  229. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  230. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  231. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  232. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  233. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  234. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  235. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  236. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  237. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  238. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  239. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  240. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  241. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  242. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  243. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  244. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  245. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  246. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  247. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  248. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  249. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  250. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  251. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  252. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  253. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  254. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  255. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  256. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  257. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  258. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  259. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  260. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  261. package/src/platform-implementation-js/lib/idMap.js +0 -40
  262. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  263. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  264. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -13
  265. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  266. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  267. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  268. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  269. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  270. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  271. package/src/platform-implementation-js/lib/logger.js +0 -439
  272. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  273. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  274. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  275. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  276. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  277. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  278. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  279. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  280. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  281. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  282. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  283. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  284. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  285. package/src/platform-implementation-js/main.js +0 -42
  286. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  287. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  288. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  289. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  290. package/src/platform-implementation-js/namespaces/global.js +0 -30
  291. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  292. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  293. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  294. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  295. package/src/platform-implementation-js/namespaces/router.js +0 -139
  296. package/src/platform-implementation-js/namespaces/search.js +0 -29
  297. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  298. package/src/platform-implementation-js/namespaces/user.js +0 -57
  299. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  300. package/src/platform-implementation-js/platform-implementation.js +0 -178
  301. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  302. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  303. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  304. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  305. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  306. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  307. package/src/platform-implementation-js/views/compose-view.js +0 -310
  308. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  309. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  310. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  311. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  312. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  313. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  314. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  315. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  316. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  317. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  318. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  319. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  320. package/src/platform-implementation-js/views/section-view.js +0 -60
  321. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  322. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  323. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  324. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  325. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  326. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  327. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  328. package/src/platform-implementation-js/widgets/top-message-bar-view.js +0 -15
@@ -1,178 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-empty-function */
2
- import SafeEventEmitter from './lib/safe-event-emitter';
3
- import { BUILD_VERSION } from '../common/version';
4
- import get from '../common/get-or-fail';
5
- import Membrane from './lib/Membrane';
6
- import AttachmentCardView from './views/conversations/attachment-card-view';
7
- import GmailAttachmentCardView from './dom-driver/gmail/views/gmail-attachment-card-view';
8
- import MessageView from './views/conversations/message-view';
9
- import GmailMessageView from './dom-driver/gmail/views/gmail-message-view';
10
- import ThreadView from './views/conversations/thread-view';
11
- import GmailThreadView from './dom-driver/gmail/views/gmail-thread-view';
12
- import ThreadRowView from './views/thread-row-view';
13
- import GmailThreadRowView from './dom-driver/gmail/views/gmail-thread-row-view';
14
- import ComposeView from './views/compose-view';
15
- import GmailComposeView from './dom-driver/gmail/views/gmail-compose-view';
16
- import DummyRouteViewDriver from './views/route-view/dummy-route-view-driver';
17
- import RouteView from './views/route-view/route-view';
18
- import GmailRouteView from './dom-driver/gmail/views/gmail-route-view/gmail-route-view';
19
- import ButterBar from './namespaces/butter-bar';
20
- import Compose from './namespaces/compose';
21
- import Conversations from './namespaces/conversations';
22
- import Keyboard from './namespaces/keyboard';
23
- import Widgets from './namespaces/widgets';
24
- import Modal from './namespaces/modal';
25
- import Lists from './namespaces/lists';
26
- import NavMenu from './namespaces/nav-menu';
27
- import AppMenu from './namespaces/app-menu';
28
- import Router from './namespaces/router';
29
- import Search from './namespaces/search';
30
- import Toolbars from './namespaces/toolbars';
31
- import User from './namespaces/user';
32
- import Global from './namespaces/global';
33
- import GmailDriver from './dom-driver/gmail/gmail-driver';
34
- import Logger from './lib/logger';
35
- import isValidAppId from './lib/is-valid-app-id';
36
- const loadedAppIds = new Set();
37
- const memberMap = new WeakMap();
38
- export class PlatformImplementation extends SafeEventEmitter {
39
- destroyed;
40
- LOADER_VERSION;
41
- IMPL_VERSION;
42
- Compose;
43
- Conversations;
44
- Keyboard;
45
- User;
46
- Lists;
47
- NavMenu;
48
- AppMenu;
49
- Router;
50
- Search;
51
- Toolbars;
52
- ButterBar;
53
- Widgets;
54
- Global;
55
- Modal;
56
- Logger;
57
- constructor(driver, appId, piOpts) {
58
- super();
59
- const { appName, appIconUrl, VERSION: LOADER_VERSION } = piOpts;
60
- const members = {
61
- driver,
62
- };
63
- memberMap.set(this, members);
64
- if (process.env.NODE_ENV !== 'production') {
65
- this._members = members;
66
- }
67
- const membrane = new Membrane([
68
- [
69
- GmailComposeView,
70
- (viewDriver) => new ComposeView(driver, viewDriver, membrane),
71
- ],
72
- [
73
- GmailAttachmentCardView,
74
- (viewDriver) => new AttachmentCardView(viewDriver, driver, membrane),
75
- ],
76
- [
77
- GmailMessageView,
78
- (viewDriver) => new MessageView(viewDriver, appId, membrane, this.Conversations, driver),
79
- ],
80
- [
81
- GmailThreadView,
82
- (viewDriver) => new ThreadView(viewDriver, appId, driver, membrane),
83
- ],
84
- [GmailThreadRowView, (viewDriver) => new ThreadRowView(viewDriver)],
85
- [GmailRouteView, (viewDriver) => new RouteView(viewDriver)],
86
- [DummyRouteViewDriver, (viewDriver) => new RouteView(viewDriver)],
87
- ]);
88
- this.destroyed = false;
89
- this.LOADER_VERSION = LOADER_VERSION;
90
- this.IMPL_VERSION = BUILD_VERSION;
91
- this.ButterBar = new ButterBar(appId, driver);
92
- driver.setButterBar(this.ButterBar);
93
- this.Compose = new Compose(driver, membrane);
94
- this.Conversations = new Conversations(appId, driver, membrane);
95
- this.Keyboard = new Keyboard(appId, appName, appIconUrl, driver);
96
- this.User = new User(driver, piOpts);
97
- this.Lists = new Lists(appId, driver, membrane);
98
- this.NavMenu = new NavMenu(appId, driver);
99
- this.AppMenu = new AppMenu(driver);
100
- this.Router = new Router(appId, driver, membrane);
101
- this.Search = new Search(appId, driver);
102
- this.Toolbars = new Toolbars(appId, driver, membrane, piOpts);
103
- this.Widgets = new Widgets(appId, driver);
104
- if (piOpts.REQUESTED_API_VERSION === 1) {
105
- // Modal is deprecated; just drop it when apps switch to the next version
106
- // whenever we start that.
107
- this.Modal = new Modal(appId, driver, piOpts);
108
- }
109
- if (piOpts.REQUESTED_API_VERSION >= 2) {
110
- // new Global namespace only available in v2 or above
111
- this.Global = new Global(appId, driver, piOpts);
112
- }
113
- this.Logger = driver.getLogger().getAppLogger();
114
- }
115
- destroy() {
116
- if (!this.destroyed) {
117
- this.destroyed = true;
118
- get(memberMap, this).driver.destroy();
119
- this.emit('destroy');
120
- }
121
- }
122
- }
123
- // returns a promise for the PlatformImplementation object
124
- export function makePlatformImplementation(appId, _opts, envData) {
125
- if (typeof appId !== 'string') {
126
- throw new Error('appId must be a string');
127
- }
128
- const opts = {
129
- // defaults
130
- globalErrorLogging: true,
131
- eventTracking: true,
132
- inboxBeta: false,
133
- ..._opts,
134
- };
135
- opts.REQUESTED_API_VERSION = +opts.REQUESTED_API_VERSION;
136
- switch (opts.REQUESTED_API_VERSION) {
137
- case 2:
138
- opts.inboxBeta = true;
139
- break;
140
- case 1:
141
- break;
142
- default:
143
- throw new Error('InboxSDK: Unsupported API version ' + opts.REQUESTED_API_VERSION);
144
- }
145
- const LOADER_VERSION = opts.VERSION;
146
- const IMPL_VERSION = BUILD_VERSION;
147
- const logger = new Logger(appId, opts, LOADER_VERSION, IMPL_VERSION);
148
- const origin = (process.env.NODE_ENV === 'test' && global.__test_origin) ||
149
- document.location.origin;
150
- if (origin !== 'https://mail.google.com') {
151
- // never resolve
152
- return new Promise(() => { });
153
- }
154
- const driver = new GmailDriver(appId, LOADER_VERSION, IMPL_VERSION, logger, opts, envData);
155
- return driver.onready.then(() => {
156
- if (!isValidAppId(appId)) {
157
- console.error(`
158
- ===========================================================
159
- InboxSDK: You have loaded InboxSDK with an invalid appId:
160
- ${appId}
161
- Registering an appId is free. Please see
162
- https://www.inboxsdk.com/docs/#RequiredSetup
163
- ===========================================================
164
- `);
165
- driver.showAppIdWarning();
166
- }
167
- if (driver.isRunningInPageContext()) {
168
- console.warn('Running the InboxSDK outside of an extension content script is not recommended!');
169
- }
170
- logger.eventSdkPassive('instantiate');
171
- const pi = new PlatformImplementation(driver, appId, opts);
172
- if (!loadedAppIds.has(appId)) {
173
- loadedAppIds.add(appId);
174
- logger.eventSdkPassive('load');
175
- }
176
- return pi;
177
- });
178
- }
@@ -1,16 +0,0 @@
1
- import SafeEventEmitter from '../lib/safe-event-emitter';
2
- export default class SimpleElementView extends SafeEventEmitter {
3
- el;
4
- destroyed = false;
5
- constructor(el) {
6
- super();
7
- this.el = el;
8
- }
9
- destroy() {
10
- if (this.destroyed)
11
- return;
12
- this.destroyed = true;
13
- this.emit('destroy');
14
- this.el.remove();
15
- }
16
- }
@@ -1,442 +0,0 @@
1
- import Kefir from 'kefir';
2
- import kefirBus from 'kefir-bus';
3
- import cx from 'classnames';
4
- import EventEmitter from '../lib/safe-event-emitter';
5
- import { GmailAppMenuItemView, NATIVE_CLASS, INBOXSDK_CLASS, ICON_ELEMENT_SELECTOR, } from '../dom-driver/gmail/views/gmail-app-menu-item-view';
6
- import { NATIVE_CLASS as PANEL_NATIVE_CLASS, CollapsiblePanelView, } from './collapsible-panel-view';
7
- import { addCollapsiblePanel } from '../dom-driver/gmail/gmail-driver/add-collapsible-panel';
8
- import GmailElementGetter from '../dom-driver/gmail/gmail-element-getter';
9
- import defer from '../../common/defer';
10
- var NativeAppMenuClassName;
11
- (function (NativeAppMenuClassName) {
12
- NativeAppMenuClassName["MAIL"] = "XJ";
13
- NativeAppMenuClassName["CHAT"] = "ao4";
14
- NativeAppMenuClassName["SPACES"] = "aIt";
15
- NativeAppMenuClassName["MEET"] = "adZ";
16
- })(NativeAppMenuClassName || (NativeAppMenuClassName = {}));
17
- // Native Gmail menu button => the panel class names mapping
18
- const nativeButtonToPanelMap = new Map([
19
- [NativeAppMenuClassName.MAIL, 'aIH'],
20
- [NativeAppMenuClassName.CHAT, 'arL'],
21
- [NativeAppMenuClassName.SPACES, 'arM'],
22
- [NativeAppMenuClassName.MEET, undefined], // Meet
23
- ]);
24
- /**
25
- * Mail routes list is not exhaustive
26
- */
27
- const MAIL_ROUTES = ['inbox/:page'];
28
- const CHAT_ROUTES = ['chat/welcome', 'chat/dm/:chatID'];
29
- const SPACES_ROUTES = ['rooms/welcome', 'chat/space/:spaceID'];
30
- const MEET_ROUTES = ['calls'];
31
- const routeIDtoMenuItemClass = Object.fromEntries([
32
- ...MAIL_ROUTES.map((route) => [route, NativeAppMenuClassName.MAIL]),
33
- ...CHAT_ROUTES.map((route) => [route, NativeAppMenuClassName.CHAT]),
34
- ...SPACES_ROUTES.map((route) => [route, NativeAppMenuClassName.SPACES]),
35
- ...MEET_ROUTES.map((route) => [route, NativeAppMenuClassName.MEET]),
36
- ]);
37
- /**
38
- * Each AppMenuItemView represents an entry in the app menu of Gmail. Typically the main action of a AppMenuItemView is performed when the user clicks or hovers on the app menu item.
39
- *
40
- * @note Contains both a native Gmail app menu item and a collapsible panel.
41
- */
42
- class AppMenuItemView extends EventEmitter {
43
- static #menuItemChangeStream = Kefir.pool();
44
- static #menuItemChangeBus = kefirBus();
45
- static #menuItemAddedDeferred = defer();
46
- static #routeViewDriverStream;
47
- static #menuItemToPanelMap = new Map();
48
- static #appMenuItemViews = new Set();
49
- static #getActivePanel() {
50
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
51
- const { ACTIVE } = CollapsiblePanelView.elementCss;
52
- const nativePanel = appMenuElement?.querySelector(`.${PANEL_NATIVE_CLASS}.${ACTIVE}`);
53
- return nativePanel;
54
- }
55
- static #getActiveMenuItem() {
56
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
57
- const { ACTIVE } = GmailAppMenuItemView.elementCss;
58
- const button = appMenuElement?.querySelector(`.${NATIVE_CLASS}.${ACTIVE}`);
59
- return button;
60
- }
61
- static #isPanelLess() {
62
- const activePanel = AppMenuItemView.#getActivePanel();
63
- return !activePanel;
64
- }
65
- static #adjustTooltipNub() {
66
- // adjust all menu items' collapsible panel's tooltip nub position
67
- const appMenuElement = GmailElementGetter.getAppMenu();
68
- for (const menuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
69
- const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
70
- if (!panel)
71
- continue;
72
- const nubElement = panel?.querySelector('* > .aTV');
73
- const iconElement = menuItem?.querySelector('.V6');
74
- const iconElementBox = iconElement?.getBoundingClientRect();
75
- const offsetTop = (iconElement?.offsetTop ?? 0) + (iconElementBox?.height ?? 0) * 0.5;
76
- const nubSide = 17;
77
- const nubDiagonal = nubSide * Math.sqrt(2);
78
- const offsetNub = nubDiagonal / 4;
79
- const offset = offsetTop - offsetNub;
80
- if (nubElement && offset) {
81
- nubElement.style.top = `${offset}px`;
82
- }
83
- }
84
- }
85
- static #isPanelDropdownShown() {
86
- const sdkDropdown = document.querySelector('.inboxsdk__menu');
87
- if (sdkDropdown) {
88
- return true;
89
- }
90
- const mailDropdown = document.querySelector('.JM');
91
- if (mailDropdown && mailDropdown.style.display !== 'none') {
92
- return true;
93
- }
94
- const chatAndSpacesDropdown = document.querySelector('.tP');
95
- if (chatAndSpacesDropdown &&
96
- chatAndSpacesDropdown.style.display !== 'none') {
97
- return true;
98
- }
99
- return false;
100
- }
101
- static #setUpRouteViewDriverStream(driver) {
102
- if (AppMenuItemView.#routeViewDriverStream)
103
- return;
104
- AppMenuItemView.#routeViewDriverStream = driver.getRouteViewDriverStream();
105
- // Activate menu items on route changes. Used for deep-links, browser history navigation etc.
106
- AppMenuItemView.#routeViewDriverStream.onValue(async (routeView) => {
107
- const routeViewID = routeView.getRouteID();
108
- const routeType = routeView.getRouteType();
109
- /* Handling custom app menu items */
110
- const descriptors = Array.from(AppMenuItemView.#appMenuItemViews, async (appMenuItemView) => {
111
- const gmailView = await appMenuItemView.#gmailViewPromise;
112
- return [gmailView.menuItemDescriptor, gmailView];
113
- });
114
- const results = await Promise.all(descriptors);
115
- const [, gmailView] = results.find(([descriptor]) => {
116
- return descriptor?.isRouteActive(routeView);
117
- }) ?? [];
118
- if (gmailView?.element) {
119
- AppMenuItemView.#menuItemChangeBus.emit([
120
- 'route-activated',
121
- gmailView.element,
122
- ]);
123
- return;
124
- }
125
- /* Handling native app menu items */
126
- let menuItemClass = '';
127
- if (routeViewID) {
128
- menuItemClass = routeIDtoMenuItemClass[routeViewID];
129
- }
130
- if ((!routeViewID || !menuItemClass) && routeType !== 'CUSTOM') {
131
- menuItemClass = NativeAppMenuClassName.MAIL;
132
- }
133
- const menuItemElement = menuItemClass &&
134
- document.querySelector(`.${menuItemClass}`);
135
- if (menuItemElement) {
136
- AppMenuItemView.#menuItemChangeBus.emit([
137
- 'route-activated',
138
- menuItemElement,
139
- ]);
140
- }
141
- });
142
- }
143
- static {
144
- (async function init() {
145
- const gmailAppMenu = await GmailElementGetter.getAppMenuAsync();
146
- if (!gmailAppMenu) {
147
- return;
148
- }
149
- AppMenuItemView.#menuItemChangeStream.plug(AppMenuItemView.#menuItemChangeBus);
150
- // Set up menu item panel -> menu collapsible panel element mappings
151
- for (const [menuItemClass, panelClass] of nativeButtonToPanelMap) {
152
- const menuItemElement = document.querySelector(`.${NATIVE_CLASS}.${menuItemClass}`);
153
- const panelElement = panelClass
154
- ? document.querySelector(`.${PANEL_NATIVE_CLASS}.${panelClass}`)
155
- : null;
156
- if (menuItemElement) {
157
- AppMenuItemView.#menuItemToPanelMap.set(menuItemElement, panelElement ?? undefined);
158
- }
159
- }
160
- })();
161
- }
162
- static {
163
- AppMenuItemView.#menuItemAddedDeferred.promise.then(() => {
164
- // Set up event listeners we use to control menu UI
165
- // We intercept some events emitted on Gmail (native) menu items to gain full control of the menu (menu items and panels).
166
- // Thus, some native event handlers won't be invoked so we replicate the Gmail's behavior by ourselves.
167
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
168
- for (const nativeMenuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}:not(.${INBOXSDK_CLASS})`) ?? []) {
169
- // Gmail uses this listener for panel hover state activation. It's prevented from propagation and we handle UI updates
170
- const buttonElement = nativeMenuItem.querySelector('.V6.CL');
171
- buttonElement?.addEventListener('mouseenter', (e) => {
172
- e.stopImmediatePropagation();
173
- AppMenuItemView.#menuItemChangeBus.emit([
174
- 'mouseenter',
175
- nativeMenuItem,
176
- e,
177
- ]);
178
- }, true);
179
- // Gmail uses this listener for panel hover state deactivation. It's prevented from propagation and we handle UI updates
180
- nativeMenuItem.addEventListener('mouseleave', (e) => {
181
- e.stopImmediatePropagation();
182
- AppMenuItemView.#menuItemChangeBus.emit([
183
- 'mouseleave',
184
- nativeMenuItem,
185
- e,
186
- ]);
187
- }, true);
188
- // Click event isn't prevented from propagation to let Gmail handle routing. The styling is handled by us
189
- nativeMenuItem.addEventListener('click', () => {
190
- AppMenuItemView.#menuItemChangeBus.emit(['click', nativeMenuItem]);
191
- });
192
- // Handle moving cursor out of panel. We use it to enhance the styling since it won't be handled by Gmail
193
- const panel = AppMenuItemView.#menuItemToPanelMap.get(nativeMenuItem);
194
- panel?.addEventListener('mouseleave', (e) => {
195
- e.stopImmediatePropagation();
196
- AppMenuItemView.#menuItemChangeBus.emit([
197
- 'mouseleave',
198
- nativeMenuItem,
199
- e,
200
- ]);
201
- });
202
- }
203
- });
204
- }
205
- static {
206
- AppMenuItemView.#menuItemChangeStream.onValue(async (v) => {
207
- const [type, menuItem, mouseEvent] = v;
208
- const { ACTIVE, HOVER } = GmailAppMenuItemView.elementCss;
209
- function handleActivate() {
210
- const appMenuElement = GmailElementGetter.getAppMenuContainer();
211
- // deactivate active panel
212
- const activePanel = AppMenuItemView.#getActivePanel();
213
- if (activePanel) {
214
- activePanel.style.removeProperty('height');
215
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
216
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
217
- }
218
- // deactivate menu items and handle keyboard accessibility
219
- for (const menuItem_ of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
220
- menuItem_.classList.remove(ACTIVE);
221
- menuItem_.classList.remove(HOVER);
222
- // update tabindex
223
- const iconElement = menuItem_.querySelector(ICON_ELEMENT_SELECTOR);
224
- if (iconElement) {
225
- iconElement.tabIndex = menuItem_ === menuItem ? 0 : -1;
226
- }
227
- }
228
- // activate menu item
229
- menuItem.classList.add(ACTIVE);
230
- // activate panel
231
- const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
232
- if (panel) {
233
- panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
234
- }
235
- }
236
- switch (type) {
237
- case 'mouseenter': {
238
- const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
239
- const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
240
- const activePanel = AppMenuItemView.#getActivePanel();
241
- const burgerMenuOpen = GmailElementGetter.isAppBurgerMenuOpen();
242
- // hover-styled panel is displayed for collapsed burger menu
243
- if (activeMenuItem === menuItem &&
244
- activePanel === panel &&
245
- burgerMenuOpen)
246
- return;
247
- // deactivate active panel
248
- if (activePanel) {
249
- activePanel.style.removeProperty('height');
250
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
251
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
252
- }
253
- // activate new panel
254
- if (panel) {
255
- const height = window.innerHeight - panel.getBoundingClientRect().top;
256
- panel.style.cssText = `height: ${height}px;`;
257
- panel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
258
- panel.classList.add(CollapsiblePanelView.elementCss.HOVER);
259
- // hover menu item
260
- menuItem.classList.add(HOVER);
261
- // handle burger menu collapsed
262
- if (!burgerMenuOpen) {
263
- for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
264
- panel.classList.add(CollapsiblePanelView.elementCss.COLLAPSED_HOVER);
265
- }
266
- }
267
- }
268
- else {
269
- // panel doesn't exist (i.e. Meet) so activate active menu item's panel instead (as Gmail currently does -- FEB 2023)
270
- const panel = activeMenuItem &&
271
- AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
272
- panel?.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
273
- }
274
- break;
275
- }
276
- case 'mouseleave': {
277
- // Do not handle blur event when we're in one of the panel's dropdowns
278
- const isPanelDropdownShown = AppMenuItemView.#isPanelDropdownShown();
279
- if (isPanelDropdownShown)
280
- return;
281
- const activeMenuItem = AppMenuItemView.#getActiveMenuItem();
282
- const activePanel = AppMenuItemView.#getActivePanel();
283
- const activeMenuItemPanel = activeMenuItem &&
284
- AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
285
- if (mouseEvent.relatedTarget instanceof Node &&
286
- (menuItem.contains(mouseEvent.relatedTarget) ||
287
- activePanel?.contains(mouseEvent.relatedTarget)))
288
- return;
289
- const burgerMenuOpen = GmailElementGetter.isAppBurgerMenuOpen();
290
- if (activePanel === activeMenuItemPanel && burgerMenuOpen)
291
- return;
292
- // unhover menu item
293
- menuItem.classList.remove(HOVER);
294
- // handle burger menu collapsed
295
- for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
296
- panel.classList.remove(CollapsiblePanelView.elementCss.COLLAPSED_HOVER);
297
- }
298
- // deactivate active panel
299
- if (activePanel) {
300
- activePanel.style.removeProperty('height');
301
- activePanel.classList.remove(CollapsiblePanelView.elementCss.ACTIVE);
302
- activePanel.classList.remove(CollapsiblePanelView.elementCss.HOVER);
303
- }
304
- // activate active menu item panel
305
- if (activeMenuItemPanel) {
306
- activeMenuItemPanel.classList.add(CollapsiblePanelView.elementCss.ACTIVE);
307
- }
308
- break;
309
- }
310
- case 'click': {
311
- handleActivate();
312
- // handle panel-less mode
313
- const isPanelLess = AppMenuItemView.#isPanelLess();
314
- for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
315
- panel.classList.toggle(CollapsiblePanelView.elementCss.PANEL_LESS, isPanelLess);
316
- }
317
- GmailElementGetter.getAppMenu()?.classList.toggle('aTO', isPanelLess);
318
- GmailElementGetter.getAppHeader()?.classList.toggle('aTO', isPanelLess);
319
- break;
320
- }
321
- case 'route-activated': {
322
- handleActivate();
323
- break;
324
- }
325
- }
326
- });
327
- }
328
- get menuItemDescriptor() {
329
- return this.#menuItemDescriptor;
330
- }
331
- #driver;
332
- #destroyed = false;
333
- #gmailViewPromise;
334
- #collapsiblePanel;
335
- #menuItemDescriptor;
336
- constructor(driver, menuItemDescriptor) {
337
- super();
338
- this.#driver = driver;
339
- this.#menuItemDescriptor = menuItemDescriptor;
340
- const gmailAppMenuItemView = this.#driver.addAppMenuItem(menuItemDescriptor);
341
- this.#gmailViewPromise = gmailAppMenuItemView;
342
- gmailAppMenuItemView.then((gmailView) => {
343
- if (this.#destroyed || !gmailView) {
344
- return; //we have been removed already
345
- }
346
- const gmailElement = gmailView.element;
347
- if (gmailElement) {
348
- AppMenuItemView.#menuItemToPanelMap.set(gmailElement, undefined);
349
- AppMenuItemView.#adjustTooltipNub();
350
- }
351
- gmailView.on('destroy', () => {
352
- this.remove();
353
- });
354
- gmailView.on('click', () => {
355
- AppMenuItemView.#menuItemChangeBus.emit(['click', gmailElement]);
356
- this.emit('click');
357
- });
358
- gmailView.on('hover', (e) => {
359
- AppMenuItemView.#menuItemChangeBus.emit([
360
- 'mouseenter',
361
- gmailElement,
362
- e,
363
- ]);
364
- this.emit('hover');
365
- });
366
- gmailView.on('blur', (e) => {
367
- AppMenuItemView.#menuItemChangeBus.emit([
368
- 'mouseleave',
369
- gmailElement,
370
- e,
371
- ]);
372
- this.emit('blur');
373
- });
374
- });
375
- AppMenuItemView.#setUpRouteViewDriverStream(driver);
376
- AppMenuItemView.#menuItemAddedDeferred.resolve(undefined);
377
- AppMenuItemView.#appMenuItemViews.add(this);
378
- }
379
- /**
380
- * Add a panel to an AppMenuItemView.
381
- *
382
- * @param panelDescriptor A single descriptor for the app menu item panel.
383
- *
384
- * @returns A promise that resolves to the CollapsiblePanelView instance. The result is undefined if the SDK doesn't detect the AppMenu being shown.
385
- */
386
- async addCollapsiblePanel(panelDescriptor) {
387
- const descriptor = {
388
- ...panelDescriptor,
389
- className: cx(panelDescriptor.className, {
390
- [CollapsiblePanelView.elementCss.COLLAPSED]: !GmailElementGetter.isAppBurgerMenuOpen(),
391
- [CollapsiblePanelView.elementCss.PANEL_LESS]: AppMenuItemView.#isPanelLess(),
392
- }),
393
- };
394
- const collapsiblePanel = await addCollapsiblePanel(this.#driver, descriptor, this.menuItemDescriptor.insertIndex);
395
- if (collapsiblePanel) {
396
- this.#gmailViewPromise.then((gmailView) => {
397
- const gmailElement = gmailView.element;
398
- if (gmailElement) {
399
- collapsiblePanel.on('blur', (e) => {
400
- AppMenuItemView.#menuItemChangeBus.value([
401
- 'mouseleave',
402
- gmailElement,
403
- e,
404
- ]);
405
- });
406
- AppMenuItemView.#menuItemToPanelMap.set(gmailElement, collapsiblePanel.element);
407
- AppMenuItemView.#adjustTooltipNub();
408
- }
409
- });
410
- }
411
- this.#collapsiblePanel = collapsiblePanel;
412
- return collapsiblePanel;
413
- }
414
- /**
415
- * Updates the AppMenuItem's AppMenuItemDescriptor
416
- *
417
- * @param menuItemDescriptor The new descriptor for the app menu item panel.
418
- */
419
- async update(menuItemDescriptor) {
420
- const gmailView = await this.#gmailViewPromise;
421
- gmailView.menuItemDescriptor = menuItemDescriptor;
422
- this.#menuItemDescriptor = menuItemDescriptor;
423
- }
424
- /**
425
- * Remove this AppMenuItemView from its parent
426
- */
427
- remove() {
428
- if (this.#destroyed)
429
- return;
430
- this.#destroyed = true;
431
- this.emit('destroy');
432
- this.#collapsiblePanel?.remove();
433
- this.#gmailViewPromise.then((gmailView) => {
434
- gmailView.element &&
435
- AppMenuItemView.#menuItemToPanelMap.delete(gmailView.element);
436
- gmailView.remove();
437
- AppMenuItemView.#adjustTooltipNub();
438
- });
439
- AppMenuItemView.#appMenuItemViews.delete(this);
440
- }
441
- }
442
- export { AppMenuItemView };
@@ -1,43 +0,0 @@
1
- import EventEmitter from '../lib/safe-event-emitter';
2
- import get from '../../common/get-or-fail';
3
- const memberMap = new WeakMap(); // Documented in src/docs/app-toolbar-button-view.js
4
- export default class AppToolbarButtonView extends EventEmitter {
5
- destroyed;
6
- constructor(driver, appToolbarButtonViewDriverPromise) {
7
- super();
8
- const members = {
9
- appToolbarButtonViewDriverPromise,
10
- appToolbarButtonViewDriver: null,
11
- };
12
- memberMap.set(this, members);
13
- this.destroyed = false;
14
- members.appToolbarButtonViewDriverPromise.then((appToolbarButtonViewDriver) => {
15
- members.appToolbarButtonViewDriver = appToolbarButtonViewDriver;
16
- appToolbarButtonViewDriver.getStopper().onValue(() => {
17
- this.destroyed = true;
18
- this.emit('destroy');
19
- });
20
- });
21
- driver.getStopper().onValue(() => {
22
- this.remove();
23
- });
24
- }
25
- open() {
26
- const members = get(memberMap, this);
27
- members.appToolbarButtonViewDriverPromise.then(function (appToolbarButtonViewDriver) {
28
- appToolbarButtonViewDriver.open();
29
- });
30
- }
31
- close() {
32
- const members = get(memberMap, this);
33
- members.appToolbarButtonViewDriverPromise.then(function (appToolbarButtonViewDriver) {
34
- appToolbarButtonViewDriver.close();
35
- });
36
- }
37
- remove() {
38
- const members = get(memberMap, this);
39
- members.appToolbarButtonViewDriverPromise.then(function (appToolbarButtonViewDriver) {
40
- appToolbarButtonViewDriver.destroy();
41
- });
42
- }
43
- }