@inboxsdk/core 2.2.17 → 2.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/inboxsdk.js +439 -438
- package/inboxsdk.js.map +1 -1
- package/package.json +1 -1
- package/pageWorld.js +0 -265
- package/pageWorld.js.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/sync-mole-spacer-with-right-column.d.ts +8 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/sync-mole-spacer-with-right-column.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts +3 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts +20 -0
- package/src/platform-implementation-js/dom-driver/gmail/gmail-element-getter.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/selectors.d.ts +33 -0
- package/src/platform-implementation-js/dom-driver/gmail/selectors.d.ts.map +1 -0
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.d.ts.map +1 -1
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.d.ts.map +1 -1
- package/src/platform-implementation-js/lib/dom/mergeSelectorOverrides.d.ts +22 -0
- package/src/platform-implementation-js/lib/dom/mergeSelectorOverrides.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/dom/selectorRegistry.d.ts +28 -0
- package/src/platform-implementation-js/lib/dom/selectorRegistry.d.ts.map +1 -0
- package/src/platform-implementation-js/lib/logger.d.ts.map +1 -1
- package/src/platform-implementation-js/platform-implementation.d.ts +6 -0
- package/src/platform-implementation-js/platform-implementation.d.ts.map +1 -1
package/inboxsdk.js
CHANGED
|
@@ -371,7 +371,7 @@ function isNotNil(value) {
|
|
|
371
371
|
|
|
372
372
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- SDK_VERSION is injected by webpack
|
|
373
373
|
///@ts-ignore
|
|
374
|
-
const BUILD_VERSION = "2.2.
|
|
374
|
+
const BUILD_VERSION = "2.2.19-1786580061685-3573e62ec8d2327b";
|
|
375
375
|
if (false) {}
|
|
376
376
|
|
|
377
377
|
/***/ }),
|
|
@@ -630,8 +630,8 @@ function isGoogleChatEnabled() {
|
|
|
630
630
|
|
|
631
631
|
|
|
632
632
|
function overrideGmailBackButton(gmailDriver, gmailRouteProcessor) {
|
|
633
|
-
_gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
634
|
-
if (_gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
633
|
+
_gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.waitForGmailModeToSettle().then(function () {
|
|
634
|
+
if (_gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.isStandalone()) {
|
|
635
635
|
return;
|
|
636
636
|
}
|
|
637
637
|
_setupManagement(gmailDriver, gmailRouteProcessor);
|
|
@@ -664,7 +664,7 @@ const handleGmailRouteView = (0,ud__WEBPACK_IMPORTED_MODULE_2__.defn)(module, fu
|
|
|
664
664
|
}
|
|
665
665
|
});
|
|
666
666
|
function _bindToBackButton(gmailDriver, gmailRouteView) {
|
|
667
|
-
const backButton = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
667
|
+
const backButton = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.getThreadBackButton();
|
|
668
668
|
if (!backButton) {
|
|
669
669
|
return;
|
|
670
670
|
}
|
|
@@ -801,13 +801,13 @@ function setupComposeViewDriverStream(gmailDriver, messageViewDriverStream, xhrI
|
|
|
801
801
|
return impStream.flatMapLatest(imp => imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream));
|
|
802
802
|
}
|
|
803
803
|
function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
804
|
-
return kefir_esm.fromPromise(gmail_element_getter/* default */.
|
|
804
|
+
return kefir_esm.fromPromise(gmail_element_getter/* default */.Ay.waitForGmailModeToSettle()).flatMap(() => {
|
|
805
805
|
let elementStream;
|
|
806
806
|
let isStandalone = false;
|
|
807
|
-
if (gmail_element_getter/* default */.
|
|
807
|
+
if (gmail_element_getter/* default */.Ay.isStandaloneComposeWindow()) {
|
|
808
808
|
elementStream = _setupStandaloneComposeElementStream();
|
|
809
809
|
isStandalone = true;
|
|
810
|
-
} else if (gmail_element_getter/* default */.
|
|
810
|
+
} else if (gmail_element_getter/* default */.Ay.isStandaloneThreadWindow()) {
|
|
811
811
|
elementStream = kefir_esm.never();
|
|
812
812
|
} else {
|
|
813
813
|
elementStream = _setupStandardComposeElementStream();
|
|
@@ -822,14 +822,14 @@ function imp(gmailDriver, messageViewDriverStream, xhrInterceptorStream) {
|
|
|
822
822
|
}))))).flatMap(composeViewDriver => composeViewDriver.ready());
|
|
823
823
|
}
|
|
824
824
|
function _setupStandardComposeElementStream() {
|
|
825
|
-
return _waitForContainerAndMonitorChildrenStream(() => gmail_element_getter/* default */.
|
|
825
|
+
return _waitForContainerAndMonitorChildrenStream(() => gmail_element_getter/* default */.Ay.getComposeWindowContainer()).flatMap(composeGrandParent => {
|
|
826
826
|
const composeParentEl = composeGrandParent.el.querySelector('div.AD');
|
|
827
827
|
if (composeParentEl) {
|
|
828
828
|
return (0,make_element_child_stream/* default */.A)(composeParentEl).takeUntilBy(composeGrandParent.removalStream).map(_informElement('composeFullscreenStateChanged'));
|
|
829
829
|
} else {
|
|
830
830
|
return kefir_esm.never();
|
|
831
831
|
}
|
|
832
|
-
}).merge(gmail_element_getter/* default */.
|
|
832
|
+
}).merge(gmail_element_getter/* default */.Ay.getFullscreenComposeWindowContainerStream().flatMap(_ref => {
|
|
833
833
|
let {
|
|
834
834
|
el,
|
|
835
835
|
removalStream
|
|
@@ -865,7 +865,7 @@ function _setupStandardComposeElementStream() {
|
|
|
865
865
|
}).flatMap(makeElementStreamMerger());
|
|
866
866
|
}
|
|
867
867
|
function _setupStandaloneComposeElementStream() {
|
|
868
|
-
return _waitForContainerAndMonitorChildrenStream(() => gmail_element_getter/* default */.
|
|
868
|
+
return _waitForContainerAndMonitorChildrenStream(() => gmail_element_getter/* default */.Ay.StandaloneCompose.getComposeWindowContainer());
|
|
869
869
|
}
|
|
870
870
|
function _waitForContainerAndMonitorChildrenStream(containerFn) {
|
|
871
871
|
return kefir_esm.interval(2000, undefined) // TODO replace this with page-parser-tree
|
|
@@ -903,7 +903,7 @@ function _informElement(eventName) {
|
|
|
903
903
|
const ACTIVE_ADD_ON_ICON_SELECTOR = '.J-KU-KO';
|
|
904
904
|
|
|
905
905
|
const showCustomRouteView = (0,ud__WEBPACK_IMPORTED_MODULE_1__.defn)(module, function showCustomRouteView(gmailDriver, element) {
|
|
906
|
-
const contentSectionElement = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
906
|
+
const contentSectionElement = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.getContentSectionElement();
|
|
907
907
|
if (!contentSectionElement) {
|
|
908
908
|
return;
|
|
909
909
|
}
|
|
@@ -926,7 +926,7 @@ const showCustomRouteView = (0,ud__WEBPACK_IMPORTED_MODULE_1__.defn)(module, fun
|
|
|
926
926
|
});
|
|
927
927
|
|
|
928
928
|
//if any thread sidebar addons are enabled then we need to turn them off
|
|
929
|
-
const companionSidebarIconContainerEl = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .
|
|
929
|
+
const companionSidebarIconContainerEl = _gmail_element_getter__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.getCompanionSidebarIconContainerElement();
|
|
930
930
|
if (companionSidebarIconContainerEl) {
|
|
931
931
|
const activeThreadAddOnIcon = companionSidebarIconContainerEl.querySelector(ACTIVE_ADD_ON_ICON_SELECTOR);
|
|
932
932
|
if (activeThreadAddOnIcon) {
|
|
@@ -956,7 +956,10 @@ function _getCustomViewContainerElement(contentSectionElement) {
|
|
|
956
956
|
|
|
957
957
|
// EXPORTS
|
|
958
958
|
__webpack_require__.d(__webpack_exports__, {
|
|
959
|
-
|
|
959
|
+
y2: () => (/* binding */ COMPANION_SIDEBAR_PANEL_WRAPPER_CLASS),
|
|
960
|
+
MY: () => (/* binding */ MOLE_CONTAINER_SELECTOR),
|
|
961
|
+
pG: () => (/* binding */ MOLE_PARENT_SELECTOR),
|
|
962
|
+
Ay: () => (/* binding */ gmail_element_getter)
|
|
960
963
|
});
|
|
961
964
|
|
|
962
965
|
// EXTERNAL MODULE: ./node_modules/lodash/once.js
|
|
@@ -1053,6 +1056,31 @@ const APP_MENU = '.aeN.WR.a6o.anZ.nH.oy8Mbf[role=navigation]';
|
|
|
1053
1056
|
*/
|
|
1054
1057
|
const NAV_MENU = '.aeN.WR.nH.oy8Mbf[role=navigation]';
|
|
1055
1058
|
|
|
1059
|
+
/**
|
|
1060
|
+
* The right-hand column holding the companion sidebar. Both the panel and the
|
|
1061
|
+
* icon rail live inside it.
|
|
1062
|
+
*/
|
|
1063
|
+
const COMPANION_SIDEBAR_COLUMN = 'div.aUx';
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* Class on the companion sidebar's outer wrapper before the 2024-11-07 Gmail
|
|
1067
|
+
* update, when the wrapper and the content container were the same element.
|
|
1068
|
+
*/
|
|
1069
|
+
const COMPANION_SIDEBAR_LEGACY_WRAPPER_CLASS = 'bq9';
|
|
1070
|
+
|
|
1071
|
+
/**
|
|
1072
|
+
* Class on the companion sidebar's outer wrapper in the layout Gmail shipped
|
|
1073
|
+
* 2024-11-07, which moved the sidebar icons to the right of the panel. Absent
|
|
1074
|
+
* on older layouts, which use {@link COMPANION_SIDEBAR_LEGACY_WRAPPER_CLASS}.
|
|
1075
|
+
*/
|
|
1076
|
+
const COMPANION_SIDEBAR_PANEL_WRAPPER_CLASS = 'WN9Ejb';
|
|
1077
|
+
|
|
1078
|
+
/** Outer flex container for the mole strip (spacers + mole area). Lazily created by Gmail. */
|
|
1079
|
+
const MOLE_CONTAINER_SELECTOR = 'div.dw';
|
|
1080
|
+
|
|
1081
|
+
/** The element compose windows and moles are appended to. */
|
|
1082
|
+
const MOLE_PARENT_SELECTOR = `${MOLE_CONTAINER_SELECTOR} .nH > .nH > .no`;
|
|
1083
|
+
|
|
1056
1084
|
// TODO Figure out if these functions can and should be able to return null
|
|
1057
1085
|
const GmailElementGetter = {
|
|
1058
1086
|
getActiveMoreMenu() {
|
|
@@ -1068,6 +1096,9 @@ const GmailElementGetter = {
|
|
|
1068
1096
|
// only for Gmailv1 + Gmailv2-before-2018-07-30?
|
|
1069
1097
|
return document.querySelector('.no > .nn.bnl');
|
|
1070
1098
|
},
|
|
1099
|
+
getCompanionSidebarColumnElement() {
|
|
1100
|
+
return document.querySelector(COMPANION_SIDEBAR_COLUMN);
|
|
1101
|
+
},
|
|
1071
1102
|
getCompanionSidebarContentContainerElement() {
|
|
1072
1103
|
return document.querySelector('.brC-brG');
|
|
1073
1104
|
},
|
|
@@ -1075,6 +1106,21 @@ const GmailElementGetter = {
|
|
|
1075
1106
|
getCompanionSidebarIconContainerElement() {
|
|
1076
1107
|
return document.querySelector('.brC-aT5-aOt-Jw');
|
|
1077
1108
|
},
|
|
1109
|
+
/**
|
|
1110
|
+
* The wrapper Google's own companions (Calendar, Keep, Tasks, Contacts) and
|
|
1111
|
+
* SDK content panels both render their body inside. Gmail hides it with
|
|
1112
|
+
* `display: none` rather than removing it when nothing is open.
|
|
1113
|
+
*
|
|
1114
|
+
* @param contentContainerEl pass this when you already hold the content
|
|
1115
|
+
* container, so the wrapper is derived from that same element.
|
|
1116
|
+
*/
|
|
1117
|
+
getCompanionSidebarOuterWrapperElement(contentContainerEl) {
|
|
1118
|
+
const companionSidebarContentContainerEl = contentContainerEl ?? GmailElementGetter.getCompanionSidebarContentContainerElement();
|
|
1119
|
+
if (!companionSidebarContentContainerEl) return null;
|
|
1120
|
+
// TODO: Once the changes to the GMail DOM have been entirely ramped, drop
|
|
1121
|
+
// the ternary here and always get the parentElement. (Jun 20, 2018)
|
|
1122
|
+
return companionSidebarContentContainerEl.classList.contains(COMPANION_SIDEBAR_LEGACY_WRAPPER_CLASS) ? companionSidebarContentContainerEl : companionSidebarContentContainerEl.parentElement;
|
|
1123
|
+
},
|
|
1078
1124
|
getComposeButton() {
|
|
1079
1125
|
if ((0,isIntegratedViewGmail/* default */.Ay)()) {
|
|
1080
1126
|
return document.querySelector('.aIH .aic div[role=button].L3');
|
|
@@ -1082,7 +1128,7 @@ const GmailElementGetter = {
|
|
|
1082
1128
|
return document.querySelector('[gh=cm]');
|
|
1083
1129
|
},
|
|
1084
1130
|
getComposeWindowContainer() {
|
|
1085
|
-
return document.querySelector(
|
|
1131
|
+
return document.querySelector(MOLE_PARENT_SELECTOR);
|
|
1086
1132
|
},
|
|
1087
1133
|
getContentSectionElement() {
|
|
1088
1134
|
// New method for finding the content section element that also supports
|
|
@@ -2665,7 +2711,7 @@ options.insert = htmlElement => {
|
|
|
2665
2711
|
htmlElement.setAttribute('data-inboxsdk-version',
|
|
2666
2712
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
|
|
2667
2713
|
///@ts-ignore
|
|
2668
|
-
"2.2.
|
|
2714
|
+
"2.2.19-1786580061685-3573e62ec8d2327b");
|
|
2669
2715
|
document.head.append(htmlElement);
|
|
2670
2716
|
};
|
|
2671
2717
|
options.domAPI = (styleDomAPI_default());
|
|
@@ -3090,7 +3136,7 @@ class GmailAppSidebarPrimary {
|
|
|
3090
3136
|
if (contentContainer) contentContainer.classList.remove('companion_container_app_sidebar_visible');
|
|
3091
3137
|
}
|
|
3092
3138
|
#openSidebarAndActivateButton(buttonContainer, isGlobal) {
|
|
3093
|
-
const companionSidebarIconContainerEl = gmail_element_getter/* default */.
|
|
3139
|
+
const companionSidebarIconContainerEl = gmail_element_getter/* default */.Ay.getCompanionSidebarIconContainerElement();
|
|
3094
3140
|
if (!companionSidebarIconContainerEl) throw new Error('Could not find companion sidebar icon container element');
|
|
3095
3141
|
const activeButtonContainer = this.#getActiveButtonContainer();
|
|
3096
3142
|
if (activeButtonContainer) {
|
|
@@ -3113,20 +3159,18 @@ class GmailAppSidebarPrimary {
|
|
|
3113
3159
|
if (isGlobal) this.#companionSidebarContentContainerEl.classList.add('companion_global_app_sidebar_visible');
|
|
3114
3160
|
}
|
|
3115
3161
|
#setupElement() {
|
|
3116
|
-
const companionSidebarIconContainerEl = gmail_element_getter/* default */.
|
|
3162
|
+
const companionSidebarIconContainerEl = gmail_element_getter/* default */.Ay.getCompanionSidebarIconContainerElement();
|
|
3117
3163
|
if (!companionSidebarIconContainerEl) throw new Error('Could not find companion sidebar icon container element');
|
|
3118
3164
|
this.#companionSidebarContentContainerEl.setAttribute('data-sdk-sidebar-instance-id', this.#instanceId);
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
// always get the parentElement. (Jun 20, 2018)
|
|
3122
|
-
this.#companionSidebarOuterWrapper = this.#companionSidebarContentContainerEl.classList.contains('bq9') ? this.#companionSidebarContentContainerEl : this.#companionSidebarContentContainerEl.parentElement;
|
|
3123
|
-
if (!this.#companionSidebarOuterWrapper) {
|
|
3165
|
+
const companionSidebarOuterWrapper = gmail_element_getter/* default */.Ay.getCompanionSidebarOuterWrapperElement(this.#companionSidebarContentContainerEl);
|
|
3166
|
+
if (!companionSidebarOuterWrapper) {
|
|
3124
3167
|
throw new Error('should not happen: failed to find companionSidebarOuterWrapper');
|
|
3125
3168
|
}
|
|
3169
|
+
this.#companionSidebarOuterWrapper = companionSidebarOuterWrapper;
|
|
3126
3170
|
|
|
3127
3171
|
// detect 2024-11-07 gmail update that moved sidebar icons to the right of
|
|
3128
3172
|
// the sidebar
|
|
3129
|
-
if (this.#companionSidebarOuterWrapper.classList.contains(
|
|
3173
|
+
if (this.#companionSidebarOuterWrapper.classList.contains(gmail_element_getter/* COMPANION_SIDEBAR_PANEL_WRAPPER_CLASS */.y2)) {
|
|
3130
3174
|
document.body.classList.add('inboxsdk__sidebar_icons_right');
|
|
3131
3175
|
this.#driver.getLogger().eventSite('sidebar_icons_right');
|
|
3132
3176
|
}
|
|
@@ -5662,7 +5706,7 @@ class GmailComposeView {
|
|
|
5662
5706
|
if (this.#isStandalone) {
|
|
5663
5707
|
this.#isFullscreen = true;
|
|
5664
5708
|
} else {
|
|
5665
|
-
const fullScreenContainer = gmail_element_getter/* default */.
|
|
5709
|
+
const fullScreenContainer = gmail_element_getter/* default */.Ay.getFullscreenComposeWindowContainer();
|
|
5666
5710
|
if (!fullScreenContainer) {
|
|
5667
5711
|
this.#isFullscreen = false;
|
|
5668
5712
|
} else {
|
|
@@ -6305,8 +6349,7 @@ class GmailComposeView {
|
|
|
6305
6349
|
}
|
|
6306
6350
|
}
|
|
6307
6351
|
setTitleBarColor(color) {
|
|
6308
|
-
|
|
6309
|
-
const buttonParent = this.#element.querySelector('.nH.Hy.aXJ table.cf.Ht td.Hm') || this.#element.querySelector('.nH.Hy.aXJ table.cf td.Hm');
|
|
6352
|
+
const buttonParent = this.#driver.selectors.querySelectorByKey(this.#element, 'composeView.titleBarTd');
|
|
6310
6353
|
if (!buttonParent) {
|
|
6311
6354
|
// cosmetic; log and skip rather than throw
|
|
6312
6355
|
this.#driver.getLogger().error(new Error('setTitleBarColor: could not find compose title bar'));
|
|
@@ -6328,9 +6371,7 @@ class GmailComposeView {
|
|
|
6328
6371
|
if (this.isInlineReplyForm()) {
|
|
6329
6372
|
throw new Error('setTitleBarText() is not supported on inline compose views');
|
|
6330
6373
|
}
|
|
6331
|
-
|
|
6332
|
-
// Gmail A/B-renames the `Ht` token; fall back to a structural selector.
|
|
6333
|
-
const titleBarTable = this.#element.querySelector('.nH.Hy.aXJ table.cf.Ht') || this.#element.querySelector('.nH.Hy.aXJ table.cf');
|
|
6374
|
+
const titleBarTable = this.#driver.selectors.querySelectorByKey(this.#element, 'composeView.titleBarTable');
|
|
6334
6375
|
if (!titleBarTable) {
|
|
6335
6376
|
// cosmetic; log and skip rather than throw
|
|
6336
6377
|
this.#driver.getLogger().error(new Error('setTitleBarText: could not find compose title bar'));
|
|
@@ -10336,7 +10377,7 @@ options.insert = htmlElement => {
|
|
|
10336
10377
|
htmlElement.setAttribute('data-inboxsdk-version',
|
|
10337
10378
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
|
|
10338
10379
|
///@ts-ignore
|
|
10339
|
-
"2.2.
|
|
10380
|
+
"2.2.19-1786580061685-3573e62ec8d2327b");
|
|
10340
10381
|
document.head.append(htmlElement);
|
|
10341
10382
|
};
|
|
10342
10383
|
options.domAPI = (styleDomAPI_default());
|
|
@@ -10843,8 +10884,6 @@ class PersistentQueue {
|
|
|
10843
10884
|
}
|
|
10844
10885
|
// EXTERNAL MODULE: ./src/platform-implementation-js/lib/dom/make-mutation-observer-stream.ts
|
|
10845
10886
|
var make_mutation_observer_stream = __webpack_require__(5938);
|
|
10846
|
-
// EXTERNAL MODULE: ./node_modules/ext-corb-workaround/dist/src/index.js
|
|
10847
|
-
var src = __webpack_require__(9482);
|
|
10848
10887
|
// EXTERNAL MODULE: ./src/platform-implementation-js/lib/isStreakAppId.ts
|
|
10849
10888
|
var isStreakAppId = __webpack_require__(8579);
|
|
10850
10889
|
;// CONCATENATED MODULE: ./src/platform-implementation-js/lib/logger.ts
|
|
@@ -10857,7 +10896,6 @@ var isStreakAppId = __webpack_require__(8579);
|
|
|
10857
10896
|
|
|
10858
10897
|
|
|
10859
10898
|
|
|
10860
|
-
|
|
10861
10899
|
// Yeah, this module is a singleton with some shared state. This is just for
|
|
10862
10900
|
// logging convenience. Other modules should avoid doing this!
|
|
10863
10901
|
const _extensionAppIds = [];
|
|
@@ -11232,9 +11270,7 @@ async function retrieveNewEventsAccessToken() {
|
|
|
11232
11270
|
const {
|
|
11233
11271
|
text
|
|
11234
11272
|
} = await (0,ajax/* default */.A)({
|
|
11235
|
-
url: 'https://api.inboxsdk.com/api/v2/events/oauth'
|
|
11236
|
-
// Work around CORB for extensions that have permissions to inboxsdk.com
|
|
11237
|
-
XMLHttpRequest: (0,src/* getXMLHttpRequest */.np)()
|
|
11273
|
+
url: 'https://api.inboxsdk.com/api/v2/events/oauth'
|
|
11238
11274
|
});
|
|
11239
11275
|
const accessToken = JSON.parse(text);
|
|
11240
11276
|
if (isTimestampExpired(accessToken.expirationDate)) {
|
|
@@ -11480,7 +11516,7 @@ if (!globalThis.__InboxSDKImpLoader) {
|
|
|
11480
11516
|
await onready;
|
|
11481
11517
|
const {
|
|
11482
11518
|
makePlatformImplementation
|
|
11483
|
-
} = await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__,
|
|
11519
|
+
} = await Promise.resolve(/* import() eager */).then(__webpack_require__.bind(__webpack_require__, 7064));
|
|
11484
11520
|
return makePlatformImplementation(appId, opts, {
|
|
11485
11521
|
piMainStarted,
|
|
11486
11522
|
piLoadStarted,
|
|
@@ -11629,7 +11665,7 @@ class Keyboard {
|
|
|
11629
11665
|
|
|
11630
11666
|
/***/ }),
|
|
11631
11667
|
|
|
11632
|
-
/***/
|
|
11668
|
+
/***/ 7064:
|
|
11633
11669
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
11634
11670
|
|
|
11635
11671
|
"use strict";
|
|
@@ -14067,7 +14103,7 @@ class GmailToolbarView {
|
|
|
14067
14103
|
}
|
|
14068
14104
|
}
|
|
14069
14105
|
_addToOpenMoreMenu(buttonDescriptor) {
|
|
14070
|
-
const moreMenu = gmail_element_getter/* default */.
|
|
14106
|
+
const moreMenu = gmail_element_getter/* default */.Ay.getActiveMoreMenu();
|
|
14071
14107
|
if (!moreMenu) {
|
|
14072
14108
|
return;
|
|
14073
14109
|
}
|
|
@@ -14724,7 +14760,7 @@ class GmailThreadView {
|
|
|
14724
14760
|
async #logAddonElementInfo() {
|
|
14725
14761
|
if (hasLoggedAddonInfo) return;
|
|
14726
14762
|
function readInfo() {
|
|
14727
|
-
const container = gmail_element_getter/* default */.
|
|
14763
|
+
const container = gmail_element_getter/* default */.Ay.getAddonSidebarContainerElement();
|
|
14728
14764
|
if (!container) return null;
|
|
14729
14765
|
const isDisplayNone = {
|
|
14730
14766
|
parent: container.parentElement ? container.parentElement.style.display === 'none' : null,
|
|
@@ -15098,7 +15134,7 @@ options.insert = htmlElement => {
|
|
|
15098
15134
|
htmlElement.setAttribute('data-inboxsdk-version',
|
|
15099
15135
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
|
|
15100
15136
|
///@ts-ignore
|
|
15101
|
-
"2.2.
|
|
15137
|
+
"2.2.19-1786580061685-3573e62ec8d2327b");
|
|
15102
15138
|
document.head.append(htmlElement);
|
|
15103
15139
|
};
|
|
15104
15140
|
options.domAPI = (styleDomAPI_default());
|
|
@@ -15975,7 +16011,7 @@ class GmailRouteView {
|
|
|
15975
16011
|
this._setCustomViewElementHeight();
|
|
15976
16012
|
}
|
|
15977
16013
|
_monitorLeftNavHeight() {
|
|
15978
|
-
var leftNav = gmail_element_getter/* default */.
|
|
16014
|
+
var leftNav = gmail_element_getter/* default */.Ay.getLeftNavHeightElement();
|
|
15979
16015
|
if (!leftNav) {
|
|
15980
16016
|
return;
|
|
15981
16017
|
}
|
|
@@ -15987,11 +16023,11 @@ class GmailRouteView {
|
|
|
15987
16023
|
});
|
|
15988
16024
|
}
|
|
15989
16025
|
_setCustomViewElementHeight() {
|
|
15990
|
-
const leftNav = gmail_element_getter/* default */.
|
|
15991
|
-
const gtalkButtons = gmail_element_getter/* default */.
|
|
16026
|
+
const leftNav = gmail_element_getter/* default */.Ay.getLeftNavHeightElement();
|
|
16027
|
+
const gtalkButtons = gmail_element_getter/* default */.Ay.getGtalkButtons();
|
|
15992
16028
|
const customViewEl = this._customViewElement;
|
|
15993
16029
|
if (!leftNav || !customViewEl) throw new Error('Should not happen');
|
|
15994
|
-
const contentSectionElement = gmail_element_getter/* default */.
|
|
16030
|
+
const contentSectionElement = gmail_element_getter/* default */.Ay.getContentSectionElement();
|
|
15995
16031
|
const contentSectionElementBottomMargin = contentSectionElement ? parseInt(getComputedStyle(contentSectionElement).marginBottom, 10) : 0;
|
|
15996
16032
|
customViewEl.style.height = `${parseInt(leftNav.style.height, 10) + (gtalkButtons ? gtalkButtons.offsetHeight : 0) - contentSectionElementBottomMargin}px`;
|
|
15997
16033
|
}
|
|
@@ -16066,7 +16102,7 @@ class GmailRouteView {
|
|
|
16066
16102
|
threadContainerElement
|
|
16067
16103
|
};
|
|
16068
16104
|
}
|
|
16069
|
-
const previewPaneContainerElement = gmail_element_getter/* default */.
|
|
16105
|
+
const previewPaneContainerElement = gmail_element_getter/* default */.Ay.getPreviewPaneContainerElement();
|
|
16070
16106
|
if (previewPaneContainerElement) {
|
|
16071
16107
|
return {
|
|
16072
16108
|
previewPaneContainerElement
|
|
@@ -16097,7 +16133,7 @@ class GmailRouteView {
|
|
|
16097
16133
|
}
|
|
16098
16134
|
_setupScrollStream() {
|
|
16099
16135
|
const SCROLL_DEBOUNCE_MS = 100;
|
|
16100
|
-
const scrollContainer = gmail_element_getter/* default */.
|
|
16136
|
+
const scrollContainer = gmail_element_getter/* default */.Ay.getScrollContainer();
|
|
16101
16137
|
const {
|
|
16102
16138
|
scrollTop: cachedScrollTop
|
|
16103
16139
|
} = this._cachedRouteData;
|
|
@@ -16320,7 +16356,7 @@ class GmailRouteView {
|
|
|
16320
16356
|
|
|
16321
16357
|
// Used to click gmail refresh button in thread lists
|
|
16322
16358
|
refresh() {
|
|
16323
|
-
var el = gmail_element_getter/* default */.
|
|
16359
|
+
var el = gmail_element_getter/* default */.Ay.getToolbarElement().querySelector('div.T-I.nu');
|
|
16324
16360
|
if (el) {
|
|
16325
16361
|
var prevActive = document.activeElement;
|
|
16326
16362
|
var prevClassName = el.className;
|
|
@@ -16343,7 +16379,7 @@ class GmailRouteView {
|
|
|
16343
16379
|
return routeID.split('/').filter(part => part[0] === ':').map(part => part.substring(1));
|
|
16344
16380
|
}
|
|
16345
16381
|
_getThreadContainerElement() {
|
|
16346
|
-
return gmail_element_getter/* default */.
|
|
16382
|
+
return gmail_element_getter/* default */.Ay.getThreadContainerElement();
|
|
16347
16383
|
}
|
|
16348
16384
|
}
|
|
16349
16385
|
/* harmony default export */ const gmail_route_view = (GmailRouteView);
|
|
@@ -17211,7 +17247,7 @@ function isBodyDarkTheme() {
|
|
|
17211
17247
|
}
|
|
17212
17248
|
const stylesStream = kefir_bus_default()();
|
|
17213
17249
|
async function trackGmailStyles() {
|
|
17214
|
-
if (document.head.hasAttribute('data-inboxsdk-gmail-style-tracker') || gmail_element_getter/* default */.
|
|
17250
|
+
if (document.head.hasAttribute('data-inboxsdk-gmail-style-tracker') || gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
17215
17251
|
return;
|
|
17216
17252
|
}
|
|
17217
17253
|
document.head.setAttribute('data-inboxsdk-gmail-style-tracker', 'true');
|
|
@@ -17365,7 +17401,7 @@ class GmailAppMenuItemView extends events.EventEmitter {
|
|
|
17365
17401
|
iconClassName
|
|
17366
17402
|
} = this.#menuItemDescriptor ?? {};
|
|
17367
17403
|
if (iconUrl) {
|
|
17368
|
-
const rawTheme = gmail_element_getter/* default */.
|
|
17404
|
+
const rawTheme = gmail_element_getter/* default */.Ay.isDarkTheme() ? iconUrl.darkTheme : iconUrl.lightTheme;
|
|
17369
17405
|
if (!rawTheme) return;
|
|
17370
17406
|
const theme = typeof rawTheme === 'string' ? rawTheme : rawTheme.default;
|
|
17371
17407
|
const activeImg = typeof rawTheme === 'string' ? rawTheme : rawTheme.active;
|
|
@@ -17533,7 +17569,7 @@ class CollapsiblePanelView extends safe_event_emitter/* default */.A {
|
|
|
17533
17569
|
if (!iconUrl) {
|
|
17534
17570
|
return;
|
|
17535
17571
|
}
|
|
17536
|
-
const theme = gmail_element_getter/* default */.
|
|
17572
|
+
const theme = gmail_element_getter/* default */.Ay.isDarkTheme() ? iconUrl.darkTheme : iconUrl.lightTheme;
|
|
17537
17573
|
if (!theme) {
|
|
17538
17574
|
return;
|
|
17539
17575
|
}
|
|
@@ -17679,7 +17715,7 @@ async function addCollapsiblePanel(driver, panelDescriptor, insertIndex) {
|
|
|
17679
17715
|
const injectionContainer = await waitForAppMenuParentReady();
|
|
17680
17716
|
const collapsiblePanelView = new CollapsiblePanelView(driver, panelDescriptor);
|
|
17681
17717
|
if (!injectionContainer || !collapsiblePanelView.element) return;
|
|
17682
|
-
const appMenu = await gmail_element_getter/* default */.
|
|
17718
|
+
const appMenu = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
17683
17719
|
if (!appMenu) return;
|
|
17684
17720
|
const panelNodes = injectionContainer.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? [];
|
|
17685
17721
|
const siblingElement = Number.isInteger(insertIndex) ? panelNodes[insertIndex] ?? null : null;
|
|
@@ -17691,9 +17727,9 @@ async function addCollapsiblePanel(driver, panelDescriptor, insertIndex) {
|
|
|
17691
17727
|
return collapsiblePanelView;
|
|
17692
17728
|
}
|
|
17693
17729
|
const waitForAppMenuParentReady = once_default()(async () => {
|
|
17694
|
-
if (!gmail_element_getter/* default */.
|
|
17730
|
+
if (!gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
17695
17731
|
try {
|
|
17696
|
-
const menuParentElement = await (0,wait_for/* default */.A)(() => gmail_element_getter/* default */.
|
|
17732
|
+
const menuParentElement = await (0,wait_for/* default */.A)(() => gmail_element_getter/* default */.Ay.getAppMenuContainer());
|
|
17697
17733
|
return menuParentElement;
|
|
17698
17734
|
} catch (e) {
|
|
17699
17735
|
lib_logger/* default */.A.error(e);
|
|
@@ -17747,13 +17783,13 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17747
17783
|
static #menuItemToPanelMap = new Map();
|
|
17748
17784
|
static #appMenuItemViews = new Set();
|
|
17749
17785
|
static getAllPanels() {
|
|
17750
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17786
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17751
17787
|
const nativePanels = appMenuElement?.querySelectorAll(`.${collapsible_panel_view_NATIVE_CLASS}`);
|
|
17752
17788
|
return Array.from(nativePanels ?? []);
|
|
17753
17789
|
}
|
|
17754
17790
|
static getActivePanel() {
|
|
17755
17791
|
let useSdkActiveSelector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
17756
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17792
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17757
17793
|
const {
|
|
17758
17794
|
ACTIVE,
|
|
17759
17795
|
SDK_ACTIVE
|
|
@@ -17782,11 +17818,11 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17782
17818
|
return element.classList.contains(NATIVE_CLASS);
|
|
17783
17819
|
}
|
|
17784
17820
|
static getAllMenuItems() {
|
|
17785
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17821
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17786
17822
|
return Array.from(appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []);
|
|
17787
17823
|
}
|
|
17788
17824
|
static getActiveMenuItem() {
|
|
17789
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17825
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17790
17826
|
const {
|
|
17791
17827
|
ACTIVE,
|
|
17792
17828
|
SDK_ACTIVE
|
|
@@ -17816,7 +17852,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17816
17852
|
}
|
|
17817
17853
|
static #adjustTooltipNub() {
|
|
17818
17854
|
// adjust all menu items' collapsible panel's tooltip nub position
|
|
17819
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17855
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenu();
|
|
17820
17856
|
for (const menuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
|
|
17821
17857
|
const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
|
|
17822
17858
|
if (!panel) continue;
|
|
@@ -17887,7 +17923,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17887
17923
|
});
|
|
17888
17924
|
}
|
|
17889
17925
|
static #_ = async function init() {
|
|
17890
|
-
const gmailAppMenu = await gmail_element_getter/* default */.
|
|
17926
|
+
const gmailAppMenu = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
17891
17927
|
if (!gmailAppMenu) {
|
|
17892
17928
|
return;
|
|
17893
17929
|
}
|
|
@@ -17906,7 +17942,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17906
17942
|
// Set up event listeners we use to control menu UI
|
|
17907
17943
|
// We intercept some events emitted on Gmail (native) menu items to gain full control of the menu (menu items and panels).
|
|
17908
17944
|
// Thus, some native event handlers won't be invoked so we replicate the Gmail's behavior by ourselves.
|
|
17909
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17945
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17910
17946
|
for (const nativeMenuItem of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}:not(.${INBOXSDK_CLASS})`) ?? []) {
|
|
17911
17947
|
// Gmail uses this listener for panel hover state activation. It's prevented from propagation and we handle UI updates
|
|
17912
17948
|
const buttonElement = nativeMenuItem.querySelector('.V6.CL');
|
|
@@ -17940,7 +17976,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17940
17976
|
HOVER
|
|
17941
17977
|
} = GmailAppMenuItemView.elementCss;
|
|
17942
17978
|
function handleActivate() {
|
|
17943
|
-
const appMenuElement = gmail_element_getter/* default */.
|
|
17979
|
+
const appMenuElement = gmail_element_getter/* default */.Ay.getAppMenuContainer();
|
|
17944
17980
|
|
|
17945
17981
|
// deactivate menu items and handle keyboard accessibility
|
|
17946
17982
|
for (const menuItem_ of appMenuElement?.querySelectorAll(`.${NATIVE_CLASS}`) ?? []) {
|
|
@@ -17970,7 +18006,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
17970
18006
|
const panel = AppMenuItemView.#menuItemToPanelMap.get(menuItem);
|
|
17971
18007
|
const activeMenuItem = AppMenuItemView.getActiveMenuItem();
|
|
17972
18008
|
const activePanel = AppMenuItemView.getActivePanel();
|
|
17973
|
-
const burgerMenuOpen = gmail_element_getter/* default */.
|
|
18009
|
+
const burgerMenuOpen = gmail_element_getter/* default */.Ay.isAppBurgerMenuOpen();
|
|
17974
18010
|
|
|
17975
18011
|
// hover-styled panel is displayed for collapsed burger menu
|
|
17976
18012
|
if (activeMenuItem === menuItem && activePanel === panel && burgerMenuOpen) return;
|
|
@@ -18015,7 +18051,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
18015
18051
|
const activePanel = AppMenuItemView.getActivePanel();
|
|
18016
18052
|
const activeMenuItemPanel = activeMenuItem && AppMenuItemView.#menuItemToPanelMap.get(activeMenuItem);
|
|
18017
18053
|
if (mouseEvent.relatedTarget instanceof Node && (menuItem.contains(mouseEvent.relatedTarget) || activePanel?.contains(mouseEvent.relatedTarget))) return;
|
|
18018
|
-
const burgerMenuOpen = gmail_element_getter/* default */.
|
|
18054
|
+
const burgerMenuOpen = gmail_element_getter/* default */.Ay.isAppBurgerMenuOpen();
|
|
18019
18055
|
if (activePanel === activeMenuItemPanel && burgerMenuOpen) return;
|
|
18020
18056
|
|
|
18021
18057
|
// unhover menu item
|
|
@@ -18048,8 +18084,8 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
18048
18084
|
for (const panel of document.querySelectorAll(CollapsiblePanelView.elementSelectors.NATIVE) ?? []) {
|
|
18049
18085
|
panel.classList.toggle(CollapsiblePanelView.elementCss.PANEL_LESS, isPanelLess);
|
|
18050
18086
|
}
|
|
18051
|
-
gmail_element_getter/* default */.
|
|
18052
|
-
gmail_element_getter/* default */.
|
|
18087
|
+
gmail_element_getter/* default */.Ay.getAppMenu()?.classList.toggle('aTO', isPanelLess);
|
|
18088
|
+
gmail_element_getter/* default */.Ay.getAppHeader()?.classList.toggle('aTO', isPanelLess);
|
|
18053
18089
|
break;
|
|
18054
18090
|
}
|
|
18055
18091
|
case 'route-activated':
|
|
@@ -18115,7 +18151,7 @@ class AppMenuItemView extends safe_event_emitter/* default */.A {
|
|
|
18115
18151
|
const descriptor = {
|
|
18116
18152
|
...panelDescriptor,
|
|
18117
18153
|
className: classnames_default()(panelDescriptor.className, {
|
|
18118
|
-
[CollapsiblePanelView.elementCss.COLLAPSED]: !gmail_element_getter/* default */.
|
|
18154
|
+
[CollapsiblePanelView.elementCss.COLLAPSED]: !gmail_element_getter/* default */.Ay.isAppBurgerMenuOpen(),
|
|
18119
18155
|
[CollapsiblePanelView.elementCss.PANEL_LESS]: AppMenuItemView.#isPanelLess()
|
|
18120
18156
|
})
|
|
18121
18157
|
};
|
|
@@ -18228,7 +18264,7 @@ class AppMenu {
|
|
|
18228
18264
|
if (!isShown) {
|
|
18229
18265
|
return;
|
|
18230
18266
|
}
|
|
18231
|
-
const appMenu = await gmail_element_getter/* default */.
|
|
18267
|
+
const appMenu = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
18232
18268
|
if (!appMenu) {
|
|
18233
18269
|
return;
|
|
18234
18270
|
}
|
|
@@ -18271,7 +18307,7 @@ class AppMenu {
|
|
|
18271
18307
|
* @returns whether or not the AppMenu Burger is uncollapsed or not.
|
|
18272
18308
|
*/
|
|
18273
18309
|
isMenuOpen() {
|
|
18274
|
-
return gmail_element_getter/* default */.
|
|
18310
|
+
return gmail_element_getter/* default */.Ay.isAppBurgerMenuOpen();
|
|
18275
18311
|
}
|
|
18276
18312
|
|
|
18277
18313
|
/**
|
|
@@ -18290,7 +18326,7 @@ class AppMenu {
|
|
|
18290
18326
|
* @returns true if the app menu is visible. At time of writing, this typically means they have chose to enable Chat, Meet, or both.
|
|
18291
18327
|
*/
|
|
18292
18328
|
async isShown() {
|
|
18293
|
-
const result = await gmail_element_getter/* default */.
|
|
18329
|
+
const result = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
18294
18330
|
return !!result;
|
|
18295
18331
|
}
|
|
18296
18332
|
static #monitorInitialized = false;
|
|
@@ -18306,7 +18342,7 @@ class AppMenu {
|
|
|
18306
18342
|
return;
|
|
18307
18343
|
}
|
|
18308
18344
|
this.#monitorInitialized = true;
|
|
18309
|
-
kefir_esm["default"].fromPromise(gmail_element_getter/* default */.
|
|
18345
|
+
kefir_esm["default"].fromPromise(gmail_element_getter/* default */.Ay.getAppMenuAsync()).filter(isNotNil/* default */.A).flatMap(appMenu => (0,make_mutation_observer_chunked_stream/* default */.A)(appMenu, {
|
|
18310
18346
|
childList: true,
|
|
18311
18347
|
subtree: true,
|
|
18312
18348
|
attributes: true,
|
|
@@ -19864,7 +19900,7 @@ mole_view_module_options.insert = htmlElement => {
|
|
|
19864
19900
|
htmlElement.setAttribute('data-inboxsdk-version',
|
|
19865
19901
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment -- this is injected by webpack
|
|
19866
19902
|
///@ts-ignore
|
|
19867
|
-
"2.2.
|
|
19903
|
+
"2.2.19-1786580061685-3573e62ec8d2327b");
|
|
19868
19904
|
document.head.append(htmlElement);
|
|
19869
19905
|
};
|
|
19870
19906
|
mole_view_module_options.domAPI = (styleDomAPI_default());
|
|
@@ -19877,6 +19913,105 @@ var mole_view_module_update = injectStylesIntoStyleTag_default()(mole_view_modul
|
|
|
19877
19913
|
|
|
19878
19914
|
/* harmony default export */ const widgets_mole_view_module = (mole_view_module/* default */.Ay && mole_view_module/* default */.Ay.locals ? mole_view_module/* default */.Ay.locals : undefined);
|
|
19879
19915
|
|
|
19916
|
+
;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-driver/sync-mole-spacer-with-right-column.ts
|
|
19917
|
+
|
|
19918
|
+
|
|
19919
|
+
|
|
19920
|
+
/**
|
|
19921
|
+
* Gmail keeps compose/SDK moles clear of the right side panel by widening a flex
|
|
19922
|
+
* spacer at the end of the mole container.
|
|
19923
|
+
*
|
|
19924
|
+
* Gmail drives that spacer for its OWN companion panels (Calendar, Keep, Tasks,
|
|
19925
|
+
* Contacts) but not for InboxSDK content panels, which render in the same
|
|
19926
|
+
* companion sidebar wrapper. So whenever the sidebar column resizes (or the
|
|
19927
|
+
* first mole appears) we match the spacer using Gmail's own formula — companion
|
|
19928
|
+
* content width + rail inset
|
|
19929
|
+
*/
|
|
19930
|
+
|
|
19931
|
+
const MOLE_SPACER_SELECTOR = `${gmail_element_getter/* MOLE_CONTAINER_SELECTOR */.MY} > .jAmAWb`;
|
|
19932
|
+
|
|
19933
|
+
/**
|
|
19934
|
+
* Dispatched by the mole driver whenever a mole is added. Creating a mole
|
|
19935
|
+
* doesn't resize the sidebar column, so our observer wouldn't otherwise fire.
|
|
19936
|
+
*/
|
|
19937
|
+
const MOLE_SPACER_REFRESH_EVENT = 'inboxsdk__refreshMoleSpacer';
|
|
19938
|
+
|
|
19939
|
+
/** Prevents multiple InboxSDK instances from each installing the observer. */
|
|
19940
|
+
const INSTALLED_ATTR = 'data-inboxsdk-mole-spacer-sync';
|
|
19941
|
+
|
|
19942
|
+
/**
|
|
19943
|
+
* The rail-inset width Gmail keeps on the spacer when only the icon rail is
|
|
19944
|
+
* showing. We hardcode it because there are cases where we
|
|
19945
|
+
* wouldn't be able to grab it from the DOM.
|
|
19946
|
+
*/
|
|
19947
|
+
const RAIL_INSET_WIDTH = 66;
|
|
19948
|
+
function syncMoleSpacerWithRightColumn(driver) {
|
|
19949
|
+
const ResizeObserver = __webpack_require__.g.ResizeObserver;
|
|
19950
|
+
if (!ResizeObserver) return;
|
|
19951
|
+
const root = document.documentElement;
|
|
19952
|
+
if (root.hasAttribute(INSTALLED_ATTR)) return;
|
|
19953
|
+
root.setAttribute(INSTALLED_ATTR, 'true');
|
|
19954
|
+
(0,wait_for/* default */.A)(() => gmail_element_getter/* default */.Ay.getCompanionSidebarColumnElement()).then(rightColumn => {
|
|
19955
|
+
let scheduled = false;
|
|
19956
|
+
// Coalesce bursts of mutations into a single read+write per frame so we
|
|
19957
|
+
// don't thrash layout with getBoundingClientRect on every notification.
|
|
19958
|
+
const update = () => {
|
|
19959
|
+
if (scheduled) return;
|
|
19960
|
+
scheduled = true;
|
|
19961
|
+
requestAnimationFrame(() => {
|
|
19962
|
+
scheduled = false;
|
|
19963
|
+
try {
|
|
19964
|
+
updateSpacer();
|
|
19965
|
+
} catch (err) {
|
|
19966
|
+
driver.getLogger().error(err);
|
|
19967
|
+
}
|
|
19968
|
+
});
|
|
19969
|
+
};
|
|
19970
|
+
|
|
19971
|
+
// Width changes when a panel opens/closes/resizes.
|
|
19972
|
+
new ResizeObserver(update).observe(rightColumn);
|
|
19973
|
+
|
|
19974
|
+
// A mole appearing (which also creates the spacer on the very first one)
|
|
19975
|
+
// doesn't touch the right column, so the mole driver signals us directly.
|
|
19976
|
+
document.addEventListener(MOLE_SPACER_REFRESH_EVENT, update);
|
|
19977
|
+
update();
|
|
19978
|
+
}).catch(() => {
|
|
19979
|
+
// No right column on this page (e.g. a Gmail surface without the side
|
|
19980
|
+
// panel). Nothing to keep the moles clear of.
|
|
19981
|
+
});
|
|
19982
|
+
}
|
|
19983
|
+
function updateSpacer() {
|
|
19984
|
+
// The mole container has two `.jAmAWb` flex spacers: the left one (index 0)
|
|
19985
|
+
// and the right one (last).
|
|
19986
|
+
const spacers = document.querySelectorAll(MOLE_SPACER_SELECTOR);
|
|
19987
|
+
const spacer = spacers[spacers.length - 1];
|
|
19988
|
+
// The spacer is part of the mole container, which Gmail loads lazily once a
|
|
19989
|
+
// compose/thread view has been used. Until it exists there is nothing to size.
|
|
19990
|
+
if (!spacer) return;
|
|
19991
|
+
const companion = gmail_element_getter/* default */.Ay.getCompanionSidebarOuterWrapperElement();
|
|
19992
|
+
// The wrapper stays in the DOM when collapsed (`display: none`); only count
|
|
19993
|
+
// it when a companion/SDK panel is actually showing.
|
|
19994
|
+
const companionWidth = companion && getComputedStyle(companion).display !== 'none' ? companion.getBoundingClientRect().width : 0;
|
|
19995
|
+
|
|
19996
|
+
// Match Gmail: content width + rail inset.
|
|
19997
|
+
// When no panel is open, companionWidth is 0 and we restore the rail inset
|
|
19998
|
+
const targetWidth = companionWidth > 0 ? companionWidth + RAIL_INSET_WIDTH : RAIL_INSET_WIDTH;
|
|
19999
|
+
const target = `${targetWidth}px`;
|
|
20000
|
+
if (spacer.style.width !== target) {
|
|
20001
|
+
spacer.style.width = target;
|
|
20002
|
+
refreshComposeToolbars();
|
|
20003
|
+
}
|
|
20004
|
+
}
|
|
20005
|
+
|
|
20006
|
+
/**
|
|
20007
|
+
* Widening the spacer moves the mole (`.AD`) but Gmail doesn't refresh the
|
|
20008
|
+
* `position: fixed; left` it pins on the compose bottom bar (`.aDj.ahe`), so the
|
|
20009
|
+
* toolbar is left behind at its old coordinates. A window resize makes Gmail
|
|
20010
|
+
* re-lay-out the compose toolbars back under the mole.
|
|
20011
|
+
*/
|
|
20012
|
+
function refreshComposeToolbars() {
|
|
20013
|
+
(0,fake_window_resize/* default */.A)();
|
|
20014
|
+
}
|
|
19880
20015
|
;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.ts
|
|
19881
20016
|
|
|
19882
20017
|
|
|
@@ -19889,7 +20024,26 @@ var mole_view_module_update = injectStylesIntoStyleTag_default()(mole_view_modul
|
|
|
19889
20024
|
|
|
19890
20025
|
|
|
19891
20026
|
|
|
20027
|
+
|
|
19892
20028
|
const gmail_mole_view_driver_INBOXSDK_CLASS = 'inboxsdk__mole_view';
|
|
20029
|
+
|
|
20030
|
+
/**
|
|
20031
|
+
* Compose and SDK mole selector.
|
|
20032
|
+
*
|
|
20033
|
+
* @note 2023-10-11 on :not selectors:
|
|
20034
|
+
*
|
|
20035
|
+
* style*="order: 2147483647;" is the left mole spacer.
|
|
20036
|
+
*
|
|
20037
|
+
* style*="order: 0;" is the right mole spacer.
|
|
20038
|
+
*
|
|
20039
|
+
* .aJl is the chat placeholder.
|
|
20040
|
+
*/
|
|
20041
|
+
const MOLE_SELECTOR = `${gmail_element_getter/* MOLE_PARENT_SELECTOR */.pG} > *:not([style*="order: 0;"], [style*="order: 2147483647;"], .aJl)`;
|
|
20042
|
+
const Selector = {
|
|
20043
|
+
Mole: MOLE_SELECTOR,
|
|
20044
|
+
ComposeMole: `${MOLE_SELECTOR}.nn.nH`,
|
|
20045
|
+
ChatMolePlaceholder: `${gmail_element_getter/* MOLE_PARENT_SELECTOR */.pG} > .aJl`
|
|
20046
|
+
};
|
|
19893
20047
|
class GmailMoleViewDriver {
|
|
19894
20048
|
static #page;
|
|
19895
20049
|
static #moleParentReadyEvent = kefir_bus_default()();
|
|
@@ -19914,22 +20068,22 @@ class GmailMoleViewDriver {
|
|
|
19914
20068
|
},
|
|
19915
20069
|
watchers: [{
|
|
19916
20070
|
tag: "mole",
|
|
19917
|
-
selectors: [
|
|
20071
|
+
selectors: [Selector.Mole],
|
|
19918
20072
|
sources: ["moleParent"]
|
|
19919
20073
|
}, {
|
|
19920
20074
|
tag: "moleParent",
|
|
19921
|
-
selectors: [
|
|
20075
|
+
selectors: [gmail_element_getter/* MOLE_PARENT_SELECTOR */.pG],
|
|
19922
20076
|
sources: [null]
|
|
19923
20077
|
}],
|
|
19924
20078
|
finders: {
|
|
19925
20079
|
["moleParent"]: {
|
|
19926
|
-
fn: root => [root.querySelector(
|
|
20080
|
+
fn: root => [root.querySelector(gmail_element_getter/* MOLE_PARENT_SELECTOR */.pG)].filter(isNotNil/* default */.A),
|
|
19927
20081
|
interval(elementCount, timeRunning) {
|
|
19928
20082
|
return timeRunning <= 15_000 && elementCount === 0 ? 100 : 5_000;
|
|
19929
20083
|
}
|
|
19930
20084
|
},
|
|
19931
20085
|
["mole"]: {
|
|
19932
|
-
fn: root => root.querySelectorAll(
|
|
20086
|
+
fn: root => root.querySelectorAll(Selector.Mole),
|
|
19933
20087
|
interval(elementCount, timeRunning) {
|
|
19934
20088
|
// For initial Gmail load, we want to prevent an issue where compose moles are reordered to the left SDK moles after 5 seconds when
|
|
19935
20089
|
//
|
|
@@ -19962,9 +20116,15 @@ class GmailMoleViewDriver {
|
|
|
19962
20116
|
case 'add':
|
|
19963
20117
|
{
|
|
19964
20118
|
const el = change.value.getValue();
|
|
19965
|
-
if (el.matches(
|
|
20119
|
+
if (el.matches(Selector.ComposeMole)) {
|
|
19966
20120
|
this.#maybeMoveMole(el);
|
|
19967
20121
|
}
|
|
20122
|
+
|
|
20123
|
+
// A new mole must clear whatever panel is open in the right column.
|
|
20124
|
+
// The spacer that does that lives outside the mole parent (and is
|
|
20125
|
+
// itself created alongside the first mole), so poke the sync that
|
|
20126
|
+
// sizes it — adding a mole doesn't resize the column on its own.
|
|
20127
|
+
document.dispatchEvent(new CustomEvent(MOLE_SPACER_REFRESH_EVENT));
|
|
19968
20128
|
break;
|
|
19969
20129
|
}
|
|
19970
20130
|
}
|
|
@@ -20063,7 +20223,7 @@ class GmailMoleViewDriver {
|
|
|
20063
20223
|
this.#driver.logger.error(new Error('Mole show invariant violated. `lastMole` is not an HTMLElement'));
|
|
20064
20224
|
return;
|
|
20065
20225
|
}
|
|
20066
|
-
const dw = moleParent.closest(
|
|
20226
|
+
const dw = moleParent.closest(gmail_element_getter/* MOLE_CONTAINER_SELECTOR */.MY);
|
|
20067
20227
|
if (dw) {
|
|
20068
20228
|
dw.classList.add('inboxsdk__moles_in_use', mole_view_module/* inboxsdkMolesInUse */.jq);
|
|
20069
20229
|
}
|
|
@@ -20081,7 +20241,7 @@ class GmailMoleViewDriver {
|
|
|
20081
20241
|
// If the gmail mode has settled, we've been loaded for 10 seconds, and
|
|
20082
20242
|
// we don't have the mole parent yet, then force the mole parent to load
|
|
20083
20243
|
// by opening a compose view and then closing it.
|
|
20084
|
-
kefir_esm.fromPromise(gmail_element_getter/* default */.
|
|
20244
|
+
kefir_esm.fromPromise(gmail_element_getter/* default */.Ay.waitForGmailModeToSettle()).flatMap(() => {
|
|
20085
20245
|
// delay until we've passed TimestampOnReady + 5 seconds
|
|
20086
20246
|
return this.#driver.delayToTimeAfterReady(5_000);
|
|
20087
20247
|
}).takeUntilBy(moleParentReadyEvent).takeUntilBy(this.#stopper).onValue(async () => {
|
|
@@ -21422,7 +21582,7 @@ class GmailNavItemView {
|
|
|
21422
21582
|
this._level = level || 0;
|
|
21423
21583
|
this._navItemNumber = ++NUMBER_OF_GMAIL_NAV_ITEM_VIEWS_CREATED;
|
|
21424
21584
|
this._orderGroup = orderGroup;
|
|
21425
|
-
this._isNewLeftNavParent = !gmail_element_getter/* default */.
|
|
21585
|
+
this._isNewLeftNavParent = !gmail_element_getter/* default */.Ay.shouldAddNavItemsInline() && this._level === 1;
|
|
21426
21586
|
this._element = this.#setupElement();
|
|
21427
21587
|
}
|
|
21428
21588
|
#setupElement(navItemDescriptor) {
|
|
@@ -21541,7 +21701,7 @@ class GmailNavItemView {
|
|
|
21541
21701
|
// nested items (i.e. the current item is of type GROUPER and we're in Gmailv2).
|
|
21542
21702
|
const indentationFactor = this._type === nav_item_types.GROUPER || this._isNewLeftNavParent ? this._level - 1 : this._level;
|
|
21543
21703
|
const element = gmailNavItemView.getElement();
|
|
21544
|
-
if (!gmail_element_getter/* default */.
|
|
21704
|
+
if (!gmail_element_getter/* default */.Ay.shouldAddNavItemsInline()) {
|
|
21545
21705
|
(0,querySelectorOrFail/* default */.A)(element, '.TN').style.marginLeft = 6 * indentationFactor + 'px';
|
|
21546
21706
|
} else {
|
|
21547
21707
|
(0,querySelectorOrFail/* default */.A)(element, '.TN').style.marginLeft = getLeftIndentationPaddingValue() * indentationFactor + 'px';
|
|
@@ -21633,7 +21793,7 @@ class GmailNavItemView {
|
|
|
21633
21793
|
hAlign: 'left',
|
|
21634
21794
|
vAlign: 'top'
|
|
21635
21795
|
};
|
|
21636
|
-
const container = gmail_element_getter/* default */.
|
|
21796
|
+
const container = gmail_element_getter/* default */.Ay.getLeftNavContainerElement();
|
|
21637
21797
|
if (!container) throw new Error('leftNavContainer not found');
|
|
21638
21798
|
buttonOptions.dropdownShowFunction = event => {
|
|
21639
21799
|
// bhZ is the class to indicate the left nav is collapsible mode
|
|
@@ -22135,7 +22295,7 @@ async function addNavItem(driver, orderGroup, navItemDescriptor, navMenuInjectio
|
|
|
22135
22295
|
await waitForMenuReady();
|
|
22136
22296
|
const gmailNavItemView = new GmailNavItemView(driver, orderGroup, 1);
|
|
22137
22297
|
gmailNavItemView.setNavItemDescriptor(navItemDescriptor);
|
|
22138
|
-
if (!gmail_element_getter/* default */.
|
|
22298
|
+
if (!gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
22139
22299
|
attachGmailNavItemView(gmailNavItemView, navMenuInjectionContainer);
|
|
22140
22300
|
}
|
|
22141
22301
|
return gmailNavItemView;
|
|
@@ -22144,7 +22304,7 @@ async function addNavItemToPanel(driver, orderGroup, navItemDescriptor, panelEle
|
|
|
22144
22304
|
await waitForMenuReady();
|
|
22145
22305
|
const gmailNavItemView = new GmailNavItemView(driver, orderGroup, 1);
|
|
22146
22306
|
gmailNavItemView.setNavItemDescriptor(navItemDescriptor);
|
|
22147
|
-
if (!gmail_element_getter/* default */.
|
|
22307
|
+
if (!gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
22148
22308
|
if (gmailNavItemView.isSection()) {
|
|
22149
22309
|
const container = getPanelSectionNavItemContainerElement(panelElement);
|
|
22150
22310
|
attachGmailNavItemView(gmailNavItemView, container);
|
|
@@ -22156,14 +22316,14 @@ async function addNavItemToPanel(driver, orderGroup, navItemDescriptor, panelEle
|
|
|
22156
22316
|
return gmailNavItemView;
|
|
22157
22317
|
}
|
|
22158
22318
|
const waitForMenuReady = once_default()(async () => {
|
|
22159
|
-
const appMenu = await gmail_element_getter/* default */.
|
|
22319
|
+
const appMenu = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
22160
22320
|
if (!appMenu) {
|
|
22161
22321
|
await waitForNavMenuReady();
|
|
22162
22322
|
}
|
|
22163
22323
|
});
|
|
22164
22324
|
const waitForNavMenuReady = once_default()(async () => {
|
|
22165
|
-
if (!gmail_element_getter/* default */.
|
|
22166
|
-
await gmail_element_getter/* default */.
|
|
22325
|
+
if (!gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
22326
|
+
await gmail_element_getter/* default */.Ay.waitForGmailModeToSettle();
|
|
22167
22327
|
await (0,wait_for/* default */.A)(() => document.querySelector('.aeN[role=navigation], .aeN [role=navigation]'));
|
|
22168
22328
|
// Wait for contents of navmenu to load (needed to figure out if it's integrated gmail mode)
|
|
22169
22329
|
await (0,wait_for/* default */.A)(() => document.querySelector('.Ls77Lb.aZ6 > .pp'));
|
|
@@ -22175,12 +22335,12 @@ function _attachNavItemView(gmailNavItemView, navMenuInjectionContainer) {
|
|
|
22175
22335
|
(0,insert_element_in_order/* default */.A)(navMenuInjectionContainer, gmailNavItemView.getElement());
|
|
22176
22336
|
};
|
|
22177
22337
|
}
|
|
22178
|
-
if (!gmail_element_getter/* default */.
|
|
22338
|
+
if (!gmail_element_getter/* default */.Ay.shouldAddNavItemsInline()) {
|
|
22179
22339
|
// If we're in the modern (non-classic-hangouts) leftnav, then put
|
|
22180
22340
|
// the added nav items in a floating section at the bottom separate
|
|
22181
22341
|
// from the Mail section.
|
|
22182
22342
|
return function () {
|
|
22183
|
-
const navMenuInjectionContainer = gmail_element_getter/* default */.
|
|
22343
|
+
const navMenuInjectionContainer = gmail_element_getter/* default */.Ay.getSeparateSectionNavItemMenuInjectionContainer();
|
|
22184
22344
|
if (!navMenuInjectionContainer) {
|
|
22185
22345
|
throw new Error('should not happen');
|
|
22186
22346
|
}
|
|
@@ -22210,7 +22370,7 @@ function _createNavItemsHolder() {
|
|
|
22210
22370
|
const holder = document.createElement('div');
|
|
22211
22371
|
holder.setAttribute('class', 'LrBjie inboxsdk__navMenu');
|
|
22212
22372
|
holder.innerHTML = '<div class="TK"></div>';
|
|
22213
|
-
const navMenuInjectionContainer = gmail_element_getter/* default */.
|
|
22373
|
+
const navMenuInjectionContainer = gmail_element_getter/* default */.Ay.getSameSectionNavItemMenuInjectionContainer();
|
|
22214
22374
|
if (!navMenuInjectionContainer) throw new Error('should not happen');
|
|
22215
22375
|
navMenuInjectionContainer.insertBefore(holder, navMenuInjectionContainer.children[2]);
|
|
22216
22376
|
(0,make_mutation_observer_stream/* default */.A)(holder, {
|
|
@@ -22228,7 +22388,7 @@ function _createNavItemsHolder() {
|
|
|
22228
22388
|
|
|
22229
22389
|
|
|
22230
22390
|
async function addAppMenuItem(driver, menuItemDescriptor) {
|
|
22231
|
-
const appMenuInjectionContainer = await gmail_element_getter/* default */.
|
|
22391
|
+
const appMenuInjectionContainer = await gmail_element_getter/* default */.Ay.getAppMenuAsync();
|
|
22232
22392
|
const gmailAppMenuItemView = new GmailAppMenuItemView(driver, menuItemDescriptor);
|
|
22233
22393
|
try {
|
|
22234
22394
|
if (!appMenuInjectionContainer) return undefined;
|
|
@@ -22665,9 +22825,9 @@ function showCustomThreadList(driver, customRouteID, onActivate, params) {
|
|
|
22665
22825
|
let findIdFailure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _findIdFailure;
|
|
22666
22826
|
const uniqueSearch = setupSearchReplacing(driver, customRouteID, onActivate, findIdFailure);
|
|
22667
22827
|
const customHash = document.location.hash;
|
|
22668
|
-
const searchInput = gmail_element_getter/* default */.
|
|
22828
|
+
const searchInput = gmail_element_getter/* default */.Ay.getSearchInput();
|
|
22669
22829
|
if (!searchInput) throw new Error('could not find search input');
|
|
22670
|
-
const inputStream = gmail_element_getter/* default */.
|
|
22830
|
+
const inputStream = gmail_element_getter/* default */.Ay.getMainContentElementChangedStream().changes().take(1).map(() => searchInput).flatMapLatest(input => (0,make_mutation_observer_chunked_stream/* default */.A)(input, {
|
|
22671
22831
|
attributes: true,
|
|
22672
22832
|
attributeOldValue: true
|
|
22673
22833
|
}).filter(mutationRecords => {
|
|
@@ -22698,7 +22858,7 @@ var show_custom_route_view = __webpack_require__(3759);
|
|
|
22698
22858
|
|
|
22699
22859
|
|
|
22700
22860
|
function showNativeRouteView(_gmailDriver) {
|
|
22701
|
-
const contentSectionElement = gmail_element_getter/* default */.
|
|
22861
|
+
const contentSectionElement = gmail_element_getter/* default */.Ay.getContentSectionElement();
|
|
22702
22862
|
if (!contentSectionElement) {
|
|
22703
22863
|
return;
|
|
22704
22864
|
}
|
|
@@ -22796,10 +22956,10 @@ function registerSearchSuggestionsProvider(driver, handler) {
|
|
|
22796
22956
|
}).map(event => event.suggestions);
|
|
22797
22957
|
|
|
22798
22958
|
// Wait for the first routeViewDriver to happen before looking for the search box.
|
|
22799
|
-
const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default */.
|
|
22959
|
+
const searchBoxStream = driver.getRouteViewDriverStream().toProperty(() => null).map(() => gmail_element_getter/* default */.Ay.getSearchInput()).filter(isNotNil/* default */.A).take(1);
|
|
22800
22960
|
|
|
22801
22961
|
// Wait for the search box to be focused before looking for the suggestions box.
|
|
22802
|
-
const suggestionsBoxTbodyStream = searchBoxStream.flatMapLatest(searchBox => kefir_esm.fromEvents(searchBox, 'focus')).map(() => gmail_element_getter/* default */.
|
|
22962
|
+
const suggestionsBoxTbodyStream = searchBoxStream.flatMapLatest(searchBox => kefir_esm.fromEvents(searchBox, 'focus')).map(() => gmail_element_getter/* default */.Ay.getSearchSuggestionsBoxParent()).filter(isNotNil/* default */.A).flatMapLatest(make_element_child_stream/* default */.A).map(x => x.el.firstElementChild).take(1).toProperty();
|
|
22803
22963
|
|
|
22804
22964
|
// This stream emits an event after every time Gmail changes the suggestions
|
|
22805
22965
|
// list.
|
|
@@ -23245,7 +23405,7 @@ function _createAppButtonElement(driver, onclick) {
|
|
|
23245
23405
|
event.preventDefault();
|
|
23246
23406
|
onclick(event);
|
|
23247
23407
|
});
|
|
23248
|
-
const topAccountContainer = gmail_element_getter/* default */.
|
|
23408
|
+
const topAccountContainer = gmail_element_getter/* default */.Ay.getTopAccountContainer();
|
|
23249
23409
|
if (!topAccountContainer) {
|
|
23250
23410
|
const err = new Error('Could not make button');
|
|
23251
23411
|
const banner = document.querySelector('[role=banner]');
|
|
@@ -23266,7 +23426,7 @@ function _createAppButtonElement(driver, onclick) {
|
|
|
23266
23426
|
throw err;
|
|
23267
23427
|
}
|
|
23268
23428
|
try {
|
|
23269
|
-
if (!gmail_element_getter/* default */.
|
|
23429
|
+
if (!gmail_element_getter/* default */.Ay.isGplusEnabled()) {
|
|
23270
23430
|
element.classList.add('inboxsdk__appButton_noGPlus');
|
|
23271
23431
|
}
|
|
23272
23432
|
insertionElement.insertBefore(element, insertionElement.lastElementChild);
|
|
@@ -23287,8 +23447,8 @@ function _updateTitle(element, descriptor) {
|
|
|
23287
23447
|
|
|
23288
23448
|
|
|
23289
23449
|
function addToolbarButtonForApp(gmailDriver, buttonDescriptor) {
|
|
23290
|
-
return gmail_element_getter/* default */.
|
|
23291
|
-
if (gmail_element_getter/* default */.
|
|
23450
|
+
return gmail_element_getter/* default */.Ay.waitForGmailModeToSettle().then(() => {
|
|
23451
|
+
if (gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
23292
23452
|
return new Promise((_resolve, _reject) => {
|
|
23293
23453
|
//never complete
|
|
23294
23454
|
});
|
|
@@ -23427,7 +23587,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
|
|
|
23427
23587
|
// getMainContentElementChangedStream doesn't respect custom views so filter
|
|
23428
23588
|
// out events from it. This filter is needed if the user is already at a custom
|
|
23429
23589
|
// view of another InboxSDK instance while this starts up.
|
|
23430
|
-
gmail_element_getter/* default */.
|
|
23590
|
+
gmail_element_getter/* default */.Ay.getMainContentElementChangedStream().map(_event => ({
|
|
23431
23591
|
urlObject: getURLObject(document.location.href),
|
|
23432
23592
|
type: 'NATIVE'
|
|
23433
23593
|
})).filter(options => gmailRouteProcessor.isNativeRoute(options.urlObject.name))]).map(options => {
|
|
@@ -23438,7 +23598,7 @@ function setupRouteViewDriverStream(gmailRouteProcessor, driver) {
|
|
|
23438
23598
|
if (type === 'NATIVE' && urlObject.name === 'search') {
|
|
23439
23599
|
const customListRouteId = customListSearchStringsToRouteIds.get(urlObject.params[0]);
|
|
23440
23600
|
if (customListRouteId) {
|
|
23441
|
-
const searchInput = gmail_element_getter/* default */.
|
|
23601
|
+
const searchInput = gmail_element_getter/* default */.Ay.getSearchInput();
|
|
23442
23602
|
if (!searchInput) throw new Error('Should not happen');
|
|
23443
23603
|
searchInput.value = '';
|
|
23444
23604
|
|
|
@@ -23738,7 +23898,7 @@ class NativeGmailNavItemView {
|
|
|
23738
23898
|
|
|
23739
23899
|
function getNativeNavItem(driver, label) {
|
|
23740
23900
|
return (0,wait_for/* default */.A)(() => {
|
|
23741
|
-
const navContainer = gmail_element_getter/* default */.
|
|
23901
|
+
const navContainer = gmail_element_getter/* default */.Ay.getLeftNavContainerElement();
|
|
23742
23902
|
if (!navContainer) return null;
|
|
23743
23903
|
return navContainer.querySelector(`.aim a[href*="#${label}"]`);
|
|
23744
23904
|
}, 300 * 1000).then(labelLinkElement => {
|
|
@@ -23751,7 +23911,7 @@ function getNativeNavItem(driver, label) {
|
|
|
23751
23911
|
}
|
|
23752
23912
|
return labelElement.__nativeGmailNavItemView;
|
|
23753
23913
|
}).catch(err => {
|
|
23754
|
-
if (gmail_element_getter/* default */.
|
|
23914
|
+
if (gmail_element_getter/* default */.Ay.isStandalone()) {
|
|
23755
23915
|
// never resolve
|
|
23756
23916
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
23757
23917
|
return new Promise((_resolve, _reject) => {});
|
|
@@ -23850,14 +24010,14 @@ function registerSearchQueryRewriter(pageCommunicator, obj) {
|
|
|
23850
24010
|
|
|
23851
24011
|
|
|
23852
24012
|
async function openComposeWindow(_gmailDriver) {
|
|
23853
|
-
await gmail_element_getter/* default */.
|
|
23854
|
-
if (gmail_element_getter/* default */.
|
|
24013
|
+
await gmail_element_getter/* default */.Ay.waitForGmailModeToSettle();
|
|
24014
|
+
if (gmail_element_getter/* default */.Ay.isStandaloneComposeWindow() || gmail_element_getter/* default */.Ay.isStandaloneThreadWindow()) {
|
|
23855
24015
|
throw new Error('Can not open new compose while in standalone window');
|
|
23856
24016
|
}
|
|
23857
|
-
if (!gmail_element_getter/* default */.
|
|
23858
|
-
await (0,wait_for/* default */.A)(() => !!gmail_element_getter/* default */.
|
|
24017
|
+
if (!gmail_element_getter/* default */.Ay.getComposeButton()) {
|
|
24018
|
+
await (0,wait_for/* default */.A)(() => !!gmail_element_getter/* default */.Ay.getComposeButton());
|
|
23859
24019
|
}
|
|
23860
|
-
const composeButton = gmail_element_getter/* default */.
|
|
24020
|
+
const composeButton = gmail_element_getter/* default */.Ay.getComposeButton();
|
|
23861
24021
|
if (!composeButton) throw new Error('Could not find compose button');
|
|
23862
24022
|
(0,simulate_mouse_event/* simulateClick */.jp)(composeButton);
|
|
23863
24023
|
}
|
|
@@ -23869,7 +24029,7 @@ var gmail_app_sidebar_view = __webpack_require__(2893);
|
|
|
23869
24029
|
|
|
23870
24030
|
|
|
23871
24031
|
function suppressAddon(driver, addonTitle) {
|
|
23872
|
-
(0,stream_wait_for/* default */.A)(() => gmail_element_getter/* default */.
|
|
24032
|
+
(0,stream_wait_for/* default */.A)(() => gmail_element_getter/* default */.Ay.getCompanionSidebarIconContainerElement()).map(iconContainerElement => {
|
|
23873
24033
|
// .J-KU-Jg is pre-2018-07-30 element?
|
|
23874
24034
|
const elementToWatch = iconContainerElement.querySelector('.J-KU-Jg, [role=tablist], .brC-bsf-aT5-aOt');
|
|
23875
24035
|
if (!elementToWatch) {
|
|
@@ -24072,6 +24232,157 @@ function parseListPeopleByKnownIdResponse(data) {
|
|
|
24072
24232
|
}
|
|
24073
24233
|
return response;
|
|
24074
24234
|
}
|
|
24235
|
+
;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/selectors.ts
|
|
24236
|
+
/**
|
|
24237
|
+
* Bundled Gmail selector registry.
|
|
24238
|
+
*
|
|
24239
|
+
* Each key maps to an ORDERED list of candidates, tried one at a time until one
|
|
24240
|
+
* matches. An extension can supply overrides to this registry, which are PREPENDED
|
|
24241
|
+
* to the bundled chain.
|
|
24242
|
+
*
|
|
24243
|
+
* Selectors must be ordered by preference (which selector must be tried first),
|
|
24244
|
+
* not in chronological order.
|
|
24245
|
+
*
|
|
24246
|
+
* Never join a chain into one comma-separated selector: `querySelector('a, b')` picks
|
|
24247
|
+
* the first match in document order, which ignores this ranking.
|
|
24248
|
+
*/
|
|
24249
|
+
const GMAIL_SELECTORS = {
|
|
24250
|
+
/**
|
|
24251
|
+
* The compose title-bar table, resolved against the compose root.
|
|
24252
|
+
*
|
|
24253
|
+
* The `Ht`-less rung matches a superset of the `Ht` one, so it must stay BELOW it:
|
|
24254
|
+
* above, it would win always and the specific rung would never run.
|
|
24255
|
+
*/
|
|
24256
|
+
'composeView.titleBarTable': ['.nH.Hy.aXJ table.cf.Ht', '.nH.Hy.aXJ table.cf'],
|
|
24257
|
+
/**
|
|
24258
|
+
* The title-bar cell holding the compose window buttons — inside the table above,
|
|
24259
|
+
* but resolved against the same compose root.
|
|
24260
|
+
*/
|
|
24261
|
+
'composeView.titleBarTd': ['.nH.Hy.aXJ table.cf.Ht td.Hm', '.nH.Hy.aXJ table.cf td.Hm']
|
|
24262
|
+
};
|
|
24263
|
+
|
|
24264
|
+
/** Resolved candidates for every key. The merge builds new lists. */
|
|
24265
|
+
|
|
24266
|
+
/** Shape of the `selectors` object in a remote config. */
|
|
24267
|
+
// EXTERNAL MODULE: ./node_modules/lodash/uniq.js
|
|
24268
|
+
var uniq = __webpack_require__(1285);
|
|
24269
|
+
var uniq_default = /*#__PURE__*/__webpack_require__.n(uniq);
|
|
24270
|
+
;// CONCATENATED MODULE: ./src/platform-implementation-js/lib/dom/mergeSelectorOverrides.ts
|
|
24271
|
+
|
|
24272
|
+
|
|
24273
|
+
/**
|
|
24274
|
+
* Unmounted fragment, used to validate CSS selectors.
|
|
24275
|
+
*/
|
|
24276
|
+
let validationRoot;
|
|
24277
|
+
|
|
24278
|
+
/**
|
|
24279
|
+
* Check whether the given selector is valid.
|
|
24280
|
+
*/
|
|
24281
|
+
function isValidSelector(selector) {
|
|
24282
|
+
if (!validationRoot) {
|
|
24283
|
+
validationRoot = document.createDocumentFragment();
|
|
24284
|
+
}
|
|
24285
|
+
try {
|
|
24286
|
+
validationRoot.querySelector(selector);
|
|
24287
|
+
return true;
|
|
24288
|
+
} catch {
|
|
24289
|
+
return false;
|
|
24290
|
+
}
|
|
24291
|
+
}
|
|
24292
|
+
|
|
24293
|
+
/** Called for each dropped candidate: silent to the user, loud to the operator. */
|
|
24294
|
+
|
|
24295
|
+
/**
|
|
24296
|
+
* Merges two selector registry objects (defaults and overrides),
|
|
24297
|
+
* filtering out invalid selectors from the overrides. If found,
|
|
24298
|
+
* it prepends the valid overrides to the defaults.
|
|
24299
|
+
*
|
|
24300
|
+
* @example
|
|
24301
|
+
* ```ts
|
|
24302
|
+
* mergeSelectorOverrides(
|
|
24303
|
+
* { 'composeView.someKey': ['.foo'] },
|
|
24304
|
+
* { 'composeView.someKey': ['.bar', 'invalid selector'] }
|
|
24305
|
+
* );
|
|
24306
|
+
* // { 'composeView.someKey': ['.bar', '.foo'] }
|
|
24307
|
+
* ```
|
|
24308
|
+
*/
|
|
24309
|
+
function mergeSelectorOverrides(defaults, overrides, onInvalid) {
|
|
24310
|
+
const merged = {};
|
|
24311
|
+
for (const key of Object.keys(defaults)) {
|
|
24312
|
+
const extra = (overrides[key] ?? []).filter(selector => {
|
|
24313
|
+
if (isValidSelector(selector)) {
|
|
24314
|
+
return true;
|
|
24315
|
+
}
|
|
24316
|
+
onInvalid?.(key, selector);
|
|
24317
|
+
return false;
|
|
24318
|
+
});
|
|
24319
|
+
merged[key] = uniq_default()([...extra, ...defaults[key]]);
|
|
24320
|
+
}
|
|
24321
|
+
return merged;
|
|
24322
|
+
}
|
|
24323
|
+
;// CONCATENATED MODULE: ./src/platform-implementation-js/lib/dom/selectorRegistry.ts
|
|
24324
|
+
|
|
24325
|
+
|
|
24326
|
+
|
|
24327
|
+
/**
|
|
24328
|
+
* Install overrides into the bundled defaults, filtering out invalid
|
|
24329
|
+
* selectors. If there are any errors merging the overrides, we fallback
|
|
24330
|
+
* to the SDK bundled defaults.
|
|
24331
|
+
*/
|
|
24332
|
+
function mergeOrFallBack(_ref) {
|
|
24333
|
+
let {
|
|
24334
|
+
overrides,
|
|
24335
|
+
onInvalidSelector
|
|
24336
|
+
} = _ref;
|
|
24337
|
+
if (!overrides) {
|
|
24338
|
+
return GMAIL_SELECTORS;
|
|
24339
|
+
}
|
|
24340
|
+
try {
|
|
24341
|
+
return mergeSelectorOverrides(GMAIL_SELECTORS, overrides, onInvalidSelector);
|
|
24342
|
+
} catch {
|
|
24343
|
+
return GMAIL_SELECTORS;
|
|
24344
|
+
}
|
|
24345
|
+
}
|
|
24346
|
+
|
|
24347
|
+
/**
|
|
24348
|
+
* Resolves named keys to elements, trying each of the key's candidates in
|
|
24349
|
+
* order. Owned by the GmailDriver, so each InboxSDK instance resolves against
|
|
24350
|
+
* its own candidates and a registry is never read before it is built.
|
|
24351
|
+
*/
|
|
24352
|
+
class SelectorRegistry {
|
|
24353
|
+
#candidates;
|
|
24354
|
+
constructor() {
|
|
24355
|
+
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
24356
|
+
this.#candidates = mergeOrFallBack(options);
|
|
24357
|
+
}
|
|
24358
|
+
|
|
24359
|
+
/**
|
|
24360
|
+
* Resolve a registry key against `el`, returning null on a miss. Use this
|
|
24361
|
+
* method if you want to degrade functionality when a selector is missing,
|
|
24362
|
+
* instead of throwing an error.
|
|
24363
|
+
*/
|
|
24364
|
+
querySelectorByKey(el, key) {
|
|
24365
|
+
// Try each candidate in order, returning the first match (null otherwise).
|
|
24366
|
+
for (const candidateSelector of this.#candidates[key]) {
|
|
24367
|
+
const found = el.querySelector(candidateSelector);
|
|
24368
|
+
if (found) {
|
|
24369
|
+
return found;
|
|
24370
|
+
}
|
|
24371
|
+
}
|
|
24372
|
+
return null;
|
|
24373
|
+
}
|
|
24374
|
+
|
|
24375
|
+
/**
|
|
24376
|
+
* Resolve a registry key against `el`, but throws if no candidate matches.
|
|
24377
|
+
*/
|
|
24378
|
+
querySelectorByKeyOrFail(el, key) {
|
|
24379
|
+
const found = this.querySelectorByKey(el, key);
|
|
24380
|
+
if (!found) {
|
|
24381
|
+
throw new querySelectorOrFail/* SelectorError */.a(`${key} (${this.#candidates[key].join(' || ')})`);
|
|
24382
|
+
}
|
|
24383
|
+
return found;
|
|
24384
|
+
}
|
|
24385
|
+
}
|
|
24075
24386
|
;// CONCATENATED MODULE: ./src/platform-implementation-js/dom-driver/gmail/gmail-driver.ts
|
|
24076
24387
|
|
|
24077
24388
|
|
|
@@ -24129,6 +24440,8 @@ function parseListPeopleByKnownIdResponse(data) {
|
|
|
24129
24440
|
|
|
24130
24441
|
|
|
24131
24442
|
|
|
24443
|
+
|
|
24444
|
+
|
|
24132
24445
|
|
|
24133
24446
|
|
|
24134
24447
|
|
|
@@ -24146,6 +24459,8 @@ class GmailDriver {
|
|
|
24146
24459
|
#logger;
|
|
24147
24460
|
#opts;
|
|
24148
24461
|
#envData;
|
|
24462
|
+
/** Resolves selector keys against the bundled defaults plus any overrides. */
|
|
24463
|
+
|
|
24149
24464
|
#customRouteIDs = new Set();
|
|
24150
24465
|
#customListRouteIDs = new Map();
|
|
24151
24466
|
#customListSearchStringsToRouteIds = new Map();
|
|
@@ -24181,6 +24496,10 @@ class GmailDriver {
|
|
|
24181
24496
|
this.#logger = logger;
|
|
24182
24497
|
this.#opts = opts;
|
|
24183
24498
|
this.#envData = envData;
|
|
24499
|
+
this.selectors = new SelectorRegistry({
|
|
24500
|
+
overrides: opts.selectorOverrides,
|
|
24501
|
+
onInvalidSelector: opts.onInvalidSelector
|
|
24502
|
+
});
|
|
24184
24503
|
this.#page = (0,makePageParserTree/* default */.A)(this, document);
|
|
24185
24504
|
this.#stopper.onValue(() => this.#page.dump());
|
|
24186
24505
|
|
|
@@ -24248,6 +24567,7 @@ class GmailDriver {
|
|
|
24248
24567
|
gmailLoadEvent(this);
|
|
24249
24568
|
(0,override_gmail_back_button/* default */.A)(this, this.#gmailRouteProcessor);
|
|
24250
24569
|
trackGmailStyles();
|
|
24570
|
+
syncMoleSpacerWithRightColumn(this);
|
|
24251
24571
|
temporaryTrackDownloadUrlValidity(this);
|
|
24252
24572
|
if (opts.suppressAddonTitle != null) {
|
|
24253
24573
|
suppressAddon(this, opts.suppressAddonTitle);
|
|
@@ -24558,7 +24878,7 @@ class GmailDriver {
|
|
|
24558
24878
|
}
|
|
24559
24879
|
setShowNativeNavMarker(isNative) {
|
|
24560
24880
|
this.#navMarkerHiddenChanged.emit(null);
|
|
24561
|
-
const leftNavContainerElement = gmail_element_getter/* default */.
|
|
24881
|
+
const leftNavContainerElement = gmail_element_getter/* default */.Ay.getLeftNavContainerElement();
|
|
24562
24882
|
if (leftNavContainerElement) {
|
|
24563
24883
|
if (isNative) {
|
|
24564
24884
|
leftNavContainerElement.classList.remove('inboxsdk__hide_native_marker');
|
|
@@ -24572,8 +24892,8 @@ class GmailDriver {
|
|
|
24572
24892
|
}
|
|
24573
24893
|
setShowNativeAddonSidebar(isNative) {
|
|
24574
24894
|
this.#addonSidebarHiddenChanged.emit(null);
|
|
24575
|
-
const addonContainerElement = gmail_element_getter/* default */.
|
|
24576
|
-
const mainContentBodyContainerElement = gmail_element_getter/* default */.
|
|
24895
|
+
const addonContainerElement = gmail_element_getter/* default */.Ay.getAddonSidebarContainerElement();
|
|
24896
|
+
const mainContentBodyContainerElement = gmail_element_getter/* default */.Ay.getMainContentBodyContainerElement();
|
|
24577
24897
|
if (addonContainerElement && mainContentBodyContainerElement) {
|
|
24578
24898
|
const parent = mainContentBodyContainerElement.parentElement;
|
|
24579
24899
|
if (!parent) return;
|
|
@@ -24684,12 +25004,12 @@ class GmailDriver {
|
|
|
24684
25004
|
return appSidebar.addGlobalSidebarContentPanel(descriptor);
|
|
24685
25005
|
}
|
|
24686
25006
|
waitForGlobalSidebarReady() {
|
|
24687
|
-
const condition = () => gmail_element_getter/* default */.
|
|
25007
|
+
const condition = () => gmail_element_getter/* default */.Ay.getCompanionSidebarContentContainerElement() && (gmail_element_getter/* default */.Ay.getCompanionSidebarIconContainerElement() || gmail_element_getter/* default */.Ay.getAddonSidebarContainerElement());
|
|
24688
25008
|
if (condition()) {
|
|
24689
25009
|
return kefir_esm.constant(undefined);
|
|
24690
25010
|
}
|
|
24691
25011
|
return (0,stream_wait_for/* default */.A)(condition).map(() => undefined).mapErrors(err => {
|
|
24692
|
-
const el =
|
|
25012
|
+
const el = gmail_element_getter/* default */.Ay.getCompanionSidebarColumnElement();
|
|
24693
25013
|
this.#logger.error(err, {
|
|
24694
25014
|
reason: 'waitForGlobalSidebarReady timed out',
|
|
24695
25015
|
aUxHtml: el ? (0,censorHTMLtree/* default */.A)(el) : null
|
|
@@ -24700,7 +25020,7 @@ class GmailDriver {
|
|
|
24700
25020
|
getGlobalSidebar() {
|
|
24701
25021
|
let appSidebarView = this.#appSidebarView;
|
|
24702
25022
|
if (!appSidebarView) {
|
|
24703
|
-
const companionSidebarContentContainerEl = gmail_element_getter/* default */.
|
|
25023
|
+
const companionSidebarContentContainerEl = gmail_element_getter/* default */.Ay.getCompanionSidebarContentContainerElement();
|
|
24704
25024
|
if (!companionSidebarContentContainerEl) throw new Error('did not find companionSidebarContentContainerEl');
|
|
24705
25025
|
appSidebarView = this.#appSidebarView = new gmail_app_sidebar_view/* default */.A(this, companionSidebarContentContainerEl);
|
|
24706
25026
|
}
|
|
@@ -32139,7 +32459,7 @@ module.exports = function (element, useCapture) {
|
|
|
32139
32459
|
return self;
|
|
32140
32460
|
};
|
|
32141
32461
|
|
|
32142
|
-
module.exports.prototype.bind = __webpack_require__(
|
|
32462
|
+
module.exports.prototype.bind = __webpack_require__(2449);
|
|
32143
32463
|
module.exports.prototype.bindMultiple = __webpack_require__(9829);
|
|
32144
32464
|
module.exports.prototype.trigger = __webpack_require__(9240);
|
|
32145
32465
|
module.exports.prototype.reset = __webpack_require__(8967);
|
|
@@ -32196,7 +32516,7 @@ module.exports = function (useCapture) {
|
|
|
32196
32516
|
|
|
32197
32517
|
/***/ }),
|
|
32198
32518
|
|
|
32199
|
-
/***/
|
|
32519
|
+
/***/ 2449:
|
|
32200
32520
|
/***/ ((module) => {
|
|
32201
32521
|
|
|
32202
32522
|
"use strict";
|
|
@@ -39140,325 +39460,6 @@ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
|
|
|
39140
39460
|
}
|
|
39141
39461
|
|
|
39142
39462
|
|
|
39143
|
-
/***/ }),
|
|
39144
|
-
|
|
39145
|
-
/***/ 9482:
|
|
39146
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
39147
|
-
|
|
39148
|
-
"use strict";
|
|
39149
|
-
var __webpack_unused_export__;
|
|
39150
|
-
|
|
39151
|
-
|
|
39152
|
-
var _interopRequireDefault = __webpack_require__(1654);
|
|
39153
|
-
|
|
39154
|
-
__webpack_unused_export__ = ({
|
|
39155
|
-
value: true
|
|
39156
|
-
});
|
|
39157
|
-
__webpack_unused_export__ = exports.np = void 0;
|
|
39158
|
-
|
|
39159
|
-
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(9131));
|
|
39160
|
-
|
|
39161
|
-
var _createClass2 = _interopRequireDefault(__webpack_require__(8463));
|
|
39162
|
-
|
|
39163
|
-
var _defineProperty2 = _interopRequireDefault(__webpack_require__(5985));
|
|
39164
|
-
|
|
39165
|
-
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(6583));
|
|
39166
|
-
|
|
39167
|
-
var _once = _interopRequireDefault(__webpack_require__(8921));
|
|
39168
|
-
|
|
39169
|
-
var _moduleId = __webpack_require__(917);
|
|
39170
|
-
|
|
39171
|
-
var _transferrables = _interopRequireDefault(__webpack_require__(5440));
|
|
39172
|
-
|
|
39173
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
39174
|
-
|
|
39175
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
39176
|
-
|
|
39177
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
39178
|
-
|
|
39179
|
-
var getXMLHttpRequest = (0, _once["default"])(function () {
|
|
39180
|
-
// Make sure we communicate to the injected script that's paired with
|
|
39181
|
-
// this instance of this module. This is necessary in case there are
|
|
39182
|
-
// multiple javascript bundles with this package executing at once in the
|
|
39183
|
-
// same page.
|
|
39184
|
-
var instancesById = {};
|
|
39185
|
-
var channel = new MessageChannel();
|
|
39186
|
-
var port = channel.port1;
|
|
39187
|
-
port.addEventListener('message', function (event) {
|
|
39188
|
-
var _event$data = event.data,
|
|
39189
|
-
id = _event$data.id,
|
|
39190
|
-
type = _event$data.type;
|
|
39191
|
-
var xhr = instancesById[id];
|
|
39192
|
-
|
|
39193
|
-
switch (type) {
|
|
39194
|
-
case 'COMPLETE':
|
|
39195
|
-
{
|
|
39196
|
-
var _event$data2 = event.data,
|
|
39197
|
-
headers = _event$data2.headers,
|
|
39198
|
-
readyState = _event$data2.readyState,
|
|
39199
|
-
status = _event$data2.status,
|
|
39200
|
-
statusText = _event$data2.statusText,
|
|
39201
|
-
response = _event$data2.response,
|
|
39202
|
-
responseText = _event$data2.responseText,
|
|
39203
|
-
responseURL = _event$data2.responseURL;
|
|
39204
|
-
var headersObj = {};
|
|
39205
|
-
headers.split('\r\n').forEach(function (line) {
|
|
39206
|
-
var _line$split = line.split(':'),
|
|
39207
|
-
_line$split2 = (0, _slicedToArray2["default"])(_line$split, 2),
|
|
39208
|
-
name = _line$split2[0],
|
|
39209
|
-
value = _line$split2[1];
|
|
39210
|
-
|
|
39211
|
-
if (name && value) {
|
|
39212
|
-
headersObj[name.toLowerCase().trim()] = value.trim();
|
|
39213
|
-
}
|
|
39214
|
-
});
|
|
39215
|
-
xhr._headers = headers;
|
|
39216
|
-
xhr._headersObj = headersObj;
|
|
39217
|
-
xhr.status = status;
|
|
39218
|
-
xhr.statusText = statusText;
|
|
39219
|
-
xhr.readyState = readyState;
|
|
39220
|
-
xhr.response = response;
|
|
39221
|
-
xhr.responseText = responseText;
|
|
39222
|
-
xhr.responseURL = responseURL;
|
|
39223
|
-
delete instancesById[id];
|
|
39224
|
-
|
|
39225
|
-
var _loop = function _loop() {
|
|
39226
|
-
var event = _arr[_i];
|
|
39227
|
-
var eventObj = {
|
|
39228
|
-
name: event,
|
|
39229
|
-
target: xhr
|
|
39230
|
-
};
|
|
39231
|
-
var handlers = Object.prototype.hasOwnProperty.call(xhr._eventListeners, event) ? xhr._eventListeners[event] : [];
|
|
39232
|
-
handlers.forEach(function (handler) {
|
|
39233
|
-
return handler(eventObj);
|
|
39234
|
-
});
|
|
39235
|
-
|
|
39236
|
-
if (xhr['on' + event]) {
|
|
39237
|
-
xhr['on' + event](eventObj);
|
|
39238
|
-
}
|
|
39239
|
-
};
|
|
39240
|
-
|
|
39241
|
-
for (var _i = 0, _arr = ['load', 'loadend', 'readystatechange']; _i < _arr.length; _i++) {
|
|
39242
|
-
_loop();
|
|
39243
|
-
}
|
|
39244
|
-
|
|
39245
|
-
break;
|
|
39246
|
-
}
|
|
39247
|
-
|
|
39248
|
-
default:
|
|
39249
|
-
{
|
|
39250
|
-
// eslint-disable-next-line no-console
|
|
39251
|
-
console.error('ext-corb-workaround: Unknown event in content script:', event);
|
|
39252
|
-
}
|
|
39253
|
-
}
|
|
39254
|
-
});
|
|
39255
|
-
port.addEventListener('messageerror', function (event) {
|
|
39256
|
-
// eslint-disable-next-line no-console
|
|
39257
|
-
console.error('ext-corb-workaround: Unknown error in content script:', event);
|
|
39258
|
-
});
|
|
39259
|
-
port.start();
|
|
39260
|
-
window.postMessage({
|
|
39261
|
-
type: 'ext-corb-workaround_port',
|
|
39262
|
-
moduleId: _moduleId.moduleId,
|
|
39263
|
-
port: channel.port2
|
|
39264
|
-
}, document.location.origin, [channel.port2]);
|
|
39265
|
-
var nextFreeId = 0;
|
|
39266
|
-
|
|
39267
|
-
var CORBWorkaroundXMLHttpRequest = /*#__PURE__*/function () {
|
|
39268
|
-
function CORBWorkaroundXMLHttpRequest() {
|
|
39269
|
-
var _this = this;
|
|
39270
|
-
|
|
39271
|
-
(0, _classCallCheck2["default"])(this, CORBWorkaroundXMLHttpRequest);
|
|
39272
|
-
(0, _defineProperty2["default"])(this, "UNSENT", 0);
|
|
39273
|
-
(0, _defineProperty2["default"])(this, "OPENED", 1);
|
|
39274
|
-
(0, _defineProperty2["default"])(this, "HEADERS_RECEIVED", 2);
|
|
39275
|
-
(0, _defineProperty2["default"])(this, "LOADING", 3);
|
|
39276
|
-
(0, _defineProperty2["default"])(this, "DONE", 4);
|
|
39277
|
-
(0, _defineProperty2["default"])(this, "_id", nextFreeId++);
|
|
39278
|
-
(0, _defineProperty2["default"])(this, "_eventListeners", {});
|
|
39279
|
-
(0, _defineProperty2["default"])(this, "_headersObj", {});
|
|
39280
|
-
(0, _defineProperty2["default"])(this, "status", 0);
|
|
39281
|
-
(0, _defineProperty2["default"])(this, "statusText", '');
|
|
39282
|
-
(0, _defineProperty2["default"])(this, "readyState", 0);
|
|
39283
|
-
(0, _defineProperty2["default"])(this, "response", '');
|
|
39284
|
-
(0, _defineProperty2["default"])(this, "responseText", '');
|
|
39285
|
-
(0, _defineProperty2["default"])(this, "responseURL", '');
|
|
39286
|
-
(0, _defineProperty2["default"])(this, "_headers", '');
|
|
39287
|
-
(0, _defineProperty2["default"])(this, "responseType", void 0);
|
|
39288
|
-
(0, _defineProperty2["default"])(this, "withCredentials", void 0);
|
|
39289
|
-
(0, _defineProperty2["default"])(this, "setRequestHeader", void 0);
|
|
39290
|
-
(0, _defineProperty2["default"])(this, "open", void 0);
|
|
39291
|
-
(0, _defineProperty2["default"])(this, "send", void 0);
|
|
39292
|
-
(0, _defineProperty2["default"])(this, "abort", void 0);
|
|
39293
|
-
var id = this._id;
|
|
39294
|
-
instancesById[id] = this;
|
|
39295
|
-
port.postMessage({
|
|
39296
|
-
type: 'NEW_XHR',
|
|
39297
|
-
id: id
|
|
39298
|
-
});
|
|
39299
|
-
|
|
39300
|
-
var _iterator = _createForOfIteratorHelper(['responseType', 'withCredentials']),
|
|
39301
|
-
_step;
|
|
39302
|
-
|
|
39303
|
-
try {
|
|
39304
|
-
var _loop2 = function _loop2() {
|
|
39305
|
-
var prop = _step.value;
|
|
39306
|
-
var value = undefined;
|
|
39307
|
-
Object.defineProperty(_this, prop, {
|
|
39308
|
-
get: function get() {
|
|
39309
|
-
return value;
|
|
39310
|
-
},
|
|
39311
|
-
set: function set(newValue) {
|
|
39312
|
-
value = newValue;
|
|
39313
|
-
port.postMessage({
|
|
39314
|
-
type: 'SET',
|
|
39315
|
-
id: id,
|
|
39316
|
-
prop: prop,
|
|
39317
|
-
value: newValue
|
|
39318
|
-
});
|
|
39319
|
-
}
|
|
39320
|
-
});
|
|
39321
|
-
};
|
|
39322
|
-
|
|
39323
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
39324
|
-
_loop2();
|
|
39325
|
-
}
|
|
39326
|
-
} catch (err) {
|
|
39327
|
-
_iterator.e(err);
|
|
39328
|
-
} finally {
|
|
39329
|
-
_iterator.f();
|
|
39330
|
-
}
|
|
39331
|
-
|
|
39332
|
-
var _iterator2 = _createForOfIteratorHelper(['setRequestHeader', 'open', 'send', 'abort']),
|
|
39333
|
-
_step2;
|
|
39334
|
-
|
|
39335
|
-
try {
|
|
39336
|
-
var _loop3 = function _loop3() {
|
|
39337
|
-
var method = _step2.value;
|
|
39338
|
-
|
|
39339
|
-
_this[method] = function () {
|
|
39340
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
39341
|
-
args[_key] = arguments[_key];
|
|
39342
|
-
}
|
|
39343
|
-
|
|
39344
|
-
port.postMessage({
|
|
39345
|
-
type: 'CALL',
|
|
39346
|
-
id: id,
|
|
39347
|
-
method: method,
|
|
39348
|
-
args: args
|
|
39349
|
-
}, (0, _transferrables["default"])(args));
|
|
39350
|
-
};
|
|
39351
|
-
};
|
|
39352
|
-
|
|
39353
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
39354
|
-
_loop3();
|
|
39355
|
-
}
|
|
39356
|
-
} catch (err) {
|
|
39357
|
-
_iterator2.e(err);
|
|
39358
|
-
} finally {
|
|
39359
|
-
_iterator2.f();
|
|
39360
|
-
}
|
|
39361
|
-
}
|
|
39362
|
-
|
|
39363
|
-
(0, _createClass2["default"])(CORBWorkaroundXMLHttpRequest, [{
|
|
39364
|
-
key: "getAllResponseHeaders",
|
|
39365
|
-
value: function getAllResponseHeaders() {
|
|
39366
|
-
return this._headers;
|
|
39367
|
-
}
|
|
39368
|
-
}, {
|
|
39369
|
-
key: "getResponseHeader",
|
|
39370
|
-
value: function getResponseHeader(header) {
|
|
39371
|
-
header = header.toLowerCase();
|
|
39372
|
-
|
|
39373
|
-
if (Object.prototype.hasOwnProperty.call(this._headersObj, header)) {
|
|
39374
|
-
return this._headersObj[header];
|
|
39375
|
-
}
|
|
39376
|
-
}
|
|
39377
|
-
}, {
|
|
39378
|
-
key: "addEventListener",
|
|
39379
|
-
value: function addEventListener(event, handler) {
|
|
39380
|
-
if (!Object.prototype.hasOwnProperty.call(this._eventListeners, event)) {
|
|
39381
|
-
this._eventListeners[event] = [];
|
|
39382
|
-
}
|
|
39383
|
-
|
|
39384
|
-
this._eventListeners[event].push(handler);
|
|
39385
|
-
}
|
|
39386
|
-
}, {
|
|
39387
|
-
key: "removeEventListener",
|
|
39388
|
-
value: function removeEventListener(event, handler) {
|
|
39389
|
-
if (Object.prototype.hasOwnProperty.call(this._eventListeners, event)) {
|
|
39390
|
-
this._eventListeners[event] = this._eventListeners[event].filter(function (_handler) {
|
|
39391
|
-
return handler !== _handler;
|
|
39392
|
-
});
|
|
39393
|
-
}
|
|
39394
|
-
}
|
|
39395
|
-
}]);
|
|
39396
|
-
return CORBWorkaroundXMLHttpRequest;
|
|
39397
|
-
}();
|
|
39398
|
-
|
|
39399
|
-
(0, _defineProperty2["default"])(CORBWorkaroundXMLHttpRequest, "UNSENT", 0);
|
|
39400
|
-
(0, _defineProperty2["default"])(CORBWorkaroundXMLHttpRequest, "OPENED", 1);
|
|
39401
|
-
(0, _defineProperty2["default"])(CORBWorkaroundXMLHttpRequest, "HEADERS_RECEIVED", 2);
|
|
39402
|
-
(0, _defineProperty2["default"])(CORBWorkaroundXMLHttpRequest, "LOADING", 3);
|
|
39403
|
-
(0, _defineProperty2["default"])(CORBWorkaroundXMLHttpRequest, "DONE", 4);
|
|
39404
|
-
return CORBWorkaroundXMLHttpRequest;
|
|
39405
|
-
}); // TODO add replacement fetch too?
|
|
39406
|
-
|
|
39407
|
-
exports.np = getXMLHttpRequest;
|
|
39408
|
-
var installGlobally = (0, _once["default"])(function () {
|
|
39409
|
-
window.XMLHttpRequest = getXMLHttpRequest();
|
|
39410
|
-
});
|
|
39411
|
-
__webpack_unused_export__ = installGlobally;
|
|
39412
|
-
|
|
39413
|
-
|
|
39414
|
-
/***/ }),
|
|
39415
|
-
|
|
39416
|
-
/***/ 917:
|
|
39417
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
39418
|
-
|
|
39419
|
-
"use strict";
|
|
39420
|
-
|
|
39421
|
-
|
|
39422
|
-
Object.defineProperty(exports, "__esModule", ({
|
|
39423
|
-
value: true
|
|
39424
|
-
}));
|
|
39425
|
-
exports.moduleId = void 0;
|
|
39426
|
-
var moduleId = '1f24 e53a';
|
|
39427
|
-
exports.moduleId = moduleId;
|
|
39428
|
-
|
|
39429
|
-
|
|
39430
|
-
/***/ }),
|
|
39431
|
-
|
|
39432
|
-
/***/ 5440:
|
|
39433
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
39434
|
-
|
|
39435
|
-
"use strict";
|
|
39436
|
-
|
|
39437
|
-
|
|
39438
|
-
var _interopRequireDefault = __webpack_require__(1654);
|
|
39439
|
-
|
|
39440
|
-
Object.defineProperty(exports, "__esModule", ({
|
|
39441
|
-
value: true
|
|
39442
|
-
}));
|
|
39443
|
-
exports["default"] = transferrables;
|
|
39444
|
-
|
|
39445
|
-
var _typeof2 = _interopRequireDefault(__webpack_require__(2990));
|
|
39446
|
-
|
|
39447
|
-
function transferrables(list) {
|
|
39448
|
-
return list.map(function (value) {
|
|
39449
|
-
if (value && (0, _typeof2["default"])(value) === 'object' && value.__proto__) {
|
|
39450
|
-
if (value.__proto__.constructor.name === 'ArrayBuffer') {
|
|
39451
|
-
return value;
|
|
39452
|
-
}
|
|
39453
|
-
|
|
39454
|
-
if (value.__proto__.__proto__ && value.__proto__.__proto__.constructor.name === 'TypedArray') {
|
|
39455
|
-
return value.buffer;
|
|
39456
|
-
}
|
|
39457
|
-
}
|
|
39458
|
-
}).filter(Boolean);
|
|
39459
|
-
}
|
|
39460
|
-
|
|
39461
|
-
|
|
39462
39463
|
/***/ }),
|
|
39463
39464
|
|
|
39464
39465
|
/***/ 5215:
|