@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.
- package/inboxsdk.js +4474 -463
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js +1 -1
- package/pageWorld.js.map +1 -1
- package/src/common/load-script.d.ts +0 -6
- package/src/common/load-script.d.ts.map +1 -1
- package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
- package/src/inboxsdk.d.ts +29 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts +6 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +2 -2
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts +13 -5
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/conversations.d.ts +7 -0
- package/src/platform-implementation-js/namespaces/conversations.d.ts.map +1 -1
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts +4 -2
- package/src/platform-implementation-js/namespaces/nav-menu.d.ts.map +1 -1
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts +12 -5
- package/src/platform-implementation-js/views/conversations/attachment-card-view.d.ts.map +1 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts +2 -1
- package/src/platform-implementation-js/views/native-nav-item-view.d.ts.map +1 -1
- package/src/build/exec.js +0 -26
- package/src/build/spawn.js +0 -17
- package/src/common/ajax.js +0 -90
- package/src/common/cachebust-url.js +0 -10
- package/src/common/censorHTMLstring.js +0 -37
- package/src/common/censorHTMLtree.js +0 -28
- package/src/common/censorJSONTree.js +0 -15
- package/src/common/connectivity-test.js +0 -21
- package/src/common/defer.js +0 -11
- package/src/common/find-parent.js +0 -10
- package/src/common/get-extension-id.js +0 -7
- package/src/common/get-or-fail.js +0 -8
- package/src/common/get-session-id.js +0 -14
- package/src/common/get-stack-trace.js +0 -6
- package/src/common/html-to-text.js +0 -7
- package/src/common/isElementVisible.js +0 -6
- package/src/common/load-script.js +0 -128
- package/src/common/log-error.js +0 -185
- package/src/common/quoted-split.js +0 -18
- package/src/common/rate-limit-queuer.js +0 -57
- package/src/common/rate-limit.js +0 -14
- package/src/common/version.js +0 -8
- package/src/inboxsdk-js/header.js +0 -19
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +0 -4
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +0 -4
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +0 -2
- package/src/inboxsdk-js/inboxsdk-TEST.js +0 -5
- package/src/inboxsdk-js/inboxsdk.js +0 -23
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +0 -14
- package/src/inboxsdk-js/loading/platform-implementation-loader.js +0 -31
- package/src/injected-js/gmail/constants.js +0 -2
- package/src/injected-js/gmail/modify-suggestions.js +0 -106
- package/src/injected-js/gmail/setup-gmail-interceptor.js +0 -936
- package/src/injected-js/gmail/setup-gmonkey-handler.js +0 -49
- package/src/injected-js/gmail/sync-compose-processor-20220909.js +0 -298
- package/src/injected-js/gmail/sync-compose-processor.js +0 -55
- package/src/injected-js/gmail/sync-compose-request-processor.js +0 -109
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +0 -71
- package/src/injected-js/gmail/thread-identifier/index.js +0 -133
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +0 -61
- package/src/injected-js/injected-logger.js +0 -50
- package/src/injected-js/main.js +0 -49
- package/src/injected-js/message-metadata-holder.js +0 -103
- package/src/injected-js/setup-data-exposer.js +0 -135
- package/src/injected-js/setup-error-silencer.js +0 -15
- package/src/injected-js/setup-event-reemitter.js +0 -47
- package/src/injected-js/setupCustomViewEventAssassin.js +0 -90
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +0 -24
- package/src/injected-js/setupPushStateListener.js +0 -14
- package/src/injected-js/xhr-helper.js +0 -43
- package/src/injected-js/xhr-proxy-factory.js +0 -537
- package/src/platform-implementation-js/constants/nav-item-types.js +0 -19
- package/src/platform-implementation-js/constants/router.js +0 -60
- package/src/platform-implementation-js/constants/toolbars.js +0 -5
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +0 -158
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +0 -20
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-collapsible-panel.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-nav-item.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-support-item.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/encodeDraftUrlId.js +0 -8
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +0 -47
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +0 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-message-id.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-rfc-message-id-for-gmail-thread-id.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +0 -57
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +0 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +0 -55
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/isIntegratedViewGmail.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +0 -177
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +0 -17
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.js +0 -44
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +0 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +0 -138
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +0 -152
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +0 -48
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +0 -357
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +0 -36
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +0 -85
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +0 -142
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-gmail-styles.js +0 -115
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/get-main-content-element-changed-stream.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter/wait-for-gmail-mode-to-settle.js +0 -12
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.js +0 -264
- package/src/platform-implementation-js/dom-driver/gmail/gmail-page-communicator.js +0 -201
- package/src/platform-implementation-js/dom-driver/gmail/gmail-response-processor.js +0 -532
- package/src/platform-implementation-js/dom-driver/gmail/gmail-sync-response-processor.js +0 -300
- package/src/platform-implementation-js/dom-driver/gmail/is-compose-titlebar-light-color.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +0 -92
- package/src/platform-implementation-js/dom-driver/gmail/makePageParserTree.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/pageParserOptions.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +0 -129
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +0 -80
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +0 -723
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +0 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +0 -172
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +0 -106
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +0 -328
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +0 -720
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +0 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +0 -50
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +0 -65
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-status-bar.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +0 -66
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/detectClassicRecipientsArea.js +0 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +0 -14
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +0 -60
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +0 -54
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +0 -98
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-information-extractor.js +0 -28
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +0 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +0 -18
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-recipients.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/gmail-compose-button-view.js +0 -233
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +0 -355
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +0 -21
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +0 -63
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/page-parser.js +0 -223
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +0 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/set-recipients.js +0 -157
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/setupLinkPopovers.js +0 -109
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +0 -123
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +0 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +0 -1542
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/attachment-icon.js +0 -4
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +0 -75
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +0 -737
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +0 -763
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +0 -103
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +0 -508
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +0 -236
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-support-item-view.js +0 -84
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +0 -986
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +0 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +0 -658
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +0 -459
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +0 -265
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-color-classes.js +0 -33
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/button-view.js +0 -325
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-accessory-button-view.js +0 -61
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/create-parent-accessory-button-view.js +0 -58
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +0 -23
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/modal-button-view.js +0 -101
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-dropdown-button-view.js +0 -30
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/more-parent-accessory-button-view.js +0 -10
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +0 -42
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-dropdown-view.js +0 -22
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +0 -112
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +0 -122
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +0 -194
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +0 -352
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +0 -76
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +0 -57
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +0 -291
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +0 -28
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +0 -46
- package/src/platform-implementation-js/driver-common/getAccountUrlPart.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +0 -17
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +0 -44
- package/src/platform-implementation-js/driver-common/getOriginalMessagePage.js +0 -33
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +0 -18
- package/src/platform-implementation-js/driver-common/getSyncThreadsForSearch.js +0 -49
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +0 -13
- package/src/platform-implementation-js/driver-common/gmailAjax.js +0 -65
- package/src/platform-implementation-js/driver-common/inboxAjax.js +0 -5
- package/src/platform-implementation-js/driver-common/render-custom-icon.js +0 -16
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +0 -24
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +0 -245
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +0 -144
- package/src/platform-implementation-js/driver-common/sidebar/constants.js +0 -26
- package/src/platform-implementation-js/driver-common/update-icon.js +0 -90
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +0 -1
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +0 -1
- package/src/platform-implementation-js/lib/ErrorCollector.js +0 -47
- package/src/platform-implementation-js/lib/Membrane.js +0 -22
- package/src/platform-implementation-js/lib/ScrollableContainByScreen.js +0 -30
- package/src/platform-implementation-js/lib/attemptWithRetries.js +0 -16
- package/src/platform-implementation-js/lib/common-page-communicator.js +0 -137
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +0 -35
- package/src/platform-implementation-js/lib/css-selector-escape.js +0 -6
- package/src/platform-implementation-js/lib/delay-asap.js +0 -10
- package/src/platform-implementation-js/lib/delay-idle.js +0 -16
- package/src/platform-implementation-js/lib/dom/block-and-reemit-keyboard-events.js +0 -36
- package/src/platform-implementation-js/lib/dom/custom-events.js +0 -5
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +0 -9
- package/src/platform-implementation-js/lib/dom/generic-button-view.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-insert-before-element.js +0 -39
- package/src/platform-implementation-js/lib/dom/get-selection.js +0 -30
- package/src/platform-implementation-js/lib/dom/insert-element-in-order.js +0 -38
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +0 -83
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +0 -12
- package/src/platform-implementation-js/lib/dom/keyboard-shortcut-stream.js +0 -12
- package/src/platform-implementation-js/lib/dom/make-element-child-stream.js +0 -79
- package/src/platform-implementation-js/lib/dom/make-element-stream-merger.js +0 -27
- package/src/platform-implementation-js/lib/dom/make-element-view-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-chunked-stream.js +0 -15
- package/src/platform-implementation-js/lib/dom/make-mutation-observer-stream.js +0 -5
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +0 -8
- package/src/platform-implementation-js/lib/dom/outsideClicksAndEscape.js +0 -38
- package/src/platform-implementation-js/lib/dom/parentNodes.js +0 -8
- package/src/platform-implementation-js/lib/dom/querySelectorOrFail.js +0 -6
- package/src/platform-implementation-js/lib/dom/reemitClickEventForReact.js +0 -22
- package/src/platform-implementation-js/lib/dom/set-css.js +0 -20
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +0 -88
- package/src/platform-implementation-js/lib/dom/simulate-key.js +0 -46
- package/src/platform-implementation-js/lib/dom/simulate-mouse-event.js +0 -16
- package/src/platform-implementation-js/lib/dom/trigger-relay-event.js +0 -7
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.js +0 -25
- package/src/platform-implementation-js/lib/fake-window-resize.js +0 -5
- package/src/platform-implementation-js/lib/from-event-target-capture.js +0 -12
- package/src/platform-implementation-js/lib/fromEventsWithOptions.js +0 -10
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +0 -124
- package/src/platform-implementation-js/lib/handler-registry.js +0 -67
- package/src/platform-implementation-js/lib/idMap.js +0 -40
- package/src/platform-implementation-js/lib/imageRequest.js +0 -8
- package/src/platform-implementation-js/lib/incrementName.js +0 -7
- package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +0 -8
- package/src/platform-implementation-js/lib/inject-script.js +0 -33
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +0 -44
- package/src/platform-implementation-js/lib/is-valid-app-id.js +0 -27
- package/src/platform-implementation-js/lib/is-valid-email.js +0 -14
- package/src/platform-implementation-js/lib/isNotNil.js +0 -5
- package/src/platform-implementation-js/lib/isStreakAppId.js +0 -11
- package/src/platform-implementation-js/lib/logger.js +0 -439
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +0 -10
- package/src/platform-implementation-js/lib/persistent-queue.js +0 -107
- package/src/platform-implementation-js/lib/populateRouteID.js +0 -17
- package/src/platform-implementation-js/lib/react/ElementContainer.js +0 -26
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +0 -8
- package/src/platform-implementation-js/lib/safe-event-emitter.js +0 -16
- package/src/platform-implementation-js/lib/stopper-pool.js +0 -41
- package/src/platform-implementation-js/lib/stream-wait-for.js +0 -30
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +0 -12
- package/src/platform-implementation-js/lib/toLiveSet.js +0 -22
- package/src/platform-implementation-js/lib/wait-for.js +0 -38
- package/src/platform-implementation-js/lib/waitForAsync.js +0 -18
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +0 -5
- package/src/platform-implementation-js/main.js +0 -42
- package/src/platform-implementation-js/namespaces/app-menu.js +0 -81
- package/src/platform-implementation-js/namespaces/butter-bar.js +0 -163
- package/src/platform-implementation-js/namespaces/compose.js +0 -59
- package/src/platform-implementation-js/namespaces/conversations.js +0 -83
- package/src/platform-implementation-js/namespaces/global.js +0 -30
- package/src/platform-implementation-js/namespaces/keyboard.js +0 -30
- package/src/platform-implementation-js/namespaces/lists.js +0 -40
- package/src/platform-implementation-js/namespaces/modal.js +0 -43
- package/src/platform-implementation-js/namespaces/nav-menu.js +0 -33
- package/src/platform-implementation-js/namespaces/router.js +0 -139
- package/src/platform-implementation-js/namespaces/search.js +0 -29
- package/src/platform-implementation-js/namespaces/toolbars.js +0 -147
- package/src/platform-implementation-js/namespaces/user.js +0 -57
- package/src/platform-implementation-js/namespaces/widgets.js +0 -73
- package/src/platform-implementation-js/platform-implementation.js +0 -178
- package/src/platform-implementation-js/views/SimpleElementView.js +0 -16
- package/src/platform-implementation-js/views/app-menu-item-view.js +0 -442
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +0 -43
- package/src/platform-implementation-js/views/collapsible-panel-view.js +0 -256
- package/src/platform-implementation-js/views/collapsible-section-view.js +0 -63
- package/src/platform-implementation-js/views/compose-button-view.js +0 -45
- package/src/platform-implementation-js/views/compose-view.js +0 -310
- package/src/platform-implementation-js/views/content-panel-view.js +0 -36
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +0 -41
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +0 -117
- package/src/platform-implementation-js/views/conversations/message-view.js +0 -203
- package/src/platform-implementation-js/views/conversations/thread-view.js +0 -97
- package/src/platform-implementation-js/views/keyboard-shortcut-handle.js +0 -14
- package/src/platform-implementation-js/views/native-nav-item-view.js +0 -60
- package/src/platform-implementation-js/views/nav-item-view.js +0 -130
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +0 -25
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +0 -29
- package/src/platform-implementation-js/views/route-view/list-route-view.js +0 -46
- package/src/platform-implementation-js/views/route-view/route-view.js +0 -47
- package/src/platform-implementation-js/views/section-view.js +0 -60
- package/src/platform-implementation-js/views/thread-row-view.js +0 -90
- package/src/platform-implementation-js/widgets/buttons/basic-button-view-controller.js +0 -39
- package/src/platform-implementation-js/widgets/buttons/dropdown-button-view-controller.js +0 -98
- package/src/platform-implementation-js/widgets/buttons/dropdown-view.js +0 -121
- package/src/platform-implementation-js/widgets/drawer-view.js +0 -46
- package/src/platform-implementation-js/widgets/modal-view.js +0 -108
- package/src/platform-implementation-js/widgets/mole-view.js +0 -38
- 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
|
-
}
|