@inboxsdk/core 1.2.4 → 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 (332) hide show
  1. package/inboxsdk.js +4474 -463
  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/common/load-script.d.ts +0 -6
  7. package/src/common/load-script.d.ts.map +1 -1
  8. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
  9. package/src/inboxsdk.d.ts +29 -0
  10. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
  11. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
  12. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
  13. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
  14. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
  15. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  16. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
  17. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
  18. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
  19. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
  20. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
  21. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
  22. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  23. package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
  24. package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
  25. package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
  26. package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
  27. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
  28. package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
  29. package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
  30. package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
  31. package/src/build/exec.js +0 -26
  32. package/src/build/spawn.js +0 -17
  33. package/src/common/ajax.js +0 -90
  34. package/src/common/cachebust-url.js +0 -10
  35. package/src/common/censorHTMLstring.js +0 -37
  36. package/src/common/censorHTMLtree.js +0 -28
  37. package/src/common/censorJSONTree.js +0 -15
  38. package/src/common/connectivity-test.js +0 -21
  39. package/src/common/defer.js +0 -11
  40. package/src/common/find-parent.js +0 -10
  41. package/src/common/get-extension-id.js +0 -7
  42. package/src/common/get-or-fail.js +0 -8
  43. package/src/common/get-session-id.js +0 -14
  44. package/src/common/get-stack-trace.js +0 -6
  45. package/src/common/html-to-text.js +0 -7
  46. package/src/common/isElementVisible.js +0 -6
  47. package/src/common/load-script.js +0 -128
  48. package/src/common/log-error.js +0 -185
  49. package/src/common/quoted-split.js +0 -18
  50. package/src/common/rate-limit-queuer.js +0 -57
  51. package/src/common/rate-limit.js +0 -14
  52. package/src/common/version.js +0 -8
  53. package/src/inboxsdk-js/header.js +0 -19
  54. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
  55. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
  56. package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
  57. package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
  58. package/src/inboxsdk-js/inboxsdk.js +0 -23
  59. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
  60. package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
  61. package/src/injected-js/gmail/constants.js +0 -2
  62. package/src/injected-js/gmail/modify-suggestions.js +0 -106
  63. package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
  64. package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
  65. package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
  66. package/src/injected-js/gmail/sync-compose-processor.js +0 -55
  67. package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
  68. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
  69. package/src/injected-js/gmail/thread-identifier/index.js +0 -133
  70. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
  71. package/src/injected-js/injected-logger.js +0 -50
  72. package/src/injected-js/main.js +0 -49
  73. package/src/injected-js/message-metadata-holder.js +0 -103
  74. package/src/injected-js/setup-data-exposer.js +0 -135
  75. package/src/injected-js/setup-error-silencer.js +0 -15
  76. package/src/injected-js/setup-event-reemitter.js +0 -47
  77. package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
  78. package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
  79. package/src/injected-js/setupPushStateListener.js +0 -14
  80. package/src/injected-js/xhr-helper.js +0 -43
  81. package/src/injected-js/xhr-proxy-factory.js +0 -537
  82. package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
  83. package/src/platform-implementation-js/constants/router.js +0 -60
  84. package/src/platform-implementation-js/constants/toolbars.js +0 -5
  85. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
  86. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
  87. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
  88. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
  89. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
  90. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
  91. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
  92. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
  93. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
  94. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
  95. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
  96. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
  97. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
  98. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
  99. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
  100. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
  101. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
  102. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
  103. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
  104. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
  105. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
  106. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
  107. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
  108. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
  109. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
  110. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
  111. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
  112. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
  113. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
  114. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
  115. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
  116. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
  117. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
  118. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
  119. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
  120. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
  121. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
  122. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
  123. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
  124. package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
  125. package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
  126. package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
  127. package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
  128. package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
  129. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
  130. package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
  131. package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
  132. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
  133. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
  134. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
  135. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
  136. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
  137. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
  138. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
  139. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
  140. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
  141. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
  142. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
  143. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
  144. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
  145. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
  146. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
  147. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
  148. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
  149. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
  150. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
  151. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
  152. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
  153. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
  154. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
  155. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
  156. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
  157. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
  158. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
  159. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
  160. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
  161. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
  162. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
  163. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
  164. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
  165. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
  166. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
  167. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
  168. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
  169. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
  170. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
  171. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
  172. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
  173. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
  174. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
  175. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
  176. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
  177. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
  178. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
  179. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
  180. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
  181. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
  182. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
  183. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
  184. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
  185. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
  186. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
  187. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
  188. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
  189. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
  190. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
  191. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
  192. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
  193. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
  194. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
  195. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
  196. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
  197. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
  198. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
  199. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
  200. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
  201. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
  202. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
  203. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
  204. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
  205. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
  206. package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
  207. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
  208. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
  209. package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
  210. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
  211. package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
  212. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
  213. package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
  214. package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
  215. package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
  216. package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
  217. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
  218. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
  219. package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
  220. package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
  221. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
  222. package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
  223. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
  224. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
  225. package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
  226. package/src/platform-implementation-js/lib/Membrane.js +0 -22
  227. package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
  228. package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
  229. package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
  230. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
  231. package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
  232. package/src/platform-implementation-js/lib/delay-asap.js +0 -10
  233. package/src/platform-implementation-js/lib/delay-idle.js +0 -16
  234. package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
  235. package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
  236. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
  237. package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
  238. package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
  239. package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
  240. package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
  241. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
  242. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
  243. package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
  244. package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
  245. package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
  246. package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
  247. package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
  248. package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
  249. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
  250. package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
  251. package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
  252. package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
  253. package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
  254. package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
  255. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
  256. package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
  257. package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
  258. package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
  259. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
  260. package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
  261. package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
  262. package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
  263. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
  264. package/src/platform-implementation-js/lib/handler-registry.js +0 -67
  265. package/src/platform-implementation-js/lib/idMap.js +0 -40
  266. package/src/platform-implementation-js/lib/imageRequest.js +0 -8
  267. package/src/platform-implementation-js/lib/incrementName.js +0 -7
  268. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
  269. package/src/platform-implementation-js/lib/inject-script.js +0 -33
  270. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
  271. package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
  272. package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
  273. package/src/platform-implementation-js/lib/isNotNil.js +0 -5
  274. package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
  275. package/src/platform-implementation-js/lib/logger.js +0 -439
  276. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
  277. package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
  278. package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
  279. package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
  280. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
  281. package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
  282. package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
  283. package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
  284. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
  285. package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
  286. package/src/platform-implementation-js/lib/wait-for.js +0 -38
  287. package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
  288. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
  289. package/src/platform-implementation-js/main.js +0 -42
  290. package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
  291. package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
  292. package/src/platform-implementation-js/namespaces/compose.js +0 -59
  293. package/src/platform-implementation-js/namespaces/conversations.js +0 -83
  294. package/src/platform-implementation-js/namespaces/global.js +0 -30
  295. package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
  296. package/src/platform-implementation-js/namespaces/lists.js +0 -40
  297. package/src/platform-implementation-js/namespaces/modal.js +0 -43
  298. package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
  299. package/src/platform-implementation-js/namespaces/router.js +0 -139
  300. package/src/platform-implementation-js/namespaces/search.js +0 -29
  301. package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
  302. package/src/platform-implementation-js/namespaces/user.js +0 -57
  303. package/src/platform-implementation-js/namespaces/widgets.js +0 -73
  304. package/src/platform-implementation-js/platform-implementation.js +0 -178
  305. package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
  306. package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
  307. package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
  308. package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
  309. package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
  310. package/src/platform-implementation-js/views/compose-button-view.js +0 -45
  311. package/src/platform-implementation-js/views/compose-view.js +0 -310
  312. package/src/platform-implementation-js/views/content-panel-view.js +0 -36
  313. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
  314. package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
  315. package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
  316. package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
  317. package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
  318. package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
  319. package/src/platform-implementation-js/views/nav-item-view.js +0 -130
  320. package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
  321. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
  322. package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
  323. package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
  324. package/src/platform-implementation-js/views/section-view.js +0 -60
  325. package/src/platform-implementation-js/views/thread-row-view.js +0 -90
  326. package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
  327. package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
  328. package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
  329. package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
  330. package/src/platform-implementation-js/widgets/modal-view.js +0 -108
  331. package/src/platform-implementation-js/widgets/mole-view.js +0 -38
  332. 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
- }