@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,763 +0,0 @@
1
- import autoHtml from 'auto-html';
2
- import * as Kefir from 'kefir';
3
- import kefirBus from 'kefir-bus';
4
- import GmailElementGetter from '../gmail-element-getter';
5
- import getInsertBeforeElement from '../../../lib/dom/get-insert-before-element';
6
- import querySelector from '../../../lib/dom/querySelectorOrFail';
7
- import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
8
- import ButtonView from '../widgets/buttons/button-view';
9
- import MoreDropdownButtonView from '../widgets/buttons/more-dropdown-button-view';
10
- import MoreParentDropdownButtonView from '../widgets/buttons/more-parent-accessory-button-view';
11
- import CreateAccessoryButtonView from '../widgets/buttons/create-accessory-button-view';
12
- import CreateParentAccessoryButtonView from '../widgets/buttons/create-parent-accessory-button-view';
13
- import GmailDropdownView from '../widgets/gmail-dropdown-view';
14
- import DropdownButtonViewController from '../../../widgets/buttons/dropdown-button-view-controller';
15
- import BasicButtonViewController from '../../../widgets/buttons/basic-button-view-controller';
16
- import updateIcon from '../../../driver-common/update-icon';
17
- import renderCustomIcon from '../../../driver-common/render-custom-icon';
18
- import NAV_ITEM_TYPES from '../../../constants/nav-item-types';
19
- let NUMBER_OF_GMAIL_NAV_ITEM_VIEWS_CREATED = 0;
20
- const GMAIL_V2_LEFT_INDENTATION_PADDING = 12;
21
- // TODO could we recreate this with React? There's so much statefulness that it's
22
- export default class GmailNavItemView {
23
- _accessory = null;
24
- _accessoryViewController = null;
25
- _driver;
26
- _element;
27
- _eventStream;
28
- _expandoElement = null;
29
- _iconSettings = {};
30
- _isActive = false;
31
- _isCollapsed = false;
32
- _itemContainerElement = null;
33
- _level;
34
- _name = '';
35
- _navItemDescriptor;
36
- _navItemNumber;
37
- _orderGroup;
38
- _orderHint;
39
- _type = null;
40
- _collapseKey = null;
41
- // delete after new left nav is fully launched, use this._level === 1 instead
42
- _isNewLeftNavParent;
43
- constructor(driver, orderGroup, level) {
44
- this._driver = driver;
45
- this._eventStream = kefirBus();
46
- this._level = level || 0;
47
- this._navItemNumber = ++NUMBER_OF_GMAIL_NAV_ITEM_VIEWS_CREATED;
48
- this._orderGroup = orderGroup;
49
- this._isNewLeftNavParent =
50
- !GmailElementGetter.shouldAddNavItemsInline() && this._level === 1;
51
- if (this._isNewLeftNavParent) {
52
- this._element = this._setupParentElement();
53
- }
54
- else {
55
- this._element = this._setupChildElement();
56
- }
57
- }
58
- addNavItem(orderGroup, navItemDescriptor) {
59
- const nestedNavItemLevel = this._type === NAV_ITEM_TYPES.GROUPER ? this._level : this._level + 1;
60
- const gmailNavItemView = new GmailNavItemView(this._driver, orderGroup, nestedNavItemLevel);
61
- gmailNavItemView
62
- .getEventStream()
63
- .filter((event) => event.eventName === 'orderChanged')
64
- .onValue(() => this._addNavItemElement(gmailNavItemView));
65
- gmailNavItemView.setNavItemDescriptor(navItemDescriptor);
66
- if (this._isNewLeftNavParent) {
67
- this._createExpandoParent();
68
- }
69
- return gmailNavItemView;
70
- }
71
- destroy() {
72
- this._element.remove();
73
- if (this._accessoryViewController)
74
- this._accessoryViewController.destroy();
75
- if (this._eventStream)
76
- this._eventStream.end();
77
- if (this._expandoElement)
78
- this._expandoElement.remove();
79
- if (this._itemContainerElement)
80
- this._itemContainerElement.remove();
81
- }
82
- getElement() {
83
- return this._element;
84
- }
85
- getEventStream() {
86
- return this._eventStream;
87
- }
88
- getNavItemDescriptor() {
89
- return this._navItemDescriptor;
90
- }
91
- getOrderGroup() {
92
- return this._orderGroup;
93
- }
94
- getOrderHint() {
95
- return this._orderHint;
96
- }
97
- getName() {
98
- return this._name;
99
- }
100
- isCollapsed() {
101
- return this._isCollapsed;
102
- }
103
- remove() {
104
- this.destroy();
105
- }
106
- setActive(value) {
107
- if (!this._element ||
108
- this._type === NAV_ITEM_TYPES.LINK ||
109
- this._type === NAV_ITEM_TYPES.MANAGE ||
110
- this._isActive === value ||
111
- this._isNewLeftNavParent) {
112
- return;
113
- }
114
- const toElement = querySelector(this._element, '.TO');
115
- if (value) {
116
- this._element.classList.add('ain');
117
- toElement.classList.add('nZ');
118
- toElement.classList.add('aiq');
119
- }
120
- else {
121
- this._element.classList.remove('ain');
122
- toElement.classList.remove('nZ');
123
- toElement.classList.remove('aiq');
124
- }
125
- this._setHeights();
126
- this._isActive = value;
127
- }
128
- setCollapsed(value) {
129
- this._isCollapsed = value;
130
- if (this._isCollapsible()) {
131
- if (value) {
132
- this._collapse();
133
- }
134
- else {
135
- this._expand();
136
- }
137
- }
138
- try {
139
- const storageKey = 'inboxsdk__navitem_collapsed__' + this._collapseKey;
140
- if (this._isCollapsed) {
141
- localStorage.setItem(storageKey, 'true');
142
- }
143
- else {
144
- localStorage.removeItem(storageKey);
145
- }
146
- }
147
- catch (e) {
148
- console.error('Caught error', e);
149
- }
150
- }
151
- setNavItemDescriptor(navItemDescriptorPropertyStream) {
152
- navItemDescriptorPropertyStream
153
- .takeUntilBy(this._eventStream.filter(() => false).beforeEnd(() => null))
154
- .onValue((x) => this._updateValues(x));
155
- }
156
- toggleCollapse() {
157
- this.setCollapsed(!this._isCollapsed);
158
- }
159
- // TODO this method is only called on orderChanged? is that right?
160
- _addNavItemElement(gmailNavItemView) {
161
- const itemContainerElement = this._getItemContainerElement();
162
- const insertBeforeElement = getInsertBeforeElement(gmailNavItemView.getElement(), itemContainerElement.children, ['data-group-order-hint', 'data-order-hint', 'data-insertion-order-hint']);
163
- itemContainerElement.insertBefore(gmailNavItemView.getElement(), insertBeforeElement);
164
- // If the current nav-item is of type GROUPER and we are in Gmailv2, then any nested nav-items
165
- // should be at the same indentation as the current nav-item. Somewhat confusingly, this._level
166
- // is normally the indentationFactor for the nested children of the current nav-item, so we
167
- // actually use this._level - 1 as the indentationFactor if we don't want to further indent the
168
- // nested items (i.e. the current item is of type GROUPER and we're in Gmailv2).
169
- const indentationFactor = this._type === NAV_ITEM_TYPES.GROUPER || this._isNewLeftNavParent
170
- ? this._level - 1
171
- : this._level;
172
- const element = gmailNavItemView.getElement();
173
- if (!GmailElementGetter.shouldAddNavItemsInline()) {
174
- querySelector(element, '.TN').style.marginLeft =
175
- 6 * indentationFactor + 'px';
176
- }
177
- else {
178
- querySelector(element, '.TN').style.marginLeft =
179
- getLeftIndentationPaddingValue() * indentationFactor + 'px';
180
- }
181
- this._setHeights();
182
- }
183
- _collapse() {
184
- this._isCollapsed = true;
185
- if (this._isNewLeftNavParent) {
186
- this._element.classList.remove('Xr');
187
- }
188
- else {
189
- const expandoElement = this._expandoElement;
190
- if (expandoElement) {
191
- expandoElement.classList.remove('aih');
192
- expandoElement.classList.add('aii');
193
- }
194
- else if (this._type === NAV_ITEM_TYPES.GROUPER) {
195
- const navItemElement = this._element.firstElementChild;
196
- if (navItemElement)
197
- navItemElement.classList.remove('air');
198
- }
199
- if (this._itemContainerElement)
200
- this._itemContainerElement.style.display = 'none';
201
- this._setHeights();
202
- }
203
- this._eventStream.emit({
204
- eventName: 'collapsed',
205
- });
206
- }
207
- _createAccessory(accessoryDescriptor) {
208
- switch (accessoryDescriptor.type) {
209
- case 'CREATE':
210
- this._createCreateAccessory(accessoryDescriptor);
211
- break;
212
- case 'ICON_BUTTON':
213
- this._createIconButtonAccessory(accessoryDescriptor);
214
- break;
215
- case 'DROPDOWN_BUTTON':
216
- this._createDropdownButtonAccessory(accessoryDescriptor);
217
- break;
218
- case 'SETTINGS_BUTTON':
219
- this._driver
220
- .getLogger()
221
- .deprecationWarning('SettingsButtonAccessoryDescriptor', 'DropdownButtonAccessoryDescriptor');
222
- this._createDropdownButtonAccessory({
223
- ...accessoryDescriptor,
224
- type: 'DROPDOWN_BUTTON',
225
- });
226
- break;
227
- }
228
- }
229
- _createCreateAccessory(accessoryDescriptor) {
230
- this._createPlusButtonAccessory(accessoryDescriptor);
231
- }
232
- _createDropdownButtonAccessory(accessoryDescriptor) {
233
- if (this._isNewLeftNavParent) {
234
- const buttonOptions = { ...accessoryDescriptor };
235
- buttonOptions.buttonView = new MoreParentDropdownButtonView();
236
- buttonOptions.dropdownViewDriverClass = GmailDropdownView;
237
- buttonOptions.dropdownPositionOptions = {
238
- position: 'right',
239
- hAlign: 'left',
240
- vAlign: 'top',
241
- };
242
- buttonOptions.dropdownShowFunction = ({ dropdown }) => {
243
- dropdown.el.style.marginLeft = '24px';
244
- buttonOptions.onClick({ dropdown });
245
- };
246
- const accessoryViewController = new DropdownButtonViewController(buttonOptions);
247
- this._accessoryViewController = accessoryViewController;
248
- const accessoryEl = querySelector(this._element, '.Yh');
249
- const parentNode = accessoryEl.parentNode;
250
- if (parentNode) {
251
- buttonOptions.buttonView
252
- .getElement()
253
- .classList.add(...accessoryEl.classList);
254
- parentNode.replaceChild(buttonOptions.buttonView.getElement(), accessoryEl);
255
- this._iconSettings.iconElement = null;
256
- }
257
- return;
258
- }
259
- // child dropdown button accessory
260
- const buttonOptions = { ...accessoryDescriptor };
261
- buttonOptions.buttonView = new MoreDropdownButtonView();
262
- buttonOptions.dropdownViewDriverClass = GmailDropdownView;
263
- buttonOptions.dropdownPositionOptions = {
264
- position: 'bottom',
265
- hAlign: 'left',
266
- vAlign: 'top',
267
- };
268
- const container = GmailElementGetter.getLeftNavContainerElement();
269
- if (!container)
270
- throw new Error('leftNavContainer not found');
271
- buttonOptions.dropdownShowFunction = (event) => {
272
- // bhZ is the class to indicate the left nav is collapsible mode
273
- // bym is class to show expanded when the left nav is collapsible
274
- if (container.classList.contains('bhZ')) {
275
- const stopper = Kefir.fromEvents(event.dropdown, 'destroy');
276
- // monitor class on the container and keep re-adding bym until dropdown closes
277
- makeMutationObserverChunkedStream(container, {
278
- attributes: true,
279
- attributeFilter: ['class'],
280
- })
281
- .takeUntilBy(stopper)
282
- .toProperty(() => null)
283
- .onValue(() => {
284
- if (!container.classList.contains('bym'))
285
- container.classList.add('bym');
286
- });
287
- stopper.onValue(() => {
288
- container.classList.remove('bym');
289
- });
290
- }
291
- buttonOptions.onClick(event);
292
- event.dropdown.on('destroy', () => {
293
- buttonOptions.buttonView.deactivate();
294
- });
295
- };
296
- const accessoryViewController = new DropdownButtonViewController(buttonOptions);
297
- this._accessoryViewController = accessoryViewController;
298
- const innerElement = querySelector(this._element, '.TO');
299
- innerElement.addEventListener('mouseenter', () => innerElement.classList.add('inboxsdk__navItem_hover'));
300
- innerElement.addEventListener('mouseleave', () => innerElement.classList.remove('inboxsdk__navItem_hover'));
301
- const insertionPoint = querySelector(this._element, '.TN');
302
- insertionPoint.appendChild(buttonOptions.buttonView.getElement());
303
- this._setupContextClickHandler(accessoryViewController);
304
- }
305
- _createExpando() {
306
- if (this._type === NAV_ITEM_TYPES.GROUPER) {
307
- return;
308
- }
309
- const expandoElement = (this._expandoElement =
310
- document.createElement('div'));
311
- expandoElement.setAttribute('class', 'TH aih J-J5-Ji inboxsdk__expando');
312
- expandoElement.setAttribute('role', 'link');
313
- expandoElement.title = `Expand ${this._name || ''}`;
314
- expandoElement.addEventListener('click', (e) => {
315
- this.toggleCollapse();
316
- e.stopPropagation();
317
- });
318
- const insertionPoint = this._element.querySelector('.TN.aik');
319
- if (insertionPoint)
320
- insertionPoint.insertAdjacentElement('afterbegin', expandoElement);
321
- if (this._isCollapsed) {
322
- this._collapse();
323
- }
324
- else {
325
- this._expand();
326
- }
327
- }
328
- _createExpandoParent() {
329
- const parentExpandoElement = querySelector(this._element, '.XR');
330
- parentExpandoElement.style.visibility = 'visible';
331
- this._expandoElement = parentExpandoElement;
332
- if (this._isCollapsed) {
333
- this._collapse();
334
- }
335
- else {
336
- this._expand();
337
- }
338
- }
339
- _createIconButtonAccessory(accessoryDescriptor) {
340
- this._driver
341
- .getLogger()
342
- .deprecationWarning('IconButtonAccessoryDescriptor accessory for a parent level NavItemView', 'CreateAccessoryDescriptor or DropdownButtonAccessoryDescriptor');
343
- if (this._isNewLeftNavParent) {
344
- return;
345
- }
346
- const buttonOptions = {
347
- ...accessoryDescriptor,
348
- buttonColor: 'pureIcon',
349
- };
350
- buttonOptions.buttonView = new ButtonView(buttonOptions);
351
- this._accessoryViewController = new BasicButtonViewController(buttonOptions);
352
- const insertionPoint = querySelector(this._element, '.TN');
353
- insertionPoint.appendChild(buttonOptions.buttonView.getElement());
354
- }
355
- _createItemContainerElement() {
356
- const itemContainerElement = (this._itemContainerElement =
357
- document.createElement('div'));
358
- itemContainerElement.classList.add('inboxsdk__navItem_container');
359
- this._element.appendChild(itemContainerElement);
360
- // If this is a collapsible nav-item, run collapse or expand to set the container styling
361
- if (this._isCollapsible()) {
362
- if (this._isCollapsed)
363
- this._collapse();
364
- else
365
- this._expand();
366
- }
367
- return itemContainerElement;
368
- }
369
- _createLinkButtonAccessory(accessoryDescriptor) {
370
- const linkDiv = document.createElement('div');
371
- const linkDivClassName = 'inboxsdk__navItem_link';
372
- linkDiv.setAttribute('class', linkDivClassName);
373
- const anchor = document.createElement('a');
374
- anchor.classList.add('CK');
375
- anchor.textContent = accessoryDescriptor.name;
376
- linkDiv.appendChild(anchor);
377
- anchor.href = '#';
378
- anchor.addEventListener('click', (e) => {
379
- e.stopPropagation();
380
- e.preventDefault();
381
- accessoryDescriptor.onClick();
382
- });
383
- querySelector(this._element, '.aio').appendChild(linkDiv);
384
- }
385
- _createPlusButtonAccessory(accessoryDescriptor) {
386
- if (this._isNewLeftNavParent) {
387
- const buttonOptions = { ...accessoryDescriptor };
388
- buttonOptions.buttonView = new CreateParentAccessoryButtonView();
389
- // TODO: new Gmail left nav parent accessory opens a dropdown which would be a breaking
390
- // change if we were to also create a dropdown view bc existing users would have to manually
391
- // close the dropdown if they only wanted a click callback. We could have a "hasDropdown"
392
- // prop to conditionally render the dropdown, but when is enough enough?
393
- // buttonOptions.dropdownViewDriverClass = GmailDropdownView;
394
- // buttonOptions.dropdownPositionOptions = {
395
- // position: 'right',
396
- // hAlign: 'left',
397
- // vAlign: 'top'
398
- // };
399
- // buttonOptions.dropdownShowFunction = ({ dropdown }) => {
400
- // dropdown.el.style.marginLeft = '24px';
401
- // buttonOptions.onClick({ dropdown });
402
- // };
403
- this._accessoryViewController = new BasicButtonViewController(buttonOptions);
404
- const accessoryEl = querySelector(this._element, '.Yh');
405
- const parentNode = accessoryEl.parentNode;
406
- if (parentNode) {
407
- buttonOptions.buttonView
408
- .getElement()
409
- .classList.add(...accessoryEl.classList);
410
- parentNode.replaceChild(buttonOptions.buttonView.getElement(), accessoryEl);
411
- this._iconSettings.iconElement = null;
412
- }
413
- return;
414
- }
415
- // child create button accessory
416
- const buttonOptions = { ...accessoryDescriptor };
417
- buttonOptions.buttonView = new CreateAccessoryButtonView();
418
- this._accessoryViewController = new BasicButtonViewController(buttonOptions);
419
- const insertionPoint = querySelector(this._element, '.TN');
420
- insertionPoint.appendChild(buttonOptions.buttonView.getElement());
421
- }
422
- _expand() {
423
- if (this._isNewLeftNavParent) {
424
- this._element.classList.add('Xr');
425
- }
426
- else {
427
- const expandoElement = this._expandoElement;
428
- if (expandoElement) {
429
- expandoElement.classList.add('aih');
430
- expandoElement.classList.remove('aii');
431
- }
432
- else if (this._type === NAV_ITEM_TYPES.GROUPER) {
433
- const navItemElement = this._element.firstElementChild;
434
- if (navItemElement) {
435
- navItemElement.classList.add('air');
436
- }
437
- }
438
- if (this._itemContainerElement) {
439
- this._itemContainerElement.style.display = '';
440
- }
441
- this._setHeights();
442
- }
443
- this._isCollapsed = false;
444
- this._eventStream.emit({
445
- eventName: 'expanded',
446
- });
447
- }
448
- _getItemContainerElement() {
449
- if (this._isNewLeftNavParent) {
450
- return querySelector(this._element, '.TK');
451
- }
452
- else {
453
- let itemContainerElement = this._itemContainerElement;
454
- if (!itemContainerElement) {
455
- itemContainerElement = this._createItemContainerElement();
456
- this._createExpando();
457
- }
458
- return itemContainerElement;
459
- }
460
- }
461
- _isCollapsible() {
462
- return (Boolean(this._expandoElement) || this._type === NAV_ITEM_TYPES.GROUPER);
463
- }
464
- _makeEventMapper(eventName) {
465
- return function (domEvent) {
466
- domEvent.stopPropagation();
467
- domEvent.preventDefault();
468
- return {
469
- eventName,
470
- domEvent,
471
- };
472
- };
473
- }
474
- _setHeights() {
475
- if (this._level == 1) {
476
- return;
477
- }
478
- const toElement = querySelector(this._element, '.TO');
479
- if (this._element.classList.contains('ain') && this._itemContainerElement) {
480
- this._element.style.height = '';
481
- const totalHeight = this._element.clientHeight;
482
- const itemHeight = toElement.clientHeight;
483
- this._element.style.height = itemHeight + 'px';
484
- this._element.style.overflow = 'visible';
485
- this._element.style.marginBottom = totalHeight - itemHeight + 'px';
486
- }
487
- else {
488
- this._element.style.height = '';
489
- this._element.style.overflow = '';
490
- this._element.style.marginBottom = '';
491
- }
492
- }
493
- _setHighlight(value) {
494
- if (!this._element ||
495
- this._type === NAV_ITEM_TYPES.LINK ||
496
- this._type === NAV_ITEM_TYPES.MANAGE) {
497
- return;
498
- }
499
- if (value) {
500
- querySelector(this._element, '.TO').classList.add('NQ');
501
- }
502
- else {
503
- querySelector(this._element, '.TO').classList.remove('NQ');
504
- }
505
- }
506
- _setupContextClickHandler(accessoryViewController) {
507
- Kefir.fromEvents(this._element, 'contextmenu')
508
- .takeWhile(() => this._accessoryViewController === accessoryViewController)
509
- .onValue((domEvent) => {
510
- domEvent.stopPropagation();
511
- domEvent.preventDefault();
512
- accessoryViewController.showDropdown();
513
- });
514
- }
515
- _setupChildElement() {
516
- const element = document.createElement('div');
517
- element.setAttribute('class', 'aim inboxsdk__navItem');
518
- element.innerHTML = [
519
- '<div class="TO">',
520
- '<div class="TN aik">',
521
- // This element needs a style attribute defined on it as there is a Gmail css rule of
522
- // selecting for "gj[style]" the sets the opacity to 1 rather than 0.6.
523
- '<div class="qj" style="">',
524
- '</div>',
525
- '<div class="aio aip">',
526
- '<span class="nU" role="link">',
527
- '</span>',
528
- // This bsU element is the container "subtitle" text.
529
- '<span class="bsU">',
530
- '</span>',
531
- '</div>',
532
- '</div>',
533
- '</div>',
534
- ].join('');
535
- const innerElement = querySelector(element, '.TO');
536
- Kefir.merge([
537
- Kefir.fromEvents(innerElement, 'mouseenter').map(this._makeEventMapper('mouseenter')),
538
- Kefir.fromEvents(innerElement, 'mouseleave').map(this._makeEventMapper('mouseleave')),
539
- ]).onValue((event) => {
540
- this._updateHighlight(event);
541
- });
542
- this._eventStream.plug(Kefir.fromEvents(innerElement, 'click').map(this._makeEventMapper('click')));
543
- return element;
544
- }
545
- _setupParentElement() {
546
- const element = document.createElement('div');
547
- element.className = 'Xa wT W8 XJ inboxsdk__navItem';
548
- element.innerHTML = [
549
- '<div class="V6 CL Y2">',
550
- '<div class="XR" role="button" tabindex="0" type="button" style="visibility: hidden">',
551
- '</div>',
552
- '<span class="XS">',
553
- '<span class="WW inboxsdk__navItem_name" role="heading" aria-level="2">',
554
- '</span>',
555
- '<span class="XU" aria-hidden="true" style="display: none">',
556
- '</span>',
557
- '</span>',
558
- '<div class="Yh">',
559
- '</div>',
560
- '</div>',
561
- '<div class="V3 ada">',
562
- '<div class="wT">',
563
- '<div class="TK">',
564
- '</div>',
565
- '</div>',
566
- '</div>',
567
- ].join('');
568
- // adds shadow rule to nav item container
569
- const scrollContainer = querySelector(element, '.V3');
570
- Kefir.fromEvents(scrollContainer, 'scroll')
571
- .debounce(10)
572
- .onValue(() => {
573
- if (scrollContainer.scrollTop > 0) {
574
- scrollContainer.classList.add('adh');
575
- }
576
- else {
577
- scrollContainer.classList.remove('adh');
578
- }
579
- });
580
- const expandoElement = querySelector(element, '.XR');
581
- Kefir.fromEvents(expandoElement, 'click')
582
- .map(this._makeEventMapper('click'))
583
- .onValue(() => {
584
- this.toggleCollapse();
585
- });
586
- const innerElement = querySelector(element, '.V6.CL');
587
- this._eventStream.plug(Kefir.fromEvents(innerElement, 'click').map(this._makeEventMapper('click')));
588
- return element;
589
- }
590
- _setupGrouper() {
591
- const navItemElement = this._element
592
- .firstElementChild;
593
- if (navItemElement) {
594
- navItemElement.classList.add('n4');
595
- navItemElement.addEventListener('click', (e) => {
596
- e.stopPropagation();
597
- this.toggleCollapse();
598
- });
599
- if (this._isCollapsed) {
600
- this._collapse();
601
- }
602
- else {
603
- this._expand();
604
- }
605
- }
606
- const iconContainerElement = querySelector(this._element, '.qj');
607
- iconContainerElement.innerHTML =
608
- '<div class="G-asx T-I-J3 J-J5-Ji">&nbsp;</div>';
609
- }
610
- _updateAccessory(accessory) {
611
- if (this._accessory === accessory) {
612
- return;
613
- }
614
- if (this._accessoryViewController) {
615
- this._accessoryViewController.destroy();
616
- this._accessoryViewController = null;
617
- }
618
- if (accessory) {
619
- this._createAccessory(accessory);
620
- }
621
- this._accessory = accessory;
622
- }
623
- _updateClickability(navItemDescriptor) {
624
- if (navItemDescriptor.type === NAV_ITEM_TYPES.LINK ||
625
- navItemDescriptor.type === NAV_ITEM_TYPES.MANAGE) {
626
- this._element.classList.add('inboxsdk__navItem_nonClickable');
627
- }
628
- else {
629
- this._element.classList.remove('inboxsdk__navItem_nonClickable');
630
- }
631
- }
632
- _updateHighlight({ eventName }) {
633
- switch (eventName) {
634
- case 'mouseenter':
635
- this._setHighlight(true);
636
- break;
637
- case 'mouseleave':
638
- this._setHighlight(false);
639
- break;
640
- }
641
- }
642
- _updateIcon(navItemDescriptor) {
643
- const iconContainerElement = this._isNewLeftNavParent
644
- ? querySelector(this._element, '.Yh')
645
- : querySelector(this._element, '.qj');
646
- // render custom icon
647
- if (navItemDescriptor.iconElement) {
648
- renderCustomIcon(iconContainerElement, navItemDescriptor.iconElement, navItemDescriptor.iconPosition !== 'BEFORE_NAME');
649
- return;
650
- }
651
- updateIcon(this._iconSettings, iconContainerElement, navItemDescriptor.iconPosition !== 'BEFORE_NAME', navItemDescriptor.iconClass, navItemDescriptor.iconUrl);
652
- // Setting the border-color of the icon container element while in Gmailv2 will trigger an SDK
653
- // css rule that will render a circle of border-color if the icon container element has no
654
- // children i.e. if no iconUrl or iconClass is defined on navItemDescriptor.
655
- if (navItemDescriptor.backgroundColor) {
656
- const circleColor = navItemDescriptor.backgroundColor;
657
- iconContainerElement.style.borderColor = circleColor;
658
- }
659
- }
660
- _updateName(name) {
661
- if (this._name === name) {
662
- return;
663
- }
664
- const navItemNameElement = querySelector(this._element, '.inboxsdk__navItem_name');
665
- navItemNameElement.textContent = name;
666
- navItemNameElement.setAttribute('title', name);
667
- if (this._expandoElement) {
668
- this._expandoElement.title = `Expand ${name}`;
669
- }
670
- if (this._navItemDescriptor?.tooltipAlignment) {
671
- const align = this._navItemDescriptor?.tooltipAlignment[0];
672
- this._element.firstElementChild?.setAttribute('data-tooltip', name);
673
- this._element.firstElementChild?.setAttribute('data-tooltip-align', align);
674
- }
675
- this._name = name;
676
- }
677
- _updateOrder(navItemDescriptor) {
678
- this._element.setAttribute('data-group-order-hint', '' + this._orderGroup);
679
- this._element.setAttribute('data-insertion-order-hint', '' + this._navItemNumber);
680
- navItemDescriptor.orderHint =
681
- navItemDescriptor.orderHint || navItemDescriptor.orderHint === 0
682
- ? navItemDescriptor.orderHint
683
- : Number.MAX_SAFE_INTEGER;
684
- if (navItemDescriptor.orderHint !== this._orderHint) {
685
- this._element.setAttribute('data-order-hint', '' + navItemDescriptor.orderHint);
686
- this._eventStream.emit({
687
- eventName: 'orderChanged',
688
- });
689
- }
690
- this._orderHint = navItemDescriptor.orderHint;
691
- }
692
- _updateRole(routeID) {
693
- const roleElement = querySelector(this._element, '.V6.CL');
694
- if (routeID) {
695
- roleElement.setAttribute('role', 'link');
696
- }
697
- else {
698
- roleElement.setAttribute('role', 'group');
699
- roleElement.classList.add('X9');
700
- }
701
- }
702
- _updateSubtitle(navItemDescriptor) {
703
- if (this._isNewLeftNavParent) {
704
- return;
705
- }
706
- if (navItemDescriptor.accessory &&
707
- !['SETTINGS_BUTTON', 'DROPDOWN_BUTTON'].includes(navItemDescriptor.accessory.type) &&
708
- navItemDescriptor.type !== NAV_ITEM_TYPES.GROUPER) {
709
- return;
710
- }
711
- querySelector(this._element, '.bsU').innerHTML = autoHtml `${navItemDescriptor.subtitle || ''}`;
712
- }
713
- _updateType(type = NAV_ITEM_TYPES.NAVIGATION) {
714
- if (!this._element) {
715
- return;
716
- }
717
- type = type || NAV_ITEM_TYPES.NAVIGATION;
718
- if (this._type === type) {
719
- return;
720
- }
721
- const nameElement = this._element.querySelector('.inboxsdk__navItem_name');
722
- switch (type) {
723
- case NAV_ITEM_TYPES.GROUPER:
724
- case NAV_ITEM_TYPES.NAVIGATION:
725
- if (!nameElement || nameElement.tagName !== 'SPAN') {
726
- querySelector(this._element, '.nU').innerHTML += autoHtml `<span class="inboxsdk__navItem_name">${this._name}</span>`;
727
- }
728
- break;
729
- case NAV_ITEM_TYPES.LINK:
730
- case NAV_ITEM_TYPES.MANAGE:
731
- if (!nameElement || nameElement.tagName !== 'A') {
732
- querySelector(this._element, '.nU').innerHTML += autoHtml `<a href="#" class="CK inboxsdk__navItem_name">${this._name}</a>`;
733
- }
734
- break;
735
- }
736
- this._type = type;
737
- }
738
- _updateValues(navItemDescriptor) {
739
- this._navItemDescriptor = navItemDescriptor;
740
- if (this._collapseKey == null) {
741
- this._collapseKey = navItemDescriptor.key || `${navItemDescriptor.name}`;
742
- this._isCollapsed =
743
- localStorage.getItem('inboxsdk__navitem_collapsed__' + this._collapseKey) === 'true';
744
- }
745
- this._updateType(navItemDescriptor.type);
746
- this._updateName(navItemDescriptor.name);
747
- this._updateSubtitle(navItemDescriptor);
748
- this._updateOrder(navItemDescriptor);
749
- if (this._isNewLeftNavParent) {
750
- this._updateRole(navItemDescriptor.routeID);
751
- }
752
- if (this._type === NAV_ITEM_TYPES.GROUPER) {
753
- this._setupGrouper();
754
- return;
755
- }
756
- this._updateAccessory(navItemDescriptor.accessory);
757
- this._updateIcon(navItemDescriptor);
758
- this._updateClickability(navItemDescriptor);
759
- }
760
- }
761
- export function getLeftIndentationPaddingValue() {
762
- return GMAIL_V2_LEFT_INDENTATION_PADDING;
763
- }