@inboxsdk/core 1.0.5 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/inboxsdk.js +25 -192
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +3 -47
  5. package/pageWorld.js.map +1 -1
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.d.ts +3 -0
  7. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.d.ts.map +1 -0
  8. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +3 -8
  9. package/src/inboxsdk-js/inboxsdk-NONREMOTE.d.ts +3 -0
  10. package/src/inboxsdk-js/inboxsdk-NONREMOTE.d.ts.map +1 -0
  11. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -6
  12. package/src/inboxsdk-js/inboxsdk-REMOTE.d.ts +3 -0
  13. package/src/inboxsdk-js/inboxsdk-REMOTE.d.ts.map +1 -0
  14. package/src/inboxsdk-js/inboxsdk-REMOTE.js +2 -5
  15. package/src/inboxsdk-js/inboxsdk-TEST.d.ts +3 -0
  16. package/src/inboxsdk-js/inboxsdk-TEST.d.ts.map +1 -0
  17. package/src/inboxsdk-js/inboxsdk-TEST.js +5 -6
  18. package/src/inboxsdk-js/inboxsdk.d.ts +8 -0
  19. package/src/inboxsdk-js/inboxsdk.d.ts.map +1 -0
  20. package/src/inboxsdk-js/inboxsdk.js +22 -32
  21. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.d.ts +2 -0
  22. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.d.ts.map +1 -0
  23. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +14 -16
  24. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +1 -1
  25. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
  26. package/src/injected-js/gmail/setup-gmail-interceptor.js +7 -14
  27. package/src/injected-js/main.js +0 -9
  28. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  29. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -2
  30. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +2 -1
  31. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +1 -2
  32. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +10 -1
  33. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +39 -35
  34. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +1 -2
  35. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +2 -3
  36. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +13 -14
  37. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +1 -2
  38. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +2 -2
  39. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +3 -4
  40. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +7 -8
  41. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +28 -31
  42. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +4 -5
  43. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +2 -3
  44. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +1 -2
  45. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +10 -0
  46. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +10 -11
  47. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +4 -5
  48. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +3 -4
  49. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +2 -3
  50. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +2 -3
  51. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +2 -3
  52. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +5 -6
  53. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +1 -2
  54. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +4 -5
  55. package/src/platform-implementation-js/lib/idMap.d.ts +1 -2
  56. package/src/platform-implementation-js/lib/idMap.d.ts.map +1 -1
  57. package/src/platform-implementation-js/lib/idMap.js +4 -44
  58. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  59. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +3 -4
  60. package/src/platform-implementation-js/lib/react/ElementContainer.js +3 -7
  61. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.d.ts +3 -0
  62. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.d.ts.map +1 -0
  63. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -9
  64. package/src/platform-implementation-js/main.d.ts +5 -0
  65. package/src/platform-implementation-js/main.d.ts.map +1 -0
  66. package/src/platform-implementation-js/main.js +38 -61
  67. package/src/platform-implementation-js/namespaces/conversations.js +2 -3
  68. package/src/platform-implementation-js/namespaces/lists.js +1 -2
  69. package/src/platform-implementation-js/namespaces/nav-menu.js +2 -3
  70. package/src/platform-implementation-js/namespaces/router.js +3 -4
  71. package/src/platform-implementation-js/namespaces/toolbars.js +1 -2
  72. package/src/platform-implementation-js/platform-implementation.d.ts +0 -3
  73. package/src/platform-implementation-js/platform-implementation.js +1 -11
  74. package/src/platform-implementation-js/views/app-menu-item-view.js +2 -1
  75. package/src/platform-implementation-js/views/collapsible-panel-view.js +2 -1
  76. package/src/platform-implementation-js/views/content-panel-view.js +1 -2
  77. package/src/platform-implementation-js/views/conversations/custom-message-view.js +3 -4
  78. package/src/platform-implementation-js/views/conversations/message-view.js +1 -2
  79. package/src/platform-implementation-js/views/conversations/thread-view.js +1 -2
  80. package/src/platform-implementation-js/views/nav-item-view.js +1 -2
  81. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +2 -3
  82. package/src/platform-implementation-js/widgets/drawer-view.js +1 -2
  83. package/src/platform-implementation-js/widgets/modal-view.js +1 -2
  84. package/src/platform-implementation-js/widgets/mole-view.js +1 -2
  85. package/src/injected-js/inbox/setupAjaxInterceptor.js +0 -211
  86. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +0 -67
  87. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +0 -35
  88. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +0 -29
  89. package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts +0 -2
  90. package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts.map +0 -1
  91. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +0 -17
  92. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +0 -13
  93. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +0 -38
  94. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +0 -55
  95. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +0 -19
  96. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +0 -27
  97. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +0 -23
  98. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +0 -43
  99. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +0 -34
  100. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +0 -53
  101. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +0 -31
  102. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +0 -103
  103. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +0 -69
  104. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +0 -32
  105. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +0 -28
  106. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +0 -49
  107. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +0 -100
  108. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +0 -99
  109. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +0 -36
  110. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +0 -114
  111. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +0 -73
  112. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +0 -39
  113. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +0 -28
  114. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +0 -148
  115. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +0 -866
  116. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +0 -62
  117. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +0 -12
  118. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +0 -18
  119. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +0 -33
  120. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +0 -265
  121. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +0 -301
  122. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +0 -183
  123. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +0 -64
  124. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +0 -72
  125. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +0 -78
  126. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +0 -297
  127. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +0 -92
  128. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +0 -54
  129. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +0 -272
  130. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +0 -161
  131. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +0 -58
  132. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +0 -198
  133. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +0 -90
  134. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +0 -46
  135. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +0 -116
  136. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +0 -843
  137. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +0 -76
  138. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +0 -31
  139. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +0 -25
  140. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +0 -64
  141. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +0 -275
  142. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +0 -113
  143. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +0 -97
  144. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +0 -316
  145. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +0 -219
  146. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +0 -171
  147. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +0 -128
  148. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +0 -312
  149. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +0 -26
  150. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts +0 -2
  151. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts.map +0 -1
  152. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +0 -4
  153. package/src/platform-implementation-js/lib/shared-style.js +0 -23
  154. package/src/types/gulp-add-src.d.ts +0 -7
@@ -1,211 +0,0 @@
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; }
14
- function logErrorExceptEventListeners(err, details) {
15
- // Don't log the page's own errors
16
- if (details !== 'XMLHttpRequest event listener error') {
17
- logger.error(err, details);
18
- } else {
19
- setTimeout(function () {
20
- // let window.onerror log this
21
- throw err;
22
- }, 1);
23
- }
24
- }
25
- function triggerEvent(detail) {
26
- document.dispatchEvent(new CustomEvent('inboxSDKajaxIntercept', {
27
- bubbles: true,
28
- cancelable: false,
29
- detail
30
- }));
31
- }
32
- function setupAjaxInterceptor() {
33
- const main_wrappers = [];
34
- global.XMLHttpRequest = (0, _xhrProxyFactory.default)(global.XMLHttpRequest, main_wrappers, {
35
- logError: logErrorExceptEventListeners
36
- });
37
- {
38
- let currentSuggestionsConnection;
39
- main_wrappers.push({
40
- isRelevantTo(connection) {
41
- if (/sync(?:\/u\/\d+)?\/suggest/.test(connection.url)) {
42
- // we only want to keep track of the most recent search —
43
- // if the user is typing 'hello' there's no point in worrying about
44
- // each of the individual letters. In fact, sending them to our
45
- // suggestion-handling code leads to extra complexity.
46
- currentSuggestionsConnection = connection;
47
- return true;
48
- } else {
49
- return false;
50
- }
51
- },
52
- afterListeners(connection) {
53
- if (connection.status === 200 && connection.originalSendBody && connection === currentSuggestionsConnection) {
54
- const originalRequest = JSON.parse(connection.originalSendBody);
55
- // The suggestions request object contains two keys — one is always '1',
56
- // the other is a number that seems somewhat consistent but not consistent
57
- // enough to be safe to hard-code. The search query lives inside the
58
- // property the latter property.
59
- const queryKey = Object.keys(originalRequest).find(key => key !== '1');
60
- // Descend into the object that has the query inside it.
61
- const queryObj = originalRequest[queryKey];
62
- // When an empty search box is first focused, a suggestions request
63
- // goes out that is some kind of special query (it doesn't include
64
- // a user-supplied query). This initial request has multiple keys inside
65
- // the object that usually contains the query, so we avoid taking action
66
- // on requests where the object that contains the query has more
67
- // than one key. If we confirm that there is only a single key, we grab
68
- // the value out of the '1' key since that is always what holds a
69
- // user-supplied query.
70
- const query = Object.keys(queryObj).length === 1 && queryObj['1'];
71
- if (query) {
72
- triggerEvent({
73
- type: 'searchSuggestionsReceieved',
74
- query
75
- });
76
- }
77
- }
78
- }
79
- });
80
- }
81
- {
82
- let isComposeViewSending = false;
83
- let sendRequestMisses = [];
84
- document.addEventListener('inboxSDKcomposeViewIsSending', () => {
85
- isComposeViewSending = true;
86
- sendRequestMisses = [];
87
- });
88
- document.addEventListener('inboxSDKcomposeViewSendCanceled', () => {
89
- isComposeViewSending = false;
90
- sendRequestMisses = [];
91
- });
92
- const logIfParseFailed = request => {
93
- if (!isComposeViewSending) return;
94
- sendRequestMisses.push(request);
95
- if (sendRequestMisses.length < 3) return;
96
- logger.error(new Error('Failed to identify outgoing send request'), {
97
- requestPayloadList: (0, _censorJSONTree.default)(sendRequestMisses)
98
- });
99
- isComposeViewSending = false;
100
- sendRequestMisses = [];
101
- };
102
- const SEND_ACTIONS = ['^pfg', '^f_bt', '^f_btns', '^f_cl'];
103
- const currentConnectionIDs = new WeakMap();
104
- main_wrappers.push({
105
- isRelevantTo(connection) {
106
- return /sync(?:\/u\/\d+)?\/i\/s/.test(connection.url);
107
- },
108
- originalSendBodyLogger(connection) {
109
- if (connection.originalSendBody) {
110
- const originalRequest = JSON.parse(connection.originalSendBody);
111
- const updateList = originalRequest[2] && originalRequest[2][1];
112
- if (!updateList) {
113
- logIfParseFailed(originalRequest);
114
- return;
115
- }
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;
120
- });
121
- if (!sendUpdateMatch) {
122
- logIfParseFailed(originalRequest);
123
- return;
124
- }
125
- const sendUpdateWrapper = sendUpdateMatch[2] && sendUpdateMatch[2][2] && (sendUpdateMatch[2][2][14] || sendUpdateMatch[2][2][2]);
126
- const sendUpdate = sendUpdateWrapper[1];
127
- const draftID = sendUpdate[1].replace('msg-a:', '');
128
- const actionList = sendUpdate[11];
129
- currentConnectionIDs.set(connection, draftID);
130
- triggerEvent({
131
- type: 'emailSending',
132
- draftID
133
- });
134
- isComposeViewSending = false;
135
- sendRequestMisses = [];
136
- }
137
- },
138
- afterListeners(connection) {
139
- if (currentConnectionIDs.has(connection)) {
140
- const sendFailed = () => {
141
- triggerEvent({
142
- type: 'emailSendFailed',
143
- draftID
144
- });
145
- currentConnectionIDs.delete(connection);
146
- };
147
- const draftID = currentConnectionIDs.get(connection);
148
- if (connection.status !== 200 || !connection.originalResponseText) {
149
- sendFailed();
150
- return;
151
- }
152
- const originalResponse = JSON.parse(connection.originalResponseText);
153
- const updateList = originalResponse[2] && originalResponse[2][6];
154
- if (!updateList) {
155
- sendFailed();
156
- return;
157
- }
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]);
159
- if (!sendUpdateMatch) {
160
- sendFailed();
161
- return;
162
- }
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];
164
- const rfcID = sendUpdate[14];
165
- triggerEvent({
166
- type: 'emailSent',
167
- rfcID,
168
- draftID
169
- });
170
- currentConnectionIDs.delete(connection);
171
- }
172
- }
173
- });
174
- }
175
-
176
- // sync token savers
177
- {
178
- const saveBTAIHeader = header => {
179
- document.head.setAttribute('data-inboxsdk-btai-header', header);
180
- triggerEvent({
181
- type: 'btaiHeaderReceived'
182
- });
183
- };
184
- main_wrappers.push({
185
- isRelevantTo(connection) {
186
- return /sync(?:\/u\/\d+)?\//.test(connection.url) && !document.head.hasAttribute('data-inboxsdk-btai-header');
187
- },
188
- originalSendBodyLogger(connection) {
189
- if (connection.headers['X-Gmail-BTAI']) {
190
- saveBTAIHeader(connection.headers['X-Gmail-BTAI']);
191
- }
192
- }
193
- });
194
- const saveXsrfTokenHeader = header => {
195
- document.head.setAttribute('data-inboxsdk-xsrf-token', header);
196
- triggerEvent({
197
- type: 'xsrfTokenHeaderReceived'
198
- });
199
- };
200
- main_wrappers.push({
201
- isRelevantTo(connection) {
202
- return /sync(?:\/u\/\d+)?\//.test(connection.url) && !document.head.hasAttribute('data-inboxsdk-xsrf-token');
203
- },
204
- originalSendBodyLogger(connection) {
205
- if (connection.headers['X-Framework-Xsrf-Token']) {
206
- saveXsrfTokenHeader(connection.headers['X-Framework-Xsrf-Token']);
207
- }
208
- }
209
- });
210
- }
211
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
-
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
- });
44
- });
45
- });
46
- }
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 => {
50
- const iframeProto = getIframeProto();
51
- const originalDescriptor = getIframeSrcDescriptor();
52
- Object.defineProperty(iframeProto, 'src', {
53
- enumerable: true,
54
- configurable: true,
55
- set(src) {
56
- emitter.emit(src);
57
- }
58
- });
59
- return () => {
60
- Object.defineProperty(iframeProto, 'src', originalDescriptor);
61
- };
62
- });
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);
66
- return pr;
67
- }
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = setupComposeViewDraftIDFinder;
7
- const MAX_SEARCH_DEPTH = 3;
8
- const searchCollection = function (collection, predicate, maxDepth) {
9
- let currentDepth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
10
- const ownKeys = Object.keys(collection);
11
- for (let i = 0; i < ownKeys.length; i++) {
12
- const value = collection[ownKeys[i]];
13
- if (predicate(value)) {
14
- return value;
15
- } else if (currentDepth <= maxDepth && value instanceof Object) {
16
- const match = searchCollection(value, predicate, maxDepth, currentDepth + 1);
17
- if (match) return match;
18
- }
19
- }
20
- return null;
21
- };
22
- const findDraftID = target => {
23
- const match = searchCollection(target.__cdn.context, value => typeof value === 'string' && value.indexOf('#msg-a:') > -1, MAX_SEARCH_DEPTH);
24
- return match ? match.replace('#msg-a:', '') : null;
25
- };
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 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = setupInboxFakeWindowResizeListener;
7
- function setupInboxFakeWindowResizeListener() {
8
- document.addEventListener('inboxSDKinboxFakeWindowResize', fakeWindowResize);
9
- }
10
- function fakeWindowResize() {
11
- Object.defineProperty(document.documentElement, 'clientWidth', {
12
- configurable: true,
13
- value: window.innerWidth - 1
14
- });
15
- {
16
- const event = document.createEvent('HTMLEvents');
17
- event.initEvent('resize', true, false);
18
- window.dispatchEvent(event);
19
- }
20
- Object.defineProperty(document.documentElement, 'clientWidth', {
21
- configurable: true,
22
- get: () => window.innerWidth
23
- });
24
- {
25
- const event = document.createEvent('HTMLEvents');
26
- event.initEvent('resize', true, false);
27
- window.dispatchEvent(event);
28
- }
29
- }
@@ -1,2 +0,0 @@
1
- export default function customStyle(): void;
2
- //# sourceMappingURL=custom-style.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-style.d.ts","sourceRoot":"","sources":["../../../../../../src/platform-implementation-js/dom-driver/gmail/custom-style.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,WAAW,SAUlC"}
@@ -1,17 +0,0 @@
1
- import udKefir from 'ud-kefir';
2
- import rewriteCssWithIdMap from '../../lib/rewriteCssWithIdMap';
3
- // eslint-disable-next-line @typescript-eslint/no-var-requires
4
- var fs = require('fs');
5
- var cssContent = udKefir(module, fs.readFileSync(__dirname + '/../../style/gmail.css', 'utf8'));
6
- export default function customStyle() {
7
- if (!document.getElementById('inboxsdk__style')) {
8
- var style = document.createElement('style');
9
- style.id = 'inboxsdk__style';
10
- cssContent.onValue((css) => {
11
- style.textContent = rewriteCssWithIdMap(css);
12
- });
13
- if (!document.head)
14
- throw new Error('missing head');
15
- document.head.appendChild(style);
16
- }
17
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = getSidebarClassnames;
7
- function getSidebarClassnames() {
8
- return {
9
- chat: 'm',
10
- nav: 'M',
11
- centerList: 'bz'
12
- };
13
- }
@@ -1,38 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = addNavItem;
8
- var _kefir = _interopRequireDefault(require("kefir"));
9
- var _inboxNavItemView = _interopRequireDefault(require("./views/inboxNavItemView"));
10
- var _insertElementInOrder = _interopRequireDefault(require("../../lib/dom/insert-element-in-order"));
11
- var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
12
- var _toItemWithLifetimeStream = _interopRequireDefault(require("../../lib/toItemWithLifetimeStream"));
13
- function addNavItem(navItemDescriptor, leftNavLiveSet, containerEl) {
14
- const inboxNavItemView = new _inboxNavItemView.default(navItemDescriptor, 0);
15
- (0, _toItemWithLifetimeStream.default)(leftNavLiveSet).take(1).map(_ref => {
16
- let {
17
- el: node
18
- } = _ref;
19
- return node.getValue();
20
- }).onValue(el => {
21
- inboxNavItemView.getEventStream().filter(event => event.eventName === 'orderChanged').onValue(() => (0, _insertElementInOrder.default)(containerEl, inboxNavItemView.getElement()));
22
- if (!el.contains(containerEl)) {
23
- const existingCustomSections = el.querySelectorAll('.inboxsdk__navItem_appContainer');
24
- if (existingCustomSections.length > 0) {
25
- const lastCustomSection = existingCustomSections[existingCustomSections.length - 1];
26
- lastCustomSection.insertAdjacentElement('afterend', containerEl);
27
- } else {
28
- // Locate <ul> with native folders by finding draft icon image
29
- const draftsImg = (0, _querySelectorOrFail.default)(el, 'ul > li > img[src*="ic_draft"]');
30
- const nativeFolderSection = draftsImg.parentElement && draftsImg.parentElement.parentElement;
31
- if (!nativeFolderSection) throw new Error('could not locate insertion point');
32
- nativeFolderSection.insertAdjacentElement('afterend', containerEl);
33
- }
34
- }
35
- (0, _insertElementInOrder.default)(containerEl, inboxNavItemView.getElement());
36
- });
37
- return inboxNavItemView;
38
- }
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = addRecipientRow;
8
- var _closestNg = _interopRequireDefault(require("closest-ng"));
9
- var _kefir = _interopRequireDefault(require("kefir"));
10
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
11
- const createRowElement = _ref => {
12
- let {
13
- labelText,
14
- el
15
- } = _ref;
16
- const row = document.createElement('div');
17
- const label = document.createElement('span');
18
- const content = document.createElement('div');
19
- row.classList.add('inboxsdk__recipient_row');
20
- label.classList.add('inboxsdk__recipient_label');
21
- content.classList.add('inboxsdk__recipient_content');
22
- if (labelText) {
23
- label.textContent = labelText;
24
- row.appendChild(label);
25
- }
26
- if (el) {
27
- content.appendChild(el);
28
- row.appendChild(content);
29
- }
30
- return row;
31
- };
32
- function addRecipientRow(inboxComposeView, recipientRowOptionStream) {
33
- let row = null;
34
- const insertionPoint = inboxComposeView.getBCCRow();
35
- const destroyStopper = (0, _kefirStopper.default)();
36
- recipientRowOptionStream.takeUntilBy(inboxComposeView.getStopper()).takeUntilBy(destroyStopper).onValue(options => {
37
- if (row) {
38
- row.remove();
39
- row = null;
40
- }
41
- if (options) {
42
- row = createRowElement(options);
43
- insertionPoint.insertAdjacentElement('afterend', row);
44
- }
45
- });
46
- destroyStopper.merge(inboxComposeView.getStopper()).take(1).onValue(() => {
47
- if (row) {
48
- row.remove();
49
- row = null;
50
- }
51
- });
52
- return () => {
53
- destroyStopper.destroy();
54
- };
55
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = createLink;
8
- var _includes = _interopRequireDefault(require("lodash/includes"));
9
- var _populateRouteID = _interopRequireDefault(require("../../lib/populateRouteID"));
10
- var _router = require("../../constants/router");
11
- function createLink(driver, routeID, params) {
12
- if ((0, _includes.default)(Object.values(_router.NATIVE_ROUTE_IDS), routeID)) {
13
- throw new Error('NativeRouteIDs are not currently supported in Inbox');
14
- }
15
- if (!driver.getCustomRouteIDs().has(routeID)) {
16
- throw new Error(`Invalid routeID: ${routeID}`);
17
- }
18
- return '#' + (0, _populateRouteID.default)(routeID, params);
19
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _createLink = _interopRequireDefault(require("./createLink"));
5
- function makeDriver() {
6
- const customRouteIDs = new Set();
7
- return {
8
- getCustomRouteIDs: () => customRouteIDs
9
- };
10
- }
11
- test('works for custom view', () => {
12
- const driver = makeDriver();
13
- driver.getCustomRouteIDs().add('example/:bar');
14
- expect((0, _createLink.default)(driver, 'example/:bar', {
15
- bar: 'foo'
16
- })).toBe('#example/foo');
17
- });
18
- test('fails for unknown route id', () => {
19
- expect(() => (0, _createLink.default)(makeDriver(), 'example/:bar', {
20
- bar: 'foo'
21
- })).toThrowError('Invalid routeID: example/:bar');
22
- });
23
- test('fails for native route ids', () => {
24
- expect(() => (0, _createLink.default)(makeDriver(), 'inbox/:threadID', {
25
- threadID: 'abc'
26
- })).toThrowError('NativeRouteIDs are not currently supported in Inbox');
27
- });
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = customStyle;
8
- var _udKefir = _interopRequireDefault(require("ud-kefir"));
9
- var _rewriteCssWithIdMap = _interopRequireDefault(require("../../lib/rewriteCssWithIdMap"));
10
- var fs = require('fs');
11
- var cssContent = (0, _udKefir.default)(module, fs.readFileSync(__dirname + '/../../style/inbox.css', 'utf8'));
12
- function customStyle() {
13
- let root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
14
- if (!root.getElementById('inboxsdk__style')) {
15
- const style = root.createElement('style');
16
- style.id = 'inboxsdk__style';
17
- cssContent.onValue(css => {
18
- style.textContent = (0, _rewriteCssWithIdMap.default)(css);
19
- });
20
- if (!root.head) throw new Error('missing head');
21
- root.head.appendChild(style);
22
- }
23
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = parser;
8
- var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
- var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
- function parser(el) {
11
- const ec = new _ErrorCollector.default('appToolbarLocation');
12
- ec.run('children check', () => {
13
- if (el.childElementCount < 2) {
14
- throw new Error('expected more children');
15
- }
16
- });
17
- ec.run('position check', () => {
18
- const rect = el.getBoundingClientRect();
19
- if (rect.top > 100) {
20
- throw new Error('expected element to border top of screen');
21
- }
22
- if (window.innerWidth - rect.right > 100) {
23
- throw new Error('expected element to border right side of screen');
24
- }
25
- if (rect.width > 500) {
26
- throw new Error('expected element to span only the right of the screen');
27
- }
28
- if (rect.height > 150) {
29
- throw new Error('expected element to span only the right of the screen');
30
- }
31
- });
32
- const chatSidebarButton = ec.run('chatSidebarButton', () => (0, _querySelectorOne.default)(el, 'div[role=button][jsaction*="global.toggle_chat_roster"]'));
33
- const score = 1 - ec.errorCount() / ec.runCount();
34
- return {
35
- elements: {
36
- chatSidebarButton
37
- },
38
- score,
39
- errors: ec.getErrorLogs()
40
- };
41
- }
42
-
43
- /*:: const x = parser(({}:any)); */
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = parser;
8
- var _ErrorCollector = _interopRequireDefault(require("../../../../lib/ErrorCollector"));
9
- var _querySelectorOne = _interopRequireDefault(require("../../../../lib/dom/querySelectorOne"));
10
- var _bignumber = _interopRequireDefault(require("bignumber.js"));
11
- function parser(el) {
12
- const ec = new _ErrorCollector.default('attachmentCard');
13
- ec.run('tabindex', () => {
14
- if (!el.hasAttribute('tabindex')) throw new Error('expected tabindex');
15
- });
16
-
17
- // Very different cards like those for youtube links aren't detected by the
18
- // watcher/finder. Google drive cards aren't distinguishable from attachment
19
- // cards in the html, so we just expose them as FILE cards. The only issue
20
- // for applications is that cardView.addButton() is a no-op on drive cards.
21
- const type = 'FILE';
22
- const elements = {};
23
- const score = 1 - ec.errorCount() / ec.runCount();
24
- return {
25
- elements,
26
- attributes: {
27
- type
28
- },
29
- score,
30
- errors: ec.getErrorLogs()
31
- };
32
- }
33
-
34
- /*:: const x = parser(({}:any)); */