@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.6
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 +1 -1
- package/package.json +5 -1
- package/src/inboxsdk-js/check-requirements.js +7 -3
- package/src/inboxsdk-js/header.js +1 -0
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
- package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
- package/src/inboxsdk-js/inboxsdk.js +33 -39
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
- package/src/inboxsdk.d.ts +2 -0
- package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
- package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
- package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
- package/src/injected-js/gmail/thread-identifier/index.js +57 -93
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
- package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
- package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
- package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
- package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
- package/src/injected-js/main.js +11 -24
- package/src/injected-js/message-metadata-holder.js +52 -82
- package/src/injected-js/setup-data-exposer.js +89 -148
- package/src/injected-js/setup-error-silencer.js +21 -21
- package/src/injected-js/setup-event-reemitter.js +30 -22
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
- package/src/injected-js/setupPushStateListener.js +18 -11
- package/src/injected-js/xhr-helper.js +62 -65
- package/src/injected-js/xhr-proxy-factory.js +195 -445
- package/src/injected-js/xhr-proxy-factory.test.js +824 -991
- package/src/platform-implementation-js/constants/router.js +14 -9
- package/src/platform-implementation-js/constants/toolbars.js +8 -3
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
- package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
- package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
- package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
- package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
- package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
- package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
- package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
- package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
- package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
- package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
- package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
- package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
- package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
- package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
- package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
- package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
- package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
- package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
- package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
- package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
- package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
- package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
- package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
- package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
- package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
- package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
- package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
- package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
- package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
- package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
- package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
- package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
- package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
- package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
- package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
- package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
- package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
- package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
- package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
- package/src/platform-implementation-js/lib/shared-style.js +14 -13
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
- package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
- package/src/platform-implementation-js/main.js +9 -24
- package/src/platform-implementation-js/namespaces/compose.js +37 -60
- package/src/platform-implementation-js/namespaces/conversations.js +52 -124
- package/src/platform-implementation-js/namespaces/global.js +27 -39
- package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
- package/src/platform-implementation-js/namespaces/lists.js +25 -31
- package/src/platform-implementation-js/namespaces/modal.js +34 -28
- package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
- package/src/platform-implementation-js/namespaces/router.js +70 -137
- package/src/platform-implementation-js/namespaces/search.js +19 -17
- package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
- package/src/platform-implementation-js/namespaces/user.js +36 -37
- package/src/platform-implementation-js/namespaces/widgets.js +54 -61
- package/src/platform-implementation-js/platform-implementation.js +98 -229
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
- package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
- package/src/platform-implementation-js/views/content-panel-view.js +28 -30
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
- package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
- package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
- package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
- package/src/platform-implementation-js/views/nav-item-view.js +51 -115
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
- package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
- package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
- package/src/platform-implementation-js/views/section-view.js +60 -52
- package/src/platform-implementation-js/views/thread-row-view.js +49 -74
- package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
- package/src/platform-implementation-js/widgets/modal-view.js +39 -68
- package/src/platform-implementation-js/widgets/mole-view.js +22 -22
- package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = setupAjaxInterceptor;
|
|
8
|
+
var _intersection = _interopRequireDefault(require("lodash/intersection"));
|
|
9
|
+
var _censorJSONTree = _interopRequireDefault(require("../../common/censorJSONTree"));
|
|
10
|
+
var logger = _interopRequireWildcard(require("../injected-logger"));
|
|
11
|
+
var _xhrProxyFactory = _interopRequireDefault(require("../xhr-proxy-factory"));
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
14
|
function logErrorExceptEventListeners(err, details) {
|
|
11
15
|
// Don't log the page's own errors
|
|
12
16
|
if (details !== 'XMLHttpRequest event listener error') {
|
|
@@ -18,26 +22,18 @@ function logErrorExceptEventListeners(err, details) {
|
|
|
18
22
|
}, 1);
|
|
19
23
|
}
|
|
20
24
|
}
|
|
21
|
-
|
|
22
25
|
function triggerEvent(detail) {
|
|
23
|
-
document.dispatchEvent(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
})
|
|
29
|
-
);
|
|
26
|
+
document.dispatchEvent(new CustomEvent('inboxSDKajaxIntercept', {
|
|
27
|
+
bubbles: true,
|
|
28
|
+
cancelable: false,
|
|
29
|
+
detail
|
|
30
|
+
}));
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
export default function setupAjaxInterceptor() {
|
|
32
|
+
function setupAjaxInterceptor() {
|
|
33
33
|
const main_wrappers = [];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
main_wrappers,
|
|
38
|
-
{ logError: logErrorExceptEventListeners }
|
|
39
|
-
);
|
|
40
|
-
|
|
34
|
+
global.XMLHttpRequest = (0, _xhrProxyFactory.default)(global.XMLHttpRequest, main_wrappers, {
|
|
35
|
+
logError: logErrorExceptEventListeners
|
|
36
|
+
});
|
|
41
37
|
{
|
|
42
38
|
let currentSuggestionsConnection;
|
|
43
39
|
main_wrappers.push({
|
|
@@ -54,19 +50,13 @@ export default function setupAjaxInterceptor() {
|
|
|
54
50
|
}
|
|
55
51
|
},
|
|
56
52
|
afterListeners(connection) {
|
|
57
|
-
if (
|
|
58
|
-
connection.status === 200 &&
|
|
59
|
-
connection.originalSendBody &&
|
|
60
|
-
connection === currentSuggestionsConnection
|
|
61
|
-
) {
|
|
53
|
+
if (connection.status === 200 && connection.originalSendBody && connection === currentSuggestionsConnection) {
|
|
62
54
|
const originalRequest = JSON.parse(connection.originalSendBody);
|
|
63
55
|
// The suggestions request object contains two keys — one is always '1',
|
|
64
56
|
// the other is a number that seems somewhat consistent but not consistent
|
|
65
57
|
// enough to be safe to hard-code. The search query lives inside the
|
|
66
58
|
// property the latter property.
|
|
67
|
-
const queryKey = Object.keys(originalRequest).find(
|
|
68
|
-
(key) => key !== '1'
|
|
69
|
-
);
|
|
59
|
+
const queryKey = Object.keys(originalRequest).find(key => key !== '1');
|
|
70
60
|
// Descend into the object that has the query inside it.
|
|
71
61
|
const queryObj = originalRequest[queryKey];
|
|
72
62
|
// When an empty search box is first focused, a suggestions request
|
|
@@ -78,15 +68,16 @@ export default function setupAjaxInterceptor() {
|
|
|
78
68
|
// the value out of the '1' key since that is always what holds a
|
|
79
69
|
// user-supplied query.
|
|
80
70
|
const query = Object.keys(queryObj).length === 1 && queryObj['1'];
|
|
81
|
-
|
|
82
71
|
if (query) {
|
|
83
|
-
triggerEvent({
|
|
72
|
+
triggerEvent({
|
|
73
|
+
type: 'searchSuggestionsReceieved',
|
|
74
|
+
query
|
|
75
|
+
});
|
|
84
76
|
}
|
|
85
77
|
}
|
|
86
|
-
}
|
|
78
|
+
}
|
|
87
79
|
});
|
|
88
80
|
}
|
|
89
|
-
|
|
90
81
|
{
|
|
91
82
|
let isComposeViewSending = false;
|
|
92
83
|
let sendRequestMisses = [];
|
|
@@ -98,24 +89,18 @@ export default function setupAjaxInterceptor() {
|
|
|
98
89
|
isComposeViewSending = false;
|
|
99
90
|
sendRequestMisses = [];
|
|
100
91
|
});
|
|
101
|
-
const logIfParseFailed =
|
|
92
|
+
const logIfParseFailed = request => {
|
|
102
93
|
if (!isComposeViewSending) return;
|
|
103
|
-
|
|
104
94
|
sendRequestMisses.push(request);
|
|
105
|
-
|
|
106
95
|
if (sendRequestMisses.length < 3) return;
|
|
107
|
-
|
|
108
96
|
logger.error(new Error('Failed to identify outgoing send request'), {
|
|
109
|
-
requestPayloadList:
|
|
97
|
+
requestPayloadList: (0, _censorJSONTree.default)(sendRequestMisses)
|
|
110
98
|
});
|
|
111
|
-
|
|
112
99
|
isComposeViewSending = false;
|
|
113
100
|
sendRequestMisses = [];
|
|
114
101
|
};
|
|
115
|
-
|
|
116
102
|
const SEND_ACTIONS = ['^pfg', '^f_bt', '^f_btns', '^f_cl'];
|
|
117
|
-
const currentConnectionIDs
|
|
118
|
-
new WeakMap();
|
|
103
|
+
const currentConnectionIDs = new WeakMap();
|
|
119
104
|
main_wrappers.push({
|
|
120
105
|
isRelevantTo(connection) {
|
|
121
106
|
return /sync(?:\/u\/\d+)?\/i\/s/.test(connection.url);
|
|
@@ -123,47 +108,29 @@ export default function setupAjaxInterceptor() {
|
|
|
123
108
|
originalSendBodyLogger(connection) {
|
|
124
109
|
if (connection.originalSendBody) {
|
|
125
110
|
const originalRequest = JSON.parse(connection.originalSendBody);
|
|
126
|
-
|
|
127
111
|
const updateList = originalRequest[2] && originalRequest[2][1];
|
|
128
112
|
if (!updateList) {
|
|
129
113
|
logIfParseFailed(originalRequest);
|
|
130
114
|
return;
|
|
131
115
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const updateWrapper
|
|
135
|
-
|
|
136
|
-
update[2][2] &&
|
|
137
|
-
(update[2][2][14] || update[2][2][2]);
|
|
138
|
-
const isMessageUpdate =
|
|
139
|
-
updateWrapper &&
|
|
140
|
-
updateWrapper[1] &&
|
|
141
|
-
updateWrapper[1][1] &&
|
|
142
|
-
updateWrapper[1][1].indexOf('msg-a:') > -1;
|
|
143
|
-
|
|
144
|
-
return (
|
|
145
|
-
isMessageUpdate &&
|
|
146
|
-
updateWrapper[1][11] &&
|
|
147
|
-
intersection(updateWrapper[1][11], SEND_ACTIONS).length ===
|
|
148
|
-
SEND_ACTIONS.length
|
|
149
|
-
);
|
|
116
|
+
const sendUpdateMatch = updateList.find(update => {
|
|
117
|
+
const updateWrapper = update[2] && update[2][2] && (update[2][2][14] || update[2][2][2]);
|
|
118
|
+
const isMessageUpdate = updateWrapper && updateWrapper[1] && updateWrapper[1][1] && updateWrapper[1][1].indexOf('msg-a:') > -1;
|
|
119
|
+
return isMessageUpdate && updateWrapper[1][11] && (0, _intersection.default)(updateWrapper[1][11], SEND_ACTIONS).length === SEND_ACTIONS.length;
|
|
150
120
|
});
|
|
151
121
|
if (!sendUpdateMatch) {
|
|
152
122
|
logIfParseFailed(originalRequest);
|
|
153
123
|
return;
|
|
154
124
|
}
|
|
155
|
-
|
|
156
|
-
const sendUpdateWrapper =
|
|
157
|
-
sendUpdateMatch[2] &&
|
|
158
|
-
sendUpdateMatch[2][2] &&
|
|
159
|
-
(sendUpdateMatch[2][2][14] || sendUpdateMatch[2][2][2]);
|
|
125
|
+
const sendUpdateWrapper = sendUpdateMatch[2] && sendUpdateMatch[2][2] && (sendUpdateMatch[2][2][14] || sendUpdateMatch[2][2][2]);
|
|
160
126
|
const sendUpdate = sendUpdateWrapper[1];
|
|
161
|
-
|
|
162
127
|
const draftID = sendUpdate[1].replace('msg-a:', '');
|
|
163
128
|
const actionList = sendUpdate[11];
|
|
164
|
-
|
|
165
129
|
currentConnectionIDs.set(connection, draftID);
|
|
166
|
-
triggerEvent({
|
|
130
|
+
triggerEvent({
|
|
131
|
+
type: 'emailSending',
|
|
132
|
+
draftID
|
|
133
|
+
});
|
|
167
134
|
isComposeViewSending = false;
|
|
168
135
|
sendRequestMisses = [];
|
|
169
136
|
}
|
|
@@ -171,98 +138,74 @@ export default function setupAjaxInterceptor() {
|
|
|
171
138
|
afterListeners(connection) {
|
|
172
139
|
if (currentConnectionIDs.has(connection)) {
|
|
173
140
|
const sendFailed = () => {
|
|
174
|
-
triggerEvent({
|
|
141
|
+
triggerEvent({
|
|
142
|
+
type: 'emailSendFailed',
|
|
143
|
+
draftID
|
|
144
|
+
});
|
|
175
145
|
currentConnectionIDs.delete(connection);
|
|
176
146
|
};
|
|
177
|
-
|
|
178
147
|
const draftID = currentConnectionIDs.get(connection);
|
|
179
|
-
|
|
180
148
|
if (connection.status !== 200 || !connection.originalResponseText) {
|
|
181
149
|
sendFailed();
|
|
182
150
|
return;
|
|
183
151
|
}
|
|
184
|
-
|
|
185
152
|
const originalResponse = JSON.parse(connection.originalResponseText);
|
|
186
|
-
|
|
187
153
|
const updateList = originalResponse[2] && originalResponse[2][6];
|
|
188
154
|
if (!updateList) {
|
|
189
155
|
sendFailed();
|
|
190
156
|
return;
|
|
191
157
|
}
|
|
192
|
-
|
|
193
|
-
const sendUpdateMatch = updateList.find(
|
|
194
|
-
(update) =>
|
|
195
|
-
update[1] &&
|
|
196
|
-
update[1][3] &&
|
|
197
|
-
update[1][3][7] &&
|
|
198
|
-
update[1][3][7][1] &&
|
|
199
|
-
update[1][3][7][1][5] &&
|
|
200
|
-
update[1][3][7][1][5][0] &&
|
|
201
|
-
update[1][3][7][1][5][0][14]
|
|
202
|
-
);
|
|
158
|
+
const sendUpdateMatch = updateList.find(update => update[1] && update[1][3] && update[1][3][7] && update[1][3][7][1] && update[1][3][7][1][5] && update[1][3][7][1][5][0] && update[1][3][7][1][5][0][14]);
|
|
203
159
|
if (!sendUpdateMatch) {
|
|
204
160
|
sendFailed();
|
|
205
161
|
return;
|
|
206
162
|
}
|
|
207
|
-
|
|
208
|
-
const sendUpdate =
|
|
209
|
-
sendUpdateMatch[1] &&
|
|
210
|
-
sendUpdateMatch[1][3] &&
|
|
211
|
-
sendUpdateMatch[1][3][7] &&
|
|
212
|
-
sendUpdateMatch[1][3][7][1] &&
|
|
213
|
-
sendUpdateMatch[1][3][7][1][5] &&
|
|
214
|
-
sendUpdateMatch[1][3][7][1][5][0];
|
|
215
|
-
|
|
163
|
+
const sendUpdate = sendUpdateMatch[1] && sendUpdateMatch[1][3] && sendUpdateMatch[1][3][7] && sendUpdateMatch[1][3][7][1] && sendUpdateMatch[1][3][7][1][5] && sendUpdateMatch[1][3][7][1][5][0];
|
|
216
164
|
const rfcID = sendUpdate[14];
|
|
217
|
-
|
|
218
165
|
triggerEvent({
|
|
219
166
|
type: 'emailSent',
|
|
220
167
|
rfcID,
|
|
221
|
-
draftID
|
|
168
|
+
draftID
|
|
222
169
|
});
|
|
223
|
-
|
|
224
170
|
currentConnectionIDs.delete(connection);
|
|
225
171
|
}
|
|
226
|
-
}
|
|
172
|
+
}
|
|
227
173
|
});
|
|
228
174
|
}
|
|
229
175
|
|
|
230
176
|
// sync token savers
|
|
231
177
|
{
|
|
232
|
-
const saveBTAIHeader =
|
|
233
|
-
|
|
234
|
-
triggerEvent({
|
|
178
|
+
const saveBTAIHeader = header => {
|
|
179
|
+
document.head.setAttribute('data-inboxsdk-btai-header', header);
|
|
180
|
+
triggerEvent({
|
|
181
|
+
type: 'btaiHeaderReceived'
|
|
182
|
+
});
|
|
235
183
|
};
|
|
236
184
|
main_wrappers.push({
|
|
237
185
|
isRelevantTo(connection) {
|
|
238
|
-
return (
|
|
239
|
-
/sync(?:\/u\/\d+)?\//.test(connection.url) &&
|
|
240
|
-
!(document.head: any).hasAttribute('data-inboxsdk-btai-header')
|
|
241
|
-
);
|
|
186
|
+
return /sync(?:\/u\/\d+)?\//.test(connection.url) && !document.head.hasAttribute('data-inboxsdk-btai-header');
|
|
242
187
|
},
|
|
243
188
|
originalSendBodyLogger(connection) {
|
|
244
189
|
if (connection.headers['X-Gmail-BTAI']) {
|
|
245
190
|
saveBTAIHeader(connection.headers['X-Gmail-BTAI']);
|
|
246
191
|
}
|
|
247
|
-
}
|
|
192
|
+
}
|
|
248
193
|
});
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
(
|
|
252
|
-
|
|
194
|
+
const saveXsrfTokenHeader = header => {
|
|
195
|
+
document.head.setAttribute('data-inboxsdk-xsrf-token', header);
|
|
196
|
+
triggerEvent({
|
|
197
|
+
type: 'xsrfTokenHeaderReceived'
|
|
198
|
+
});
|
|
253
199
|
};
|
|
254
200
|
main_wrappers.push({
|
|
255
201
|
isRelevantTo(connection) {
|
|
256
|
-
return (
|
|
257
|
-
/sync(?:\/u\/\d+)?\//.test(connection.url) &&
|
|
258
|
-
!(document.head: any).hasAttribute('data-inboxsdk-xsrf-token')
|
|
259
|
-
);
|
|
202
|
+
return /sync(?:\/u\/\d+)?\//.test(connection.url) && !document.head.hasAttribute('data-inboxsdk-xsrf-token');
|
|
260
203
|
},
|
|
261
204
|
originalSendBodyLogger(connection) {
|
|
262
205
|
if (connection.headers['X-Framework-Xsrf-Token']) {
|
|
263
206
|
saveXsrfTokenHeader(connection.headers['X-Framework-Xsrf-Token']);
|
|
264
207
|
}
|
|
265
|
-
}
|
|
208
|
+
}
|
|
266
209
|
});
|
|
267
210
|
}
|
|
268
|
-
}
|
|
211
|
+
}
|
|
@@ -1,80 +1,67 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = setupClickAndGetNewIframeSrc;
|
|
8
|
+
var _once = _interopRequireDefault(require("lodash/once"));
|
|
9
|
+
var _kefir = _interopRequireDefault(require("kefir"));
|
|
10
|
+
var _simulateMouseEvent = require("../../platform-implementation-js/lib/dom/simulate-mouse-event");
|
|
11
|
+
var _makeElementChildStream = _interopRequireDefault(require("../../platform-implementation-js/lib/dom/make-element-child-stream"));
|
|
12
|
+
function setupClickAndGetNewIframeSrc() {
|
|
13
|
+
(0, _makeElementChildStream.default)(document.body).filter(_ref => {
|
|
14
|
+
let {
|
|
15
|
+
el
|
|
16
|
+
} = _ref;
|
|
17
|
+
return el.nodeName === 'IFRAME' && !el.hasAttribute('src');
|
|
18
|
+
}).onValue(_ref2 => {
|
|
19
|
+
let {
|
|
20
|
+
el
|
|
21
|
+
} = _ref2;
|
|
22
|
+
const document = el.contentDocument;
|
|
23
|
+
document.addEventListener('inboxSDKclickAndGetNewIframeSrc', function (event) {
|
|
24
|
+
clickAndGetNewIframeSrc(event.target).then(src => {
|
|
25
|
+
event.target.dispatchEvent(new CustomEvent('inboxSDKclickAndGetNewIframeSrcResult', {
|
|
26
|
+
bubbles: false,
|
|
27
|
+
cancelable: false,
|
|
28
|
+
detail: {
|
|
29
|
+
type: 'success',
|
|
30
|
+
src
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
}).catch(err => {
|
|
34
|
+
event.target.dispatchEvent(new CustomEvent('inboxSDKclickAndGetNewIframeSrcResult', {
|
|
35
|
+
bubbles: false,
|
|
36
|
+
cancelable: false,
|
|
37
|
+
detail: {
|
|
38
|
+
type: 'error',
|
|
39
|
+
message: err.message,
|
|
40
|
+
stack: err.stack
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
});
|
|
41
44
|
});
|
|
45
|
+
});
|
|
42
46
|
}
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
const getIframeSrcDescriptor = once(() =>
|
|
49
|
-
Object.getOwnPropertyDescriptor(getIframeProto(), 'src')
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
const iframeSrcSets: Kefir.Observable<string> = Kefir.stream((emitter) => {
|
|
47
|
+
const getIframeProto = (0, _once.default)(() => Object.getPrototypeOf(document.createElement('iframe')));
|
|
48
|
+
const getIframeSrcDescriptor = (0, _once.default)(() => Object.getOwnPropertyDescriptor(getIframeProto(), 'src'));
|
|
49
|
+
const iframeSrcSets = _kefir.default.stream(emitter => {
|
|
53
50
|
const iframeProto = getIframeProto();
|
|
54
51
|
const originalDescriptor = getIframeSrcDescriptor();
|
|
55
|
-
|
|
52
|
+
Object.defineProperty(iframeProto, 'src', {
|
|
56
53
|
enumerable: true,
|
|
57
54
|
configurable: true,
|
|
58
55
|
set(src) {
|
|
59
56
|
emitter.emit(src);
|
|
60
|
-
}
|
|
57
|
+
}
|
|
61
58
|
});
|
|
62
59
|
return () => {
|
|
63
|
-
|
|
60
|
+
Object.defineProperty(iframeProto, 'src', originalDescriptor);
|
|
64
61
|
};
|
|
65
62
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
.merge(Kefir.later(10 * 1000, null))
|
|
70
|
-
.take(1)
|
|
71
|
-
.flatMap((result) =>
|
|
72
|
-
result
|
|
73
|
-
? Kefir.constant(result)
|
|
74
|
-
: Kefir.constantError(new Error('timed out waiting for iframe src set'))
|
|
75
|
-
)
|
|
76
|
-
.toPromise();
|
|
77
|
-
|
|
78
|
-
simulateClick(el);
|
|
63
|
+
function clickAndGetNewIframeSrc(el) {
|
|
64
|
+
const pr = iframeSrcSets.merge(_kefir.default.later(10 * 1000, null)).take(1).flatMap(result => result ? _kefir.default.constant(result) : _kefir.default.constantError(new Error('timed out waiting for iframe src set'))).toPromise();
|
|
65
|
+
(0, _simulateMouseEvent.simulateClick)(el);
|
|
79
66
|
return pr;
|
|
80
|
-
}
|
|
67
|
+
}
|
|
@@ -1,51 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = setupComposeViewDraftIDFinder;
|
|
3
7
|
const MAX_SEARCH_DEPTH = 3;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
collection: Object,
|
|
7
|
-
predicate: (?Object) => boolean,
|
|
8
|
-
maxDepth: number,
|
|
9
|
-
currentDepth: number = 0
|
|
10
|
-
) => {
|
|
8
|
+
const searchCollection = function (collection, predicate, maxDepth) {
|
|
9
|
+
let currentDepth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
11
10
|
const ownKeys = Object.keys(collection);
|
|
12
11
|
for (let i = 0; i < ownKeys.length; i++) {
|
|
13
12
|
const value = collection[ownKeys[i]];
|
|
14
13
|
if (predicate(value)) {
|
|
15
14
|
return value;
|
|
16
15
|
} else if (currentDepth <= maxDepth && value instanceof Object) {
|
|
17
|
-
const match = searchCollection(
|
|
18
|
-
value,
|
|
19
|
-
predicate,
|
|
20
|
-
maxDepth,
|
|
21
|
-
currentDepth + 1
|
|
22
|
-
);
|
|
16
|
+
const match = searchCollection(value, predicate, maxDepth, currentDepth + 1);
|
|
23
17
|
if (match) return match;
|
|
24
18
|
}
|
|
25
19
|
}
|
|
26
20
|
return null;
|
|
27
21
|
};
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
const match = searchCollection(
|
|
31
|
-
target.__cdn.context,
|
|
32
|
-
(value) => typeof value === 'string' && value.indexOf('#msg-a:') > -1,
|
|
33
|
-
MAX_SEARCH_DEPTH
|
|
34
|
-
);
|
|
22
|
+
const findDraftID = target => {
|
|
23
|
+
const match = searchCollection(target.__cdn.context, value => typeof value === 'string' && value.indexOf('#msg-a:') > -1, MAX_SEARCH_DEPTH);
|
|
35
24
|
return match ? match.replace('#msg-a:', '') : null;
|
|
36
25
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
(target: any).setAttribute('data-inboxsdk-draft-id', draftID);
|
|
48
|
-
},
|
|
49
|
-
true
|
|
50
|
-
);
|
|
51
|
-
}
|
|
26
|
+
function setupComposeViewDraftIDFinder() {
|
|
27
|
+
document.addEventListener('inboxSDKgetDraftIDforComposeView', _ref => {
|
|
28
|
+
let {
|
|
29
|
+
target
|
|
30
|
+
} = _ref;
|
|
31
|
+
const draftID = findDraftID(target);
|
|
32
|
+
if (!draftID) throw new Error('could not retrieve draft ID for compose view');
|
|
33
|
+
target.setAttribute('data-inboxsdk-draft-id', draftID);
|
|
34
|
+
}, true);
|
|
35
|
+
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = setupInboxFakeWindowResizeListener;
|
|
7
|
+
function setupInboxFakeWindowResizeListener() {
|
|
4
8
|
document.addEventListener('inboxSDKinboxFakeWindowResize', fakeWindowResize);
|
|
5
9
|
}
|
|
6
|
-
|
|
7
10
|
function fakeWindowResize() {
|
|
8
|
-
|
|
11
|
+
Object.defineProperty(document.documentElement, 'clientWidth', {
|
|
9
12
|
configurable: true,
|
|
10
|
-
value: window.innerWidth - 1
|
|
13
|
+
value: window.innerWidth - 1
|
|
11
14
|
});
|
|
12
|
-
|
|
13
15
|
{
|
|
14
16
|
const event = document.createEvent('HTMLEvents');
|
|
15
|
-
|
|
17
|
+
event.initEvent('resize', true, false);
|
|
16
18
|
window.dispatchEvent(event);
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
(Object: any).defineProperty(document.documentElement, 'clientWidth', {
|
|
20
|
+
Object.defineProperty(document.documentElement, 'clientWidth', {
|
|
20
21
|
configurable: true,
|
|
21
|
-
get: () => window.innerWidth
|
|
22
|
+
get: () => window.innerWidth
|
|
22
23
|
});
|
|
23
|
-
|
|
24
24
|
{
|
|
25
25
|
const event = document.createEvent('HTMLEvents');
|
|
26
|
-
|
|
26
|
+
event.initEvent('resize', true, false);
|
|
27
27
|
window.dispatchEvent(event);
|
|
28
28
|
}
|
|
29
|
-
}
|
|
29
|
+
}
|
package/src/injected-js/main.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
1
3
|
/* eslint-disable flowtype/require-valid-file-annotation, no-undef */
|
|
2
4
|
|
|
3
5
|
if (!global.__InboxSDKInjected) {
|
|
4
6
|
global.__InboxSDKInjected = true;
|
|
5
|
-
|
|
6
7
|
const logger = require('./injected-logger');
|
|
7
8
|
let oldDefine;
|
|
8
9
|
try {
|
|
@@ -17,29 +18,16 @@ if (!global.__InboxSDKInjected) {
|
|
|
17
18
|
const setupDataExposer = require('./setup-data-exposer').default;
|
|
18
19
|
const setupEventReemitter = require('./setup-event-reemitter').default;
|
|
19
20
|
const setupErrorSilencer = require('./setup-error-silencer').default;
|
|
20
|
-
const setupCustomViewEventAssassin =
|
|
21
|
-
require('./setupCustomViewEventAssassin').default;
|
|
21
|
+
const setupCustomViewEventAssassin = require('./setupCustomViewEventAssassin').default;
|
|
22
22
|
const setupPushStateListener = require('./setupPushStateListener').default;
|
|
23
|
-
const setupInboxCustomViewLinkFixer =
|
|
24
|
-
require('./setupInboxCustomViewLinkFixer').default;
|
|
25
|
-
|
|
23
|
+
const setupInboxCustomViewLinkFixer = require('./setupInboxCustomViewLinkFixer').default;
|
|
26
24
|
const gmailInterceptor = require('./gmail/setup-gmail-interceptor').default;
|
|
27
|
-
const setupGmonkeyHandler =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
require('./inbox/setupInboxFakeWindowResizeListener').default;
|
|
34
|
-
const setupComposeViewDraftIDFinder =
|
|
35
|
-
require('./inbox/setupComposeViewDraftIDFinder').default;
|
|
36
|
-
const setupInboxAjaxInterceptor =
|
|
37
|
-
require('./inbox/setupAjaxInterceptor').default;
|
|
38
|
-
|
|
39
|
-
const pageOrigin: string =
|
|
40
|
-
(process.env.NODE_ENV === 'test' && global.__test_origin) ||
|
|
41
|
-
document.location.origin;
|
|
42
|
-
|
|
25
|
+
const setupGmonkeyHandler = require('./gmail/setup-gmonkey-handler').default;
|
|
26
|
+
const setupClickAndGetNewIframeSrc = require('./inbox/setupClickAndGetNewIframeSrc').default;
|
|
27
|
+
const setupInboxFakeWindowResizeListener = require('./inbox/setupInboxFakeWindowResizeListener').default;
|
|
28
|
+
const setupComposeViewDraftIDFinder = require('./inbox/setupComposeViewDraftIDFinder').default;
|
|
29
|
+
const setupInboxAjaxInterceptor = require('./inbox/setupAjaxInterceptor').default;
|
|
30
|
+
const pageOrigin = process.env.NODE_ENV === 'test' && global.__test_origin || document.location.origin;
|
|
43
31
|
if (pageOrigin === 'https://mail.google.com') {
|
|
44
32
|
gmailInterceptor();
|
|
45
33
|
setupGmonkeyHandler();
|
|
@@ -51,7 +39,6 @@ if (!global.__InboxSDKInjected) {
|
|
|
51
39
|
} else {
|
|
52
40
|
throw new Error('Should not happen');
|
|
53
41
|
}
|
|
54
|
-
|
|
55
42
|
extCorbWorkaroundPageWorld.init();
|
|
56
43
|
xhrHelper();
|
|
57
44
|
setupDataExposer();
|
|
@@ -67,4 +54,4 @@ if (!global.__InboxSDKInjected) {
|
|
|
67
54
|
define = oldDefine;
|
|
68
55
|
}
|
|
69
56
|
}
|
|
70
|
-
}
|
|
57
|
+
}
|