darkreader 4.9.77 → 4.9.78

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 (2) hide show
  1. package/darkreader.js +687 -519
  2. package/package.json +15 -15
package/darkreader.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Dark Reader v4.9.77
2
+ * Dark Reader v4.9.78
3
3
  * https://darkreader.org/
4
4
  */
5
5
 
@@ -1145,7 +1145,7 @@
1145
1145
  getElementsTreeOperations(mutations);
1146
1146
  observerCallbacks.forEach(function (_a) {
1147
1147
  var onMinorMutations = _a.onMinorMutations;
1148
- return onMinorMutations(elementsOperations_1);
1148
+ return onMinorMutations(root, elementsOperations_1);
1149
1149
  });
1150
1150
  }
1151
1151
  });
@@ -5147,7 +5147,7 @@
5147
5147
  variablesStore.matchVariablesAndDependents();
5148
5148
  }
5149
5149
  var treeObserver = createOptimizedTreeObserver(root, {
5150
- onMinorMutations: function (_a) {
5150
+ onMinorMutations: function (_root, _a) {
5151
5151
  var additions = _a.additions;
5152
5152
  additions.forEach(function (added) {
5153
5153
  return discoverNodes(added);
@@ -5950,6 +5950,116 @@
5950
5950
  };
5951
5951
  }
5952
5952
 
5953
+ var canUseSheetProxy$1 = false;
5954
+ document.addEventListener(
5955
+ "__darkreader__inlineScriptsAllowed",
5956
+ function () {
5957
+ return (canUseSheetProxy$1 = true);
5958
+ },
5959
+ {once: true}
5960
+ );
5961
+ function createSheetWatcher(
5962
+ element,
5963
+ safeGetSheetRules,
5964
+ callback,
5965
+ isCancelled
5966
+ ) {
5967
+ var rafSheetWatcher = null;
5968
+ function watchForSheetChanges() {
5969
+ watchForSheetChangesUsingProxy();
5970
+ if (!(canUseSheetProxy$1 && element.sheet)) {
5971
+ rafSheetWatcher = createRAFSheetWatcher(
5972
+ element,
5973
+ safeGetSheetRules,
5974
+ callback,
5975
+ isCancelled
5976
+ );
5977
+ rafSheetWatcher.start();
5978
+ }
5979
+ }
5980
+ var areSheetChangesPending = false;
5981
+ function onSheetChange() {
5982
+ canUseSheetProxy$1 = true;
5983
+ rafSheetWatcher === null || rafSheetWatcher === void 0
5984
+ ? void 0
5985
+ : rafSheetWatcher.stop();
5986
+ if (areSheetChangesPending) {
5987
+ return;
5988
+ }
5989
+ function handleSheetChanges() {
5990
+ areSheetChangesPending = false;
5991
+ if (isCancelled()) {
5992
+ return;
5993
+ }
5994
+ callback();
5995
+ }
5996
+ areSheetChangesPending = true;
5997
+ queueMicrotask(handleSheetChanges);
5998
+ }
5999
+ function watchForSheetChangesUsingProxy() {
6000
+ element.addEventListener(
6001
+ "__darkreader__updateSheet",
6002
+ onSheetChange
6003
+ );
6004
+ }
6005
+ function stopWatchingForSheetChangesUsingProxy() {
6006
+ element.removeEventListener(
6007
+ "__darkreader__updateSheet",
6008
+ onSheetChange
6009
+ );
6010
+ }
6011
+ function stopWatchingForSheetChanges() {
6012
+ stopWatchingForSheetChangesUsingProxy();
6013
+ rafSheetWatcher === null || rafSheetWatcher === void 0
6014
+ ? void 0
6015
+ : rafSheetWatcher.stop();
6016
+ }
6017
+ return {
6018
+ start: watchForSheetChanges,
6019
+ stop: stopWatchingForSheetChanges
6020
+ };
6021
+ }
6022
+ function createRAFSheetWatcher(
6023
+ element,
6024
+ safeGetSheetRules,
6025
+ callback,
6026
+ isCancelled
6027
+ ) {
6028
+ var rulesChangeKey = null;
6029
+ var rulesCheckFrameId = null;
6030
+ function getRulesChangeKey() {
6031
+ var rules = safeGetSheetRules();
6032
+ return rules ? rules.length : null;
6033
+ }
6034
+ function didRulesKeyChange() {
6035
+ return getRulesChangeKey() !== rulesChangeKey;
6036
+ }
6037
+ function watchForSheetChangesUsingRAF() {
6038
+ rulesChangeKey = getRulesChangeKey();
6039
+ stopWatchingForSheetChangesUsingRAF();
6040
+ var checkForUpdate = function () {
6041
+ var cancelled = isCancelled();
6042
+ if (!cancelled && didRulesKeyChange()) {
6043
+ rulesChangeKey = getRulesChangeKey();
6044
+ callback();
6045
+ }
6046
+ if (cancelled || (canUseSheetProxy$1 && element.sheet)) {
6047
+ stopWatchingForSheetChangesUsingRAF();
6048
+ return;
6049
+ }
6050
+ rulesCheckFrameId = requestAnimationFrame(checkForUpdate);
6051
+ };
6052
+ checkForUpdate();
6053
+ }
6054
+ function stopWatchingForSheetChangesUsingRAF() {
6055
+ rulesCheckFrameId && cancelAnimationFrame(rulesCheckFrameId);
6056
+ }
6057
+ return {
6058
+ start: watchForSheetChangesUsingRAF,
6059
+ stop: stopWatchingForSheetChangesUsingRAF
6060
+ };
6061
+ }
6062
+
5953
6063
  var STYLE_SELECTOR = 'style, link[rel*="stylesheet" i]:not([disabled])';
5954
6064
  function isFontsGoogleApiStyle(element) {
5955
6065
  if (!element.href) {
@@ -6012,14 +6122,6 @@
6012
6122
  }
6013
6123
  var syncStyleSet = new WeakSet();
6014
6124
  var corsStyleSet = new WeakSet();
6015
- var canOptimizeUsingProxy$1 = false;
6016
- document.addEventListener(
6017
- "__darkreader__inlineScriptsAllowed",
6018
- function () {
6019
- canOptimizeUsingProxy$1 = true;
6020
- },
6021
- {once: true, passive: true}
6022
- );
6023
6125
  var loadingLinkCounter = 0;
6024
6126
  var rejectorsForLoadingLinks = new Map();
6025
6127
  function cleanLoadingLinks() {
@@ -6049,9 +6151,27 @@
6049
6151
  var syncStylePositionWatcher = null;
6050
6152
  var cancelAsyncOperations = false;
6051
6153
  var isOverrideEmpty = true;
6154
+ var isAsyncCancelled = function () {
6155
+ return cancelAsyncOperations;
6156
+ };
6052
6157
  var sheetModifier = createStyleSheetModifier();
6053
- var observer = new MutationObserver(function () {
6054
- update();
6158
+ var observer = new MutationObserver(function (mutations) {
6159
+ var _a;
6160
+ if (
6161
+ mutations.some(function (m) {
6162
+ return m.type === "characterData";
6163
+ }) &&
6164
+ containsCSSImport()
6165
+ ) {
6166
+ var cssText = (
6167
+ (_a = element.textContent) !== null && _a !== void 0
6168
+ ? _a
6169
+ : ""
6170
+ ).trim();
6171
+ createOrUpdateCORSCopy(cssText, location.href).then(update);
6172
+ } else {
6173
+ update();
6174
+ }
6055
6175
  });
6056
6176
  var observerOptions = {
6057
6177
  attributes: true,
@@ -6159,12 +6279,7 @@
6159
6279
  var loadingLinkId = ++loadingLinkCounter;
6160
6280
  function getRulesAsync() {
6161
6281
  return __awaiter(this, void 0, void 0, function () {
6162
- var cssText,
6163
- cssBasePath,
6164
- _a,
6165
- cssRules,
6166
- accessError,
6167
- fullCSSText;
6282
+ var cssText, cssBasePath, _a, cssRules, accessError;
6168
6283
  var _b;
6169
6284
  return __generator(this, function (_c) {
6170
6285
  switch (_c.label) {
@@ -6224,29 +6339,64 @@
6224
6339
  }
6225
6340
  _c.label = 8;
6226
6341
  case 8:
6227
- if (!cssText) return [3, 13];
6228
- _c.label = 9;
6342
+ return [
6343
+ 4,
6344
+ createOrUpdateCORSCopy(cssText, cssBasePath)
6345
+ ];
6229
6346
  case 9:
6230
- _c.trys.push([9, 11, , 12]);
6347
+ _c.sent();
6348
+ if (corsCopy) {
6349
+ return [2, corsCopy.sheet.cssRules];
6350
+ }
6351
+ return [2, null];
6352
+ }
6353
+ });
6354
+ });
6355
+ }
6356
+ function createOrUpdateCORSCopy(cssText, cssBasePath) {
6357
+ var _a, _b;
6358
+ return __awaiter(this, void 0, void 0, function () {
6359
+ var fullCSSText;
6360
+ return __generator(this, function (_c) {
6361
+ switch (_c.label) {
6362
+ case 0:
6363
+ if (!cssText) return [3, 5];
6364
+ _c.label = 1;
6365
+ case 1:
6366
+ _c.trys.push([1, 3, , 4]);
6231
6367
  return [4, replaceCSSImports(cssText, cssBasePath)];
6232
- case 10:
6368
+ case 2:
6233
6369
  fullCSSText = _c.sent();
6234
- corsCopy = createCORSCopy(element, fullCSSText);
6235
- return [3, 12];
6236
- case 11:
6370
+ if (corsCopy) {
6371
+ if (
6372
+ ((_b =
6373
+ (_a = corsCopy.textContent) === null ||
6374
+ _a === void 0
6375
+ ? void 0
6376
+ : _a.length) !== null &&
6377
+ _b !== void 0
6378
+ ? _b
6379
+ : 0) < fullCSSText.length
6380
+ ) {
6381
+ corsCopy.textContent = fullCSSText;
6382
+ }
6383
+ } else {
6384
+ corsCopy = createCORSCopy(element, fullCSSText);
6385
+ }
6386
+ return [3, 4];
6387
+ case 3:
6237
6388
  _c.sent();
6238
- return [3, 12];
6239
- case 12:
6389
+ return [3, 4];
6390
+ case 4:
6240
6391
  if (corsCopy) {
6241
6392
  corsCopyPositionWatcher = watchForNodePosition(
6242
6393
  corsCopy,
6243
6394
  "prev-sibling"
6244
6395
  );
6245
- return [2, corsCopy.sheet.cssRules];
6246
6396
  }
6247
- _c.label = 13;
6248
- case 13:
6249
- return [2, null];
6397
+ _c.label = 5;
6398
+ case 5:
6399
+ return [2];
6250
6400
  }
6251
6401
  });
6252
6402
  });
@@ -6327,9 +6477,7 @@
6327
6477
  theme: theme,
6328
6478
  ignoreImageAnalysis: ignoreImageAnalysis,
6329
6479
  force: force,
6330
- isAsyncCancelled: function () {
6331
- return cancelAsyncOperations;
6332
- }
6480
+ isAsyncCancelled: isAsyncCancelled
6333
6481
  });
6334
6482
  isOverrideEmpty = syncStyle.sheet.cssRules.length === 0;
6335
6483
  if (sheetModifier.shouldRebuildStyle()) {
@@ -6362,84 +6510,18 @@
6362
6510
  }
6363
6511
  return cssRules;
6364
6512
  }
6365
- function watchForSheetChanges() {
6366
- watchForSheetChangesUsingProxy();
6367
- if (!(canOptimizeUsingProxy$1 && element.sheet)) {
6368
- watchForSheetChangesUsingRAF();
6369
- }
6370
- }
6371
- var rulesChangeKey = null;
6372
- var rulesCheckFrameId = null;
6373
- function getRulesChangeKey() {
6374
- var rules = safeGetSheetRules();
6375
- return rules ? rules.length : null;
6376
- }
6377
- function didRulesKeyChange() {
6378
- return getRulesChangeKey() !== rulesChangeKey;
6379
- }
6380
- function watchForSheetChangesUsingRAF() {
6381
- rulesChangeKey = getRulesChangeKey();
6382
- stopWatchingForSheetChangesUsingRAF();
6383
- var checkForUpdate = function () {
6384
- if (didRulesKeyChange()) {
6385
- rulesChangeKey = getRulesChangeKey();
6386
- update();
6387
- }
6388
- if (canOptimizeUsingProxy$1 && element.sheet) {
6389
- stopWatchingForSheetChangesUsingRAF();
6390
- return;
6391
- }
6392
- rulesCheckFrameId = requestAnimationFrame(checkForUpdate);
6393
- };
6394
- checkForUpdate();
6395
- }
6396
- function stopWatchingForSheetChangesUsingRAF() {
6397
- cancelAnimationFrame(rulesCheckFrameId);
6398
- }
6399
- var areSheetChangesPending = false;
6400
- function onSheetChange() {
6401
- canOptimizeUsingProxy$1 = true;
6402
- stopWatchingForSheetChangesUsingRAF();
6403
- if (areSheetChangesPending) {
6404
- return;
6405
- }
6406
- function handleSheetChanges() {
6407
- areSheetChangesPending = false;
6408
- if (cancelAsyncOperations) {
6409
- return;
6410
- }
6411
- update();
6412
- }
6413
- areSheetChangesPending = true;
6414
- if (typeof queueMicrotask === "function") {
6415
- queueMicrotask(handleSheetChanges);
6416
- } else {
6417
- requestAnimationFrame(handleSheetChanges);
6418
- }
6419
- }
6420
- function watchForSheetChangesUsingProxy() {
6421
- element.addEventListener(
6422
- "__darkreader__updateSheet",
6423
- onSheetChange,
6424
- {passive: true}
6425
- );
6426
- }
6427
- function stopWatchingForSheetChangesUsingProxy() {
6428
- element.removeEventListener(
6429
- "__darkreader__updateSheet",
6430
- onSheetChange
6431
- );
6432
- }
6433
- function stopWatchingForSheetChanges() {
6434
- stopWatchingForSheetChangesUsingProxy();
6435
- stopWatchingForSheetChangesUsingRAF();
6436
- }
6513
+ var sheetChangeWatcher = createSheetWatcher(
6514
+ element,
6515
+ safeGetSheetRules,
6516
+ update,
6517
+ isAsyncCancelled
6518
+ );
6437
6519
  function pause() {
6438
6520
  observer.disconnect();
6439
6521
  cancelAsyncOperations = true;
6440
6522
  corsCopyPositionWatcher && corsCopyPositionWatcher.stop();
6441
6523
  syncStylePositionWatcher && syncStylePositionWatcher.stop();
6442
- stopWatchingForSheetChanges();
6524
+ sheetChangeWatcher.stop();
6443
6525
  }
6444
6526
  function destroy() {
6445
6527
  pause();
@@ -6455,7 +6537,7 @@
6455
6537
  function watch() {
6456
6538
  observer.observe(element, observerOptions);
6457
6539
  if (element instanceof HTMLStyleElement) {
6458
- watchForSheetChanges();
6540
+ sheetChangeWatcher.start();
6459
6541
  }
6460
6542
  }
6461
6543
  var maxMoveCount = 10;
@@ -6666,8 +6748,6 @@
6666
6748
  return cors;
6667
6749
  }
6668
6750
 
6669
- var observers = [];
6670
- var observedRoots;
6671
6751
  var definedCustomElements = new Set();
6672
6752
  var undefinedGroups = new Map();
6673
6753
  var elementsDefinitionCallback;
@@ -6791,9 +6871,35 @@
6791
6871
  handleIsDefined
6792
6872
  );
6793
6873
  }
6794
- function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) {
6795
- stopWatchingForStyleChanges();
6796
- var prevStyles = new Set(currentStyles);
6874
+
6875
+ var observers = [];
6876
+ var observedRoots;
6877
+ function watchForStylePositions(
6878
+ currentStyles,
6879
+ update,
6880
+ shadowRootDiscovered
6881
+ ) {
6882
+ stopWatchingForStylePositions();
6883
+ var prevStylesByRoot = new WeakMap();
6884
+ var getPrevStyles = function (root) {
6885
+ if (!prevStylesByRoot.has(root)) {
6886
+ prevStylesByRoot.set(root, new Set());
6887
+ }
6888
+ return prevStylesByRoot.get(root);
6889
+ };
6890
+ currentStyles.forEach(function (node) {
6891
+ var root = node;
6892
+ while ((root = root.parentNode)) {
6893
+ if (
6894
+ root === document ||
6895
+ root.nodeType === Node.DOCUMENT_FRAGMENT_NODE
6896
+ ) {
6897
+ var prevStyles = getPrevStyles(root);
6898
+ prevStyles.add(node);
6899
+ break;
6900
+ }
6901
+ }
6902
+ });
6797
6903
  var prevStyleSiblings = new WeakMap();
6798
6904
  var nextStyleSiblings = new WeakMap();
6799
6905
  function saveStylePosition(style) {
@@ -6811,7 +6917,7 @@
6811
6917
  );
6812
6918
  }
6813
6919
  currentStyles.forEach(saveStylePosition);
6814
- function handleStyleOperations(operations) {
6920
+ function handleStyleOperations(root, operations) {
6815
6921
  var createdStyles = operations.createdStyles,
6816
6922
  removedStyles = operations.removedStyles,
6817
6923
  movedStyles = operations.movedStyles;
@@ -6824,6 +6930,7 @@
6824
6930
  removedStyles.forEach(function (s) {
6825
6931
  return forgetStylePosition(s);
6826
6932
  });
6933
+ var prevStyles = getPrevStyles(root);
6827
6934
  createdStyles.forEach(function (s) {
6828
6935
  return prevStyles.add(s);
6829
6936
  });
@@ -6842,7 +6949,7 @@
6842
6949
  });
6843
6950
  }
6844
6951
  }
6845
- function handleMinorTreeMutations(_a) {
6952
+ function handleMinorTreeMutations(root, _a) {
6846
6953
  var additions = _a.additions,
6847
6954
  moves = _a.moves,
6848
6955
  deletions = _a.deletions;
@@ -6864,13 +6971,13 @@
6864
6971
  return movedStyles.add(style);
6865
6972
  });
6866
6973
  });
6867
- handleStyleOperations({
6974
+ handleStyleOperations(root, {
6868
6975
  createdStyles: createdStyles,
6869
6976
  removedStyles: removedStyles,
6870
6977
  movedStyles: movedStyles
6871
6978
  });
6872
6979
  additions.forEach(function (n) {
6873
- extendedIterateShadowHosts(n);
6980
+ deepObserve(n);
6874
6981
  collectUndefinedElements(n);
6875
6982
  });
6876
6983
  additions.forEach(function (node) {
@@ -6882,6 +6989,7 @@
6882
6989
  var createdStyles = new Set();
6883
6990
  var removedStyles = new Set();
6884
6991
  var movedStyles = new Set();
6992
+ var prevStyles = getPrevStyles(root);
6885
6993
  styles.forEach(function (s) {
6886
6994
  if (!prevStyles.has(s)) {
6887
6995
  createdStyles.add(s);
@@ -6901,12 +7009,12 @@
6901
7009
  movedStyles.add(s);
6902
7010
  }
6903
7011
  });
6904
- handleStyleOperations({
7012
+ handleStyleOperations(root, {
6905
7013
  createdStyles: createdStyles,
6906
7014
  removedStyles: removedStyles,
6907
7015
  movedStyles: movedStyles
6908
7016
  });
6909
- extendedIterateShadowHosts(root);
7017
+ deepObserve(root);
6910
7018
  collectUndefinedElements(root);
6911
7019
  }
6912
7020
  function handleAttributeMutations(mutations) {
@@ -6958,11 +7066,11 @@
6958
7066
  observe(shadowRoot);
6959
7067
  shadowRootDiscovered(shadowRoot);
6960
7068
  }
6961
- function extendedIterateShadowHosts(node) {
7069
+ function deepObserve(node) {
6962
7070
  iterateShadowHosts(node, subscribeForShadowRootChanges);
6963
7071
  }
6964
7072
  observe(document);
6965
- extendedIterateShadowHosts(document.documentElement);
7073
+ deepObserve(document.documentElement);
6966
7074
  watchWhenCustomElementsDefined(function (hosts) {
6967
7075
  var newStyles = [];
6968
7076
  hosts.forEach(function (host) {
@@ -6975,13 +7083,11 @@
6975
7083
  return;
6976
7084
  }
6977
7085
  subscribeForShadowRootChanges(host);
6978
- extendedIterateShadowHosts(shadowRoot);
7086
+ deepObserve(shadowRoot);
6979
7087
  collectUndefinedElements(shadowRoot);
6980
7088
  });
6981
7089
  });
6982
- document.addEventListener("__darkreader__isDefined", handleIsDefined, {
6983
- passive: true
6984
- });
7090
+ document.addEventListener("__darkreader__isDefined", handleIsDefined);
6985
7091
  collectUndefinedElements(document);
6986
7092
  }
6987
7093
  function resetObservers() {
@@ -6991,17 +7097,30 @@
6991
7097
  observers.splice(0, observers.length);
6992
7098
  observedRoots = new WeakSet();
6993
7099
  }
6994
- function stopWatchingForStyleChanges() {
7100
+ function stopWatchingForStylePositions() {
6995
7101
  resetObservers();
6996
7102
  unsubscribeFromDefineCustomElements();
6997
7103
  }
6998
7104
 
7105
+ function watchForStyleChanges(currentStyles, update, shadowRootDiscovered) {
7106
+ watchForStylePositions(currentStyles, update, shadowRootDiscovered);
7107
+ }
7108
+ function stopWatchingForStyleChanges() {
7109
+ stopWatchingForStylePositions();
7110
+ }
7111
+
7112
+ var canUseSheetProxy = false;
7113
+ document.addEventListener(
7114
+ "__darkreader__inlineScriptsAllowed",
7115
+ function () {
7116
+ return (canUseSheetProxy = true);
7117
+ },
7118
+ {once: true}
7119
+ );
6999
7120
  var overrides = new WeakSet();
7000
- function hasAdoptedStyleSheets(node) {
7001
- return (
7002
- Array.isArray(node.adoptedStyleSheets) &&
7003
- node.adoptedStyleSheets.length > 0
7004
- );
7121
+ var overridesBySource = new WeakMap();
7122
+ function canHaveAdoptedStyleSheets(node) {
7123
+ return Array.isArray(node.adoptedStyleSheets);
7005
7124
  }
7006
7125
  function createAdoptedStyleSheetOverride(node) {
7007
7126
  var cancelAsyncOperations = false;
@@ -7042,8 +7161,15 @@
7042
7161
  if (node.adoptedStyleSheets.length !== newSheets.length) {
7043
7162
  node.adoptedStyleSheets = newSheets;
7044
7163
  }
7164
+ sourceSheets = new WeakSet();
7165
+ sourceDeclarations = new WeakSet();
7045
7166
  }
7167
+ var cleaners = [];
7046
7168
  function destroy() {
7169
+ cleaners.forEach(function (c) {
7170
+ return c();
7171
+ });
7172
+ cleaners.splice(0);
7047
7173
  cancelAsyncOperations = true;
7048
7174
  clear();
7049
7175
  if (frameId) {
@@ -7063,6 +7189,8 @@
7063
7189
  }
7064
7190
  return count;
7065
7191
  }
7192
+ var sourceSheets = new WeakSet();
7193
+ var sourceDeclarations = new WeakSet();
7066
7194
  function render(theme, ignoreImageAnalysis) {
7067
7195
  clear();
7068
7196
  var _loop_1 = function (i) {
@@ -7070,8 +7198,19 @@
7070
7198
  if (overrides.has(sheet)) {
7071
7199
  return "continue";
7072
7200
  }
7201
+ sourceSheets.add(sheet);
7202
+ var readyOverride = overridesBySource.get(sheet);
7203
+ if (readyOverride) {
7204
+ rulesChangeKey = getRulesChangeKey();
7205
+ injectSheet(sheet, readyOverride);
7206
+ return "continue";
7207
+ }
7073
7208
  var rules = sheet.cssRules;
7074
7209
  var override = new CSSStyleSheet();
7210
+ overridesBySource.set(sheet, override);
7211
+ iterateCSSRules(rules, function (rule) {
7212
+ return sourceDeclarations.add(rule.style);
7213
+ });
7075
7214
  var prepareSheet = function () {
7076
7215
  for (
7077
7216
  var i_1 = override.cssRules.length - 1;
@@ -7080,6 +7219,7 @@
7080
7219
  ) {
7081
7220
  override.deleteRule(i_1);
7082
7221
  }
7222
+ override.insertRule("#__darkreader__adoptedOverride {}");
7083
7223
  injectSheet(sheet, override);
7084
7224
  overrides.add(override);
7085
7225
  return override;
@@ -7101,21 +7241,66 @@
7101
7241
  }
7102
7242
  rulesChangeKey = getRulesChangeKey();
7103
7243
  }
7244
+ var callbackRequested = false;
7245
+ function handleArrayChange(callback) {
7246
+ if (callbackRequested) {
7247
+ return;
7248
+ }
7249
+ callbackRequested = true;
7250
+ queueMicrotask(function () {
7251
+ callbackRequested = false;
7252
+ var sheets = node.adoptedStyleSheets.filter(function (s) {
7253
+ return !overrides.has(s);
7254
+ });
7255
+ sheets.forEach(function (sheet) {
7256
+ return overridesBySource.delete(sheet);
7257
+ });
7258
+ callback(sheets);
7259
+ });
7260
+ }
7104
7261
  function checkForUpdates() {
7105
7262
  return getRulesChangeKey() !== rulesChangeKey;
7106
7263
  }
7107
7264
  var frameId = null;
7108
- function watch(callback) {
7265
+ function watchUsingRAF(callback) {
7109
7266
  frameId = requestAnimationFrame(function () {
7267
+ if (canUseSheetProxy) {
7268
+ return;
7269
+ }
7110
7270
  if (checkForUpdates()) {
7111
- var sheets = node.adoptedStyleSheets.filter(function (s) {
7112
- return !overrides.has(s);
7113
- });
7114
- callback(sheets);
7271
+ handleArrayChange(callback);
7115
7272
  }
7116
- watch(callback);
7273
+ watchUsingRAF(callback);
7117
7274
  });
7118
7275
  }
7276
+ function addSheetChangeEventListener(type, listener) {
7277
+ node.addEventListener(type, listener);
7278
+ cleaners.push(function () {
7279
+ return node.removeEventListener(type, listener);
7280
+ });
7281
+ }
7282
+ function watch(callback) {
7283
+ var onAdoptedSheetsChange = function () {
7284
+ canUseSheetProxy = true;
7285
+ handleArrayChange(callback);
7286
+ };
7287
+ addSheetChangeEventListener(
7288
+ "__darkreader__adoptedStyleSheetsChange",
7289
+ onAdoptedSheetsChange
7290
+ );
7291
+ addSheetChangeEventListener(
7292
+ "__darkreader__adoptedStyleSheetChange",
7293
+ onAdoptedSheetsChange
7294
+ );
7295
+ addSheetChangeEventListener(
7296
+ "__darkreader__adoptedStyleDeclarationChange",
7297
+ onAdoptedSheetsChange
7298
+ );
7299
+ if (canUseSheetProxy) {
7300
+ return;
7301
+ }
7302
+ watchUsingRAF(callback);
7303
+ }
7119
7304
  return {
7120
7305
  render: render,
7121
7306
  destroy: destroy,
@@ -7244,340 +7429,207 @@
7244
7429
  document.dispatchEvent(
7245
7430
  new CustomEvent("__darkreader__inlineScriptsAllowed")
7246
7431
  );
7247
- var addRuleDescriptor = Object.getOwnPropertyDescriptor(
7248
- CSSStyleSheet.prototype,
7249
- "addRule"
7250
- );
7251
- var insertRuleDescriptor = Object.getOwnPropertyDescriptor(
7252
- CSSStyleSheet.prototype,
7253
- "insertRule"
7254
- );
7255
- var deleteRuleDescriptor = Object.getOwnPropertyDescriptor(
7256
- CSSStyleSheet.prototype,
7257
- "deleteRule"
7258
- );
7259
- var removeRuleDescriptor = Object.getOwnPropertyDescriptor(
7260
- CSSStyleSheet.prototype,
7261
- "removeRule"
7262
- );
7263
- var replaceDescriptor = Object.getOwnPropertyDescriptor(
7264
- CSSStyleSheet.prototype,
7265
- "replace"
7266
- );
7267
- var replaceSyncDescriptor = Object.getOwnPropertyDescriptor(
7268
- CSSStyleSheet.prototype,
7269
- "replaceSync"
7270
- );
7271
- var documentStyleSheetsDescriptor = enableStyleSheetsProxy
7272
- ? Object.getOwnPropertyDescriptor(Document.prototype, "styleSheets")
7273
- : null;
7274
- var customElementRegistryDefineDescriptor =
7275
- enableCustomElementRegistryProxy
7276
- ? Object.getOwnPropertyDescriptor(
7277
- CustomElementRegistry.prototype,
7278
- "define"
7279
- )
7280
- : null;
7281
- var shouldWrapHTMLElement = [
7282
- "baidu.com",
7283
- "baike.baidu.com",
7284
- "ditu.baidu.com",
7285
- "map.baidu.com",
7286
- "maps.baidu.com",
7287
- "haokan.baidu.com",
7288
- "pan.baidu.com",
7289
- "passport.baidu.com",
7290
- "tieba.baidu.com",
7291
- "www.baidu.com"
7292
- ].includes(location.hostname);
7293
- var getElementsByTagNameDescriptor = shouldWrapHTMLElement
7294
- ? Object.getOwnPropertyDescriptor(
7295
- Element.prototype,
7296
- "getElementsByTagName"
7297
- )
7298
- : null;
7299
- var shouldProxyChildNodes = location.hostname === "www.vy.no";
7300
- var childNodesDescriptor = shouldProxyChildNodes
7301
- ? Object.getOwnPropertyDescriptor(Node.prototype, "childNodes")
7302
- : null;
7303
7432
  var cleaners = [];
7304
- var cleanUp = function () {
7305
- Object.defineProperty(
7306
- CSSStyleSheet.prototype,
7307
- "addRule",
7308
- addRuleDescriptor
7309
- );
7310
- Object.defineProperty(
7311
- CSSStyleSheet.prototype,
7312
- "insertRule",
7313
- insertRuleDescriptor
7314
- );
7315
- Object.defineProperty(
7316
- CSSStyleSheet.prototype,
7317
- "deleteRule",
7318
- deleteRuleDescriptor
7319
- );
7320
- Object.defineProperty(
7321
- CSSStyleSheet.prototype,
7322
- "removeRule",
7323
- removeRuleDescriptor
7324
- );
7325
- Object.defineProperty(
7326
- CSSStyleSheet.prototype,
7327
- "replace",
7328
- replaceDescriptor
7329
- );
7330
- Object.defineProperty(
7331
- CSSStyleSheet.prototype,
7332
- "replaceSync",
7333
- replaceSyncDescriptor
7334
- );
7335
- document.removeEventListener("__darkreader__cleanUp", cleanUp);
7336
- document.removeEventListener(
7337
- "__darkreader__addUndefinedResolver",
7338
- addUndefinedResolver
7339
- );
7340
- document.removeEventListener(
7341
- "__darkreader__blobURLCheckRequest",
7342
- checkBlobURLSupport
7343
- );
7344
- if (enableStyleSheetsProxy) {
7345
- Object.defineProperty(
7346
- Document.prototype,
7347
- "styleSheets",
7348
- documentStyleSheetsDescriptor
7349
- );
7350
- }
7351
- if (enableCustomElementRegistryProxy) {
7352
- Object.defineProperty(
7353
- CustomElementRegistry.prototype,
7354
- "define",
7355
- customElementRegistryDefineDescriptor
7356
- );
7357
- }
7358
- if (shouldWrapHTMLElement) {
7359
- Object.defineProperty(
7360
- Element.prototype,
7361
- "getElementsByTagName",
7362
- getElementsByTagNameDescriptor
7363
- );
7364
- }
7365
- if (shouldProxyChildNodes) {
7366
- Object.defineProperty(
7367
- Node.prototype,
7368
- "childNodes",
7369
- childNodesDescriptor
7370
- );
7371
- }
7433
+ function cleanUp() {
7372
7434
  cleaners.forEach(function (clean) {
7373
7435
  return clean();
7374
7436
  });
7375
7437
  cleaners.splice(0);
7376
- };
7377
- var addUndefinedResolverInner = function (tag) {
7378
- customElements.whenDefined(tag).then(function () {
7379
- document.dispatchEvent(
7380
- new CustomEvent("__darkreader__isDefined", {
7381
- detail: {tag: tag}
7382
- })
7383
- );
7438
+ }
7439
+ function documentEventListener(type, listener, options) {
7440
+ document.addEventListener(type, listener, options);
7441
+ cleaners.push(function () {
7442
+ return document.removeEventListener(type, listener);
7384
7443
  });
7385
- };
7386
- var addUndefinedResolver = function (e) {
7387
- return addUndefinedResolverInner(e.detail.tag);
7388
- };
7389
- document.addEventListener("__darkreader__cleanUp", cleanUp, {
7390
- passive: true
7391
- });
7392
- document.addEventListener(
7393
- "__darkreader__addUndefinedResolver",
7394
- addUndefinedResolver,
7395
- {passive: true}
7396
- );
7397
- document.addEventListener(
7398
- "__darkreader__blobURLCheckRequest",
7399
- checkBlobURLSupport,
7400
- {once: true}
7401
- );
7402
- var updateSheetEvent = new Event("__darkreader__updateSheet");
7403
- function proxyAddRule(selector, style, index) {
7404
- addRuleDescriptor.value.call(this, selector, style, index);
7405
- if (
7406
- this.ownerNode &&
7407
- !(
7408
- this.ownerNode.classList &&
7409
- this.ownerNode.classList.contains("darkreader")
7410
- )
7411
- ) {
7412
- this.ownerNode.dispatchEvent(updateSheetEvent);
7413
- }
7414
- return -1;
7415
7444
  }
7416
- function proxyInsertRule(rule, index) {
7417
- var returnValue = insertRuleDescriptor.value.call(
7418
- this,
7419
- rule,
7420
- index
7421
- );
7422
- if (
7423
- this.ownerNode &&
7424
- !(
7425
- this.ownerNode.classList &&
7426
- this.ownerNode.classList.contains("darkreader")
7427
- )
7428
- ) {
7429
- this.ownerNode.dispatchEvent(updateSheetEvent);
7430
- }
7431
- return returnValue;
7445
+ documentEventListener("__darkreader__cleanUp", cleanUp);
7446
+ function overrideProperty(cls, prop, overrides) {
7447
+ var proto = cls.prototype;
7448
+ var oldDescriptor = Object.getOwnPropertyDescriptor(proto, prop);
7449
+ var newDescriptor = __assign({}, oldDescriptor);
7450
+ Object.keys(overrides).forEach(function (key) {
7451
+ var factory = overrides[key];
7452
+ newDescriptor[key] = factory(oldDescriptor[key]);
7453
+ });
7454
+ Object.defineProperty(proto, prop, newDescriptor);
7455
+ cleaners.push(function () {
7456
+ return Object.defineProperty(proto, prop, oldDescriptor);
7457
+ });
7432
7458
  }
7433
- function proxyDeleteRule(index) {
7434
- deleteRuleDescriptor.value.call(this, index);
7435
- if (
7436
- this.ownerNode &&
7437
- !(
7438
- this.ownerNode.classList &&
7439
- this.ownerNode.classList.contains("darkreader")
7440
- )
7441
- ) {
7442
- this.ownerNode.dispatchEvent(updateSheetEvent);
7443
- }
7459
+ function override(cls, prop, factory) {
7460
+ overrideProperty(cls, prop, {value: factory});
7444
7461
  }
7445
- function proxyRemoveRule(index) {
7446
- removeRuleDescriptor.value.call(this, index);
7447
- if (
7448
- this.ownerNode &&
7449
- !(
7450
- this.ownerNode.classList &&
7451
- this.ownerNode.classList.contains("darkreader")
7452
- )
7453
- ) {
7454
- this.ownerNode.dispatchEvent(updateSheetEvent);
7462
+ function isDRElement(element) {
7463
+ var _a;
7464
+ return (_a =
7465
+ element === null || element === void 0
7466
+ ? void 0
7467
+ : element.classList) === null || _a === void 0
7468
+ ? void 0
7469
+ : _a.contains("darkreader");
7470
+ }
7471
+ function isDRSheet(sheet) {
7472
+ return isDRElement(sheet.ownerNode);
7473
+ }
7474
+ var updateSheetEvent = new CustomEvent("__darkreader__updateSheet");
7475
+ var adoptedSheetChangeEvent = new CustomEvent(
7476
+ "__darkreader__adoptedStyleSheetChange"
7477
+ );
7478
+ var adoptedSheetOwners = new WeakMap();
7479
+ var adoptedDeclarationSheets = new WeakMap();
7480
+ function onAdoptedSheetChange(sheet) {
7481
+ var owners = adoptedSheetOwners.get(sheet);
7482
+ owners === null || owners === void 0
7483
+ ? void 0
7484
+ : owners.forEach(function (node) {
7485
+ if (node.isConnected) {
7486
+ node.dispatchEvent(adoptedSheetChangeEvent);
7487
+ } else {
7488
+ owners.delete(node);
7489
+ }
7490
+ });
7491
+ }
7492
+ function reportSheetChange(sheet) {
7493
+ if (sheet.ownerNode && !isDRSheet(sheet)) {
7494
+ sheet.ownerNode.dispatchEvent(updateSheetEvent);
7495
+ }
7496
+ if (adoptedSheetOwners.has(sheet)) {
7497
+ onAdoptedSheetChange(sheet);
7455
7498
  }
7456
7499
  }
7457
- function proxyReplace(cssText) {
7458
- var _this = this;
7459
- var returnValue = replaceDescriptor.value.call(this, cssText);
7500
+ function reportSheetChangeAsync(sheet, promise) {
7501
+ var ownerNode = sheet.ownerNode;
7460
7502
  if (
7461
- this.ownerNode &&
7462
- !(
7463
- this.ownerNode.classList &&
7464
- this.ownerNode.classList.contains("darkreader")
7465
- ) &&
7466
- returnValue &&
7467
- returnValue instanceof Promise
7503
+ ownerNode &&
7504
+ !isDRSheet(sheet) &&
7505
+ promise &&
7506
+ promise instanceof Promise
7468
7507
  ) {
7469
- returnValue.then(function () {
7470
- return _this.ownerNode.dispatchEvent(updateSheetEvent);
7508
+ promise.then(function () {
7509
+ return ownerNode.dispatchEvent(updateSheetEvent);
7471
7510
  });
7472
7511
  }
7473
- return returnValue;
7474
- }
7475
- function proxyReplaceSync(cssText) {
7476
- replaceSyncDescriptor.value.call(this, cssText);
7477
- if (
7478
- this.ownerNode &&
7479
- !(
7480
- this.ownerNode.classList &&
7481
- this.ownerNode.classList.contains("darkreader")
7482
- )
7483
- ) {
7484
- this.ownerNode.dispatchEvent(updateSheetEvent);
7512
+ if (adoptedSheetOwners.has(sheet)) {
7513
+ if (promise && promise instanceof Promise) {
7514
+ promise.then(function () {
7515
+ return onAdoptedSheetChange(sheet);
7516
+ });
7517
+ }
7485
7518
  }
7486
7519
  }
7487
- function proxyDocumentStyleSheets() {
7488
- var _this = this;
7489
- var getCurrentValue = function () {
7490
- var docSheets = documentStyleSheetsDescriptor.get.call(_this);
7491
- var filteredSheets = __spreadArray(
7492
- [],
7493
- __read(docSheets),
7494
- false
7495
- ).filter(function (styleSheet) {
7496
- return (
7497
- styleSheet.ownerNode &&
7498
- !(
7499
- styleSheet.ownerNode.classList &&
7500
- styleSheet.ownerNode.classList.contains(
7501
- "darkreader"
7502
- )
7503
- )
7504
- );
7505
- });
7506
- filteredSheets.item = function (item) {
7507
- return filteredSheets[item];
7508
- };
7509
- return Object.setPrototypeOf(
7510
- filteredSheets,
7511
- StyleSheetList.prototype
7512
- );
7520
+ override(CSSStyleSheet, "addRule", function (native) {
7521
+ return function (selector, style, index) {
7522
+ native.call(this, selector, style, index);
7523
+ reportSheetChange(this);
7524
+ return -1;
7513
7525
  };
7514
- var elements = getCurrentValue();
7515
- var styleSheetListBehavior = {
7516
- get: function (_, property) {
7517
- return getCurrentValue()[property];
7518
- }
7526
+ });
7527
+ override(CSSStyleSheet, "insertRule", function (native) {
7528
+ return function (rule, index) {
7529
+ var returnValue = native.call(this, rule, index);
7530
+ reportSheetChange(this);
7531
+ return returnValue;
7519
7532
  };
7520
- elements = new Proxy(elements, styleSheetListBehavior);
7521
- return elements;
7522
- }
7523
- function proxyCustomElementRegistryDefine(name, constructor, options) {
7524
- addUndefinedResolverInner(name);
7525
- customElementRegistryDefineDescriptor.value.call(
7526
- this,
7527
- name,
7528
- constructor,
7529
- options
7530
- );
7531
- }
7532
- function proxyGetElementsByTagName(tagName) {
7533
- var _this = this;
7534
- if (tagName !== "style") {
7535
- return getElementsByTagNameDescriptor.value.call(this, tagName);
7536
- }
7537
- var getCurrentElementValue = function () {
7538
- var elements = getElementsByTagNameDescriptor.value.call(
7539
- _this,
7540
- tagName
7541
- );
7542
- return Object.setPrototypeOf(
7543
- __spreadArray([], __read(elements), false).filter(
7544
- function (element) {
7545
- return (
7546
- element &&
7547
- !(
7548
- element.classList &&
7549
- element.classList.contains("darkreader")
7550
- )
7551
- );
7552
- }
7553
- ),
7554
- NodeList.prototype
7555
- );
7533
+ });
7534
+ override(CSSStyleSheet, "deleteRule", function (native) {
7535
+ return function (index) {
7536
+ native.call(this, index);
7537
+ reportSheetChange(this);
7556
7538
  };
7557
- var elements = getCurrentElementValue();
7558
- var nodeListBehavior = {
7559
- get: function (_, property) {
7560
- return getCurrentElementValue()[
7561
- Number(property) || property
7562
- ];
7563
- }
7539
+ });
7540
+ override(CSSStyleSheet, "removeRule", function (native) {
7541
+ return function (index) {
7542
+ native.call(this, index);
7543
+ reportSheetChange(this);
7564
7544
  };
7565
- elements = new Proxy(elements, nodeListBehavior);
7566
- return elements;
7567
- }
7568
- function proxyChildNodes() {
7569
- var childNodes = childNodesDescriptor.get.call(this);
7570
- return Object.setPrototypeOf(
7571
- __spreadArray([], __read(childNodes), false).filter(
7572
- function (element) {
7573
- return (
7574
- !element.classList ||
7575
- !element.classList.contains("darkreader")
7576
- );
7545
+ });
7546
+ override(CSSStyleSheet, "replace", function (native) {
7547
+ return function (cssText) {
7548
+ var returnValue = native.call(this, cssText);
7549
+ reportSheetChangeAsync(this, returnValue);
7550
+ return returnValue;
7551
+ };
7552
+ });
7553
+ override(CSSStyleSheet, "replaceSync", function (native) {
7554
+ return function (cssText) {
7555
+ native.call(this, cssText);
7556
+ reportSheetChange(this);
7557
+ };
7558
+ });
7559
+ var shouldWrapHTMLElement =
7560
+ location.hostname === "baidu.com" ||
7561
+ location.hostname.endsWith(".baidu.com");
7562
+ if (shouldWrapHTMLElement) {
7563
+ override(Element, "getElementsByTagName", function (native) {
7564
+ return function (tagName) {
7565
+ var _this = this;
7566
+ if (tagName !== "style") {
7567
+ return native.call(this, tagName);
7577
7568
  }
7578
- ),
7579
- NodeList.prototype
7580
- );
7569
+ var getCurrentElementValue = function () {
7570
+ var elements = native.call(_this, tagName);
7571
+ return Object.setPrototypeOf(
7572
+ __spreadArray([], __read(elements), false).filter(
7573
+ function (element) {
7574
+ return element && !isDRElement(element);
7575
+ }
7576
+ ),
7577
+ NodeList.prototype
7578
+ );
7579
+ };
7580
+ var elements = getCurrentElementValue();
7581
+ var nodeListBehavior = {
7582
+ get: function (_, property) {
7583
+ return getCurrentElementValue()[
7584
+ Number(property) || property
7585
+ ];
7586
+ }
7587
+ };
7588
+ elements = new Proxy(elements, nodeListBehavior);
7589
+ return elements;
7590
+ };
7591
+ });
7592
+ }
7593
+ var shouldProxyChildNodes = location.hostname === "www.vy.no";
7594
+ if (shouldProxyChildNodes) {
7595
+ overrideProperty(Node, "childNodes", {
7596
+ get: function (native) {
7597
+ return function () {
7598
+ var childNodes = native.call(this);
7599
+ return Object.setPrototypeOf(
7600
+ __spreadArray([], __read(childNodes), false).filter(
7601
+ function (element) {
7602
+ return !isDRElement(element);
7603
+ }
7604
+ ),
7605
+ NodeList.prototype
7606
+ );
7607
+ };
7608
+ }
7609
+ });
7610
+ }
7611
+ function resolveCustomElement(tag) {
7612
+ customElements.whenDefined(tag).then(function () {
7613
+ document.dispatchEvent(
7614
+ new CustomEvent("__darkreader__isDefined", {
7615
+ detail: {tag: tag}
7616
+ })
7617
+ );
7618
+ });
7619
+ }
7620
+ documentEventListener(
7621
+ "__darkreader__addUndefinedResolver",
7622
+ function (e) {
7623
+ return resolveCustomElement(e.detail.tag);
7624
+ }
7625
+ );
7626
+ if (enableCustomElementRegistryProxy) {
7627
+ override(CustomElementRegistry, "define", function (native) {
7628
+ return function (name, constructor, options) {
7629
+ resolveCustomElement(name);
7630
+ native.call(this, name, constructor, options);
7631
+ };
7632
+ });
7581
7633
  }
7582
7634
  function checkBlobURLSupport() {
7583
7635
  return __awaiter(this, void 0, void 0, function () {
@@ -7629,79 +7681,195 @@
7629
7681
  });
7630
7682
  });
7631
7683
  }
7632
- Object.defineProperty(
7633
- CSSStyleSheet.prototype,
7634
- "addRule",
7635
- __assign(__assign({}, addRuleDescriptor), {value: proxyAddRule})
7636
- );
7637
- Object.defineProperty(
7638
- CSSStyleSheet.prototype,
7639
- "insertRule",
7640
- __assign(__assign({}, insertRuleDescriptor), {
7641
- value: proxyInsertRule
7642
- })
7643
- );
7644
- Object.defineProperty(
7645
- CSSStyleSheet.prototype,
7646
- "deleteRule",
7647
- __assign(__assign({}, deleteRuleDescriptor), {
7648
- value: proxyDeleteRule
7649
- })
7650
- );
7651
- Object.defineProperty(
7652
- CSSStyleSheet.prototype,
7653
- "removeRule",
7654
- __assign(__assign({}, removeRuleDescriptor), {
7655
- value: proxyRemoveRule
7656
- })
7657
- );
7658
- Object.defineProperty(
7659
- CSSStyleSheet.prototype,
7660
- "replace",
7661
- __assign(__assign({}, replaceDescriptor), {value: proxyReplace})
7662
- );
7663
- Object.defineProperty(
7664
- CSSStyleSheet.prototype,
7665
- "replaceSync",
7666
- __assign(__assign({}, replaceSyncDescriptor), {
7667
- value: proxyReplaceSync
7668
- })
7684
+ documentEventListener(
7685
+ "__darkreader__blobURLCheckRequest",
7686
+ checkBlobURLSupport,
7687
+ {once: true}
7669
7688
  );
7670
7689
  if (enableStyleSheetsProxy) {
7671
- Object.defineProperty(
7672
- Document.prototype,
7673
- "styleSheets",
7674
- __assign(__assign({}, documentStyleSheetsDescriptor), {
7675
- get: proxyDocumentStyleSheets
7676
- })
7677
- );
7678
- }
7679
- if (enableCustomElementRegistryProxy) {
7680
- Object.defineProperty(
7681
- CustomElementRegistry.prototype,
7682
- "define",
7683
- __assign(__assign({}, customElementRegistryDefineDescriptor), {
7684
- value: proxyCustomElementRegistryDefine
7685
- })
7686
- );
7690
+ overrideProperty(Document, "styleSheets", {
7691
+ get: function (native) {
7692
+ return function () {
7693
+ var _this = this;
7694
+ var getCurrentValue = function () {
7695
+ var docSheets = native.call(_this);
7696
+ var filteredSheets = __spreadArray(
7697
+ [],
7698
+ __read(docSheets),
7699
+ false
7700
+ ).filter(function (styleSheet) {
7701
+ return (
7702
+ styleSheet.ownerNode &&
7703
+ !isDRSheet(styleSheet)
7704
+ );
7705
+ });
7706
+ filteredSheets.item = function (item) {
7707
+ return filteredSheets[item];
7708
+ };
7709
+ return Object.setPrototypeOf(
7710
+ filteredSheets,
7711
+ StyleSheetList.prototype
7712
+ );
7713
+ };
7714
+ var elements = getCurrentValue();
7715
+ var styleSheetListBehavior = {
7716
+ get: function (_, property) {
7717
+ return getCurrentValue()[property];
7718
+ }
7719
+ };
7720
+ elements = new Proxy(elements, styleSheetListBehavior);
7721
+ return elements;
7722
+ };
7723
+ }
7724
+ });
7687
7725
  }
7688
- if (shouldWrapHTMLElement) {
7689
- Object.defineProperty(
7690
- Element.prototype,
7691
- "getElementsByTagName",
7692
- __assign(__assign({}, getElementsByTagNameDescriptor), {
7693
- value: proxyGetElementsByTagName
7694
- })
7726
+ {
7727
+ var adoptedSheetsSourceProxies_1 = new WeakMap();
7728
+ var adoptedSheetsProxySources_1 = new WeakMap();
7729
+ var adoptedSheetsChangeEvent_1 = new CustomEvent(
7730
+ "__darkreader__adoptedStyleSheetsChange"
7695
7731
  );
7696
- }
7697
- if (shouldProxyChildNodes) {
7698
- Object.defineProperty(
7699
- Node.prototype,
7700
- "childNodes",
7701
- __assign(__assign({}, childNodesDescriptor), {
7702
- get: proxyChildNodes
7703
- })
7732
+ var adoptedSheetOverrideCache_1 = new WeakSet();
7733
+ var adoptedSheetsSnapshots_1 = new WeakMap();
7734
+ var isDRAdoptedSheetOverride_1 = function (sheet) {
7735
+ if (!sheet || !sheet.cssRules) {
7736
+ return false;
7737
+ }
7738
+ if (adoptedSheetOverrideCache_1.has(sheet)) {
7739
+ return true;
7740
+ }
7741
+ if (
7742
+ sheet.cssRules.length > 0 &&
7743
+ sheet.cssRules[0].cssText.startsWith(
7744
+ "#__darkreader__adoptedOverride"
7745
+ )
7746
+ ) {
7747
+ adoptedSheetOverrideCache_1.add(sheet);
7748
+ return true;
7749
+ }
7750
+ return false;
7751
+ };
7752
+ var areArraysEqual_1 = function (a, b) {
7753
+ return (
7754
+ a.length === b.length &&
7755
+ a.every(function (x, i) {
7756
+ return x === b[i];
7757
+ })
7758
+ );
7759
+ };
7760
+ var onAdoptedSheetsChange_1 = function (node) {
7761
+ var prev = adoptedSheetsSnapshots_1.get(node);
7762
+ var curr = (node.adoptedStyleSheets || []).filter(function (s) {
7763
+ return !isDRAdoptedSheetOverride_1(s);
7764
+ });
7765
+ adoptedSheetsSnapshots_1.set(node, curr);
7766
+ if (!prev || !areArraysEqual_1(prev, curr)) {
7767
+ curr.forEach(function (sheet) {
7768
+ var e_1, _a;
7769
+ if (!adoptedSheetOwners.has(sheet)) {
7770
+ adoptedSheetOwners.set(sheet, new Set());
7771
+ }
7772
+ adoptedSheetOwners.get(sheet).add(node);
7773
+ try {
7774
+ for (
7775
+ var _b = __values(sheet.cssRules),
7776
+ _c = _b.next();
7777
+ !_c.done;
7778
+ _c = _b.next()
7779
+ ) {
7780
+ var rule = _c.value;
7781
+ var declaration = rule.style;
7782
+ if (declaration) {
7783
+ adoptedDeclarationSheets.set(
7784
+ declaration,
7785
+ sheet
7786
+ );
7787
+ }
7788
+ }
7789
+ } catch (e_1_1) {
7790
+ e_1 = {error: e_1_1};
7791
+ } finally {
7792
+ try {
7793
+ if (_c && !_c.done && (_a = _b.return))
7794
+ _a.call(_b);
7795
+ } finally {
7796
+ if (e_1) throw e_1.error;
7797
+ }
7798
+ }
7799
+ });
7800
+ node.dispatchEvent(adoptedSheetsChangeEvent_1);
7801
+ }
7802
+ };
7803
+ var proxyAdoptedSheetsArray_1 = function (node, source) {
7804
+ if (adoptedSheetsProxySources_1.has(source)) {
7805
+ return source;
7806
+ }
7807
+ if (adoptedSheetsSourceProxies_1.has(source)) {
7808
+ return adoptedSheetsSourceProxies_1.get(source);
7809
+ }
7810
+ var proxy = new Proxy(source, {
7811
+ deleteProperty: function (target, property) {
7812
+ delete target[property];
7813
+ return true;
7814
+ },
7815
+ set: function (target, property, value) {
7816
+ target[property] = value;
7817
+ if (property === "length") {
7818
+ onAdoptedSheetsChange_1(node);
7819
+ }
7820
+ return true;
7821
+ }
7822
+ });
7823
+ adoptedSheetsSourceProxies_1.set(source, proxy);
7824
+ adoptedSheetsProxySources_1.set(proxy, source);
7825
+ return proxy;
7826
+ };
7827
+ [Document, ShadowRoot].forEach(function (ctor) {
7828
+ overrideProperty(ctor, "adoptedStyleSheets", {
7829
+ get: function (native) {
7830
+ return function () {
7831
+ var source = native.call(this);
7832
+ return proxyAdoptedSheetsArray_1(this, source);
7833
+ };
7834
+ },
7835
+ set: function (native) {
7836
+ return function (source) {
7837
+ if (adoptedSheetsProxySources_1.has(source)) {
7838
+ source =
7839
+ adoptedSheetsProxySources_1.get(source);
7840
+ }
7841
+ native.call(this, source);
7842
+ onAdoptedSheetsChange_1(this);
7843
+ };
7844
+ }
7845
+ });
7846
+ });
7847
+ var adoptedDeclarationChangeEvent_1 = new CustomEvent(
7848
+ "__darkreader__adoptedStyleDeclarationChange"
7704
7849
  );
7850
+ ["setProperty", "removeProperty"].forEach(function (key) {
7851
+ override(CSSStyleDeclaration, key, function (native) {
7852
+ return function () {
7853
+ var args = [];
7854
+ for (var _i = 0; _i < arguments.length; _i++) {
7855
+ args[_i] = arguments[_i];
7856
+ }
7857
+ var returnValue = native.apply(this, args);
7858
+ var sheet = adoptedDeclarationSheets.get(this);
7859
+ if (sheet) {
7860
+ var owners = adoptedSheetOwners.get(sheet);
7861
+ if (owners) {
7862
+ owners.forEach(function (node) {
7863
+ node.dispatchEvent(
7864
+ adoptedDeclarationChangeEvent_1
7865
+ );
7866
+ });
7867
+ }
7868
+ }
7869
+ return returnValue;
7870
+ };
7871
+ });
7872
+ });
7705
7873
  }
7706
7874
  }
7707
7875
 
@@ -8256,7 +8424,7 @@
8256
8424
  fallback.render(theme, ignoredImageAnalysisSelectors);
8257
8425
  return;
8258
8426
  }
8259
- if (hasAdoptedStyleSheets(node)) {
8427
+ if (canHaveAdoptedStyleSheets(node)) {
8260
8428
  node.adoptedStyleSheets.forEach(function (s) {
8261
8429
  variablesStore.addRulesForMatching(s.cssRules);
8262
8430
  });