@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,291 +0,0 @@
|
|
|
1
|
-
import * as Kefir from 'kefir';
|
|
2
|
-
import kefirStopper from 'kefir-stopper';
|
|
3
|
-
import kefirBus from 'kefir-bus';
|
|
4
|
-
import InboxBackdrop from './inbox-backdrop';
|
|
5
|
-
import fromEventTargetCapture from '../../../lib/from-event-target-capture';
|
|
6
|
-
import findParent from '../../../../common/find-parent';
|
|
7
|
-
const TAKE_OVER_EVENT = 'inboxSDKdrawerViewTakingOver';
|
|
8
|
-
const zIndex = 500;
|
|
9
|
-
class InboxDrawerView {
|
|
10
|
-
_chrome;
|
|
11
|
-
_exitEl;
|
|
12
|
-
_containerEl;
|
|
13
|
-
_el;
|
|
14
|
-
_backdrop = null;
|
|
15
|
-
_slideAnimationDone;
|
|
16
|
-
_closing = kefirStopper();
|
|
17
|
-
_closed = kefirStopper();
|
|
18
|
-
_composeChanges = kefirBus();
|
|
19
|
-
_preAutoCloseStream = kefirBus();
|
|
20
|
-
constructor(options) {
|
|
21
|
-
this._chrome = typeof options.chrome === 'boolean' ? options.chrome : true;
|
|
22
|
-
let insertionTarget = document.body;
|
|
23
|
-
let composeRect = null;
|
|
24
|
-
const { composeView, closeWithCompose } = options;
|
|
25
|
-
if (composeView) {
|
|
26
|
-
const ret = this._setupComposeInsertionTarget(composeView, closeWithCompose);
|
|
27
|
-
insertionTarget = ret.insertionTarget;
|
|
28
|
-
composeRect = ret.composeRect;
|
|
29
|
-
}
|
|
30
|
-
this._setupElement(options, insertionTarget);
|
|
31
|
-
// Move or resize the ComposeView so that it's not clipped by the DrawerView.
|
|
32
|
-
let composeNeedToMoveLeft = 0;
|
|
33
|
-
if (composeView) {
|
|
34
|
-
if (!composeRect)
|
|
35
|
-
throw new Error('should not happen');
|
|
36
|
-
composeNeedToMoveLeft = this._setupComposeAnimation(composeView, composeRect, true);
|
|
37
|
-
}
|
|
38
|
-
this._el.offsetHeight; // force layout so that adding a class does a transition.
|
|
39
|
-
this._el.classList.add('inboxsdk__active');
|
|
40
|
-
this._slideAnimationDone = Kefir.fromEvents(this._el, 'transitionend')
|
|
41
|
-
.take(1)
|
|
42
|
-
.takeUntilBy(this._closing)
|
|
43
|
-
.map(() => null);
|
|
44
|
-
if (composeView) {
|
|
45
|
-
this._positionCompose(composeView, composeNeedToMoveLeft);
|
|
46
|
-
}
|
|
47
|
-
// Gmail calls preventDefault on escape keypresses. We want to close the
|
|
48
|
-
// drawer for any escape keypresses which weren't preventDefaulted by the
|
|
49
|
-
// current extension.
|
|
50
|
-
fromEventTargetCapture(document, 'keydown')
|
|
51
|
-
.filter((e) => (e.key ? e.key === 'Escape' : e.which === 27))
|
|
52
|
-
.takeUntilBy(this._closing)
|
|
53
|
-
.onValue((e) => {
|
|
54
|
-
const origPreventDefault = e.preventDefault;
|
|
55
|
-
e.preventDefault = function () {
|
|
56
|
-
this._defaultPreventedInContext = true;
|
|
57
|
-
return origPreventDefault.call(this);
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
Kefir.fromEvents(document, 'keydown')
|
|
61
|
-
.filter((e) => (e.key ? e.key === 'Escape' : e.which === 27))
|
|
62
|
-
.filter((e) => !e._defaultPreventedInContext)
|
|
63
|
-
.filter((event) => {
|
|
64
|
-
let isCanceled = false;
|
|
65
|
-
const appEvent = {
|
|
66
|
-
type: 'escape',
|
|
67
|
-
cause: event,
|
|
68
|
-
cancel: () => {
|
|
69
|
-
isCanceled = true;
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
this._preAutoCloseStream.emit(appEvent);
|
|
73
|
-
return !isCanceled;
|
|
74
|
-
})
|
|
75
|
-
.takeUntilBy(this._closing)
|
|
76
|
-
.onValue(() => {
|
|
77
|
-
this.close();
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
_setupComposeInsertionTarget(composeView, closeWithCompose) {
|
|
81
|
-
if (composeView.isMinimized()) {
|
|
82
|
-
throw new Error("Can't attach DrawerView to minimized ComposeView");
|
|
83
|
-
}
|
|
84
|
-
if (composeView.isInlineReplyForm()) {
|
|
85
|
-
throw new Error("Can't attach DrawerView to inline ComposeView");
|
|
86
|
-
}
|
|
87
|
-
if (composeView.isFullscreen()) {
|
|
88
|
-
composeView.setFullscreen(false);
|
|
89
|
-
}
|
|
90
|
-
const closeEvents = [
|
|
91
|
-
Kefir.fromEvents(composeView, 'restored'),
|
|
92
|
-
Kefir.later(10, undefined).flatMap(() => Kefir.fromEvents(composeView, 'fullscreenChanged')),
|
|
93
|
-
];
|
|
94
|
-
if (closeWithCompose) {
|
|
95
|
-
closeEvents.push(Kefir.fromEvents(composeView, 'destroy'), Kefir.fromEvents(composeView, 'minimized'));
|
|
96
|
-
}
|
|
97
|
-
Kefir.merge(closeEvents)
|
|
98
|
-
.takeUntilBy(this._closing.merge(this._composeChanges))
|
|
99
|
-
.onValue(() => this.close());
|
|
100
|
-
const composeEl = composeView.getElement();
|
|
101
|
-
// Read the compose size before any DOM modifications besides un-fullscreening it.
|
|
102
|
-
const composeRect = composeEl.getBoundingClientRect();
|
|
103
|
-
// We're going to modify a bunch of elements, and then clean up our
|
|
104
|
-
// modifications to them once the DrawerView is closed. However, if a
|
|
105
|
-
// second DrawerView is opened, that will trigger this DrawerView to
|
|
106
|
-
// close, and we need to avoid cleaning up the elements that the 2nd
|
|
107
|
-
// DrawerView modifies so we don't trample its changes.
|
|
108
|
-
// This is accomplished by us emitting TAKE_OVER_EVENT on every element
|
|
109
|
-
// we modify. Then we listen for TAKE_OVER_EVENT on these elements. If we
|
|
110
|
-
// get a TAKE_OVER_EVENT from another DrawerView, we don't do our cleanup
|
|
111
|
-
// on that element.
|
|
112
|
-
// Figure out where we're going to stick our DrawerView in the DOM, and
|
|
113
|
-
// set up the z-indexes of the ComposeView's offsetParent and the
|
|
114
|
-
// insertionTarget point so everything will look right.
|
|
115
|
-
const composeOffsetParent = composeEl.offsetParent;
|
|
116
|
-
if (!(composeOffsetParent instanceof HTMLElement))
|
|
117
|
-
throw new Error('should not happen');
|
|
118
|
-
const insertionTarget = findParent(composeOffsetParent, (el) => window.getComputedStyle(el).getPropertyValue('z-index') !== 'auto' &&
|
|
119
|
-
el.getBoundingClientRect().left === 0) || document.body;
|
|
120
|
-
composeEl.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
|
|
121
|
-
bubbles: false,
|
|
122
|
-
cancelable: false,
|
|
123
|
-
detail: null,
|
|
124
|
-
}));
|
|
125
|
-
composeOffsetParent.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
|
|
126
|
-
bubbles: false,
|
|
127
|
-
cancelable: false,
|
|
128
|
-
detail: null,
|
|
129
|
-
}));
|
|
130
|
-
insertionTarget.dispatchEvent(new CustomEvent(TAKE_OVER_EVENT, {
|
|
131
|
-
bubbles: false,
|
|
132
|
-
cancelable: false,
|
|
133
|
-
detail: null,
|
|
134
|
-
}));
|
|
135
|
-
// Needed to stop composeviews from coming apart visually in Gmail.
|
|
136
|
-
insertionTarget.classList.add('inboxsdk__drawers_in_use');
|
|
137
|
-
// Needed to make DrawerView show over search bar in Inbox.
|
|
138
|
-
insertionTarget.style.zIndex = String(zIndex);
|
|
139
|
-
if (!composeOffsetParent.hasAttribute('data-drawer-old-zindex')) {
|
|
140
|
-
composeOffsetParent.setAttribute('data-drawer-old-zindex', composeOffsetParent.style.zIndex);
|
|
141
|
-
}
|
|
142
|
-
composeOffsetParent.style.zIndex = String(zIndex + 2); // 1 more than compose
|
|
143
|
-
this._closed
|
|
144
|
-
.takeUntilBy(Kefir.fromEvents(insertionTarget, TAKE_OVER_EVENT))
|
|
145
|
-
.onValue(() => {
|
|
146
|
-
insertionTarget.style.zIndex = '';
|
|
147
|
-
});
|
|
148
|
-
this._closed
|
|
149
|
-
.merge(this._composeChanges)
|
|
150
|
-
.takeUntilBy(Kefir.fromEvents(composeOffsetParent, TAKE_OVER_EVENT))
|
|
151
|
-
.onValue(() => {
|
|
152
|
-
composeOffsetParent.style.zIndex =
|
|
153
|
-
composeOffsetParent.getAttribute('data-drawer-old-zindex') || '';
|
|
154
|
-
composeOffsetParent.removeAttribute('data-drawer-old-zindex');
|
|
155
|
-
});
|
|
156
|
-
return {
|
|
157
|
-
composeRect,
|
|
158
|
-
insertionTarget,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
_setupElement(options, insertionTarget) {
|
|
162
|
-
const backdrop = (this._backdrop = new InboxBackdrop(zIndex, insertionTarget));
|
|
163
|
-
this._preAutoCloseStream.plug(backdrop.getPreAutoCloseStream());
|
|
164
|
-
backdrop
|
|
165
|
-
.getStopper()
|
|
166
|
-
.takeUntilBy(this._closing)
|
|
167
|
-
.onValue(() => {
|
|
168
|
-
this.close();
|
|
169
|
-
});
|
|
170
|
-
this._containerEl = document.createElement('div');
|
|
171
|
-
this._containerEl.className = 'inboxsdk__drawer_view_container';
|
|
172
|
-
this._containerEl.style.zIndex = String(zIndex + 1);
|
|
173
|
-
this._el = document.createElement('div');
|
|
174
|
-
this._el.setAttribute('role', 'dialog');
|
|
175
|
-
this._el.tabIndex = 0;
|
|
176
|
-
this._el.className = 'inboxsdk__drawer_view';
|
|
177
|
-
if (options.matchSidebarContentPanelWidth) {
|
|
178
|
-
this._el.classList.add('inboxsdk__match_sidebar_content_panel_width');
|
|
179
|
-
}
|
|
180
|
-
this._containerEl.appendChild(this._el);
|
|
181
|
-
if (this._chrome) {
|
|
182
|
-
const titleBar = document.createElement('div');
|
|
183
|
-
titleBar.className = 'inboxsdk__drawer_title_bar';
|
|
184
|
-
const closeButton = document.createElement('button');
|
|
185
|
-
closeButton.type = 'button';
|
|
186
|
-
closeButton.title = 'Close';
|
|
187
|
-
closeButton.className = 'inboxsdk__close_button';
|
|
188
|
-
closeButton.addEventListener('click', () => {
|
|
189
|
-
this.close();
|
|
190
|
-
});
|
|
191
|
-
titleBar.appendChild(closeButton);
|
|
192
|
-
const title = document.createElement('div');
|
|
193
|
-
title.className = 'inboxsdk__drawer_title';
|
|
194
|
-
title.setAttribute('role', 'heading');
|
|
195
|
-
title.textContent = options.title || '';
|
|
196
|
-
titleBar.appendChild(title);
|
|
197
|
-
this._el.appendChild(titleBar);
|
|
198
|
-
}
|
|
199
|
-
this._el.appendChild(options.el);
|
|
200
|
-
insertionTarget.appendChild(this._containerEl);
|
|
201
|
-
this._closing.onValue(() => {
|
|
202
|
-
if (this._backdrop)
|
|
203
|
-
this._backdrop.destroy();
|
|
204
|
-
this._el.classList.remove('inboxsdk__active');
|
|
205
|
-
Kefir.fromEvents(this._el, 'transitionend')
|
|
206
|
-
.merge(Kefir.later(200, undefined)) // transition might not finish if element is hidden
|
|
207
|
-
.take(1)
|
|
208
|
-
.onValue(() => {
|
|
209
|
-
this._closed.destroy();
|
|
210
|
-
this._containerEl.remove();
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
_setupComposeAnimation(composeView, composeRect, forceLayout) {
|
|
215
|
-
const composeEl = composeView.getElement();
|
|
216
|
-
const parentEl = composeEl.parentElement;
|
|
217
|
-
const drawerRect = this._el.getBoundingClientRect();
|
|
218
|
-
const margin = 24;
|
|
219
|
-
const preexistingLeftAdjustment = parseInt(parentEl.style.left) || 0;
|
|
220
|
-
const composeNeedToMoveLeft = composeRect.right -
|
|
221
|
-
preexistingLeftAdjustment -
|
|
222
|
-
(window.innerWidth - drawerRect.width - margin);
|
|
223
|
-
if (composeNeedToMoveLeft > 0) {
|
|
224
|
-
parentEl.style.position = 'relative';
|
|
225
|
-
parentEl.style.transition = 'left 150ms cubic-bezier(.4,0,.2,1)';
|
|
226
|
-
parentEl.style.left = '0';
|
|
227
|
-
if (forceLayout) {
|
|
228
|
-
parentEl.offsetHeight;
|
|
229
|
-
} // We only want to force a full layout once, so we don't start the
|
|
230
|
-
// animation here. We let the caller do that after they've forced layout
|
|
231
|
-
// of the DrawerView _el too if they want.
|
|
232
|
-
}
|
|
233
|
-
return composeNeedToMoveLeft;
|
|
234
|
-
}
|
|
235
|
-
_positionCompose(composeView, composeNeedToMoveLeft) {
|
|
236
|
-
if (composeNeedToMoveLeft > 0) {
|
|
237
|
-
const composeEl = composeView.getElement();
|
|
238
|
-
const parentEl = composeEl.parentElement;
|
|
239
|
-
parentEl.style.left = `${-composeNeedToMoveLeft}px`;
|
|
240
|
-
// When the drawer closes, animate the compose back to its original
|
|
241
|
-
// location, and then unset our extra CSS.
|
|
242
|
-
// If the drawer has a different compose associated with it, then just
|
|
243
|
-
// immediately remove this compose view's extra CSS.
|
|
244
|
-
this._closing
|
|
245
|
-
.takeUntilBy(this._composeChanges)
|
|
246
|
-
.takeUntilBy(Kefir.fromEvents(composeEl, TAKE_OVER_EVENT))
|
|
247
|
-
.onValue(() => {
|
|
248
|
-
parentEl.style.left = '0';
|
|
249
|
-
})
|
|
250
|
-
.flatMap(() => Kefir.fromEvents(parentEl, 'transitionend').merge(Kefir.later(200, undefined)) // transition might not finish if element is hidden
|
|
251
|
-
)
|
|
252
|
-
.merge(this._composeChanges)
|
|
253
|
-
.take(1)
|
|
254
|
-
.takeUntilBy(Kefir.fromEvents(composeEl, TAKE_OVER_EVENT))
|
|
255
|
-
.onValue(() => {
|
|
256
|
-
parentEl.style.position = '';
|
|
257
|
-
parentEl.style.left = '';
|
|
258
|
-
parentEl.style.transition = '';
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
associateComposeView(composeView, closeWithCompose) {
|
|
263
|
-
this._composeChanges.emit(null);
|
|
264
|
-
const { insertionTarget, composeRect } = this._setupComposeInsertionTarget(composeView, closeWithCompose);
|
|
265
|
-
if (this._backdrop)
|
|
266
|
-
insertionTarget.appendChild(this._backdrop.getElement());
|
|
267
|
-
if (this._containerEl.parentElement !== insertionTarget)
|
|
268
|
-
insertionTarget.appendChild(this._containerEl);
|
|
269
|
-
const composeNeedToMoveLeft = this._setupComposeAnimation(composeView, composeRect, false);
|
|
270
|
-
this._positionCompose(composeView, composeNeedToMoveLeft);
|
|
271
|
-
}
|
|
272
|
-
disassociateComposeView() {
|
|
273
|
-
this._composeChanges.emit(null);
|
|
274
|
-
}
|
|
275
|
-
getSlideAnimationDone() {
|
|
276
|
-
return this._slideAnimationDone;
|
|
277
|
-
}
|
|
278
|
-
getClosingStream() {
|
|
279
|
-
return this._closing;
|
|
280
|
-
}
|
|
281
|
-
getClosedStream() {
|
|
282
|
-
return this._closed;
|
|
283
|
-
}
|
|
284
|
-
getPreAutoCloseStream() {
|
|
285
|
-
return this._preAutoCloseStream;
|
|
286
|
-
}
|
|
287
|
-
close() {
|
|
288
|
-
this._closing.destroy();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
export default InboxDrawerView;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import asap from 'asap';
|
|
2
|
-
import * as Kefir from 'kefir';
|
|
3
|
-
import fromEventTargetCapture from '../../lib/from-event-target-capture';
|
|
4
|
-
const dispatchCancel = (element) => asap(() => element.dispatchEvent(new CustomEvent('inboxSDKdiscardCanceled', {
|
|
5
|
-
bubbles: false,
|
|
6
|
-
cancelable: false,
|
|
7
|
-
detail: null,
|
|
8
|
-
})));
|
|
9
|
-
export default function getDiscardStream({ element, discardButton, }) {
|
|
10
|
-
const domEventStream = Kefir.merge([
|
|
11
|
-
fromEventTargetCapture(element, 'keydown')
|
|
12
|
-
.filter((domEvent) => [13, 32].indexOf(domEvent.which) > -1 ||
|
|
13
|
-
[13, 32].indexOf(domEvent.keyCode) > -1)
|
|
14
|
-
.filter((domEvent) => discardButton && discardButton.contains(domEvent.target)),
|
|
15
|
-
fromEventTargetCapture(element, 'click').filter((domEvent) => discardButton && discardButton.contains(domEvent.target)),
|
|
16
|
-
]);
|
|
17
|
-
return domEventStream.map((domEvent) => ({
|
|
18
|
-
eventName: 'discard',
|
|
19
|
-
data: {
|
|
20
|
-
cancel() {
|
|
21
|
-
domEvent.preventDefault();
|
|
22
|
-
domEvent.stopPropagation();
|
|
23
|
-
domEvent.stopImmediatePropagation();
|
|
24
|
-
dispatchCancel(element);
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import asap from 'asap';
|
|
2
|
-
import * as Kefir from 'kefir';
|
|
3
|
-
import fromEventTargetCapture from '../../lib/from-event-target-capture';
|
|
4
|
-
const dispatchCancel = (element // asap necessary so we don't emit this event during the click/keydown event dispatch
|
|
5
|
-
) => asap(() => element.dispatchEvent(new CustomEvent('inboxSDKsendCanceled', {
|
|
6
|
-
bubbles: false,
|
|
7
|
-
cancelable: false,
|
|
8
|
-
detail: null,
|
|
9
|
-
})));
|
|
10
|
-
export default function ({ element, sendButton, sendAndArchive, }) {
|
|
11
|
-
const domEventStream = Kefir.merge([
|
|
12
|
-
fromEventTargetCapture(element, 'keydown')
|
|
13
|
-
.filter((domEvent) => domEvent.ctrlKey || domEvent.metaKey)
|
|
14
|
-
.filter((domEvent) => domEvent.which === 13 || domEvent.keyCode === 13),
|
|
15
|
-
fromEventTargetCapture(element, 'keydown')
|
|
16
|
-
.filter((domEvent) => [13, 32].indexOf(domEvent.which) > -1 ||
|
|
17
|
-
[13, 32].indexOf(domEvent.keyCode) > -1)
|
|
18
|
-
.filter((domEvent) => (sendButton && sendButton.contains(domEvent.target)) ||
|
|
19
|
-
(sendAndArchive &&
|
|
20
|
-
sendAndArchive.contains(domEvent.target))),
|
|
21
|
-
fromEventTargetCapture(element, 'click').filter((domEvent) => (sendButton && sendButton.contains(domEvent.target)) ||
|
|
22
|
-
(sendAndArchive &&
|
|
23
|
-
sendAndArchive.contains(domEvent.target))),
|
|
24
|
-
]);
|
|
25
|
-
return domEventStream
|
|
26
|
-
.filter((domEvent) => {
|
|
27
|
-
if (element.hasAttribute('data-inboxsdk-send-replaced')) {
|
|
28
|
-
domEvent.preventDefault();
|
|
29
|
-
domEvent.stopPropagation();
|
|
30
|
-
domEvent.stopImmediatePropagation();
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
return true;
|
|
34
|
-
})
|
|
35
|
-
.map((domEvent) => ({
|
|
36
|
-
eventName: 'presending',
|
|
37
|
-
data: {
|
|
38
|
-
cancel() {
|
|
39
|
-
domEvent.preventDefault();
|
|
40
|
-
domEvent.stopPropagation();
|
|
41
|
-
domEvent.stopImmediatePropagation();
|
|
42
|
-
dispatchCancel(element);
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
}));
|
|
46
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
returns "/u/NUMBER" or "/u/NUMBER/d/DELEGATE_ID" for delegated accounts
|
|
3
|
-
*/
|
|
4
|
-
export default function getAccountUrlPart() {
|
|
5
|
-
const delegatedAccountMatch = document.location.pathname.match(/\/b\/(.+?)\/u\/(\d+)/);
|
|
6
|
-
if (delegatedAccountMatch) {
|
|
7
|
-
const delegatedAccountId = delegatedAccountMatch[1];
|
|
8
|
-
const delegatedAccountNumber = delegatedAccountMatch[2];
|
|
9
|
-
return `/u/${delegatedAccountNumber}/d/${delegatedAccountId}`;
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
const accountParamMatch = document.location.pathname.match(/(\/u\/\d+)\//i);
|
|
13
|
-
//no match happens in inbox when user only has one account
|
|
14
|
-
const accountParam = accountParamMatch ? accountParamMatch[1] : '/u/0';
|
|
15
|
-
return accountParam;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import getOriginalMessagePage from './getOriginalMessagePage';
|
|
3
|
-
// Messages sent from the local user in Inbox have a fake ID in the DOM (with
|
|
4
|
-
// the "msg-a:r" prefix) that doesn't match up with anything in the Gmail API.
|
|
5
|
-
// This function translates the Inbox ID into the real ID that can be found in
|
|
6
|
-
// the Gmail API.
|
|
7
|
-
async function getGmailMessageIdForSyncMessageId(driver, syncMessageID) {
|
|
8
|
-
const text = await getOriginalMessagePage(driver, {
|
|
9
|
-
syncMessageID: syncMessageID,
|
|
10
|
-
});
|
|
11
|
-
const messageIdMatch = text.match(/<a\b[^<>]+\bhref="\/mail[^"]*(?:\?|&(?:amp;)?)view=att&(?:amp;)?th=([a-f0-9]+)&/i);
|
|
12
|
-
if (!messageIdMatch) {
|
|
13
|
-
throw new Error('Failed to find gmail message id for inbox message id');
|
|
14
|
-
}
|
|
15
|
-
return messageIdMatch[1];
|
|
16
|
-
}
|
|
17
|
-
export default defn(module, getGmailMessageIdForSyncMessageId);
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import { extractThreads } from '../dom-driver/gmail/gmail-response-processor';
|
|
3
|
-
import getSyncThreadsForSearch from './getSyncThreadsForSearch';
|
|
4
|
-
import gmailAjax from './gmailAjax';
|
|
5
|
-
import getAccountUrlPart from './getAccountUrlPart';
|
|
6
|
-
async function getGmailThreadIdForRfcMessageId(driver, rfcMessageId) {
|
|
7
|
-
if (driver.isUsingSyncAPI && driver.isUsingSyncAPI()) {
|
|
8
|
-
const { threads: threadDescriptors } = await getSyncThreadsForSearch(driver, 'rfc822msgid:' + rfcMessageId);
|
|
9
|
-
return threadDescriptors[0].oldGmailThreadID;
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
return forOldAPI(driver, rfcMessageId);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
async function forOldAPI(driver, rfcMessageId) {
|
|
16
|
-
const response = await gmailAjax({
|
|
17
|
-
method: 'POST',
|
|
18
|
-
url: `https://mail.google.com/mail${getAccountUrlPart()}/`,
|
|
19
|
-
data: {
|
|
20
|
-
ik: driver.getPageCommunicator().getIkValue(),
|
|
21
|
-
at: await driver.getGmailActionToken(),
|
|
22
|
-
ui: '2',
|
|
23
|
-
view: 'tl',
|
|
24
|
-
start: '0',
|
|
25
|
-
num: '1',
|
|
26
|
-
rt: 'c',
|
|
27
|
-
search: 'query',
|
|
28
|
-
q: `rfc822msgid:${rfcMessageId}`,
|
|
29
|
-
},
|
|
30
|
-
xhrFields: {
|
|
31
|
-
withCredentials: true,
|
|
32
|
-
},
|
|
33
|
-
canRetry: true,
|
|
34
|
-
headers: {
|
|
35
|
-
'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
const threads = extractThreads(response.text);
|
|
39
|
-
if (threads.length !== 1) {
|
|
40
|
-
throw new Error("Failed to find gmail thread id for rfc message id. Message may not exist in user's account.");
|
|
41
|
-
}
|
|
42
|
-
return threads[0].gmailThreadId;
|
|
43
|
-
}
|
|
44
|
-
export default defn(module, getGmailThreadIdForRfcMessageId);
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import gmailAjax from './gmailAjax';
|
|
3
|
-
async function getOriginalMessagePage(driver, options) {
|
|
4
|
-
const data = {
|
|
5
|
-
ik: driver.getPageCommunicator().getIkValue(),
|
|
6
|
-
view: 'om',
|
|
7
|
-
};
|
|
8
|
-
if (options.oldGmailMessageID) {
|
|
9
|
-
data.th = options.oldGmailMessageID;
|
|
10
|
-
}
|
|
11
|
-
else if (options.syncMessageID) {
|
|
12
|
-
data.permmsgid = options.syncMessageID;
|
|
13
|
-
}
|
|
14
|
-
let url;
|
|
15
|
-
const delegatedAccountMatch = document.location.pathname.match(/\/b\/(.+?)\/u\/(\d+)/);
|
|
16
|
-
if (delegatedAccountMatch) {
|
|
17
|
-
url = document.location.origin + document.location.pathname;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const accountParamMatch = document.location.pathname.match(/(\/u\/\d+)\//i);
|
|
21
|
-
//no match happens in inbox when user only has one account
|
|
22
|
-
const accountParam = accountParamMatch ? accountParamMatch[1] : '/u/0';
|
|
23
|
-
url = `https://mail.google.com/mail${accountParam}`;
|
|
24
|
-
}
|
|
25
|
-
const { text } = await gmailAjax({
|
|
26
|
-
url,
|
|
27
|
-
method: 'GET',
|
|
28
|
-
canRetry: true,
|
|
29
|
-
data,
|
|
30
|
-
});
|
|
31
|
-
return text;
|
|
32
|
-
}
|
|
33
|
-
export default defn(module, getOriginalMessagePage);
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import getOriginalMessagePage from './getOriginalMessagePage';
|
|
3
|
-
import htmlToText from '../../common/html-to-text';
|
|
4
|
-
// Messages sent from the local user in Inbox have a fake ID in the DOM (with
|
|
5
|
-
// the "msg-a:r" prefix) that doesn't match up with anything in the Gmail API.
|
|
6
|
-
// This function translates the Inbox ID into the real ID that can be found in
|
|
7
|
-
// the Gmail API.
|
|
8
|
-
async function getRfcMessageIdForSyncMessageId(driver, syncMessageID) {
|
|
9
|
-
const text = await getOriginalMessagePage(driver, {
|
|
10
|
-
syncMessageID: syncMessageID,
|
|
11
|
-
});
|
|
12
|
-
const match = text.match(/^Message-ID:\s+(\S+)\s*$/im);
|
|
13
|
-
if (!match) {
|
|
14
|
-
throw new Error("Failed to find rfc id for gmail thread id. Message may not exist in user's account.");
|
|
15
|
-
}
|
|
16
|
-
return htmlToText(match[1]);
|
|
17
|
-
}
|
|
18
|
-
export default defn(module, getRfcMessageIdForSyncMessageId);
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import { extractThreadsFromSearchResponse } from '../dom-driver/gmail/gmail-sync-response-processor';
|
|
3
|
-
import gmailAjax from './gmailAjax';
|
|
4
|
-
import getAccountUrlPart from './getAccountUrlPart';
|
|
5
|
-
async function getSyncThreadsForSearch(driver, searchTerm) {
|
|
6
|
-
let responseText = null;
|
|
7
|
-
try {
|
|
8
|
-
const { text } = await gmailAjax({
|
|
9
|
-
method: 'POST',
|
|
10
|
-
url: `https://mail.google.com/sync${getAccountUrlPart()}/i/bv`,
|
|
11
|
-
headers: {
|
|
12
|
-
'Content-Type': 'application/json',
|
|
13
|
-
'X-Framework-Xsrf-Token': await driver
|
|
14
|
-
.getPageCommunicator()
|
|
15
|
-
.getXsrfToken(),
|
|
16
|
-
'X-Gmail-BTAI': await driver.getPageCommunicator().getBtaiHeader(),
|
|
17
|
-
'X-Google-BTD': '1',
|
|
18
|
-
},
|
|
19
|
-
data: JSON.stringify({
|
|
20
|
-
'1': {
|
|
21
|
-
'2': 1,
|
|
22
|
-
'4': searchTerm,
|
|
23
|
-
},
|
|
24
|
-
}),
|
|
25
|
-
});
|
|
26
|
-
responseText = text;
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
const { text } = await gmailAjax({
|
|
30
|
-
method: 'POST',
|
|
31
|
-
url: `https://mail.google.com/sync${getAccountUrlPart()}/i/bv?rt=r&pt=ji`,
|
|
32
|
-
headers: {
|
|
33
|
-
'Content-Type': 'application/json',
|
|
34
|
-
'X-Framework-Xsrf-Token': await driver
|
|
35
|
-
.getPageCommunicator()
|
|
36
|
-
.getXsrfToken(),
|
|
37
|
-
'X-Gmail-BTAI': await driver.getPageCommunicator().getBtaiHeader(),
|
|
38
|
-
'X-Google-BTD': '1',
|
|
39
|
-
},
|
|
40
|
-
data: JSON.stringify([[null, 51, null, searchTerm]]),
|
|
41
|
-
});
|
|
42
|
-
responseText = text;
|
|
43
|
-
}
|
|
44
|
-
return {
|
|
45
|
-
threads: extractThreadsFromSearchResponse(responseText),
|
|
46
|
-
_text: responseText,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export default defn(module, getSyncThreadsForSearch);
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import requestGmailThread from './requestGmailThread';
|
|
3
|
-
import { extractGmailThreadIdFromMessageIdSearch } from '../dom-driver/gmail/gmail-response-processor';
|
|
4
|
-
async function getThreadIdFromMessageId(driver, messageId) {
|
|
5
|
-
const ikValue = driver.getPageCommunicator().getIkValue();
|
|
6
|
-
const text = await requestGmailThread(ikValue, messageId);
|
|
7
|
-
const threadId = extractGmailThreadIdFromMessageIdSearch(text);
|
|
8
|
-
if (!threadId) {
|
|
9
|
-
throw new Error('Failed to find thread id for given message id');
|
|
10
|
-
}
|
|
11
|
-
return threadId;
|
|
12
|
-
}
|
|
13
|
-
export default defn(module, getThreadIdFromMessageId);
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { defn } from 'ud';
|
|
2
|
-
import Kefir from 'kefir';
|
|
3
|
-
import imageRequest from '../lib/imageRequest';
|
|
4
|
-
import rateLimitQueuer from '../../common/rate-limit-queuer';
|
|
5
|
-
import ajax from '../../common/ajax';
|
|
6
|
-
const IMAGE_REQUEST_TIMEOUT = 1000 * 60; // one minute
|
|
7
|
-
const limitedAjax = rateLimitQueuer(rateLimitQueuer(ajax, 1000, 7), 10 * 1000, 50);
|
|
8
|
-
// Tool for making ajax requests to Gmail endpoints. When used in Inbox, this
|
|
9
|
-
// function is able to handle the issue that happens when the user has no Gmail
|
|
10
|
-
// cookies.
|
|
11
|
-
async function gmailAjax(opts) {
|
|
12
|
-
if (!/^https:\/\/mail\.google\.com(?:$|\/)/.test(opts.url)) {
|
|
13
|
-
throw new Error('Should not happen: gmailAjax called with non-gmail url');
|
|
14
|
-
}
|
|
15
|
-
if (document.location.origin === 'https://mail.google.com') {
|
|
16
|
-
return await limitedAjax(opts);
|
|
17
|
-
}
|
|
18
|
-
try {
|
|
19
|
-
return await limitedAjax({ ...opts, canRetry: false });
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
if (e && e.status === 0) {
|
|
23
|
-
// The connection failed for an unspecified reason. One possible reason
|
|
24
|
-
// is that we have no Gmail cookies, and the connection tried to redirect
|
|
25
|
-
// to an accounts.google.com URL so the Gmail cookies could be set, but
|
|
26
|
-
// then this connection failed because we don't have ajax permission to
|
|
27
|
-
// accounts.google.com. We can work around this by trying an image
|
|
28
|
-
// request (which doesn't have cross-domain restrictions) so the Gmail
|
|
29
|
-
// cookies get set, and then retrying the original ajax request.
|
|
30
|
-
try {
|
|
31
|
-
await Kefir.fromPromise(imageRequest('https://mail.google.com/mail/u/0/'))
|
|
32
|
-
.merge(Kefir.later(IMAGE_REQUEST_TIMEOUT, undefined))
|
|
33
|
-
.take(1)
|
|
34
|
-
.takeErrors(1)
|
|
35
|
-
.toPromise();
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
// ignore. If we got an error here, there are several possible causes:
|
|
39
|
-
// 1. The user has Gmail cookies, but the first connection attempt
|
|
40
|
-
// failed for another reason. In this case, we don't care about how
|
|
41
|
-
// this image request turned out.
|
|
42
|
-
// 2. The user did not have Gmail cookies, and the image's original
|
|
43
|
-
// request and its first few redirects succeeded, setting the
|
|
44
|
-
// cookies, but the final request, after the cookies were set,
|
|
45
|
-
// failed. We don't care about the image's final request.
|
|
46
|
-
// 3. The user did not have Gmail cookies, and the image request didn't
|
|
47
|
-
// work at all.
|
|
48
|
-
// In the final case, ideally we would retry the image request, but we
|
|
49
|
-
// can't distinguish that case from the other cases and doing retries
|
|
50
|
-
// of the image request would slow down the other cases. The first case
|
|
51
|
-
// is expected to be significantly more common -- the second two cases
|
|
52
|
-
// where the user has no Gmail cookies is expected to happen maybe once
|
|
53
|
-
// in total to an individual user.
|
|
54
|
-
}
|
|
55
|
-
return await limitedAjax(opts);
|
|
56
|
-
}
|
|
57
|
-
else if (e && typeof e.status === 'number' && e.status >= 500) {
|
|
58
|
-
return await limitedAjax(opts);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
throw e;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
export default defn(module, gmailAjax);
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export default function renderCustomIcon(containerElement, customIconElement, append, insertBeforeEl) {
|
|
2
|
-
// Check if icon wrapper exist or not
|
|
3
|
-
// when renderCustomIcon gets called for updating navItemDescriptor
|
|
4
|
-
let iconElementWrapper = containerElement.querySelector('.inboxsdk__button_icon');
|
|
5
|
-
if (!iconElementWrapper) {
|
|
6
|
-
iconElementWrapper = document.createElement('div');
|
|
7
|
-
iconElementWrapper.classList.add('inboxsdk__button_icon');
|
|
8
|
-
iconElementWrapper.appendChild(customIconElement);
|
|
9
|
-
}
|
|
10
|
-
if (append) {
|
|
11
|
-
containerElement.appendChild(iconElementWrapper);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
containerElement.insertBefore(containerElement, insertBeforeEl || containerElement.firstElementChild);
|
|
15
|
-
}
|
|
16
|
-
}
|