@inboxsdk/core 1.1.0 → 1.1.2

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 (81) hide show
  1. package/inboxsdk.js +7 -34
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/common/version.d.ts.map +1 -1
  7. package/src/common/version.js +3 -1
  8. package/src/injected-js/main.js +0 -9
  9. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +6 -2
  10. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +4 -2
  11. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +4 -2
  12. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +6 -2
  13. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +2 -2
  14. package/src/platform-implementation-js/driver-common/sidebar/constants.d.ts +9 -0
  15. package/src/platform-implementation-js/driver-common/sidebar/constants.d.ts.map +1 -0
  16. package/src/platform-implementation-js/driver-common/sidebar/constants.js +26 -0
  17. package/src/platform-implementation-js/lib/idMap.d.ts +7 -0
  18. package/src/platform-implementation-js/lib/idMap.d.ts.map +1 -1
  19. package/src/platform-implementation-js/lib/idMap.js +35 -0
  20. package/src/platform-implementation-js/platform-implementation.d.ts +0 -3
  21. package/src/platform-implementation-js/platform-implementation.js +1 -9
  22. package/src/injected-js/inbox/setupAjaxInterceptor.js +0 -211
  23. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +0 -67
  24. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +0 -35
  25. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +0 -29
  26. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +0 -13
  27. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +0 -38
  28. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +0 -55
  29. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +0 -19
  30. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +0 -27
  31. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +0 -43
  32. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +0 -34
  33. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +0 -53
  34. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +0 -31
  35. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +0 -103
  36. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +0 -69
  37. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +0 -32
  38. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +0 -28
  39. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +0 -49
  40. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +0 -100
  41. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +0 -99
  42. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +0 -36
  43. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +0 -114
  44. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +0 -73
  45. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +0 -39
  46. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +0 -28
  47. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +0 -148
  48. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +0 -863
  49. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +0 -62
  50. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +0 -12
  51. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +0 -18
  52. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +0 -33
  53. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +0 -265
  54. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +0 -301
  55. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +0 -183
  56. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +0 -64
  57. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +0 -72
  58. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +0 -78
  59. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +0 -296
  60. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +0 -91
  61. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +0 -53
  62. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +0 -271
  63. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +0 -160
  64. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +0 -57
  65. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +0 -197
  66. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +0 -83
  67. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +0 -45
  68. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +0 -116
  69. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +0 -842
  70. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +0 -75
  71. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +0 -25
  72. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +0 -63
  73. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +0 -274
  74. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +0 -112
  75. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +0 -96
  76. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +0 -315
  77. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +0 -218
  78. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +0 -171
  79. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +0 -127
  80. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +0 -311
  81. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +0 -26
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../src/common/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,EAAE,MAA6B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../src/common/version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,EAAE,MAAoB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  // This is in its own file so that updates to the version value don't cause a
2
2
  // reload of everything.
3
- export const BUILD_VERSION = process.env.VERSION;
3
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- SDK_VERSION is injected by webpack
4
+ ///@ts-ignore
5
+ export const BUILD_VERSION = SDK_VERSION;
4
6
  if (module.hot) {
5
7
  module.hot.accept();
6
8
  }
@@ -23,19 +23,10 @@ if (!global.__InboxSDKInjected) {
23
23
  const setupInboxCustomViewLinkFixer = require('./setupInboxCustomViewLinkFixer').default;
24
24
  const gmailInterceptor = require('./gmail/setup-gmail-interceptor').default;
25
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
26
  const pageOrigin = process.env.NODE_ENV === 'test' && global.__test_origin || document.location.origin;
31
27
  if (pageOrigin === 'https://mail.google.com') {
32
28
  gmailInterceptor();
33
29
  setupGmonkeyHandler();
34
- } else if (pageOrigin === 'https://inbox.google.com') {
35
- setupClickAndGetNewIframeSrc();
36
- setupInboxFakeWindowResizeListener();
37
- setupComposeViewDraftIDFinder();
38
- setupInboxAjaxInterceptor();
39
30
  } else {
40
31
  throw new Error('Should not happen');
41
32
  }
@@ -16,9 +16,13 @@ jest.mock('../../../../lib/idMap', () => {
16
16
  const legacyMapping = {
17
17
  app_sidebar_content_panel: 'bccbBAHIcfEeHCHf'
18
18
  };
19
- return legacyMapping[key];
19
+ return legacyMapping[key] ?? key;
20
20
  }
21
- return idMap;
21
+ return {
22
+ __esModule: true,
23
+ default: idMap,
24
+ legacyIdMap: idMap
25
+ };
22
26
  });
23
27
  jest.mock('../../../../lib/dom/make-element-child-stream', () => {
24
28
  return () => require('kefir-bus')();
@@ -28,6 +28,8 @@ var _fakeWindowResize = _interopRequireDefault(require("../../../../../lib/fake-
28
28
  var _addCompanionThreadIconArea = _interopRequireDefault(require("./add-companion-thread-icon-area"));
29
29
  var _addCompanionGlobalIconArea = _interopRequireDefault(require("./add-companion-global-icon-area"));
30
30
  var _addToIconArea = _interopRequireDefault(require("./add-to-icon-area"));
31
+ var _classnames = _interopRequireDefault(require("classnames"));
32
+ var _constants = require("../../../../../driver-common/sidebar/constants");
31
33
  const ACTIVE_ADD_ON_ICON_SELECTOR = '.aT5-aOt-I-KO';
32
34
  const COMPANION_SIDEBAR_CONTENT_CLOSED_SHADOW_CLASS = 'brC-brG-btc';
33
35
 
@@ -445,9 +447,9 @@ class GmailAppSidebarPrimary {
445
447
  contentContainer.classList.add((0, _idMap.default)('companion_container_app_sidebar_in_use'));
446
448
  }
447
449
  this._companionSidebarContentContainerEl.classList.add((0, _idMap.default)('app_sidebar_in_use'));
448
- if (!document.body.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
450
+ if (!document.body.querySelector(_constants.sidebarWaitingPlatformSelector)) {
449
451
  const waitingPlatform = document.createElement('div');
450
- waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
452
+ waitingPlatform.className = (0, _classnames.default)(_constants.sidebarWaitingPlatformClassName, (0, _idMap.default)('app_sidebar_waiting_platform'));
451
453
  document.body.appendChild(waitingPlatform);
452
454
  }
453
455
 
@@ -30,6 +30,8 @@ var _ContentPanelViewDriver = _interopRequireDefault(require("../../../driver-co
30
30
  var _gmailElementGetter = _interopRequireDefault(require("../gmail-element-getter"));
31
31
  var _addIconArea = _interopRequireDefault(require("./gmail-thread-sidebar-view/add-icon-area"));
32
32
  var _addToIconArea = _interopRequireDefault(require("./gmail-app-sidebar-view/primary/add-to-icon-area"));
33
+ var _classnames = _interopRequireDefault(require("classnames"));
34
+ var _constants = require("../../../driver-common/sidebar/constants");
33
35
  /*
34
36
  This is used for PRE MATERIAL GMAIL, when sidebar only existed on threads.
35
37
  If you're reading this in the future, do you remember a time when there wasn't a global sidebar?
@@ -153,9 +155,9 @@ class GmailAppSidebarView {
153
155
  sidebarContainerEl.insertBefore(el, sidebarContainerEl.firstElementChild);
154
156
  sidebarContainerEl.classList.add((0, _idMap.default)('app_sidebar_in_use'));
155
157
  }
156
- if (!document.body.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
158
+ if (!document.body.querySelector(_constants.sidebarWaitingPlatformSelector)) {
157
159
  const waitingPlatform = document.createElement('div');
158
- waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
160
+ waitingPlatform.className = (0, _classnames.default)(_constants.sidebarWaitingPlatformClassName, (0, _idMap.default)('app_sidebar_waiting_platform'));
159
161
  document.body.appendChild(waitingPlatform);
160
162
  }
161
163
  if (addonSidebarContainerEl) {
@@ -18,9 +18,13 @@ jest.mock('../../../lib/idMap', () => {
18
18
  app_sidebar_content_panel: 'bccbBAHIcfEeHCHf',
19
19
  sidebar_button_container: 'CdCEaDfbJJbHDEaD'
20
20
  };
21
- return legacyMapping[key];
21
+ return legacyMapping[key] ?? key;
22
22
  }
23
- return idMap;
23
+ return {
24
+ __esModule: true,
25
+ default: idMap,
26
+ legacyIdMap: idMap
27
+ };
24
28
  });
25
29
  jest.mock('../../../lib/dom/make-element-child-stream', () => {
26
30
  return () => require('kefir-bus')();
@@ -11,8 +11,8 @@ var _kefir = _interopRequireDefault(require("kefir"));
11
11
  var _kefirBus = _interopRequireDefault(require("kefir-bus"));
12
12
  var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
13
13
  var _delayAsap = _interopRequireDefault(require("../../lib/delay-asap"));
14
- var _idMap = _interopRequireDefault(require("../../lib/idMap"));
15
14
  var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
15
+ var _constants = require("./constants");
16
16
  class ContentPanelViewDriver {
17
17
  _eventStream = (0, _kefirBus.default)();
18
18
  _isActive = false;
@@ -45,7 +45,7 @@ class ContentPanelViewDriver {
45
45
  const afterAsap = (0, _delayAsap.default)().toProperty().onValue(() => {});
46
46
  let hasPlacedAlready = false;
47
47
  let appName;
48
- const waitingPlatform = (0, _querySelectorOrFail.default)(document.body, '.' + (0, _idMap.default)('app_sidebar_waiting_platform'));
48
+ const waitingPlatform = (0, _querySelectorOrFail.default)(document.body, _constants.sidebarWaitingPlatformSelector);
49
49
  descriptor.flatMap(x => afterAsap.map(() => x)).takeUntilBy(this._stopper).onValue(descriptor => {
50
50
  const {
51
51
  el,
@@ -0,0 +1,9 @@
1
+ export declare const sidebarWaitingPlatformSelector: string;
2
+ /**
3
+ * The CSS local corresponding to this SDK's classname is intentionally in
4
+ * this classname. This is because this classname
5
+ * is used as a selector for disparate bits of code,
6
+ * and the CSS local is only used for styling.
7
+ */
8
+ export declare const sidebarWaitingPlatformClassName: string;
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/platform-implementation-js/driver-common/sidebar/constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,8BAA8B,QAQ9B,CAAC;AAEd;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,QAK3C,CAAC"}
@@ -0,0 +1,26 @@
1
+ import cx from 'classnames';
2
+ import { legacyIdMap } from '../../lib/idMap';
3
+ const cssGlobal = 'inboxsdk__app_sidebar_waiting_platform';
4
+ var SidebarClassName;
5
+ (function (SidebarClassName) {
6
+ /** v1.1.0 CSS module selector, */
7
+ SidebarClassName["v1_1_0"] = "inboxsdk__a0oshmeH6N_2vLtc3DNT";
8
+ /** v1.1.1 CSS module selector, */
9
+ SidebarClassName["v1_1_1"] = "inboxsdk__BV_FA4qVT4qYxs3LbEU4";
10
+ })(SidebarClassName || (SidebarClassName = {}));
11
+ export const sidebarWaitingPlatformSelector = [
12
+ cssGlobal,
13
+ SidebarClassName.v1_1_0,
14
+ SidebarClassName.v1_1_1,
15
+ // Pre CSS module selector <1.1.0
16
+ legacyIdMap('app_sidebar_waiting_platform'),
17
+ ]
18
+ .map((x) => '.' + x)
19
+ .join(', ');
20
+ /**
21
+ * The CSS local corresponding to this SDK's classname is intentionally in
22
+ * this classname. This is because this classname
23
+ * is used as a selector for disparate bits of code,
24
+ * and the CSS local is only used for styling.
25
+ */
26
+ export const sidebarWaitingPlatformClassName = cx(cssGlobal, SidebarClassName.v1_1_0, SidebarClassName.v1_1_1, legacyIdMap('app_sidebar_waiting_platform'));
@@ -1,2 +1,9 @@
1
+ /**
2
+ * Pass a name and you'll get a unique identifier associated with that name.
3
+ * The returned identifier will only contain alphabetic characters.
4
+ *
5
+ * @deprecated a holdover from the old idMap runtime implementation. Use `idMap` instead unless you specifically need the same classname as old versions of the InboxSDK used.
6
+ */
7
+ export declare function legacyIdMap(name: string): string;
1
8
  export default function idMap(id: string): string;
2
9
  //# sourceMappingURL=idMap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"idMap.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/lib/idMap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,UAGvC"}
1
+ {"version":3,"file":"idMap.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/lib/idMap.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8BhD;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,EAAE,MAAM,UAGvC"}
@@ -1,4 +1,39 @@
1
1
  import * as s from '../style/gmail.css';
2
+ import Sha256 from 'sha.js/sha256';
3
+ const cache = new Map();
4
+ let seed = null;
5
+ /**
6
+ * Pass a name and you'll get a unique identifier associated with that name.
7
+ * The returned identifier will only contain alphabetic characters.
8
+ *
9
+ * @deprecated a holdover from the old idMap runtime implementation. Use `idMap` instead unless you specifically need the same classname as old versions of the InboxSDK used.
10
+ */
11
+ export function legacyIdMap(name) {
12
+ const id = cache.get(name);
13
+ if (id != null)
14
+ return id;
15
+ if (seed == null) {
16
+ seed = document.documentElement.getAttribute('data-map-id');
17
+ if (seed == null) {
18
+ // Make the seed change every hour: the seed is based on a hash of the
19
+ // current timestamp in hour resolution.
20
+ const hasher = new Sha256();
21
+ hasher.update('PWVe' + Math.floor(Date.now() / (1000 * 60 * 60)) + 'PYiE0');
22
+ seed =
23
+ hasher.digest('hex').slice(0, 16) +
24
+ (process.env.NODE_ENV === 'development' ? 'x' : '');
25
+ document.documentElement.setAttribute('data-map-id', seed);
26
+ }
27
+ }
28
+ const hasher = new Sha256();
29
+ hasher.update('4iYi29W' + name + ':' + seed + 'jn2mPvTG');
30
+ const newId = hasher
31
+ .digest('hex')
32
+ .slice(0, 16)
33
+ .replace(/[0-9]/g, (match) => String.fromCharCode('A'.charCodeAt(0) + Number(match)));
34
+ cache.set(name, newId);
35
+ return newId;
36
+ }
2
37
  export default function idMap(id) {
3
38
  // Uses lazy initialization of style tags from style-loader
4
39
  return s[id];
@@ -74,9 +74,6 @@ type User = any;
74
74
  // import Global from './namespaces/global';
75
75
  type Global = any;
76
76
 
77
- // import InboxDriver from './dom-driver/inbox/inbox-driver';
78
- type InboxDriver = any;
79
-
80
77
  // Some types
81
78
  import { Driver } from './driver-interfaces/driver';
82
79
  import { AppLogger } from './lib/logger';
@@ -12,25 +12,17 @@ var _getOrFail = _interopRequireDefault(require("../common/get-or-fail"));
12
12
  var _Membrane = _interopRequireDefault(require("./lib/Membrane"));
13
13
  var _attachmentCardView = _interopRequireDefault(require("./views/conversations/attachment-card-view"));
14
14
  var _gmailAttachmentCardView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-attachment-card-view"));
15
- var _inboxAttachmentCardView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-attachment-card-view"));
16
15
  var _messageView = _interopRequireDefault(require("./views/conversations/message-view"));
17
16
  var _gmailMessageView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-message-view"));
18
- var _inboxMessageView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-message-view"));
19
17
  var _threadView = _interopRequireDefault(require("./views/conversations/thread-view"));
20
18
  var _gmailThreadView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-thread-view"));
21
- var _inboxThreadView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-thread-view"));
22
19
  var _threadRowView = _interopRequireDefault(require("./views/thread-row-view"));
23
20
  var _gmailThreadRowView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-thread-row-view"));
24
- var _inboxThreadRowView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-thread-row-view"));
25
21
  var _composeView = _interopRequireDefault(require("./views/compose-view"));
26
22
  var _gmailComposeView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-compose-view"));
27
- var _inboxComposeView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-compose-view"));
28
23
  var _dummyRouteViewDriver = _interopRequireDefault(require("./views/route-view/dummy-route-view-driver"));
29
24
  var _routeView = _interopRequireDefault(require("./views/route-view/route-view"));
30
25
  var _gmailRouteView = _interopRequireDefault(require("./dom-driver/gmail/views/gmail-route-view/gmail-route-view"));
31
- var _inboxRouteView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-route-view"));
32
- var _inboxDummyRouteView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-dummy-route-view"));
33
- var _inboxCustomRouteView = _interopRequireDefault(require("./dom-driver/inbox/views/inbox-custom-route-view"));
34
26
  var _butterBar = _interopRequireDefault(require("./namespaces/butter-bar"));
35
27
  var _compose = _interopRequireDefault(require("./namespaces/compose"));
36
28
  var _conversations = _interopRequireDefault(require("./namespaces/conversations"));
@@ -65,7 +57,7 @@ class PlatformImplementation extends _safeEventEmitter.default {
65
57
  if (process.env.NODE_ENV !== 'production') {
66
58
  this._members = members;
67
59
  }
68
- const membrane = new _Membrane.default([[_gmailComposeView.default, viewDriver => new _composeView.default(driver, viewDriver, membrane)], [_inboxComposeView.default, viewDriver => new _composeView.default(driver, viewDriver, membrane)], [_gmailAttachmentCardView.default, viewDriver => new _attachmentCardView.default(viewDriver, driver, membrane)], [_inboxAttachmentCardView.default, viewDriver => new _attachmentCardView.default(viewDriver, driver, membrane)], [_gmailMessageView.default, viewDriver => new _messageView.default(viewDriver, appId, membrane, this.Conversations, driver)], [_inboxMessageView.default, viewDriver => new _messageView.default(viewDriver, appId, membrane, this.Conversations, driver)], [_gmailThreadView.default, viewDriver => new _threadView.default(viewDriver, appId, driver, membrane)], [_inboxThreadView.default, viewDriver => new _threadView.default(viewDriver, appId, driver, membrane)], [_gmailThreadRowView.default, viewDriver => new _threadRowView.default(viewDriver)], [_inboxThreadRowView.default, viewDriver => new _threadRowView.default(viewDriver)], [_gmailRouteView.default, viewDriver => new _routeView.default(viewDriver)], [_inboxRouteView.default, viewDriver => new _routeView.default(viewDriver)], [_inboxDummyRouteView.default, viewDriver => new _routeView.default(viewDriver)], [_inboxCustomRouteView.default, viewDriver => new _routeView.default(viewDriver)], [_dummyRouteViewDriver.default, viewDriver => new _routeView.default(viewDriver)]]);
60
+ const membrane = new _Membrane.default([[_gmailComposeView.default, viewDriver => new _composeView.default(driver, viewDriver, membrane)], [_gmailAttachmentCardView.default, viewDriver => new _attachmentCardView.default(viewDriver, driver, membrane)], [_gmailMessageView.default, viewDriver => new _messageView.default(viewDriver, appId, membrane, this.Conversations, driver)], [_gmailThreadView.default, viewDriver => new _threadView.default(viewDriver, appId, driver, membrane)], [_gmailThreadRowView.default, viewDriver => new _threadRowView.default(viewDriver)], [_gmailRouteView.default, viewDriver => new _routeView.default(viewDriver)], [_dummyRouteViewDriver.default, viewDriver => new _routeView.default(viewDriver)]]);
69
61
  this.destroyed = false;
70
62
  this.LOADER_VERSION = LOADER_VERSION;
71
63
  this.IMPL_VERSION = _version.BUILD_VERSION;
@@ -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,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
- }