@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,62 +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 = void 0;
8
- var _kefir = _interopRequireDefault(require("kefir"));
9
- var _commonPageCommunicator = _interopRequireDefault(require("../../lib/common-page-communicator"));
10
- class InboxPageCommunicator extends _commonPageCommunicator.default {
11
- getDraftIDForComposeView(el) {
12
- const draftIDFound = el.hasAttribute('data-inboxsdk-draft-id');
13
- if (!draftIDFound) {
14
- el.dispatchEvent(new CustomEvent('inboxSDKgetDraftIDforComposeView', {
15
- bubbles: true,
16
- cancelable: false,
17
- detail: null
18
- }));
19
- }
20
- const draftID = el.getAttribute('data-inboxsdk-draft-id');
21
- if (!draftID) throw new Error('could not find draft ID');
22
- return draftID;
23
- }
24
- notifyEmailSending() {
25
- document.dispatchEvent(new CustomEvent('inboxSDKcomposeViewIsSending', {
26
- bubbles: false,
27
- cancelable: false,
28
- detail: null
29
- }));
30
- }
31
- notifyEmailSendCanceled() {
32
- document.dispatchEvent(new CustomEvent('inboxSDKcomposeViewSendCanceled', {
33
- bubbles: false,
34
- cancelable: false,
35
- detail: null
36
- }));
37
- }
38
- clickAndGetNewIframeSrc(el) {
39
- const pr = _kefir.default.fromEvents(el, 'inboxSDKclickAndGetNewIframeSrcResult').take(1).flatMap(_ref => {
40
- let {
41
- detail
42
- } = _ref;
43
- return detail.type === 'success' ? _kefir.default.constant(detail.src) : _kefir.default.constantError(Object.assign(new Error(detail.message), {
44
- stack: detail.stack
45
- }));
46
- }).toPromise();
47
- el.dispatchEvent(new CustomEvent('inboxSDKclickAndGetNewIframeSrc', {
48
- bubbles: true,
49
- cancelable: false,
50
- detail: null
51
- }));
52
- return pr;
53
- }
54
- fakeWindowResize() {
55
- document.dispatchEvent(new CustomEvent('inboxSDKinboxFakeWindowResize', {
56
- bubbles: false,
57
- cancelable: false,
58
- detail: null
59
- }));
60
- }
61
- }
62
- exports.default = InboxPageCommunicator;
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.extractMessageIdsFromThreadResponse = extractMessageIdsFromThreadResponse;
7
- function extractMessageIdsFromThreadResponse(response) {
8
- const threadResponse = JSON.parse(response);
9
- const messageDescriptors = threadResponse && threadResponse[2] && threadResponse[2][0] && threadResponse[2][0][3];
10
- if (!messageDescriptors) throw new Error('Failed to process thread response');
11
- return messageDescriptors.map(descriptor => descriptor[1]).filter(Boolean);
12
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _fs = _interopRequireDefault(require("fs"));
5
- var _inboxResponseProcessor = require("./inboxResponseProcessor");
6
- describe('extractMessageIdsFromThreadResponse()', () => {
7
- it('Lists the message IDs from a thread', () => {
8
- const threadResponse = _fs.default.readFileSync(__dirname + '/../../../../test/data/inbox-thread-details-response-2017-07-13.json', 'utf8');
9
- expect((0, _inboxResponseProcessor.extractMessageIdsFromThreadResponse)(threadResponse)).toEqual(['msg-a:r1490146031346228540', 'msg-f:1572844139423482218']);
10
- });
11
- it('Throws when given invalid inputs', () => {
12
- const invalidJSON = JSON.stringify({
13
- junkKey: 'junkValue'
14
- });
15
- expect(() => (0, _inboxResponseProcessor.extractMessageIdsFromThreadResponse)(invalidJSON)).toThrow();
16
- expect(() => (0, _inboxResponseProcessor.extractMessageIdsFromThreadResponse)('')).toThrow();
17
- });
18
- });
@@ -1,33 +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 = makePageParserTree;
8
- var _pageParserTree = _interopRequireDefault(require("page-parser-tree"));
9
- var _udKefir = _interopRequireDefault(require("ud-kefir"));
10
- var _pageParserOptions = _interopRequireDefault(require("./pageParserOptions"));
11
- var _censorHTMLtree = _interopRequireDefault(require("../../../common/censorHTMLtree"));
12
- const pageParserOptionsStream = (0, _udKefir.default)(module, _pageParserOptions.default);
13
- function makePageParserTree(driver, root) {
14
- const _driver = driver;
15
- function transformOptions(pageParserOptions) {
16
- return !_driver ? pageParserOptions : {
17
- ...pageParserOptions,
18
- logError(err, el) {
19
- const details = {
20
- el,
21
- html: el ? (0, _censorHTMLtree.default)(el) : null
22
- };
23
- _driver.getLogger().errorSite(err, details);
24
- }
25
- };
26
- }
27
- const page = new _pageParserTree.default(root, transformOptions(_pageParserOptions.default));
28
- pageParserOptionsStream.changes().onValue(pageParserOptions => {
29
- console.log('replacing PageParserTree options');
30
- page.replaceOptions(transformOptions(pageParserOptions));
31
- });
32
- return page;
33
- }
@@ -1,265 +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 = void 0;
8
- var _logger = _interopRequireDefault(require("../../lib/logger"));
9
- var _censorHTMLtree = _interopRequireDefault(require("../../../common/censorHTMLtree"));
10
- var _transducers = _interopRequireDefault(require("transducers.js"));
11
- var _find = _interopRequireDefault(require("lodash/find"));
12
- var _uniq = _interopRequireDefault(require("lodash/uniq"));
13
- var _closestNg = _interopRequireDefault(require("closest-ng"));
14
- const pageParserOptions = {
15
- tags: {
16
- message: {
17
- ownedBy: ['thread']
18
- },
19
- attachmentCard: {
20
- ownedBy: ['message', 'threadRow', 'bundleRow']
21
- },
22
- inlineCompose: {
23
- ownedBy: ['thread']
24
- }
25
- },
26
- finders: {
27
- leftNav: {
28
- interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
29
- fn(root) {
30
- return root.querySelectorAll('nav[aria-hidden]:not([role]) div[role=menu]');
31
- }
32
- },
33
- thread: {
34
- fn(root) {
35
- return root.querySelectorAll('div[aria-expanded=true][data-item-id*="thread-"], div.scroll-list-item-open[data-item-id*="thread-"]');
36
- }
37
- },
38
- message: {
39
- fn(root) {
40
- return root.querySelectorAll('div[role=listitem][aria-expanded][data-msg-id*="msg-"]');
41
- }
42
- },
43
- attachmentCard: {
44
- fn(root) {
45
- return root.querySelectorAll(`
46
- div[data-msg-id] section > div > div[tabindex][title],
47
- div[jsaction*="update_chip_carousel_arrows"] div[role=listitem][tabindex][jsaction]
48
- `);
49
- }
50
- },
51
- attachmentOverlay: {
52
- fn: function () {
53
- const _t = _transducers.default.compose(_transducers.default.filter(iframe => iframe.style.display !== 'none'), _transducers.default.mapcat(iframe => Array.prototype.slice.call(iframe.contentDocument.querySelectorAll('div[role=dialog]:not([aria-hidden=true])'))));
54
- return root => {
55
- return _transducers.default.toArray(Array.prototype.slice.call(root.querySelectorAll('iframe[frameborder]:not([src])')), _t);
56
- };
57
- }()
58
- },
59
- nativeDrawer: {
60
- fn(root) {
61
- const drawerUploadFilesBtn = root.querySelector('div[jsaction="global.exit_full_screen"] div[role=dialog][aria-busy=true] div[role=link][jsaction$=".open_local_file_picker"]');
62
- if (drawerUploadFilesBtn) {
63
- const drawer = (0, _closestNg.default)(drawerUploadFilesBtn, '[role=dialog]');
64
- if (drawer) return [drawer];
65
- }
66
- return [];
67
- }
68
- },
69
- searchBar: {
70
- interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
71
- fn(root) {
72
- return root.querySelectorAll('nav[role=banner] div[jsaction*="scroll_to_top"] > :last-child > div:empty + div:not(:empty)');
73
- }
74
- },
75
- searchAutocompleteResults: {
76
- fn(root) {
77
- return root.querySelectorAll('div[jsaction*="clickonly:global.empty_space_click"] div[role=listbox] ul:last-of-type');
78
- }
79
- },
80
- chatSidebar: {
81
- interval: count => count === 0 ? 5 * 1000 : 120 * 1000,
82
- fn(root) {
83
- return [root.querySelector('#in')].filter(Boolean);
84
- }
85
- },
86
- appToolbarLocation: {
87
- interval: (count, timeRunning) => count === 0 && timeRunning < 60 * 1000 ? 300 : 2 * 60 * 1000,
88
- fn(root) {
89
- const chatToggle = root.querySelector('div[role=button][jsaction*="global.toggle_chat_roster"]');
90
- const appToolbarLocation = chatToggle ? chatToggle.parentElement.parentElement.parentElement : null;
91
- return appToolbarLocation ? [appToolbarLocation] : [];
92
- }
93
- },
94
- inlineCompose: {
95
- fn(root) {
96
- const inlineComposesByPopoutBtn = Array.prototype.filter.call(root.querySelectorAll('div[role=main] div[role=list] div[role=listitem] div[jsvs] button[jsaction$=".quick_compose_popout_mole"]'), el => el.style.display !== 'none').map(el => (0, _closestNg.default)(el, '[jsvs]'));
97
- const inlineComposesByBody = Array.prototype.map.call(root.querySelectorAll('div[role=main] div[role=list] ~ div div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"], div[role=main] div[role=listitem][aria-multiselectable] div[jsvs] div[role=textbox][contenteditable=true][tabindex="0"]'), el => (0, _closestNg.default)(el, '[jsvs]'));
98
-
99
- // The above are currently expected to match, though they don't match
100
- // for all of our historical data.
101
-
102
- const inlineComposes = (0, _uniq.default)(inlineComposesByPopoutBtn.concat(inlineComposesByBody));
103
- return inlineComposes;
104
- }
105
- },
106
- regularCompose: {
107
- fn(root) {
108
- return Array.prototype.filter.call(root.querySelectorAll('div[role=dialog]:not(.inboxsdk__mole_view)'), el => el.querySelector('div[jsaction^="compose"][jsaction$=".focus_mole"]') && !(0, _closestNg.default)(el, 'div[tabindex][jsaction*="exit_full_screen"]'));
109
- }
110
- },
111
- fullscreenCompose: {
112
- fn(root) {
113
- return Array.prototype.filter.call(root.querySelectorAll('div[tabindex][jsaction*="exit_full_screen"] div[role=dialog]'), el => el.querySelector('div[jsaction^="compose"][jsaction$=".focus_mole"]'));
114
- }
115
- }
116
- },
117
- watchers: [{
118
- sources: [null],
119
- tag: 'leftNav',
120
- selectors: ['body', '[id][jsaction]', 'nav[aria-hidden]:not([role])', 'div[role=menu]']
121
- }, {
122
- sources: [null],
123
- tag: 'topRow',
124
- selectors: ['body', '[id][jsaction]', 'div[jsaction]:not([role])', '*', {
125
- $or: [['[role=main]'], [':not([role])', '*', '[role=main]']]
126
- }, '[role=application]', '[role=list]', '*', '*', '.scroll-list-section-body', '[role=listitem]']
127
- }, {
128
- sources: ['topRow'],
129
- tag: 'bundleRow',
130
- selectors: [{
131
- $filter: el => !/thread-/.test(el.getAttribute('data-item-id') || '')
132
- }]
133
- }, {
134
- sources: ['topRow'],
135
- tag: 'threadRow',
136
- selectors: [{
137
- $filter: el => /thread-/.test(el.getAttribute('data-item-id') || '')
138
- }]
139
- }, {
140
- sources: ['bundleRow'],
141
- tag: 'threadRow',
142
- selectors: [{
143
- $watch: {
144
- attributeFilter: ['aria-expanded'],
145
- cond: '[aria-expanded=true]'
146
- }
147
- }, '[role=list]', '*', ':not([id])', '*', '*', '[role=listitem]']
148
- }, {
149
- sources: ['threadRow'],
150
- tag: 'collapsedThreadRow',
151
- selectors: [{
152
- $watch: {
153
- attributeFilter: ['class'],
154
- cond: ':not(.scroll-list-item-open), .scroll-list-item-measuring-open'
155
- }
156
- }, ':first-child', {
157
- $map: el => el.parentElement
158
- }]
159
- }, {
160
- sources: ['threadRow'],
161
- tag: 'thread',
162
- selectors: [{
163
- $watch: {
164
- attributeFilter: ['class'],
165
- cond: '.scroll-list-item-open'
166
- }
167
- }]
168
- }, {
169
- sources: ['thread'],
170
- tag: 'message',
171
- selectors: ['*', ':not([role=heading])', '[role=list]', 'div', {
172
- $watch: {
173
- attributeFilter: ['role', 'data-msg-id'],
174
- cond: '[role=listitem][data-msg-id]'
175
- }
176
- }]
177
- }, {
178
- sources: ['message'],
179
- tag: 'attachmentCard',
180
- selectors: ['*', '*', 'section', '*', {
181
- $filter: el => el.style.display !== 'none'
182
- }, 'div[tabindex]', {
183
- $filter: el => el.style.display !== 'none'
184
- }]
185
- }, {
186
- sources: ['bundleRow', 'threadRow'],
187
- tag: 'attachmentCard',
188
- selectors: ['*', '[jsaction]', '[role=list][jsaction]', '*', 'div[role=listitem]', {
189
- $watch: {
190
- attributeFilter: ['tabindex'],
191
- cond: '[tabindex]'
192
- }
193
- }, {
194
- $filter: el => el.style.display !== 'none'
195
- }]
196
- }, {
197
- sources: [null],
198
- tag: 'attachmentOverlay',
199
- selectors: ['body', 'iframe[id][frameborder]:not([src])', {
200
- $map: el => el.contentDocument && el.contentDocument.body
201
- }, 'div[aria-label][role=dialog]', {
202
- $watch: {
203
- attributeFilter: ['aria-hidden'],
204
- cond: ':not([aria-hidden=true])'
205
- }
206
- }]
207
- }, {
208
- sources: [null],
209
- tag: 'chatSidebar',
210
- selectors: ['body', '[id][jsaction]', 'div[id]', 'div[class]', 'div.in#in']
211
- }, {
212
- sources: [null],
213
- tag: 'searchAutocompleteResults',
214
- selectors: ['body', '[id][jsaction]', '[id][jsaction]', 'div[class]', 'div[class]', '[role=listbox]', 'ul:last-of-type']
215
- }, {
216
- sources: ['thread'],
217
- tag: 'inlineCompose',
218
- selectors: ['*', ':not([role=heading])', ':not([role=list])', '*', '[jsvs]', {
219
- $map(el) {
220
- // <2016-11-02 support
221
- const oldButton = (0, _find.default)(el.children, child => child.nodeName === 'BUTTON');
222
- if (oldButton) return oldButton;
223
- const buttonEl = el.querySelector('div[jsaction="global.none"] > div[role=button]');
224
- if (buttonEl) return buttonEl.parentElement;
225
- _logger.default.error(new Error('inline compose button not found'), {
226
- el,
227
- html: (0, _censorHTMLtree.default)(el)
228
- });
229
- }
230
- }, {
231
- $watch: {
232
- attributeFilter: ['style'],
233
- cond: el => el.style.display !== 'none'
234
- }
235
- }, {
236
- $map: el => el.parentElement
237
- }]
238
- }, {
239
- sources: [null],
240
- tag: 'regularCompose',
241
- selectors: ['body', 'div[id][jsaction]', 'div[id][class]:not([role])', 'div[class]', 'div[id]', 'div[jstcache][class]:not([aria-hidden]):not([tabindex])', {
242
- $map(el) {
243
- const composeEl = el.querySelector('div[role=dialog]:not(.inboxsdk__mole_view)');
244
- if (!composeEl) {
245
- _logger.default.error(new Error('compose dialog element not found'), {
246
- html: (0, _censorHTMLtree.default)(el)
247
- });
248
- }
249
- return composeEl;
250
- }
251
- }]
252
- }, {
253
- sources: [null],
254
- tag: 'fullscreenCompose',
255
- selectors: ['body', '[id][jsaction]', 'div[id]:not([jsaction])', 'div[tabindex][jsaction*="exit_full_screen"]', '*', '*', '*', '*', '*', '[role=dialog]:not(.inboxsdk__drawer_view)']
256
- }, {
257
- sources: ['searchBar'],
258
- tag: 'listToolBar',
259
- selectors: [{
260
- $map: el => el.parentElement
261
- }, 'div:empty + div:not(:empty) + div', 'ul[jsaction]']
262
- }]
263
- };
264
- var _default = pageParserOptions;
265
- exports.default = _default;