@inboxsdk/core 1.0.1 → 1.0.3
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 +5 -5
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js.map +1 -1
- package/src/inboxsdk.d.ts +16 -1
- package/src/injected-js/gmail/modify-suggestions.d.ts +2 -0
- package/src/injected-js/gmail/modify-suggestions.d.ts.map +1 -1
- package/src/platform-implementation-js/constants/router.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts +2 -0
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +16 -21
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.d.ts +12 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +152 -187
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-app-menu-item.js +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +15 -20
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.d.ts +4 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +59 -56
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.d.ts +9 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +42 -54
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.d.ts +4 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +31 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.d.ts +8 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +21 -23
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.d.ts +4 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +19 -31
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.d.ts +7 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +51 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.d.ts +20 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +166 -130
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.d.ts.map +1 -0
- 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/override-gmail-back-button.d.ts +4 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -51
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +17 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +136 -129
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.d.ts +6 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +102 -95
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.d.ts +6 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +144 -169
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +14 -23
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +41 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +286 -294
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +19 -26
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +36 -42
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +34 -33
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.d.ts +13 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +80 -81
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +124 -81
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts +10 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +47 -54
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +183 -106
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +712 -647
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.d.ts +7 -0
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +93 -82
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.d.ts +7 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.d.ts +11 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +20 -32
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.d.ts +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.d.ts +8 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts +2 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-nav-item-view.js +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.d.ts +8 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +3 -1
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.d.ts +10 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.d.ts +5 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.d.ts +9 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.d.ts +12 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.d.ts +9 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.d.ts +20 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +107 -108
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.d.ts +16 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.d.ts +13 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +66 -66
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.d.ts +5 -0
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.d.ts +6 -0
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.d.ts +6 -0
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.d.ts +1 -0
- package/src/platform-implementation-js/driver-interfaces/driver.d.ts +3 -6
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.d.ts +27 -0
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.d.ts +4 -0
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +34 -34
- package/src/platform-implementation-js/lib/dom/element-view-mapper.d.ts +10 -0
- package/src/platform-implementation-js/lib/dom/element-view-mapper.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +9 -17
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.d.ts +4 -0
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +7 -16
- package/src/platform-implementation-js/lib/populateRouteID.d.ts +6 -0
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts +2 -0
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +4 -11
- package/src/platform-implementation-js/lib/routeIDmatchesHash.d.ts +4 -0
- package/src/platform-implementation-js/lib/toLiveSet.d.ts +5 -0
- package/src/platform-implementation-js/lib/toLiveSet.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/toLiveSet.js +22 -33
- package/src/platform-implementation-js/namespaces/router.d.ts +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +0 -183
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +0 -218
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +0 -85
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +0 -43
|
@@ -1,131 +1,138 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
1
|
+
import once from 'lodash/once';
|
|
2
|
+
import find from 'lodash/find';
|
|
3
|
+
import * as Kefir from 'kefir';
|
|
4
|
+
import fromEventTargetCapture from '../../../lib/from-event-target-capture';
|
|
5
|
+
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
6
|
+
import makeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
7
|
+
import gmailElementGetter from '../gmail-element-getter';
|
|
8
|
+
import copyAndValidateAutocompleteResults from '../../../lib/copyAndValidateAutocompleteResults';
|
|
9
|
+
export default function registerSearchSuggestionsProvider(driver, handler) {
|
|
10
|
+
// We inject the app-provided suggestions into Gmail's AJAX response. Then we
|
|
11
|
+
// watch the DOM for our injected suggestions to show up and attach click and
|
|
12
|
+
// enter handlers to them to let them do custom actions.
|
|
13
|
+
const providerId = 'inboxsdk__suggestions_' +
|
|
14
|
+
('' + Date.now() + Math.random()).replace(/\D+/g, '');
|
|
15
|
+
const pageCommunicator = driver.getPageCommunicator();
|
|
16
|
+
pageCommunicator.registerSuggestionsModifier(providerId);
|
|
17
|
+
// Listen for the AJAX requests, call the application's handler function, and
|
|
18
|
+
// give the application's suggestions back to the pageCommunicator for it to
|
|
19
|
+
// inject into the AJAX responses.
|
|
20
|
+
const suggestionsStream = pageCommunicator.ajaxInterceptStream
|
|
21
|
+
.filter((event) => event.type === 'suggestionsRequest')
|
|
22
|
+
.flatMapLatest(({ query }) => Kefir.fromPromise(Promise.resolve(handler(query)))
|
|
23
|
+
.flatMap((results) => {
|
|
24
|
+
try {
|
|
25
|
+
const validatedResults = copyAndValidateAutocompleteResults(driver, results);
|
|
26
|
+
const validatedResultsWithIds = validatedResults.map((result) => ({
|
|
27
|
+
...result,
|
|
28
|
+
providerId,
|
|
29
|
+
id: `${Date.now()}-${Math.random()}`,
|
|
30
|
+
}));
|
|
31
|
+
return Kefir.constant(validatedResultsWithIds);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return Kefir.constantError(e);
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
.mapErrors((err) => {
|
|
38
|
+
driver.getLogger().error(err);
|
|
39
|
+
return [];
|
|
40
|
+
})
|
|
41
|
+
.map((suggestions) => {
|
|
42
|
+
return { query, suggestions };
|
|
43
|
+
}))
|
|
44
|
+
.onValue((event) => {
|
|
45
|
+
pageCommunicator.provideAutocompleteSuggestions(providerId, event.query, event.suggestions);
|
|
46
|
+
})
|
|
47
|
+
.map((event) => event.suggestions);
|
|
48
|
+
// Wait for the first routeViewDriver to happen before looking for the search box.
|
|
49
|
+
const searchBoxStream = driver
|
|
50
|
+
.getRouteViewDriverStream()
|
|
51
|
+
.toProperty(() => null)
|
|
52
|
+
.map(() => gmailElementGetter.getSearchInput())
|
|
53
|
+
.filter(Boolean)
|
|
54
|
+
.take(1);
|
|
55
|
+
// Wait for the search box to be focused before looking for the suggestions box.
|
|
56
|
+
const suggestionsBoxTbodyStream = searchBoxStream
|
|
57
|
+
.flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'focus'))
|
|
58
|
+
.map(() => gmailElementGetter.getSearchSuggestionsBoxParent())
|
|
59
|
+
.filter(Boolean)
|
|
60
|
+
.flatMapLatest(makeElementChildStream)
|
|
61
|
+
.map((x) => x.el.firstElementChild)
|
|
62
|
+
.take(1)
|
|
63
|
+
.toProperty();
|
|
64
|
+
// This stream emits an event after every time Gmail changes the suggestions
|
|
65
|
+
// list.
|
|
66
|
+
const suggestionsBoxGmailChanges = suggestionsBoxTbodyStream
|
|
67
|
+
.flatMap((suggestionsBoxTbody) => makeMutationObserverChunkedStream(suggestionsBoxTbody, {
|
|
68
|
+
childList: true,
|
|
69
|
+
}).toProperty(() => null))
|
|
70
|
+
.map(() => null);
|
|
71
|
+
// We listen to the event on the document node so that the event can be
|
|
72
|
+
// canceled before Gmail receives it.
|
|
73
|
+
const suggestionsBoxEnterPresses = searchBoxStream.flatMap((searchBox) => fromEventTargetCapture(document, 'keydown').filter((event) => event.keyCode == 13 && event.target === searchBox));
|
|
74
|
+
// Stream of arrays of row elements belonging to this provider.
|
|
75
|
+
const providedRows = suggestionsBoxTbodyStream
|
|
76
|
+
.sampledBy(suggestionsBoxGmailChanges)
|
|
77
|
+
.map((suggestionsBoxTbody) => Array.from(suggestionsBoxTbody.children).filter((row) => row.getElementsByClassName(providerId).length > 0));
|
|
78
|
+
providedRows.onValue((rows) => {
|
|
79
|
+
if (rows[0] && rows[0].previousElementSibling) {
|
|
80
|
+
const prevFirstChild = rows[0].previousElementSibling.firstElementChild;
|
|
81
|
+
if (prevFirstChild) {
|
|
82
|
+
prevFirstChild.classList.add('inboxsdk__suggestions_separator_before');
|
|
83
|
+
}
|
|
84
|
+
const firstChild = rows[0].firstElementChild;
|
|
85
|
+
if (firstChild) {
|
|
86
|
+
firstChild.classList.add('inboxsdk__suggestions_separator_after');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
53
89
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
event.stopImmediatePropagation();
|
|
102
|
-
event.preventDefault();
|
|
103
|
-
searchBox.blur();
|
|
104
|
-
searchBox.value = '';
|
|
90
|
+
const rowSelectionEvents = providedRows.flatMapLatest((rows) => Kefir.merge(rows.map((row) => Kefir.merge([
|
|
91
|
+
fromEventTargetCapture(row, 'click'),
|
|
92
|
+
suggestionsBoxEnterPresses.filter(() => row.classList.contains('gssb_i')),
|
|
93
|
+
]).map((event) => ({ event, row })))));
|
|
94
|
+
const activeSuggestionsStream = Kefir.merge([
|
|
95
|
+
suggestionsStream,
|
|
96
|
+
searchBoxStream
|
|
97
|
+
.flatMapLatest((searchBox) => Kefir.fromEvents(searchBox, 'blur'))
|
|
98
|
+
.map(() => []),
|
|
99
|
+
]).toProperty();
|
|
100
|
+
Kefir.combine([rowSelectionEvents, searchBoxStream], [
|
|
101
|
+
activeSuggestionsStream,
|
|
102
|
+
]).onValue((tuple) => {
|
|
103
|
+
const [{ event, row }, searchBox, suggestions] = tuple;
|
|
104
|
+
const itemDataSpan = row.querySelector('span[data-inboxsdk-suggestion]');
|
|
105
|
+
const itemData = itemDataSpan
|
|
106
|
+
? JSON.parse(itemDataSpan.getAttribute('data-inboxsdk-suggestion') || 'null')
|
|
107
|
+
: null;
|
|
108
|
+
const clearSearch = once(() => {
|
|
109
|
+
event.stopImmediatePropagation();
|
|
110
|
+
event.preventDefault();
|
|
111
|
+
searchBox.blur();
|
|
112
|
+
searchBox.value = '';
|
|
113
|
+
});
|
|
114
|
+
if (itemData) {
|
|
115
|
+
const { id } = itemData;
|
|
116
|
+
const suggestion = find(suggestions, (s) => s.id === id);
|
|
117
|
+
if (!suggestion) {
|
|
118
|
+
// I can imagine this happening if Gmail caches old suggestions
|
|
119
|
+
// results. Unknown if it does that so let's log. If it does, then
|
|
120
|
+
// activeSuggestionsStream should be changed to have more than just
|
|
121
|
+
// the most recent suggestions.
|
|
122
|
+
driver.getLogger().error(new Error('Failed to find suggestion by id'));
|
|
123
|
+
}
|
|
124
|
+
if (suggestion && suggestion.onClick) {
|
|
125
|
+
clearSearch();
|
|
126
|
+
suggestion.onClick.call(null);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (itemData && itemData.routeName) {
|
|
130
|
+
clearSearch();
|
|
131
|
+
driver.goto(itemData.routeName, itemData.routeParams);
|
|
132
|
+
}
|
|
133
|
+
else if (itemData && itemData.externalURL) {
|
|
134
|
+
clearSearch();
|
|
135
|
+
window.open(itemData.externalURL);
|
|
136
|
+
}
|
|
105
137
|
});
|
|
106
|
-
|
|
107
|
-
const {
|
|
108
|
-
id
|
|
109
|
-
} = itemData;
|
|
110
|
-
const suggestion = (0, _find.default)(suggestions, s => s.id === id);
|
|
111
|
-
if (!suggestion) {
|
|
112
|
-
// I can imagine this happening if Gmail caches old suggestions
|
|
113
|
-
// results. Unknown if it does that so let's log. If it does, then
|
|
114
|
-
// activeSuggestionsStream should be changed to have more than just
|
|
115
|
-
// the most recent suggestions.
|
|
116
|
-
driver.getLogger().error(new Error('Failed to find suggestion by id'));
|
|
117
|
-
}
|
|
118
|
-
if (suggestion && suggestion.onClick) {
|
|
119
|
-
clearSearch();
|
|
120
|
-
suggestion.onClick.call(null);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (itemData && itemData.routeName) {
|
|
124
|
-
clearSearch();
|
|
125
|
-
driver.goto(itemData.routeName, itemData.routeParams);
|
|
126
|
-
} else if (itemData && itemData.externalURL) {
|
|
127
|
-
clearSearch();
|
|
128
|
-
window.open(itemData.externalURL);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Kefir from 'kefir';
|
|
2
|
+
import GmailComposeView from '../views/gmail-compose-view';
|
|
3
|
+
import type GmailMessageView from '../views/gmail-message-view';
|
|
4
|
+
import type GmailDriver from '../gmail-driver';
|
|
5
|
+
export default function setupComposeViewDriverStream(gmailDriver: GmailDriver, messageViewDriverStream: Kefir.Observable<GmailMessageView, unknown>, xhrInterceptorStream: Kefir.Observable<any, unknown>): Kefir.Observable<GmailComposeView, unknown>;
|
|
6
|
+
//# sourceMappingURL=setup-compose-view-driver-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-compose-view-driver-stream.d.ts","sourceRoot":"","sources":["../../../../../../../src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,gBAAgB,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAI/C,MAAM,CAAC,OAAO,UAAU,4BAA4B,CAClD,WAAW,EAAE,WAAW,EACxB,uBAAuB,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,EACpE,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GACnD,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAI7C"}
|
|
@@ -1,105 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var _makeElementChildStream = _interopRequireDefault(require("../../../lib/dom/make-element-child-stream"));
|
|
13
|
-
var _elementViewMapper = _interopRequireDefault(require("../../../lib/dom/element-view-mapper"));
|
|
14
|
-
var _makeElementStreamMerger = _interopRequireDefault(require("../../../lib/dom/make-element-stream-merger"));
|
|
15
|
-
var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
|
|
16
|
-
var _gmailComposeView = _interopRequireDefault(require("../views/gmail-compose-view"));
|
|
17
|
-
var _logger = _interopRequireDefault(require("../../../lib/logger"));
|
|
18
|
-
var impStream = (0, _udKefir.default)(module, imp);
|
|
19
|
-
function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
20
|
-
return impStream.flatMapLatest(imp => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
|
|
1
|
+
import * as Kefir from 'kefir';
|
|
2
|
+
import udKefir from 'ud-kefir';
|
|
3
|
+
import kefirMakeMutationObserverChunkedStream from '../../../lib/dom/make-mutation-observer-chunked-stream';
|
|
4
|
+
import makeElementChildStream from '../../../lib/dom/make-element-child-stream';
|
|
5
|
+
import elementViewMapper from '../../../lib/dom/element-view-mapper';
|
|
6
|
+
import makeElementStreamMerger from '../../../lib/dom/make-element-stream-merger';
|
|
7
|
+
import GmailElementGetter from '../gmail-element-getter';
|
|
8
|
+
import GmailComposeView from '../views/gmail-compose-view';
|
|
9
|
+
var impStream = udKefir(module, imp);
|
|
10
|
+
export default function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
11
|
+
return impStream.flatMapLatest((imp) => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
|
|
21
12
|
}
|
|
22
13
|
function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
14
|
+
return Kefir.fromPromise(GmailElementGetter.waitForGmailModeToSettle())
|
|
15
|
+
.flatMap(() => {
|
|
16
|
+
var elementStream;
|
|
17
|
+
var isStandalone = false;
|
|
18
|
+
if (GmailElementGetter.isStandaloneComposeWindow()) {
|
|
19
|
+
elementStream = _setupStandaloneComposeElementStream();
|
|
20
|
+
isStandalone = true;
|
|
21
|
+
}
|
|
22
|
+
else if (GmailElementGetter.isStandaloneThreadWindow()) {
|
|
23
|
+
elementStream = Kefir.never();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
elementStream = _setupStandardComposeElementStream();
|
|
27
|
+
}
|
|
28
|
+
return elementStream.map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
|
|
29
|
+
isStandalone,
|
|
30
|
+
isInlineReplyForm: false,
|
|
31
|
+
})));
|
|
32
|
+
})
|
|
33
|
+
.merge(messageViewDriverStream.flatMap((gmailMessageView) => gmailMessageView.getReplyElementStream().map(elementViewMapper((el) => new GmailComposeView(el, xhrInterceptorStream, gmailDriver, {
|
|
34
|
+
isStandalone: false,
|
|
35
|
+
isInlineReplyForm: true,
|
|
36
|
+
})))))
|
|
37
|
+
.flatMap((composeViewDriver) => composeViewDriver.ready());
|
|
42
38
|
}
|
|
43
39
|
function _setupStandardComposeElementStream() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
40
|
+
return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.getComposeWindowContainer())
|
|
41
|
+
.flatMap((composeGrandParent) => {
|
|
42
|
+
var composeParentEl = composeGrandParent.el.querySelector('div.AD');
|
|
43
|
+
if (composeParentEl) {
|
|
44
|
+
return makeElementChildStream(composeParentEl)
|
|
45
|
+
.takeUntilBy(composeGrandParent.removalStream)
|
|
46
|
+
.map(_informElement('composeFullscreenStateChanged'));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return Kefir.never();
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
.merge(GmailElementGetter.getFullscreenComposeWindowContainerStream()
|
|
53
|
+
.flatMap(({ el, removalStream }) => makeElementChildStream(el).takeUntilBy(removalStream))
|
|
54
|
+
.map(_informElement('composeFullscreenStateChanged'))
|
|
55
|
+
.map(({ el, removalStream }) => {
|
|
56
|
+
// If you close a fullscreen compose while it's still saving, Gmail never
|
|
57
|
+
// removes it from the DOM, and instead only removes a specific child
|
|
58
|
+
// element. Ugh. Watch for its removal too.
|
|
59
|
+
const targetEl = el.querySelector('[role=dialog] div.aaZ');
|
|
60
|
+
if (!targetEl)
|
|
61
|
+
return null;
|
|
62
|
+
var hiddenStream = kefirMakeMutationObserverChunkedStream(targetEl, {
|
|
63
|
+
childList: true,
|
|
64
|
+
})
|
|
65
|
+
.filter(() => targetEl.childElementCount === 0)
|
|
66
|
+
.map(() => null);
|
|
67
|
+
return {
|
|
68
|
+
el,
|
|
69
|
+
removalStream: removalStream.merge(hiddenStream).take(1),
|
|
70
|
+
};
|
|
71
|
+
})
|
|
72
|
+
.filter(Boolean))
|
|
73
|
+
.flatMap((event) => {
|
|
74
|
+
if (!event)
|
|
75
|
+
throw new Error('Should not happen');
|
|
76
|
+
const el = event.el.querySelector('[role=dialog]');
|
|
77
|
+
if (!el || !el.querySelector('form')) {
|
|
78
|
+
return Kefir.never();
|
|
79
|
+
}
|
|
80
|
+
return Kefir.constant({
|
|
81
|
+
el,
|
|
82
|
+
removalStream: event.removalStream,
|
|
83
|
+
});
|
|
84
|
+
})
|
|
85
|
+
.flatMap(makeElementStreamMerger());
|
|
85
86
|
}
|
|
86
87
|
function _setupStandaloneComposeElementStream() {
|
|
87
|
-
|
|
88
|
+
return _waitForContainerAndMonitorChildrenStream(() => GmailElementGetter.StandaloneCompose.getComposeWindowContainer());
|
|
88
89
|
}
|
|
89
90
|
function _waitForContainerAndMonitorChildrenStream(containerFn) {
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
return Kefir.interval(2000, undefined) // TODO replace this with page-parser-tree
|
|
92
|
+
.map(containerFn)
|
|
93
|
+
.filter()
|
|
94
|
+
.take(1)
|
|
95
|
+
.flatMap((containerEl) => makeElementChildStream(containerEl));
|
|
92
96
|
}
|
|
93
97
|
function _informElement(eventName) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
98
|
+
return function (event) {
|
|
99
|
+
const composeEl = event &&
|
|
100
|
+
event.el &&
|
|
101
|
+
event.el.querySelector &&
|
|
102
|
+
event.el.querySelector('[role=dialog]');
|
|
103
|
+
if (composeEl) {
|
|
104
|
+
composeEl.dispatchEvent(new CustomEvent(eventName, {
|
|
105
|
+
bubbles: false,
|
|
106
|
+
cancelable: false,
|
|
107
|
+
detail: null,
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
return event;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Observable } from 'kefir';
|
|
2
|
+
import type GmailDriver from '../gmail-driver';
|
|
3
|
+
import type GmailRouteProcessor from '../views/gmail-route-view/gmail-route-processor';
|
|
4
|
+
import GmailRouteView from '../views/gmail-route-view/gmail-route-view';
|
|
5
|
+
export default function setupRouteViewDriverStream(gmailRouteProcessor: GmailRouteProcessor, driver: GmailDriver): Observable<GmailRouteView, unknown>;
|
|
6
|
+
//# sourceMappingURL=setup-route-view-driver-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-route-view-driver-stream.d.ts","sourceRoot":"","sources":["../../../../../../../src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,WAAW,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,mBAAmB,MAAM,iDAAiD,CAAC;AAEvF,OAAO,cAAc,MAAM,4CAA4C,CAAC;AAKxE,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,WAAW,GAClB,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CA6KrC"}
|